MySQL如何選擇合適的引擎以及進行引擎的轉換

一个新手
發布: 2017-09-30 10:25:46
原創
995 人瀏覽過

我們怎麼選擇合適的引擎?這裡簡單歸納一句話:「除非需要用到某些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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!