1

我是扩展活动的新手,但是,通过阅读类似这样的一些文章,我了解了这一点

我的问题:事件库中是否有任何事件可以用来识别 Fragmented Index ?

因为我只有

在此处输入图像描述

我正在使用 SQL Server 2014。

提前致谢

4

2 回答 2

2

不是直接的。当索引的物理顺序与逻辑顺序不匹配时,就会出现碎片。当需要将数据放在没有空间的页面上时,就会发生这种情况,从而导致页面拆分有一个页面拆分事件。但是,在一般情况下,我不会使用它来跟踪碎片。该事件更多地用于跟踪一次性操作的活动。如果要查看碎片,请查看 sys.dm_db_index_physical_stats。

于 2016-08-16T12:44:02.880 回答
1

要添加到@Ben Thuls的答案,您可以使用扩展事件跟踪页面拆分,从而间接跟踪碎片。查看Paul Randal 的这篇很棒的文章以熟悉 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';
于 2016-08-16T14:35:22.897 回答