天天看點

mysql修改表的存儲引擎

将表從一個引擎改為另一個引擎的方法

最簡單的方法

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

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

- 使用mysqldump導出檔案

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

- 導入檔案

-

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

資料量不大時:

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

使用percona toolkit提供的pt_online-schema-change的工具實作線上schema變更

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

<a href="https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html">https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html</a>