【问题标题】:Is there any event in Event Library by which we can identify Fragmented Index using Extended Events?事件库中是否有任何事件可以通过扩展事件识别碎片索引?
【发布时间】:2016-12-22 15:36:21
【问题描述】:

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

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

因为我只有一个

我使用的是 SQL Server 2014。

提前致谢

【问题讨论】:

    标签: sql-server extended-events


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      要添加到@Ben Thuls 的答案,您可以使用扩展事件跟踪页面拆分,从而间接跟踪碎片。查看 this 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';
      

      【讨论】:

        猜你喜欢
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        相关资源
        最近更新 更多