<event_sessions xmlns="http://schemas.microsoft.com/sqlserver/2008/07/extendedeventconfig">
  <event_session name="log_io" maxMemory="4" eventRetentionMode="allowSingleEventLoss" trackCausality="false" dispatchLatency="30" maxEventSize="0" memoryPartitionMode="none">
    <templateCategory>
      <!-- _locID_text="templateCategory" _locComment = "" -->系统监视</templateCategory>
    <templateName>
      <!-- _locID_text = "templateName" _locComment = "" -->数据库日志文件 IO 跟踪</templateName>
    <templateDescription>
      <!-- _locID_text = "templateDescription" _locComment = "" -->此模板通过跟踪异步 IO、数据库日志刷新、文件写入、LOGFLUSHQ  类型的旋转锁回退以及 WRITELOG 类型的等待，监视服务器上数据库日志文件的 IO。此模板以两种方式收集数据: 原始数据收集到环形缓冲区，旋转锁回退信息基于输入缓冲区(sql_text)进行聚合。针对每个数据库单个日志文件对会话进行筛选；如果您具有多个日志文件，则可以修改 file_write_completed 和 file_written 事件的筛选器，以便不只包含 file_id = 2。</templateDescription>
    <event package="sqlos" name="async_io_completed"/>
    <event package="sqlos" name="async_io_requested"/>
    <event package="sqlos" name="spinlock_backoff">
      <action package="sqlserver" name="sql_text"/>
      <predicate>
        <leaf>
          <comparator name="equal_uint64" package="package0"></comparator>
          <event name="spinlock_backoff" package="sqlos" field="type"></event>
          <value>85</value>
        </leaf>
      </predicate>
    </event>
    <event package="sqlos" name="wait_info">
      <action package="sqlserver" name="client_app_name"/>
      <action package="sqlserver" name="is_system"/>
      <action package="sqlserver" name="session_id"/>
      <predicate>
        <and>
          <leaf>
            <comparator name="equal_uint64" package="package0"></comparator>
            <event name="wait_info" package="sqlos" field="opcode"></event>
            <value>1</value>
          </leaf>
          <leaf>
            <comparator name="equal_uint64" package="package0"></comparator>
            <event name="wait_info" package="sqlos" field="wait_type"></event>
            <value>182</value>
          </leaf>
        </and>
      </predicate>
    </event>
    <event package="sqlserver" name="databases_log_flush"/>
    <event package="sqlserver" name="file_write_completed">
      <parameter name="collect_path" value="1"/>
      <predicate>
        <leaf>
          <comparator name="equal_uint64" package="package0"></comparator>
          <event name="file_write_completed" package="sqlserver" field="file_id"></event>
          <value>2</value>
        </leaf>
      </predicate>
    </event>
    <event package="sqlserver" name="file_written">
      <parameter name="collect_path" value="1"/>
      <predicate>
        <leaf>
          <comparator name="equal_uint64" package="package0"></comparator>
          <event name="file_written" package="sqlserver" field="file_id"></event>
          <value>2</value>
        </leaf>
      </predicate>
    </event>
    <target package="package0" name="histogram">
      <parameter name="filtering_event_name" value="sqlos.spinlock_backoff"/>
      <parameter name="source" value="sqlserver.sql_text"/>
    </target>
    <target package="package0" name="ring_buffer"/>
  </event_session>
</event_sessions>
