MySQL默認存儲引擎的變遷數據庫
在MySQL 5.1以前的版本中,默認的搜索引擎是MyISAM,從MySQL 5.5以後的版本中,默認的搜索引擎變動爲InnoDB。性能
MyIASM引擎搜索引擎
1.寫入操做是鎖住全表、不支持數據庫事務、也不支持外鍵。 url
2.MyISAM會保存好具體的行數
spa
3.MyISAM使用的所有都是非彙集索引,能夠不定義「主鍵」操作系統
4.MyISAM中的索引爲B-Tree結構.net
InnoDB引擎日誌
1.提供了「行鎖」、支持數據庫事務、提供了外鍵服務blog
注意:「行鎖」的使用是有條件的,即where 查詢的關鍵字必定被上了索引,且必定要明確(不能用模糊查詢)。索引
若是不知足,這兩個條件InnoDB仍是會鎖住全表。
2.Innodb不會保存行數,使用count(*)時,會搜索全表。
3.Innodb由彙集索引和輔助索引(非彙集索引)構成,但必須有一個彙集索引,且默認與主鍵綁定。
建表的時候能夠不顯示的指定主鍵,可是則MySQL系統會自動選擇一個能夠惟一標識數據記錄的列做爲主鍵,
若是不存在這種列,則MySQL自動爲InnoDB表生成一個隱含字段做爲主鍵,這個字段長度爲6個字節,類型爲長整形。
4.Innodb的彙集(主鍵)索引爲B+Tree,其他爲B-Tree
MyISAM與InnoDB構成上的區別
(1)每一個MyISAM在磁盤上存儲成三個文件:
第一個文件的名字以表的名字開始,擴展名指出文件類型,.frm文件存儲表定義。
第二個文件是數據文件,其擴展名爲.MYD (MYData)。
第三個文件是索引文件,其擴展名是.MYI (MYIndex)。
(2)基於磁盤的資源是InnoDB表空間數據文件和它的日誌文件,InnoDB 表的 大小隻受限於操做系統文件的大小,通常爲 2GB
適用場景:
MyISAM適合:
(1)作不少count 的計算;
(2)插入不頻繁,查詢很是頻繁,若是執行大量的SELECT,MyISAM是更好的選擇;
(3)沒有事務。
InnoDB適合:
(1)可靠性要求比較高,或者要求事務;
(2)表更新和查詢都至關的頻繁,而且表鎖定的機會比較大的狀況指定數據引擎的建立;
(3)若是你的數據執行大量的INSERT或UPDATE,出於性能方面的考慮,應該使用InnoDB表;
(4)DELETE FROM table時,InnoDB不會從新創建表,而是一行一行的 刪除;
(5)LOAD TABLE FROM MASTER操做對InnoDB是不起做用的,解決方法是首先把InnoDB表改爲MyISAM表,導入數據後再改爲InnoDB表,可是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。
參考網址:https://blog.csdn.net/xlgen157387/article/details/68978320#commentBox