拡張イベントを使用してシステムの使用状況を監視する方法

この手順は、拡張イベントを Event Tracing for Windows (ETW) と共に使用してシステムの使用状況を監視する方法を示します。また、CREATE EVENT SESSION、ALTER EVENT SESSION、DROP EVENT SESSION の各ステートメントの使用方法についても説明します。

この作業には、SQL Server Management Studio のクエリ エディタを使用した次の手順の実行も含まれます。この手順では、コマンド プロンプトを使用して ETW コマンドを実行することも必要です。

拡張イベントを使用してシステムの使用状況を監視するには

  1. クエリ エディタで次のステートメントを実行してイベント セッションを作成し、2 つのイベントを追加します。checkpoint_begin と checkpoint_end のイベントは、データベース チェックポイントの開始時と終了時に起動されます。

    CREATE EVENT SESSION test0
    ON SERVER
    ADD EVENT sqlserver.checkpoint_begin,
    ADD EVENT sqlserver.checkpoint_end
    WITH (MAX_DISPATCH_LATENCY = 1 SECONDS)
    go
    
  2. 32 バケットのバケット ターゲットを追加して、データベース ID に基づいたチェックポイントの数をカウントします。

    ALTER EVENT SESSION test0
    ON SERVER
    ADD TARGET package0.asynchronous_bucketizer
    (
          SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id'
    )
    go
    
  3. 次のステートメントを実行して ETW ターゲットを追加します。こうすると開始イベントと終了イベントを表示できるので、これを使用してチェックポイントの所要時間を判断できます。

    ALTER EVENT SESSION test0
    ON SERVER
    ADD TARGET package0.etw_classic_sync_target
    go
    
  4. 次のステートメントを実行してセッションを開始し、イベント コレクションを開始します。

    ALTER EVENT SESSION test0
    ON SERVER
    STATE = start
    go
    
  5. 次のステートメントを実行して 3 つのイベントを発生させます。

    USE tempdb
          checkpoint
    go
    USE master
          checkpoint
          checkpoint
    go
    
  6. 次のステートメントを実行してイベント カウントを表示します。

    SELECT CAST(xest.target_data AS xml) Bucketizer_Target_Data_in_XML
    FROM sys.dm_xe_session_targets xest
    JOIN sys.dm_xe_sessions xes ON xes.address = xest.event_session_address
    JOIN sys.server_event_sessions ses ON xes.name = ses.name
    WHERE xest.target_name = 'asynchronous_bucketizer' AND xes.name = 'test0'
    go
    
  7. コマンド プロンプトで、次のコマンドを実行すると ETW のデータが表示されます。

    注意注意

    tracerpt コマンドのヘルプを表示するには、コマンド プロンプトで「tracerpt /?」と入力します。

    logman query -ets --- List the ETW sessions. This is optional.
    logman update XE_DEFAULT_ETW_SESSION -fd -ets --- Flush the ETW log.
    tracerpt %temp%\xeetw.etl -o xeetw.txt --- Dump the events so they can be seen.
    
  8. 次のステートメントを実行してイベント セッションを停止し、サーバーから削除します。

    ALTER EVENT SESSION test0
    ON SERVER
    STATE = STOP
    go
     
    DROP EVENT SESSION test0
    ON SERVER
    go