私は、拡張イベントに新しいですがしかし、私はthis oneイベントライブラリで、拡張イベントを使用してフラグメンテーションインデックスを識別できるイベントはありますか?
私の質問のようないくつかの記事を読むことによって、同じについて知るようになった:私たちは断片化されたインデックスを特定することが可能なイベントライブラリ内のすべてのイベントはありますか?
私だけ
を得たので、私は、SQL Serverに事前に直接
私は、拡張イベントに新しいですがしかし、私はthis oneイベントライブラリで、拡張イベントを使用してフラグメンテーションインデックスを識別できるイベントはありますか?
私の質問のようないくつかの記事を読むことによって、同じについて知るようになった:私たちは断片化されたインデックスを特定することが可能なイベントライブラリ内のすべてのイベントはありますか?
私だけ
を得たので、私は、SQL Serverに事前に直接
ないで2014年
感謝を使用しています。フラグメンテーションは、インデックスの物理的な順序が論理的な順序と一致しない場合に存在します。そしては、部屋がないページにデータを置く必要があるときにページが分割されるようになると、が発生します。ページ分割のイベントがあります。しかし、一般的なケースでは断片化を追跡するためには使用しません。このイベントは、一回限りの操作のアクティビティを追跡するためにより多く存在します。断片化を見たい場合は、sys.dm_db_index_physical_statsを見てください。
@Ben Thulsの回答に追加すると、拡張イベントを使用してページ分割を追跡し、断片化を間接的に追跡できます。
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';
LOP_DELETE_SPLITログ操作に慣れてから、そのようになります。セッションを作成するために、ポール・ランダルによって
this素晴らしい記事をチェック