資料庫引擎MyISAM和Innodb對比與說明

2021-10-08 19:22:48 字數 1200 閱讀 7985

它們是資料的一種引擎,作用就是幫助使用者管理資料庫,不用的引擎就代表著不同的管理方式與特點,也就意味著在資料的許多方面,例如索引的管理,事務等方面都有不同。

mysql資料庫在5.5版本以前採用的是myisam的引擎,不過在此之後預設採用的是innodb引擎,二者之間各有優劣,適用於不同的場景,不過在簡單的使用中,可以這樣理解,當下預設的使用引擎,自然要比以前的老版本好一些。

myisam

myisam的儲存分為三個檔案,frm(記錄了表的結構)、myd(記錄了資料) 、myi(記錄了表的索引)

innodb

inndodb依據儲存方式,儲存結構也不同;

myisam

不支援外來鍵,允許沒有主鍵;

innodb

支援外來鍵,必須有主鍵,沒有指定主鍵的時候,會預設生成長度為6位元組的主鍵。

myisam

不支援事務;

innodb

支援事務,同樣事務的安全、回滾等等都會體現;

myisam

僅支援表級鎖;

innodb

支援行級鎖,所以在併發性方面比較好;但是行級鎖僅僅是使用在where子句對主鍵篩選的時候才生效,非主鍵的where仍然是鎖全表,鎖全表也就意味著併發效能降低了;

前置基礎知識補充

輔助索引:又稱為二級索引,即非主鍵索引,例如:唯一索引、普通索引、字首索引等;

innodb 主鍵索引屬於聚簇索引,其它索引屬於非聚簇索引;myisam 的索引都是非聚簇索引。

兩個引擎共同點說明:

二者的索引的實現都是b+樹,注意:b+樹是一種資料結構。非葉子僅僅儲存的是葉子節點的位置,葉子節點儲存了我們實際需要的資料內容(主鍵或者主鍵+表資料行);

myisam

葉子節點儲存的是儲存的資料的實體地址;主鍵索引的key值必須唯一;輔助索引的key值則可以重複;

innodb

主鍵索引葉子節點key值是資料記錄的主鍵,data域是完整的數表據記錄;輔助索引儲存的是資料記錄的主鍵。

mysql資料庫引擎 MyISAM和InnoDB

mysql 優化系列 一 mysql資料庫引擎效能測試 mysql 資料庫中,最常用的兩種引擎是innordb和myisam。innordb的功能要比myiasm強大很多,但是innordb的效能要比myisam差很多,如果你的 只是做簡單的查詢,更新,刪除,那麼用myiasm是最好的選擇。所有的效...

資料庫引擎 InnoDB和MyISAM

innodb是mysql預設的儲存引擎 通過命令列 mysql show engine可以檢視mysql支援的引擎。在mac下 mysql安裝在 usr local mysql 啟動sql usr local mysql 5.6.40 macos10 13 x86 64 bin mysql u ro...

MySQL儲存引擎之MyISAM與Innodb

1 mysql5.5之前版本預設儲存引擎 2 myisam是大部分系統表和臨時表使用的儲存引擎,這裡的臨時表是指在排序 分組等操作中,當數量超過一定的大小之後,由查詢優化器建立的臨時表 3 myisam儲存引擎會將表儲存在兩個系統檔案中,乙個是資料檔案,以myd為副檔名 另乙個是索引檔案,以myi為...