我們怎麼選擇合適的引擎?這裡簡單歸納一句話:「除非需要用到某些InnoDB不具備的特性,並且沒有其他辦法可以替代,否則都應該優先選擇InnoDB引擎。」
除非萬不得已,否則不建議混合使用多種儲存引擎,否則可能帶來一系列複雜的問題以及一些潛在的BUG。
使用不同引擎考慮的幾個因素:
1.交易
## 如果需要事務支持,那麼InnoDB或XtraDB目前最穩定。如果不需要交易且主要是SELECT和INSERT操作,MyISAM是不錯的選擇。
2.備份
若需要線上熱備份,InnoDB則是基本的選擇。
3.當機復原
資料量比較大的時候,系統崩潰後如何快速復原是需要考慮的問題,這也是許多人即使不需要事務支援也選擇InnoDB的原因。
轉換表的引擎:
1.ALTER TABLE
最簡單的方法就是ALTER TABLE語句:
mysql> ALTER TABLE mytable ENGINE = InnoDB;這個語法適用於任何儲存引擎,但需要執行很長的時間。
轉換錶的儲存引擎,將會失去所有與原引擎相關的功能。
2.匯出與匯入
可以使用mysqldump工具將資料匯出至文件,然後修改文件中CREATE TABLE語句的CRE儲存引擎,請注意修改表名。
同時請注意mysqldump工具預設會自動在CREATE TABLE語句前加上DROP TABLE語句,小心資料遺失。3.建立與查詢
整合第一種與第二種,先建立新的儲存引擎表,然後再利用INSTER .... SELECT語法來導資料
mysql> CREATE TABLE innodb_table LIKE myisam_table; mysql>ALTER TABLE innodb_table ENGINE=InnoDB; mysql>INSTER INTO innodb_table SELECT * FROM myisam_table;資料量大的話可以分批次處理,針對每段資料執行事務提交作業,避免大事務產生的undo。 Percona Toolkit提供了一個pt-online-schema-change的工具,可以簡單,方便的執行避免手工操作導致的失誤。
以上是MySQL如何選擇合適的引擎以及進行引擎的轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!