索引之innodb和myisam

2022-09-27 19:03:07 字數 1256 閱讀 9937

innodb和myisam的diff:

參考文章:

what:

myisam

索引檔案和資料檔案是分開的。索引檔案中葉子結點的data部分,僅僅是資料記錄的位址。它的主索引和輔助索引在結構上沒有區別,資料上主索引的key是唯一的,輔助索引上的key可以重複。

主索引

上圖中col1為主鍵,即該「primary key」索引就是主索引。

輔助索引:

輔助索引和主索引結構沒有區別,只是輔助索引的key可以重複。col2上建立乙個輔助索引,則此索引的結構如下圖所示:

主索引和資料檔案是在一起的,即聚集索引。 輔助索引的葉子節點的data域存放的是主鍵值(即key)。輔助索引查詢需要二次索引,即先輔助索引找到主鍵的key,然後到主索引中,再找對應的資料。

主索引

innodb中,表資料檔案本身就是按b+tree組織的乙個索引結構,這棵樹的葉節點data域儲存了完整的資料記錄。這個索引的key是資料表的主鍵,因此innodb表資料檔案本身就是主索引。

innodb主索引(同時也是資料檔案)的示意圖,可以看到葉節點包含了完整的資料記錄。因為innodb的資料檔案本身要按主鍵聚集,所以innodb要求表必須有主鍵(myisam可以沒有),如果沒有顯式指定,則mysql系統會自動選擇乙個可以唯一標識資料記錄的列作為主鍵。

輔助索引

所有輔助索引都引用主鍵(key)作為data域。例如,下圖為定義在col3上的乙個輔助索引:

特性

1、主鍵key盡量不要大。原因:所有的輔助索引都會引用主索引的key,如果主key設計的過大,那麼輔助索引也會很大。

2、主鍵key盡量單調。原因:innodb資料檔案本身是一顆b+tree,非單調的主鍵會造成在插入新記錄時資料檔案為了維持b+tree的特性而頻繁的**調整,十分低效。因此使用自增字段作為主鍵則是乙個很好的選擇(預設id就是單增)。

mysql的innodb引擎和myisam引擎區別

首先innodb支援事務,可以進行事務的回滾,而myisam不支援事務 所以在更新比較多或者插入比較多的時候使用innodb 再者就是innodb支援的是行級鎖定 某些情況下會表級,例如出現以 開頭的模糊查詢 myisam支援的表級鎖定 表級鎖定和行級鎖定就從字面理解 即在進行表內資料的操作時,my...

MySQL的InnoDB引擎與MyISAM引擎

myisam 這個是預設型別,它是基於傳統的isam型別,isam是indexed sequential access method 有索引的順序訪問方法 的縮寫,它是儲存記錄和檔案的標準方法。與其他儲存引擎比較,myisam具有檢查和修復 的大多數工具。myisam 可以被壓縮,而且它們支援全文搜...

MySQL資料庫InnoDB與MyISAM區別

特點 行級鎖,支援事務處理,支援外來鍵,行鎖實現,根據索引條件檢索資料使用行鎖。表鎖,支援全文索引。表鎖,分為表共享鎖和表獨佔鎖。讀和讀之間使用共享鎖,讀寫之間使用獨佔鎖。b樹,又稱多路平衡查詢樹。所有節點中孩子節點的最大值為此樹的階 用m表示 每個節點關鍵字的個數最少有 m 2 1 個,最多有 m...