[MySQLFAQ]系列—從MyISAM轉到InnoDB需要注意什麼
問題當前,絕大多數業務場景用InnoDB已經完全能搞定了,越來越多的業務從MyISAM轉向InnoDB引擎,那麼有哪些注意事項呢?分析當了解完兩種引擎的不同之處,很輕鬆的就能知道有哪些關鍵點了。
總的來說,從MyISAM轉向InnoDB的注意事項有:
1、MyISAM的主鍵索引中,可以在非第一列(非第一個欄位)使用自增列,而InnoDB的主鍵索引中包含自增列時,必須在最前面;這個特性在discuz論壇中,被設計用於“搶樓”功能,因此,若有類似的業務,則無法將該表從MyISAM轉成InnoDB,需要自行變通實現(我們則是將其改到Redis中實現); 2、不帶條件頻繁統計全表總記錄數時(SELECT COUNT(*) FROM TAB),InnoDB相對較慢,而MyISAM則飛快;不過,如果是基於索引條件的統計,則二者相差不大; 3、InnoDB在5.6以前不支援全文索引,不過這個相信無所謂,沒什麼人會在MySQL裡直接跑全文索引,尤其是對中文的全文索引(前陣子有開發同學提需求直接被我否了),確實有需要的話,可以採用Sphinx、Lucene等其他方案實現; 4、一次性匯入大量資料並且後續還要進行加工處理的,可以先匯入到MyISAM引擎表中,經過一通加工處理完後,再匯入InnoDB表(我曾經在業務中用此方法提高資料批量匯入及處理效率); 5、InnoDB不支援LOAD TABLE FROM MASTER語法(不過應該也很少人使用吧);
從MyISAM轉成InnoDB可以享受的好處則有:
1、完整事務特性支援,以及更高的資料併發存取效率,即更高的TPS; 2、資料庫例項異常重啟後,InnoDB表能自動修復,而且速度相對更快,而MyISAM需要被觸發才能修復,且相對耗時可能多4~5倍甚至更多; 3、更高的資料讀取效能,因為InnoDB把資料及索引同時快取在記憶體中,而MyISAM只快取了索引; 4、InnoDB支援外來鍵(不過在MySQL中,應該很少人用到外來鍵);
兩個引擎間的重要區別詳情見下:
MyISAM引擎的特點:
1、堆組織表;
2、不支援事務;
3、資料檔案和索引檔案分開儲存;
4、支援全文索引;
5、主鍵索引和二級索引完全一樣都是B+樹的資料結構,只有是否唯一的區別(主鍵和唯一索引有唯一屬性,其他普通索引沒有唯一屬性。B+樹葉子節點儲存的都是指向行記錄的row pointer);
6、有特殊計數器記錄當前記錄數;
7、不支援Crash recovery;
8、索引檔案很容易損壞;
InnoDB引擎的特點
6、相同資料量時,InnoDB表空間檔案大小約為MyISAM引擎的1.5~2倍;
文章轉自老葉茶館公眾號,原文連結:
http://imysql.com/2014/11/01/mysql-faq-convert-myisam-to-innodb-tips.shtml
相關文章
- 從 testcafe 遷到 playwright 你需要注意什麼?
- [MySQLFAQ]系列–為何innodb表selectcount(*)很慢MySql
- MySQL中myisam和innodb有什麼差異?MySql
- InnoDB和MyISAM 區別(轉)
- MySQL中MyISAM為什麼比InnoDB查詢快MySql
- MySQL 中 MyISAM 中的查詢為什麼比 InnoDB 快?MySql
- MySQL的MyISAM和InnoDB引擎的主要區別是什麼?MySql
- MyISAM InnoDB 區別
- 【轉】InnoDB和MyISAM的技術資料
- 使用HTTP需要注意什麼?HTTP
- MySQL: InnoDB 還是 MyISAM?MySql
- 資料庫系列:MySQL引擎MyISAM和InnoDB的比較資料庫MySql
- 網站改版需要注意什麼網站
- HR面試,你需要注意什麼?面試
- MyISAM轉換成InnoDB的業務場景和思考
- Innodb與MyISAM的區別
- MyISAM與InnoDB的區別
- Myisam & InnoDB 優化引數優化
- InnoDB和MyISAM的區別
- MyISAM和InnoDB的區別
- API與API管理,需要注意什麼?API
- 回到老東家需要注意什麼?
- 雲伺服器innodb資料庫轉引擎為MyISAM伺服器資料庫
- InnoDB和MyISAM區別總結
- 加盟刷臉支付代理需要注意什麼?
- 參加Java培訓需要注意什麼Java
- 網站的設計需要注意什麼?網站
- 網路資料安全需要注意什麼?
- 【知識分享】什麼是伺服器租用需要注意什麼伺服器
- 【轉】Mysql兩種儲存引擎的異同【MyISAM和InnoDB】MySql儲存引擎
- MySQL資料庫MyISAM儲存引擎轉為Innodb的方法MySql資料庫儲存引擎
- 跨雲業務遷移時需要注意什麼?
- 參加web前端培訓需要注意什麼Web前端
- 網站改版過程中需要注意什麼?網站
- 使用代理IP抓取資料需要注意什麼?
- Mysql 中 MyISAM 和 InnoDB 的區別MySql
- MyISAM 儲存引擎,Innodb 儲存引擎儲存引擎
- MySQL引擎介紹ISAM,MyISAM,HEAP,InnoDBMySql