DB2學習 索引結構

2021-05-23 19:52:22 字數 1830 閱讀 8987

牛新莊__

循序漸進

db2+dba

系統管理、運維與應用案例

5.3

索引設計

索引設計學習筆記,以及一些不能理解的問題(紅色的是有疑問的問題)

標準表的邏輯表 記錄 和索引結構

1、資料在邏輯上,按

資料頁的列表

來組織的

2、資料頁,則根據

extent

的大小,在邏輯上分組在一起。

例如:extent

大小為4

,則資料頁

0-3

組成了第乙個

extent

;資料頁

4-7

組成了第二個

extent 3

、資料頁的大小是一定的(

4k, 8k, 16k, 32k

),但是,每條記錄大小可能不同(即使同乙個表,其各個資料行的大小

也可能不同)。

對於乙個給定的資料頁(就是說:資料頁大小定了。但是,其上的各個資料行大小可能各不相同),這個頁所包含的資料條目可能會有所變化4

、每個第

500個資料頁都有乙個

fscr

,此fscr

用來對映接下來的

500個資料頁(直到下乙個

fscr

止)可供新資料行使用的空間

5、索引也是需要儲存的,並且索引儲存在

索引頁上面。在邏輯上,索引頁組織成

b+樹。對於

dms表空間,索引頁中的

rid使用

相對表空間頁號

而不是物件相對頁號

6、每個

資料頁都有相同的格式。

a) 每個資料頁

都有乙個

頁頭b)

頁頭後面是

槽目錄c)

槽目錄中的每一項

與該頁中的乙個記錄相對應(當然也是說:槽目錄中有幾項,則此資料頁上面就會有幾個記錄

也就是有幾個資料行)

d) 槽目錄中的每個項裡面的數值指示:其對應的資料行在此頁中

相對於開始位置的

位元組偏移

e) 值為

-1的條目與已刪除的記錄相對應

例如,對於上圖(上面兩個圖其實是一樣的),解釋如下:

rid是:

473,0 1

、此索引所執行的資料

位於:資料頁

473

2、在找到

473

頁上面,第

0 個槽號

3、此槽號中的值(

3800

)表示,此索引所指向的資料行,在此頁中的位元組偏移是

3800 4

、dbms

讀取索引所指向的資料時候,就可以:在

473

頁上,偏移

3800

個位元組去讀取即可

不過,我還是有個問題,偏移

3800

個位元組去讀取,但是,要讀取多少個位元組啊(也就是說,此資料行長度是多少啊,而且,按著我的理解,即使同乙個表,其每個資料行也可能是會變化的啊)

7、實際刪除記錄後,會在

資料頁上留下的

嵌入可用空間,對於這些空間,重組表時,這些

嵌入可用空間

會被轉換成

可用空間(這也意味著,如果

不重組表,則

嵌入可用空間

就會被一直浪費著)

8、明天好好理解下

索引的b+

樹結構

DB2 索引整理

create index 語句的pctfree子句指定建立索引時,每個索引頁中要留作空閒空間的百分比。在索引頁上保留更多的空閒空間將導致更小的頁分割,這將減少為重新獲得順序索引頁面而重組表的需要,從而增加預訪問,而預訪問是乙個可以提高效能的重要部件。此外,如果總是存在大關鍵字值,那麼就要考慮降低cr...

DB2 索引設計準則

db2 索引設計準則 1.乙個表如果建有大量索引會影響 insert update 和 delete 語句的效能,因為在表中的資料更改時,所有索引都須進行適當的調整。另一方面,對於不需要修改資料的查詢 select 語句 大量索引有助於提高效能,因為資料庫有更多的索引可供選擇,以便確定以最快速度訪問...

db2索引設計準則

首先說一下索引的好處,這幾天做了乙個功能,寫了乙個儲存過程當資料量是4000的時候,竟然跑了30分鐘,加上索引並優化以後,只要了30s多一點,所以索引真的很重要,只要是where條件中用到的字段都是可以用作索引的。還有就是寫sql語句一定要注意演算法,有時演算法的好與壞有非常大的影響。1.乙個表如果...