繁体   English   中英

事件库中是否有任何事件可以通过扩展事件识别碎片索引?

[英]Is there any event in Event Library by which we can identify Fragmented Index using Extended Events?

我是扩展事件的新手,但是通过阅读像这样的文章,我了解了同样的事情

我的问题:事件库中是否有任何事件可以识别碎片索引?

因为我只有

在此输入图像描述

我正在使用SQL Server 2014。

提前致谢

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

要添加@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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM