InnoDB索引實現

2021-07-16 23:34:19 字數 571 閱讀 9808

1)innodb的資料檔案本身就是索引檔案。從上文知道,myisam索引檔案

是分離的,索引檔案僅儲存資料記錄的位址。而在innodb中,表資料

檔案本身就是按b+tree組織的乙個索引結構,這棵樹的葉節點data域

儲存了完整的資料記錄,這個索引的key是資料表的主鍵,因此innodb

表資料檔案本身就是主索引。

innodb的葉節點包含所以的資料記錄,這種索引叫做聚集索引。因為

innodb資料檔案本身按主鍵聚集,所以innodb要求必須要有主鍵,如

果沒有顯示指定,則mysql系統會自動選擇乙個可以唯一標識記錄的列

作為主鍵,如果不存在這種列,則mysql自動為innodb自動為表生成一

個隱含字段作為主鍵,這個字段長度為6個位元組,型別為長整型

2)innodb輔助索引data域儲存相應記錄主鍵的值而不是位址,換句話

說,innodb所有輔助索引都引用主鍵作為data域。

3)聚集索引的這種方式使得按主鍵的搜尋十分搞笑,但是輔助索引搜尋

需要檢查兩邊索引,首先檢查輔助索引獲得主鍵,然後用主鍵到主索引中獲得

記錄。

innodb索引實現原理

首先,我們來看一下簡單的查詢,我們首先想到的是全盤掃瞄,但是在這種方法下,效率是很低的。這個時候,我們發現在頁 mysql管理儲存空間的基本單位 的七個組成部分中 file helper 用來記錄頁的上下文,page helper 資料也的儲存狀態,比如一共有多少條資料,槽,第一條的位址是什麼,in...

MyISAM和InnoDB索引實現對比

myisam引擎使用b tree作為索引結構,葉節點的data域存放的是資料記錄的位址。如圖 這裡設表一共有三列,假設我們以col1為主鍵,則上圖是乙個myisam表的主索引 primary key 示意。可以看出myisam的索引檔案僅僅儲存資料記錄的位址。在myisam中,主索引和輔助索引 se...

MyISAM和InnoDB的索引實現

在 mysql 中,主要有四種型別的索引,分別為 b tree 索引,hash 索引,fulltext 索引和 r tree 索引。我們主要分析b tree 索引。b tree 索引是 mysql 資料庫中使用最為頻繁的索引型別,除了 archive 儲存引擎之外的其他所有的儲存引擎都支援 b tr...