一:區別 Mysiam: 1.是非事務安全型。 2.是表級鎖。 3.如果執行大量的select,Mysiam是更好的選擇。 4.select count(*)from table。Mysiam只簡單的讀取保存好的行。註意:count(*)語句包含where條件時,兩種表操作一樣。 5.不支持外鍵。 ...
一:區別
Mysiam:
1.是非事務安全型。
2.是表級鎖。
3.如果執行大量的select,Mysiam是更好的選擇。
4.select count(*)from table。Mysiam只簡單的讀取保存好的行。註意:count(*)語句包含where條件時,兩種表操作一樣。
5.不支持外鍵。
Innodb:
1.是事務安全型的(支持事務處理等高級處理)。
2.是行級鎖。
3.如果你的數據執行大量的Insert或updata,出於性能的考慮,應使用innodb表。
4.Innodb不保存表的具體行,也就是說,執行,select count(*) form table 時,要掃描一遍整個表來計算有多少行。
5.支持外鍵。
二:為什麼Mysiam比Innodb的查詢速度快。
Innodb在做select的時候,要維護的東西比Mysiam引擎多的多。
1.數據塊,Innodb要緩存,Mysiam只緩存索引塊,這中間還有換進換出的減少。
2,Innodb定址要映射到塊。在到行。Mysiam記錄的直接是文件的offset,定位比Innodb要快。
3.Innodb還需要維護MVCC一致,雖然你的場景沒有,但他還是需要檢查和維護。(MVCC多版本併發控制)
三:應用場景
Myisam適合:1.做很多的count的計算;2.插入不頻繁,查詢非常頻繁;3.沒有事務。
Innodb適合:1.可靠性要求比較高,或者要求事務;2.表更新和查詢都相當頻繁,並且行鎖定的機會比較大的情況。