2016-08-16 61 views

回答

2

不能直接使用。當索引的物理順序與邏輯順序不匹配時存在碎片。而發生在需要將數據放在沒有空間的頁面上時,因此導致頁面拆分。有一個頁面拆分事件。但是,我不會用它來跟蹤一般情況下的碎片。該活動存在更多用於追蹤一次性活動的活動。如果您想查看碎片,請查看sys.dm_db_index_physical_stats。

1

要添加到@Ben Thuls的答案,您可以使用擴展事件跟蹤頁面拆分,從而間接跟蹤碎片。檢查this真棒文章由保羅·蘭德爾到熟悉LOP_DELETE_SPLIT日誌操作,然後創建一個會話,這將看起來像:

CREATE EVENT SESSION [Page Splits] ON SERVER 
ADD EVENT sqlserver.transaction_log(SET collect_database_name = 1 
    WHERE (operation = $LOP_DELETE_ID$)) --LOP_DELETE_SPLIT* 
ADD TARGET package0.event_file(SET FILENAME = N'PageSplitsOutput.xel',MAX_FILE_SIZE = 200, MAX_ROLLOVER_FILES = 2, INCREMENT = 20) 
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0  KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF); 
GO 

,並填寫$LOP_DELETE_ID$從這樣的結果:

SELECT * 
FROM sys.dm_xe_map_values 
WHERE name = 'log_op' 
AND map_value = 'LOP_DELETE_SPLIT'; 
相關問題