資料庫-->淺談Mysql不同儲存引擎之間的區別
阿新 • • 發佈:2019-08-24
MyISAM儲存引擎
缺點:不支援事務、不支援外來鍵
優點:訪問速度快,支援全文索引、壓縮索引
應用場景:對事務完整性沒有要求或者以select/insert為主的應用基本上可以用這個引擎建立表
InnoDB儲存引擎
缺點:相對MyISAM引擎寫的處理速率會差一些,並且會佔用更多的磁碟空間以保留資料和索引
優點:支援事務、支援自增長列、支援外來鍵約束
Memory儲存引擎
缺點:一旦服務關閉,表中資料就會丟失
優點:Memory儲存引擎使用存在於記憶體中的內容來建立表,每個memory表對應一個.frm磁碟檔案。訪問速度非常快,預設使用hash索引,可選擇B-tree索引
Merge儲存引擎
-- 一組MyISAM表的組合
InnoDB 和 MyISAM對比
-- 事務:MyISAM不支援事務,InnoDB支援事務以及外來鍵約束 -- 效能:MyISAM的表強調的是效能 -- 行數儲存:InnoDB不儲存表的具體行數,select count(*) from table ,InnoDB要掃描整張表來計算多少行,而MyISAM只需要讀取儲存的資料即可。 當count(*)包含where條件時,兩種型別操作一樣 -- 索引:對於AUTO_INCREMENT型別的欄位,InnoDB中必須包含只有該欄位的索引,但是MyISAM表中可以和其他欄位建立聯合索引 MyISAM支援全文索引、壓縮索引,InnoDB不支援 MyISAM的索引和資料是分開的,並且索引有壓縮而InnoDB的索引和資料是金幣捆綁的 -- 伺服器資料備份:InnoDB必須匯出SQL來備份,而MyISAM資料恢復速度快,MyISAM的資料是以檔案的形式儲存, 跨平臺資料轉移方便,InnoDB是拷貝資料檔案、備份binlog或者用mysqldump,資料量大比較麻煩 -- 鎖的支援:MyISAM只支援表鎖,InnoDB支援表鎖、行鎖 InnoDB的行鎖,只有在where條件是主鍵有效,非主鍵會鎖全表
索引型別
B-Tree索引
-- 從根節點到枝節點,最後才能訪問到頁節點
Hash索引
-- 檢索一次定位,查詢效率非常高
-- 不支援‘like’模糊查詢
ISAM索引
-- 順序儲存
持續更