MySQL引擎 InnoDB和MyISAM的區別

2021-10-07 01:11:24 字數 952 閱讀 6114

mysql 是乙個支援多引擎的系統, 主要有以下幾種:

而在實際應用中,比較常用的就是innodb和myisam這兩種,但是大多數人都不太清楚兩者的區別,為什麼myisam會被innodb取代?這篇文章就重點討論它們的區別。

crash-safe簡單來說,就是即使資料庫發生異常重啟,之前提交的記錄也不會丟失。

innodb引擎是具備這個能力的,而myisam是不具備的。innodb之所以具備這個能力,是因為它特有的日誌——redo log,關於redo log的具體內容可以檢視mysql兩大日誌模組——redo log(重做日誌)和 binlog(歸檔日誌)。

事務就是要保證一組資料庫操作,要麼全部成功,要麼全部失敗。更多關於事務的內容可以檢視事務的特性和隔離級別。

在 mysql 中,事務支援是在引擎層實現的。你現在知道,mysql 是乙個支援多引擎的系統,但並不是所有的引擎都支援事務,mysql 原生的 myisam 引擎就不支援事務,這也是 myisam 被 innodb 取代的重要原因之一。

另外一點,當我在給mysql資料庫做邏輯備份時,官方自帶的邏輯備份工具是 mysqldump。當 mysqldump 使用引數–single-transaction 的時候,導資料之前就會啟動乙個事務,來確保拿到一致性檢視,single-transaction方法只適用於所有的表使用事務引擎的庫。如果有的表使用了不支援事務的引擎,那麼備份就只能通過 ftwrl(flush tables with read lock) 方法,使整個庫處於唯讀狀態。

myisam 引擎不支援行鎖。不支援行鎖意味著併發控制只能使用表鎖,同一張表上任何時刻只能有乙個更新在執行,這就會影響到業務併發度。innodb 是支援行鎖的,這也是 myisam 被 innodb 替代的重要原因之一。

innodb具有crash-safe能力,而myisam沒有;

innodb支援事務,而myisam不支援;

關於Mysql的儲存引擎Innodb和Myisam

myisam和innodb 都是採用 b tree這種資料結構來實現 b tree索引。而很大的區別在於,innodb 儲存引擎採用 聚集索引 的資料儲存方式實現b tree索引,所謂 聚集 就是指資料行和相鄰的鍵值緊湊地儲存在一起,注意 innodb 只能聚集乙個葉子頁 16k 的記錄 即聚集索引...

MySQL的innodb引擎是如何實現MVCC的

索引的資料結構有b treee索引和hash索引 b treee索引是innodb引擎預設使用的資料結構,它通過一定的演算法,將mysql表中資料分磁碟存放,少量的磁碟讀取即可做到大量資料的遍歷 hash索引根據hash演算法將資料,精確的存放,來查詢某個資料的時候,根據相同的演算法一次就能找到,等...

Mysql引擎 Innodb和MyISAM的區別

本文是摘抄其他網文整理而成。create database engine innodb mysql 資料庫分為innodb和myisam兩類。兩者最主要的區別是 innodb支援事務處理 外來鍵和行級鎖.而myisam不支援,所以如果cud比較頻繁或要求事務一致性的,使用innodb比較好,反之使用...