帶您了解DB2索引結(jié)構(gòu)
作者:佚名
DB2中索引的數(shù)據(jù)結(jié)構(gòu)是一顆B+樹,通常B樹有三層:根、中間層和葉,但也可以是任意多層。下面就帶您一起了解一下DB2索引結(jié)構(gòu)。
DB2索引結(jié)構(gòu)是怎樣的呢?這是很多人都提到過的問題,下面就為您詳細(xì)介紹DB2索引結(jié)構(gòu),希望可以讓您對(duì)DB2索引結(jié)構(gòu)有更深的認(rèn)識(shí)。
DB2索引結(jié)構(gòu)
在DB2中,索引的數(shù)據(jù)結(jié)構(gòu)是一顆B+樹。B樹把它的存儲(chǔ)塊組織成一棵樹。這棵樹是平衡的,即從樹根到樹葉的所有路徑都一樣長(zhǎng)。通常B樹有三層:根、中間層和葉,但也可以是任意多層。
典型的B+樹結(jié)構(gòu):
根結(jié)點(diǎn)中至少有兩個(gè)指針被使用。所有指針指向位于B樹下一層的存儲(chǔ)塊;
葉結(jié)點(diǎn)中,最后一個(gè)指針指向它右邊的下一個(gè)葉結(jié)點(diǎn)存儲(chǔ)塊,即指向下一個(gè)鍵值大于它的塊。在葉塊的其他n個(gè)指針當(dāng)中,至少有個(gè)指針被使用且指向數(shù)據(jù)記錄;未使用的指針可看作空指針且不指向任何地方。如果第i個(gè)指數(shù)被使用,則指向具有第i個(gè)鍵值的記錄;
在內(nèi)層結(jié)點(diǎn)中,所有的n+ 1個(gè)指針都可以用來指向B樹中下一層的塊。其中至少
個(gè)指針被實(shí)際使用(但如果是根結(jié)點(diǎn),則不管n多大都只要求至少兩個(gè)指針被使用)。如果j個(gè)指針被使用,那該塊中將有j-1個(gè)鍵,設(shè)為K1,K2⋯⋯,Kj - 1。第一個(gè)指針指向B樹的一部分,一些鍵值小于K1的記錄可在這一部分找到。第二個(gè)指針指向B樹的另一部分,所有鍵值大小等于K1且小于K2的記錄可在這一部分中。依此類推。最后,第j個(gè)指針指向B樹的又一部分,一些鍵值大于等于Kj - 1的記錄可以在這一部分中找到。注意:某些鍵值遠(yuǎn)小于K1或遠(yuǎn)大于Kj - 1的記錄可能根本無法通過該塊到達(dá),但可通過同一層的其他塊到達(dá)。
假若我們以常規(guī)的畫樹方式來畫B樹,任一給定結(jié)點(diǎn)的子結(jié)點(diǎn)按從左(第一個(gè)子結(jié)點(diǎn))到右(最后一個(gè)子結(jié)點(diǎn))的順序排列。那么,我們?cè)谌魏我粋€(gè)層次上從左到右來看B樹的結(jié)點(diǎn),結(jié)點(diǎn)的鍵值將按非減的順序出現(xiàn)。

DB2中索引結(jié)構(gòu)
標(biāo)準(zhǔn)表的表和索引管理

記錄表示和數(shù)據(jù)頁(yè)

在DB2中可使用命令db2dart <dbname> /di /tsi <tabspacesid> /oi <tableid> /ps <N>p /np 1 /v y來查看索引的物理結(jié)構(gòu)以增加對(duì)索引的理解。
【編輯推薦】
DB2分區(qū)數(shù)據(jù)庫(kù)的前滾操作
責(zé)任編輯:段燃
來源:
互聯(lián)網(wǎng)