Sql server 事件库中是否存在任何事件,通过这些事件我们可以使用扩展事件识别碎片索引?
我是一个新的扩展事件,然而,我知道了同样通过阅读一些文章,如 我的问题是:事件库中是否有任何事件可以用来识别碎片索引 因为我只有 我正在使用SQL Server 2014Sql server 事件库中是否存在任何事件,通过这些事件我们可以使用扩展事件识别碎片索引?,sql-server,extended-events,Sql Server,Extended Events,我是一个新的扩展事件,然而,我知道了同样通过阅读一些文章,如 我的问题是:事件库中是否有任何事件可以用来识别碎片索引 因为我只有 我正在使用SQL Server 2014 提前感谢不要直接感谢。当索引的物理顺序与逻辑顺序不匹配时,就会出现碎片。当需要将数据放在没有空间的页面上时,就会发生这种情况,从而导致页面拆分。存在页面拆分事件。但是,在一般情况下,我不会使用它来跟踪碎片。事件的存在更多是为了跟踪一次性操作的活动。如果您想查看碎片,请查看sys.dm\u db\u index\u physi
提前感谢不要直接感谢。当索引的物理顺序与逻辑顺序不匹配时,就会出现碎片。当需要将数据放在没有空间的页面上时,就会发生这种情况,从而导致页面拆分。存在页面拆分事件。但是,在一般情况下,我不会使用它来跟踪碎片。事件的存在更多是为了跟踪一次性操作的活动。如果您想查看碎片,请查看sys.dm\u db\u index\u physical\u stats。要添加到的答案,您可以使用扩展事件跟踪页面拆分,从而间接跟踪碎片。查看Paul Randal撰写的精彩文章,熟悉LOP_DELETE_SPLIT log操作,然后创建一个如下所示的会话:
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\u DELETE\u ID$
:
SELECT *
FROM sys.dm_xe_map_values
WHERE name = 'log_op'
AND map_value = 'LOP_DELETE_SPLIT';