將表從乙個引擎改為另乙個引擎的方法
最簡單的方法
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代替行...