MySQL怎么選擇合適的引擎以及進行引擎的轉換
發表時間:2023-07-19 來源:明輝站整理相關軟件相關文章人氣:
[摘要]我們怎么選擇合適的引擎?這里簡單歸納一句話:“除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應該優先選擇InnoDB引擎。” 除非萬不得已,否則不建議混合使用多種存儲...
我們怎么選擇合適的引擎?這里簡單歸納一句話:“
除非需要用到某些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語句的存儲引擎,請注意修改表名。
同時請注意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中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。