天天看點

mysql為什麼選innodb_為什麼現在的MySQL都要使用innoDB引擎-Go語言中文社群

1.MyISAM

MyISAM是mysql5.1及之前版本的預設引擎,很久未被更新。

使用表級鎖, 如果資料量大,一個插入操作鎖定表後,其他請求都将阻塞。

支援全文索引

支援查詢緩存儲存表的總行數,使用count(*) 并且無where子句的時候可以很快傳回結果,但是實際使用時基本不會無where子句

簡要:不支援事務安全沒有事務日志和分類,是以它隻将資料寫入Linux檔案緩存并希望能最終寫入磁盤。如果系統在這個過程中崩潰或者丢失一些資料,MyISAM表會經常出現無法啟動或者警告你需要修複表;它恢複資料的方法有限并且經常會丢失資料。另外,MyISAM也很難正确的備份,備份的時候通常需要鎖住整個系統的資料,這就意味着每天網站都要當機或者無法使用一段時間。

MyISAM表允許在定期列中進行全文檢索,而InnoDB不支援(這個沒搞懂)

2.InnoDB

支援事務

支援行級鎖和表級鎖,能支援更多的并發量

mysql5.6版本開始支援 全文索引

查詢不加鎖,完全不影響查詢Innodb會對每個表設定一個事務計數器,裡面存儲目前最大的事務ID.當一個事務送出時,InnoDB會使用MVCC中系統事務ID最大的事務ID跟新目前表的計數器.隻有比這個最大ID大的事務能使用查詢緩存,其他比這個ID小的事務則不能使用查詢緩存.另外,在InnoDB中,所有有加鎖操作的事務都不使用任何查詢緩存

簡要:支援事務安全事務日志記錄真正的資料庫事務,但更重要的是資料崩潰恢複和復原。基于 InooDB方式的IO,能給予更安全資料保護和更好性能表現