什么叫碎片,碎片对io的影响以及什么叫物理顺序,什么叫逻辑
今天有人問我關于物理順序和邏輯順序的事情,就像到了這個話題
頁碎片:就是IAM頁中葉子頁的下一頁和頁頭中該頁的下一頁不相同,那么就是碎片
邏輯順序:就是索引的葉子頁中通過上一頁下一頁形成的順序
物理順序:就是IAM中分配的順序
DROP TABLE dbo.t_index go CREATE TABLE t_index (id INT PRIMARY KEY ,VALUE CHAR(1000)) GO INSERT INTO t_index VALUES(1,'1') INSERT INTO t_index VALUES(2,'2') INSERT INTO t_index VALUES(3,'3') INSERT INTO t_index VALUES(4,'4') INSERT INTO t_index VALUES(6,'6') INSERT INTO t_index VALUES(7,'7') INSERT INTO t_index VALUES(8,'8')INSERT INTO t_index VALUES(5,'5')DBCC IND (db_test,t_index,1)PageFID PagePID IAMFID IAMPID ObjectID IndexID PartitionNumber PartitionID iam_chain_type PageType IndexLevel NextPageFID NextPagePID PrevPageFID PrevPagePID
------- ----------- ------ ----------- ----------- ----------- --------------- -------------------- -------------------- -------- ---------- ----------- ----------- ----------- -----------
1 80 NULL NULL 1298103665 1 1 72057594040549376 In-row data 10 NULL 0 0 0 0
1 78 1 80 1298103665 1 1 72057594040549376 In-row data 1 0 1 90 0 0
1 89 1 80 1298103665 1 1 72057594040549376 In-row data 2 1 0 0 0 0
1 90 1 80 1298103665 1 1 72057594040549376 In-row data 1 0 0 0 1 78
那么他們在IAM的分配是:
IAM: Single Page Allocations @0x00000000118EA08E
Slot 0 = (1:78) Slot 1 = (1:89) Slot 2 = (1:90)
Slot 3 = (0:0) Slot 4 = (0:0) Slot 5 = (0:0)
Slot 6 = (0:0) Slot 7 = (0:0)
IAM: Extent Alloc Status Slot 1 @0x00000000118EA0C2
(1:0) - (1:896) = NOT ALLOCATED
肉眼看感覺沒有碎片,那么回頭想想碎片的定義是顯然在2個頁子頁中間(78,90)中間有一個89索引頁那么會被認為是有碎片的。
那么就碎片到底對io性能有什么影響,其實碎片對精確查找的性能影響不是很大(如用唯一的聚集索引查找),但是對區域掃描有影響:
1.如果你的碎片跨區了,那么就要涉及到你設置的分配單元大小了,如果你的分配單元和區一樣大,那么可能需要重新尋道等問題導致io時間變成。
2.如果你的碎片沒有跨區,那么唯一造成問題的就是你的頁密度不夠高導致性能問題
?
posted on 2013-05-14 11:27 Fanr_Zh 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/Amaranthus/archive/2013/05/14/3077470.html
總結
以上是生活随笔為你收集整理的什么叫碎片,碎片对io的影响以及什么叫物理顺序,什么叫逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java初学总结
- 下一篇: 客户网页WIZnet无线解决方案 之 太