mysql修改表的儲存引擎

2021-09-22 23:23:53 字數 1002 閱讀 4232

將表從乙個引擎改為另乙個引擎的方法

最簡單的方法

alter

table test engine=innodb;

但是如果表資料量大,則需要執行很長時間。因為mysql會按行將資料從原表複製到新錶,在複製期間可能會消耗系統所有的io,同時原表上會加讀鎖,所以業務繁忙的表要小心該操作。

一種解決方案是使用匯出匯入

- 使用mysqldump匯出檔案

- 修改檔案中的create table語句的儲存引擎選項,同時修改表名(注意:mysqldump會在create table前加上drop table語句,不注意可能導致資料丟失)

- 匯入檔案

- 先建立新儲存引擎的表,然後使用insert。。。select語法導資料

資料量不大時:

mysql> create table test_innodb like test_myisam;

mysql> alter table test_innodb engine=innodb;

mysql> insert into test_innodb select * from test_myisam;

資料量大時,可以分批處理,避免大事務產生過多的undo

mysql>insert into test_innodb select * from test_myisam where

idbetween a and b;

mysql>commit;

#pt-

online

-schema

-change-u

root-p

beijing--

alter

"engine=myisam"--

execute

d=miles

,t=actor

該工具詳細使用方式請參考

MySQL檢視和修改表的儲存引擎

1 檢視系統支援的儲存引擎 show engines 2 檢視表使用的儲存引擎 兩種方法 a show table status from db name where name table name b show create table table name 如果顯示的格式不好看,可以用 g代替行...

MySQL檢視和修改表的儲存引擎

1 檢視系統支援的儲存引擎 show engines 2 檢視表使用的儲存引擎 兩種方法 a show table status from db name where name table name b show create table table name 如果顯示的格式不好看,可以用 g代替行...

MySQL檢視和修改表的儲存引擎

1 檢視系統支援的儲存引擎 show engines 2 檢視表使用的儲存引擎 兩種方法 a show table status from db name where name table name b show create table table name 如果顯示的格式不好看,可以用 g代替行...