Mysql (InnoDB引擎)聚集索引和輔助索引

2021-08-09 10:48:35 字數 816 閱讀 8893

innodb儲存引擎表是索引組織表,即按照主鍵的順序儲存資料。

聚集索引(clustered index)就是按照每張表的主鍵構造一棵b+樹,樹中的葉子節點存放著表中的行記錄資料,因此,也將聚集索引的葉子節點稱為資料頁;非葉子節點中存放著僅僅是鍵值和指向葉子節點的偏移量。每個葉子節點(資料頁)都通過乙個雙向鍊錶進行連線。

由於實際的資料頁只能按照一棵b+樹進行排序,因此資料庫中每張表只能有乙個聚集索引。

聚集索引能過特別快的訪問針對範圍值的查詢。

注意:聚集索引並不是在物理儲存上是連續的,其只是在邏輯上連續,這有兩點:

一、資料頁是按照主鍵的順序並通過雙向鍊錶鏈結的,因此物理儲存上可以不按主鍵順序儲存。

二、資料頁中的記錄也是通過雙向鍊錶進行維護的,物理儲存上同樣可以不按主鍵順序儲存。

聚集索引的好處:

一、對於主鍵的排序查詢非常的快(因為其葉子節點是用雙向鍊錶鏈結的)

二、對於主鍵的範圍查詢非常的快(因為通過葉子節點的上層中間節點,就可以得到葉結點的範圍值)

輔助索引(secondary index)也是b+樹結構,但其在葉子節點中並不包含行記錄的全部資料。除了包含鍵的值(建立輔助索引的列中的值)外,還包含了乙個書籤,這個書籤用來告訴innodb引擎從**可以找到與索引相對應的行資料。由於innodb引擎是索引組織表,因此,這個書籤就是相應的行資料的聚集索引鍵。

因為輔助索引不會對影響資料在聚集索引中的組織,所以可以有多個。

除了索引組織表結構外,還有一種堆表的表結構,即行資料的儲存是按照插入的順序儲存的。如sql server資料庫

mysql InnoDB儲存引擎

innodb的組成部分 1.後台執行緒 2.儲存引擎記憶體池 innodb儲存引擎記憶體緩衝池 1.記憶體緩衝池 innodb是基於磁碟儲存的,並將其中的記錄按照頁的方式進行管理。因此,可將其視為基礎磁碟的資料庫系統。在資料庫系統中,由於cpu速度與磁碟速度之間的紅狗,基於磁碟的資料庫系統通常使用緩...

Mysql Innodb儲存引擎

鎖 參考資料 參考資料 行鎖 innodb的鎖是對索引加鎖,如果查詢到並沒有用到索引就會對錶進行加鎖 record lock 對單條記錄加上鎖 gap lock 間隙鎖,鎖定乙個範圍,但是不包含記錄本身 next key lock record lock gap lock,鎖定乙個方位並鎖定記錄本身...

MYSQL INNODB 儲存引擎

innodb 是事務安全的mysql儲存引擎,設計上採用了類似於oracle的架構。一般而言,在oltp的應用中,innodb應該作為核心應用表的首選儲存引擎。同時,也是因為innodb的存在,才使得mysql變得更有魅力。第一 innodb儲存引擎概述 innodb由innobase oy 公司開...