我是新來擴展事件然而,我認識了大致相同的閱讀就像this one在事件庫中是否有任何事件可以使用擴展事件來識別碎片索引?
我的問題的一些文章:有沒有在事件庫中的任何事件,使我們能夠識別零碎指數?
因爲我只拿到了
我使用SQL Server 2014
在此先感謝
我是新來擴展事件然而,我認識了大致相同的閱讀就像this one在事件庫中是否有任何事件可以使用擴展事件來識別碎片索引?
我的問題的一些文章:有沒有在事件庫中的任何事件,使我們能夠識別零碎指數?
因爲我只拿到了
我使用SQL Server 2014
在此先感謝
不能直接使用。當索引的物理順序與邏輯順序不匹配時存在碎片。而即發生在需要將數據放在沒有空間的頁面上時,因此導致頁面拆分。有一個頁面拆分事件。但是,我不會用它來跟蹤一般情況下的碎片。該活動存在更多用於追蹤一次性活動的活動。如果您想查看碎片,請查看sys.dm_db_index_physical_stats。
要添加到@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';