1. 區別:
(1)事務處理:
myisam是非事務安全型的,而innodb是事務安全型的(支援事務處理等高階處理);
(2)鎖機制不同:
myisam是表級鎖,而innodb是行級鎖;
(3)select ,update ,insert ,delete 操作:
myisam:如果執行大量的select,myisam是更好的選擇
innodb:如果你的資料執行大量的insert或update,出於效能方面的考慮,應該使用innodb表
(4)查詢表的行數不同:
myisam:select count(*) from table,myisam只要簡單的讀出儲存好的行數,注意的是,當count(*)語句包含
where條件時,兩種表的操作是一樣的
innodb : innodb 中不儲存表的具體行數,也就是說,執行select count(*) from table時,innodb要掃瞄一遍整個表來計算有多少行
(5)外來鍵支援:
mysiam表不支援外來鍵,而innodb支援
2. 為什麼myisam會比innodb 的查詢速度快。
innodb在做select的時候,要維護的東西比myisam引擎多很多;
1)資料塊,innodb要快取,myisam只快取索引塊, 這中間還有換進換出的減少;
2)innodb定址要對映到塊,再到行,myisam 記錄的直接是檔案的offset,定位比innodb要快
3)innodb還需要維護mvcc一致;雖然你的場景沒有,但他還是需要去檢查和維護
mvcc ( multi-version concurrency control )多版本併發控制
3. 應用場景
myisam適合:(1)做很多count 的計算;(2)插入不頻繁,查詢非常頻繁;(3)沒有事務。
innodb適合:(1)可靠性要求比較高,或者要求事務;(2)表更新和查詢都相當的頻繁,並且行鎖定的機會比較大的情況。
MySQL InnoDB事務和鎖
innodb中的事務遵循了acid原則 read uncommit 最鬆散的級別 read commit 可解決髒讀問題 rc級別下 repeatable read mysql預設的級別,可解決幻讀問題 serializabale 最嚴格的級別,基於鎖序列執行事務 輸出中transactions一節...
MySQL InnoDB和MyISAM引擎的區別
innodb 支援 myisam 不支援 innodb 將資料表分成2個部分儲存,字尾為frm的檔案儲存表結構,字尾為ibd的檔案儲存資料和索引 myisam 將資料表分成3個部分儲存,字尾為frm的檔案儲存表結構,字尾為myd的檔案儲存資料,字尾為myi的檔案儲存索引 innodb 支援行級鎖,行...
Mysql Innodb和MyISAM的區別
1 事務 2 外來鍵 3 鎖機制 4 增刪改查 5 全文索引 6 儲存結構 索引區別 詳見 索引和二級索引 myisam表分為三個檔案儲存,資料和索引分開儲存 表定義檔案 frm 資料檔案的 myd mydata 索引檔案 myi myindex myisam的索引也是b tree,但是myisam...