<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/6.11.7-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>SQL Server &#38; BI Blog by Andreas Wolter - Category: "SQL Trace &#38; Profiler"</title>
		<link>https://www.insidesql.org/blogs/andreaswolter/</link>
		<atom:link rel="self" type="application/rss+xml" href="https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2" />
		<description>InsideSQL.org Blogs - Blogs über SQL Server</description>
		<language>en-EU</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=6.11.7-stable"/>
		<ttl>60</ttl>
				<item>
			<title>Dieser Blog ist umgezogen // This Blog has moved: http://andreas-wolter.com/blog/</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2017/09/blog-umgezogen-this-blog-moved-andreas-wolter-com</link>
			<pubDate>Wed, 20 Sep 2017 10:41:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="alt">Seminare</category>
<category domain="alt">SQLPASS</category>
<category domain="alt">Tracing &amp; Monitoring</category>
<category domain="alt">Analysis Services</category>
<category domain="alt">Extended Events</category>
<category domain="alt">Conferences</category>
<category domain="alt">Oracle</category>
<category domain="alt">Security</category>
<category domain="alt">Locking &amp; Blocking</category>
<category domain="alt">SQL Trace &amp; Profiler</category>
<category domain="alt">SQL Server 2014</category>
<category domain="alt">Indexing</category>
<category domain="alt">Columnstore Index</category>
<category domain="alt">APS/Parallel Data Warehouse</category>
<category domain="alt">Reporting Services</category>
<category domain="alt">Integration Services</category>
<category domain="main">Miscellaneous</category>
<category domain="alt">Geospatial</category>
<category domain="alt">Certification, MCM &amp; MCSM, MVP</category>
<category domain="alt">In-Memory OLTP / XTP, HTAP</category>
<category domain="alt">Surveys / Umfragen</category>
<category domain="alt">Scripts</category>
<category domain="alt">HADR, AlwaysOn</category>
<category domain="alt">MDW</category>
<category domain="alt">Storage Engine</category>
<category domain="alt">Trivia</category>
<category domain="alt">Azure</category>
<category domain="alt">Performance</category>
<category domain="alt">SQL Server 2016</category>
<category domain="alt">Patching</category>			<guid isPermaLink="false">3918@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;&lt;a href=&quot;http://andreas-wolter.com/blog/&quot;&gt;http://andreas-wolter.com/blog/&lt;/a&gt;&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Liebe Leser&lt;br /&gt; dieser Blog ist hiermit nur noch „Archiv“ und wird nicht mehr weiter gepflegt.&lt;br /&gt; Seit August 2017 finden sich neue Artikel ausschließlich unter der &lt;strong&gt;neuen URL:&lt;br /&gt; &lt;a href=&quot;http://andreas-wolter.com/blog/&quot;&gt;http://andreas-wolter.com/blog/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Dear Readers&lt;br /&gt; this blog is now merely an „archive“ and no longer being updated.&lt;br /&gt; Since August 2017 new articles are exclusively available under the &lt;strong&gt;new URL:&lt;br /&gt; &lt;a href=&quot;http://andreas-wolter.com/en/blog/&quot;&gt;http://andreas-wolter.com/en/blog/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Die aufwändige Mehrsprachigkeit (Deutsch und Englisch professionell manuell übersetzt) wird beibehalten – aber Layout-technisch anders gelöst. Damit dürfte ich immer noch den einzigen mehrsprachigen IT-Blog weltweit betreiben.&lt;br /&gt; Ich hoffe, das neue Design gefällt Ihnen.&lt;/p&gt;
&lt;/td&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;The complex multilingualism (German and English professionally manually translated) is being continued – but solved differently in terms of layout. With that I most likely still operate the only multilingual IT-Blog worldwide.&lt;br /&gt; I hope you like the new design.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://andreas-wolter.com/blog/&quot;&gt;&lt;img class=&quot;loadimg&quot; src=&quot;http://www.insidesql.org/blogs/media/blogs/andreaswolter/quick-uploads/p3918/170918_website_blog.jpg?mtime=1505903940&quot; alt=&quot;&quot; width=&quot;800&quot; height=&quot;552&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Mein aktueller Artikel, der erstmalig ausschließlich auf der neuen Website zu finden ist, lautet: &lt;strong&gt;&lt;a href=&quot;http://andreas-wolter.com/optimierung-von-workflows-mit-inmemory-objekten/&quot;&gt;Optimieren von Workflows mit In-Memory und nativ kompilierten Objekten - oder wie es nicht funktioniert&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;My currently last article, which is exclusively available at the new website for the first time, is &lt;strong&gt;&lt;a href=&quot;http://andreas-wolter.com/en/optimizing-workflows/&quot;&gt;Optimizing workflows with In-Memory and Natively Compiled Objects - or how it does not work&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Cu at my new Blog&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p><a href="http://andreas-wolter.com/blog/">http://andreas-wolter.com/blog/</a></p>
<table>
<tbody>
<tr>
<td width="302">
<p>Liebe Leser<br /> dieser Blog ist hiermit nur noch „Archiv“ und wird nicht mehr weiter gepflegt.<br /> Seit August 2017 finden sich neue Artikel ausschließlich unter der <strong>neuen URL:<br /> <a href="http://andreas-wolter.com/blog/">http://andreas-wolter.com/blog/</a></strong></p>
</td>
<td width="302">
<p>Dear Readers<br /> this blog is now merely an „archive“ and no longer being updated.<br /> Since August 2017 new articles are exclusively available under the <strong>new URL:<br /> <a href="http://andreas-wolter.com/en/blog/">http://andreas-wolter.com/en/blog/</a></strong></p>
</td>
</tr>
<tr>
<td width="302">
<p>Die aufwändige Mehrsprachigkeit (Deutsch und Englisch professionell manuell übersetzt) wird beibehalten – aber Layout-technisch anders gelöst. Damit dürfte ich immer noch den einzigen mehrsprachigen IT-Blog weltweit betreiben.<br /> Ich hoffe, das neue Design gefällt Ihnen.</p>
</td>
<td width="302">
<p>The complex multilingualism (German and English professionally manually translated) is being continued – but solved differently in terms of layout. With that I most likely still operate the only multilingual IT-Blog worldwide.<br /> I hope you like the new design.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<div class="image_block"><a href="http://andreas-wolter.com/blog/"><img class="loadimg" src="http://www.insidesql.org/blogs/media/blogs/andreaswolter/quick-uploads/p3918/170918_website_blog.jpg?mtime=1505903940" alt="" width="800" height="552" /></a></div>
<p> </p>
<table>
<tbody>
<tr>
<td width="302">
<p>Mein aktueller Artikel, der erstmalig ausschließlich auf der neuen Website zu finden ist, lautet: <strong><a href="http://andreas-wolter.com/optimierung-von-workflows-mit-inmemory-objekten/">Optimieren von Workflows mit In-Memory und nativ kompilierten Objekten - oder wie es nicht funktioniert</a></strong></p>
</td>
<td width="302">
<p>My currently last article, which is exclusively available at the new website for the first time, is <strong><a href="http://andreas-wolter.com/en/optimizing-workflows/">Optimizing workflows with In-Memory and Natively Compiled Objects - or how it does not work</a></strong></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Cu at my new Blog</p>
<p>Andreas</p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2017/09/blog-umgezogen-this-blog-moved-andreas-wolter-com#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3918</wfw:commentRss>
		</item>
				<item>
			<title>New Extended Events for Tracing in SQL Server 2014</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2014/04/new-extended-events-for-tracing-in-sql-server-2014</link>
			<pubDate>Fri, 04 Apr 2014 22:10:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="alt">Tracing &amp; Monitoring</category>
<category domain="main">Extended Events</category>
<category domain="alt">SQL Trace &amp; Profiler</category>
<category domain="alt">SQL Server 2014</category>			<guid isPermaLink="false">3667@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;Neue “Erweiterte Ereignisse” (XEvents) für Tracing in SQL Server 2014&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(de)&lt;br /&gt;Dieser Artikel enthält eine Liste der neuen Erweiterte Ereignisse (“Extended Events”), dem Tracing Framework in SQL Server in dem neuen 2014 Release.&lt;/p&gt;
&lt;p&gt;Zunächst gibt es 3 neue Pakete („Packages“), die alle zu der neuen Arbeitsspeicher(„In-Memory“) -OLTP Engine: XTP, aufgeteilt auf 3 DLLs:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(en)&lt;br /&gt;This article contains a list of new Extended Events, the tracing framework in SQL Server in the new 2014 release.&lt;/p&gt;
&lt;p&gt;To begin with there are 3 new packages, all belonging to the new In-Memory OLTP Engine: XTP, split up into 3 dlls:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style=&quot;width: 574px;&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;Package&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;&lt;strong&gt;description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;&lt;strong&gt;Module name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;Extended events for the XTP Runtime&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;{InstanceDir}\MSSQL\Binn\&lt;br /&gt; hkruntime.dll&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;Extended events for the XTP Engine&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;{InstanceDir}\MSSQL\Binn\&lt;br /&gt; hkengine.dll&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;Extended events for the XTP Compile&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;{InstanceDir}\MSSQL\Binn\&lt;br /&gt; hkcompile.dll&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Die Anzahl der Extended Events ist von &lt;strong&gt;625 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2012&lt;/strong&gt; (SP1) auf &lt;strong&gt;870 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2014&lt;/strong&gt; (RTM) angestiegen. Das sind &lt;strong&gt;245&lt;/strong&gt; neue Events! – Reichlich Möglichkeiten, in Internas einzutauchen :-)&lt;br /&gt; 2 Events sind umbenannt worden:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_incremental_checkpoint&lt;/em&gt; in&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_indirect_checkpoint&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;und &lt;em&gt;hekaton_slow_param_passing&lt;/em&gt; in&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;&lt;em&gt;natively_compiled_proc_slow_parameter_passing&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ja, richtig gelesen. Es gab bereits im SQL Server 2012 eine Anzahl an Events für die XTP Engine. Es kommt recht häufig vor, dass man Bits von zukünftigen Entwicklungen in der aktuellen Release findet.&lt;/p&gt;
&lt;p&gt;Nebenbei: SQL Trace wurde nicht im geringsten angefasst. Die Anzahl von SQL Trace Events bleibt mit 180 seit SQL Server 2008 stabil. – Here ist ein Überblick von Extended Events gegen SQL Trace Events in den verschiedenen SQL Server Versionen: &lt;a href=&quot;/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features&quot;&gt;Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace &amp;amp; Profiler einfach von gestern sind :-)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Weiter zu XEvents: es gibt keine neuen Prädikate, aber eine Anzahl neuer Maps, was natürlich nicht überrascht bei der Menge neuer Events.&lt;br /&gt; Targets, Actions, Typen und Session Optionen  sind unverändert.&lt;/p&gt;
&lt;p&gt;Und hier ist die Liste der neuen Extended Events:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;The number of Extended Events increased from &lt;strong&gt;625 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2012&lt;/strong&gt; (SP1) to &lt;strong&gt;870 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2014&lt;/strong&gt; (RTM). That makes &lt;strong&gt;245&lt;/strong&gt; new events! – Plenty of opportunities to look into internals :-)&lt;br /&gt; 2 events have been renamed:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_incremental_checkpoint&lt;/em&gt; into&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_indirect_checkpoint&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;and &lt;em&gt;hekaton_slow_param_passing&lt;/em&gt; into&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;natively_compiled_proc_slow_parameter_passing&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes, you read correctly. There have already been a couple of events for the new XTP engine within SQL Server 2012. It’s quite common that you can find bits of future developments within the current release.&lt;/p&gt;
&lt;p&gt;By the way: SQL Trace has not been touched by the slightest bit. The number of SQL Trace events stays at 180 since SQL Server 2008. – here you find an overview of the number of Extended Events vs SQL Trace events in the various SQL Server versions: &lt;a href=&quot;/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features&quot;&gt;Comparing Extended Events vs SQL Trace – or why SQL Trace &amp;amp; Profiler are just a thing of the past :-)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Continuing with XEvents: There are no new predicates, but a couple more maps, which is of course not surprisingly considering the amount of new events.&lt;br /&gt; Targets, actions, types and session options are unchanged.&lt;/p&gt;
&lt;p&gt;And here is the list of all new extended events:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style=&quot;width: 350px;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Package&lt;br /&gt;name&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Event name&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_async_shutdown_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store encounters an error during async query store shutdown&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_cleanup_task_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for cleanup of QDS stale data is not completed successfully&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_task_creation_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for QDS data persistence could not be created&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_task_initialization_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for QDS data persistence could not be initialized&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_task_persist_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for QDS data persistence is not completed successfully&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_begin_persist_runtime_stat&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired immediately before current runtime statistics for a query plan is persisted to the database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_bloom_filter_false_positive&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the Bloom filter for QDS statement texts gives a false positive result&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_check_consistency_init_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when check consistency task fails during initialization&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_database_initialization_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if initialization of the Query Store for database has failed. The Query Store will be disabled for this database&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_db_cleanup__finished&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if cleanup of QDS stale data finished for particular database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_db_cleanup__started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if cleanup of QDS stale data started for particular database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_disk_size_check_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when a check against Query Store on-disk size limit fails&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_disk_size_info&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when a check against QDS on-disk size is performed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_execution_runtime_info&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when runtime information is sent to the query store.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_execution_runtime_info_discarded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when runtime information sent to the query store is discarded.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_execution_runtime_info_evicted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when runtime information sent to the query store is evicted.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_flush_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store failed to flush dirty data&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_loaded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store is loaded&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_notify_dirty_shutdown_on_partition_startup&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when previous instance of query store for the partition is shutdown by force in order to allow creation of a new instance&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_notify_force_failure_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store failed to notify force failure&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_persist_task_init_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when persist task fails during initialization&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_plan_forcing_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when forcing of plan from qds fail&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_plan_persistence_failure&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if there&#039;s a failure to persist plan&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_plan_removal&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when plan is removed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_query_persistence_failure&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if there&#039;s a failure to persist query&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_read_write_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the read/write to Query Store internal tables failed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_statement_not_found&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired in case when statement couldn&#039;t be found due to race condition or ambiguous user request.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_unloaded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store is unloaded from memory&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlos&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;nonpreemptive_long_syncio&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;record long sync io operation in nonpreemptive worker&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlos&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;stuck_dispatcher_callback_executed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Stuck dispatcher callback executed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlos&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;wait_completed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when there is a wait completed on a SQLOS controlled resource.  Use this event to track wait completion.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;after_natively_compiled_proc_entry_removal_on_drop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired after the procedure cache entry is flushed when dropping a natively compiled procedure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;availability_replica_state&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the Availability Replica is starting or shutting down.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;before_natively_compiled_proc_entry_removal_on_drop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired before the procedure cache entry is flushed when dropping a natively compiled procedure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;before_redo_lsn_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs just prior to the update of the EOL LSN&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_eviction_thresholds_recalculated&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Lazywriter and/or worker clock has wrapped the BUF array and thresholds are re-calculated.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_extension_pages_evicted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Page is evicted from the buffer pool extension cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_extension_pages_read&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Page is read from the buffer pool extension cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_extension_pages_written&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Page or contiguous set of pages evicted into the buffer pool extension cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_phase_tracing&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when DBCC CHECK enters a new phase of the checking. Use this event to trace the phases of DBCC CHECK process.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_thread_message_statistics&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of messages a DBCC CHECK thread has sent or received.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_thread_page_io_statistics&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of logical, physical, and read-ahead IOs a DBCC CHECK thread has performed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_thread_page_latch_statistics&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a phase of DBCC CHECK is finished. Use This event to collect the number and time of page latch and IO latch waits.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;clustered_columnstore_index_rebuild&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when clustered index on the table was rebuilt. This event is raised three times for ALTER index rebuild operation on CCSI. The event is raised when the operation takes lock on index rebuild resource, when lock is taken on the table and when S lock on the table is upgraded to SCH_M lock to switch indexes in metadata.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_code_coverage&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Code coverage Xevent for columnstore code.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_index_build_low_memory&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when Storage Engine detects low memory condition and the rowgroup size is reduced.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_index_build_process_segment&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a segment is processed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_index_build_throttle&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Shows the statistics of columnstore index build parallelism throttling&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;columnstore_tuple_mover_begin_compress&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when column store tuple mover starts compressing a deltastore.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;columnstore_tuple_mover_end_compress&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when column store tuple mover is done compressing a deltastore.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;database_xml_deadlock_report&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Produces a deadlock report for a victim, with information scoped to the victim&#039;s database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;db_lock_acquired_from_cache&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a DB lock is acquired from the XactWorkspace DB lock cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;db_lock_released_from_cache&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a DB lock is released from the XactWorkspace DB lock cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ddl_with_wait_at_low_priority&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A DDL statement was executed using the WAIT_AT_LOW_PRIORITY options&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;diag_quantum_end&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the diag is notified of quantum end.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;dyn_throttle_checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when checkpointing has been dynamically throttled with a new Checkpoint rate.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;feature_extension&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when received and parses data for a feature in feature extension.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_handle_in_use&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when a file handle we&#039;re trying to delete is in use and we don&#039;t expect it to be. The typical response is dumping all the handles in the system via SysInternals HANDLE.EXE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_read_enqueued&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File read enqueued&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_read_throttled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File read throttled&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_write_enqueued&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File write enqueued&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_write_throttled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File write throttled&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_packet_enqueue&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A task packet is enqueued&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_process_packet&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A task packet is dequeued and processed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_process_pages_for_db_packet&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Purge the pages that contain ghost records found in a database&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_start&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Ghost cleanup task start&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_suspend&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Ghost cleanup task suspend&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;hadr_tds_synchronizer_payload_skip&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hadron Tds Listener Synchronizer skipped a listener payload because there were no changes since the previous payload.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;lock_request_priority_state&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;The priority state of a lock request&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;log_cache_write_block&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Writing a log block to the log cache&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;metadata_ddl_add_column&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when an ALTER TABLE ADD column operation is updating base index.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;metadata_ddl_alter_column&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when an ALTER TABLE ALTER column operation is updating base index.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;metadata_ddl_drop_column&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when an ALTER TABLE DROP column operation is updating base index.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_extent_activation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed extent activation and deactivation operations.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_extent_allocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed extent allocation operations&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_extent_deallocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed extent deallocation operations.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_allocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed page allocation operations&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_deallocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed page allocation operations&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_scan_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track the activity of SGAM scans for mixed page allocation&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_scan_page&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track the activity of SGAM scans for mixed page allocation&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_skipextent&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track the activity of SGAM scans for mixed page allocation&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;natively_compiled_proc_execution_started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired before a natively compiled procedure is executed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;natively_compiled_proc_slow_parameter_passing&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a Hekaton procedure call dispatch goes to slow parameter passing code path&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;process_killed_by_abort_blockers&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A process is killed by an ABORT = BLOCKERS DDL statement&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_execution_batch_hash_aggregation_finished&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at the end of batch hash aggregation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_execution_batch_hash_children_reversed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs each time when hash join reverses build and probe side while processing data spilled to disk.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_execution_batch_hash_join_spilled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs each time when hash join spills some data to disk in batch processing.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_optimizer_estimate_cardinality&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the query optimizer estimates cardinality on a relational expression.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_optimizer_force_both_cardinality_estimation_behaviors&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Both traceflags 2312 and 9481 were enabled, attempting to force both old and new cardinality estimation behaviors at the same time. The traceflags were ignored. Disable one or both of the traceflags.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_failed_to_capture_query&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the Query Store failed to capture query. The Query Store will not track statistics for this query&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_failed_to_load_forced_plan&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the query failed to load forced plan from QDS. Forcing policy will not be applied&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_persist_on_shutdown_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when SQL Server fails to store dirty entries in Query Store on database shutdown.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;recovery_indirect_checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Chose to enqueue an indirect checkpoint as we are near our recovery target&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;remove_database_cache&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Remove database cache&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;server_max_workers&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a request enqueue fails because a worker was not guaranteed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;session_recoverable_state_change&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the server determines a state change in term of session recovery on a connectionresilency-enabled connection.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;sql_transaction_commit_single_phase&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a sql transaction is committed with single phase commit.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_blob_properties_obtained&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Windows Azure Storage blob property is obtained from response header.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_failed_request&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Failed to complete a request to Windows Azure Storage.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_header_obtained&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Response header is obtained from request to Windows Azure Storage.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_read_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Read complete from Windows Azure Storage response.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_request_opened&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A request is opened to Windows Azure Storage.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_send_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Request send to Windows Azure Storage is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_write_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Request send to Windows Azure Storage is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_create_procedure&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of XTP procedure creation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_create_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of XTP table creation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_db_page_allocation_allowed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that page allocations for the database are allowed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_db_page_allocation_disallowed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that page allocations for the database are disallowed due to memory pressure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_deploy_done&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at completion of XTP object deployment.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_matgen&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of MAT generation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_offline_checkpoint_scan_start&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired by XTP offline checkpoint when the checkpoint thread begins.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_offline_checkpoint_scan_stop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired by XTP offline checkpoint when the checkpoint thread stops.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_recover_done&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at completion of log recovery of XTP table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_recover_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of log recovery of XTP table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_storage_table_create&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at just before the XTP storage table is created.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_connection_rejected_by_proxy_whitelist&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;After a connection attempt to the UCS proxy endpoint is rejected by whitelist check&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_connect_next_hop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy next hop connection&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_receive_proxy_connect_message&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy receive proxy connect message&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_route_add&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy route added&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_route_disable&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy route disabled&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_route_refresh&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy route refreshed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_send_proxy_connect_message&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy send proxy connect message&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;cgen&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of C code generation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;invoke_cl&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to the invocation of the C compiler.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mat_export&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of MAT export.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;pitgen_procs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of PIT generation for procedures.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;pitgen_tables&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of PIT generation for tables.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;after_changestatetx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires after transaction changes state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;alloctx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;attempt_committx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Is raised when a transaction is asked to commit.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;before_changestatetx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires before transaction changes state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;dependency_acquiredtx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Raised after transaction takes a dependency on another transaction.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;endts_acquiredtx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires after transaction acquires an end timestamp.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_base_generation_evaluation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that an evaluation of updating the GC base generation has been made.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_base_generation_updated&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the oldest active transaction hint used for calculating the GC base generation has been updated.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_cycle_completed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that a GC notification has been enqueued.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_notification&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that GC is processing a notification.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;redo_single_hk_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Redo on a HK log record&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_add_delta_filter_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Adding delta filter.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_add_duplicate_delta_filter&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Adding duplicate delta filte.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_adding_tx_filter&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Adding tx filter.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_begin_close_ckpt_processing&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Beginning close checkpoint processing: checkpoint flush fence = $2 ($3 state).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfd_entry_deleted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Cleaned up data CFD entry for file $2 $3.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfd_rows_created&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Successfully created CFD rows.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfdtable_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CfdTable dump&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfp_handles_opened&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Opened CFP handles for {data: $2 delta: $3} in section $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfp_removed_from_freelist&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Removed CFP from freelist for destination file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checkpoint_file_flush&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicating that a file has started a flush operation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checkpoint_load_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Starting Checkpoint load with checkpoint timestamp=$2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checkpoint_write_io&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Logs an event indicating that an IO has started (when event_type == IoStarted) or that an IO has completed (when event_type == IoComplete).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checksum_validation_succeeded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Checksum validation for Hekaton checkpoint file during backup succeeded.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_close_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Closing checkpoint in active/passive state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_close_signaled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Signaling checkpoint close. The checkpoint policy object is flagged to close the current checkpoint&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_closed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Checkpoint closed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_load_thread_stats&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Statistics of the checkpoint load thread.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_mrt_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mrt dump&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_serialization_state_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Checkpoint serialization state dump.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_stream_io_stats&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Io statistics for this particular stream.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_close_file_log_rec_created&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Successfully created close file log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_data_file_pages_txs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This event gives the number of pages and the transaction range for a data file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_data_from_page_deserialized&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deserialized data from page $2 in file $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_data_row_modified&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Data row modified/deleted.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_cfd_rows_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Matching MRT not found for the Data CFD. Deleting corresponding CFD Rows.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_DeletedObjectTable_row_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deleting row from DeletedObjectTable in the context of transaction: $5.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_merged_source_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deleting merged source $7 file $5:$6. DeleteLSN = $2:$3:$4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_mrtrow_for_target_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deleting mrt row for target.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_entry_skipped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping delta {$3, $4, $5} because it is beyond the snapshot checkpoint: $6.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_future_count_rows_pages_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updating future count pages and count rows for delta file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_lastgood_count_rows_pages_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updating lastgood count pages and count rows for delta file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_pages_txs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This event gives the number of pages and the transaction range while reading a delta file for a particular operations.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_processed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Completed processing of Delta file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_set_clean_or_dirty&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Delta file set clean or dirty.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_filter_removed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Removing delta filter from DeltaFilterMap due to transaction filter.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_watermark_removed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Removed delta watermark.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_watermark_updated&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updated delta watermark row for FileId: $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_deserialize_chained_records&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Info pertaining to the deserialized content of the mrtRecords chain.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_deserialize_data_from_page_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deserializing data from page $2 in file $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_deserialize_source_delta_file_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deserializing source delta file $4: page range [$2, $3).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_dump_cfd_row&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Dump cfd row&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_dump_mrt_row&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Merge Request&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_file_close_skipped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping file close for $2 as the cfp had been merged, It could not be found in the Storage array.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_file_skipped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping file $4 due to reason $5.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_file_skipped_with_tx_range&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping file $5 with TX range { $3 -&amp;gt; $4 } due to MaxTxId == InvalidTxId.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_first_page_header_flushed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Flushed first page header for file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_flush_io_operation_for_delta_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This trace is trying to catch pages issued for flush that didn&#039;t make it to the file, or were lacking the correct DeltaWatermark Timestamp.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_flush_skipped_for_closed_data_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping flush for data file (&#039;$2&#039;) as it is closed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_future_count_pages_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updating future count pages.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_initial_merge&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Doing initial merge for destination $3 at CheckpointTs: $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_insert_DeletedObjectTable_row_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Inserting row to DeletedObjectTable in the context of transaction: $5.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_intialize_worker_file_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing file close.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mark_data_file_closed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Marking the active data file as closed to prevent the offline worker fom flushing them.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_merge_cancelled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Merge was cancelled for destination $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_merge_complete_log_rec_ignored&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;MergeCompleteLogRecord ignored for destination file $3.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_merge_complete_log_rec_processed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Successfully processed MergeCompleteLogRecord.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mrt_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mrt dump.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mrt_row_inplace_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mrt row updated in place.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mrtrow_not_found&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Could not find row with Destination ID: $2 in MRT table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_new_delta_watermark_inserted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Inserted new delta watermark row for FileId $3.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_offline_process_stale_merge_item&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Offline processing of stale merge item {$2, $3} Destination $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_pending_tx&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Pending Transaction&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_populate_storage_array&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Populating the storage array.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_post_writefile&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This event is fired after issuing IO on the proxy.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_file_close_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing file close.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_merge_complete_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Process merge complete log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_merge_request&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Process Merge Request&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_source_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing source $4 file $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_target_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing target $4 file $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_queue_merge_work_item&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Queue work item: {$2, $3} $5 - $6 with CheckpointTs as $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_recovered_existing_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Recovered exising files files allocated during forward processing that are not already part of the CCB.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_resyncing_state_of_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Resyncing state of file $4 (&#039;$5&#039;) post recovery:  $2 pages, $3 rows.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialization_object_cleaned&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Cleaned serialization object.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialize_abort_transaction_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serializing the abort transaction filter to the delta cache corresponding to its own transaction range.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialize_tx_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serialize TS begin for completing the checkpoint in active state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialize_tx_end&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serialize TS end for completing the checkpoint.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialized_delta_rows_to_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serialized delta rows to file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_source_file_load_stats&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Load stats for source files in merge.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_storage_refreshed_for_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Storage refreshed for file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_uninitialize_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;uninitializing_file&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_wrote_delta_watermark&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Wrote delta watermark for file: $3, checkpointTs: $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;waiting_for_dependenciestx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Raised when we have explicitly waited for dependencies to clear.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_before_create_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired before submitting a request to the host to serialize a non-transactional log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_file_flush&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates the point at which a given file has been flushed to disk.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_file_flush_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates the point at which all in-flight buffers have been flushed to disk.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_file_read&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates reading of a file in XTP checkpoint recovery.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_worker_active_log&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpoint worker has started processing the log records in the active portion of the log.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_worker_started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpoint worker has started processing the log records.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_worker_stopped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpoint worker has started processing the log records.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_write_io&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpointing subsystem has issued or completed a write IO.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_complete_checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates the begin and end of complete checkpoint processing.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_create_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires when the XTP engine creates a log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_delta_marked_dirty&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that a delete/update was serialized and marked a delta file dirty&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_complete_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge complete log record is posted to the log.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_log_complete_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge log record was interpreted by the offline worker.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_process_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge log record was interpreted by the offline worker.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_request_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge request log record is posted to the log.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_request_started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge request has been picked up by the merge worker thread.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_root_deserialized&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the load of a checkpoint root is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_root_serialized&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the write of the checkpoint root is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;bind_md&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to binding metadata for a memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;bind_tables&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to binding tables for a natively compiled procedure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;create_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to creating memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;deserialize_md&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to deserializing metadata.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;load_dll&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to loading the generated DLL.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;recover_done&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at completion of checkpoint recovery of a memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;recover_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of checkpoint recovery of a memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;serialize_md&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to serializing metadata.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;unload_dll&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to unloading the generated DLL.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Happy tracing,&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Neue “Erweiterte Ereignisse” (XEvents) für Tracing in SQL Server 2014</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>(de)<br />Dieser Artikel enthält eine Liste der neuen Erweiterte Ereignisse (“Extended Events”), dem Tracing Framework in SQL Server in dem neuen 2014 Release.</p>
<p>Zunächst gibt es 3 neue Pakete („Packages“), die alle zu der neuen Arbeitsspeicher(„In-Memory“) -OLTP Engine: XTP, aufgeteilt auf 3 DLLs:</p>
</td>
<td valign="top" width="334">
<p>(en)<br />This article contains a list of new Extended Events, the tracing framework in SQL Server in the new 2014 release.</p>
<p>To begin with there are 3 new packages, all belonging to the new In-Memory OLTP Engine: XTP, split up into 3 dlls:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table style="width: 574px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>Package</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p><strong>description</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p><strong>Module name</strong></p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>XtpRuntime</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p>Extended events for the XTP Runtime</p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p>{InstanceDir}\MSSQL\Binn\<br /> hkruntime.dll</p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>XtpEngine</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p>Extended events for the XTP Engine</p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p>{InstanceDir}\MSSQL\Binn\<br /> hkengine.dll</p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>XtpCompile</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p>Extended events for the XTP Compile</p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p>{InstanceDir}\MSSQL\Binn\<br /> hkcompile.dll</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Die Anzahl der Extended Events ist von <strong>625 in </strong><strong>SQL Server 2012</strong> (SP1) auf <strong>870 in </strong><strong>SQL Server 2014</strong> (RTM) angestiegen. Das sind <strong>245</strong> neue Events! – Reichlich Möglichkeiten, in Internas einzutauchen :-)<br /> 2 Events sind umbenannt worden:</p>
<p><em>recovery_incremental_checkpoint</em> in</p>
<p><em>recovery_indirect_checkpoint</em></p>
<p>und <em>hekaton_slow_param_passing</em> in</p>
<p><span style="font-size: x-small;"><strong><em>natively_compiled_proc_slow_parameter_passing</em></strong></span></p>
<p>Ja, richtig gelesen. Es gab bereits im SQL Server 2012 eine Anzahl an Events für die XTP Engine. Es kommt recht häufig vor, dass man Bits von zukünftigen Entwicklungen in der aktuellen Release findet.</p>
<p>Nebenbei: SQL Trace wurde nicht im geringsten angefasst. Die Anzahl von SQL Trace Events bleibt mit 180 seit SQL Server 2008 stabil. – Here ist ein Überblick von Extended Events gegen SQL Trace Events in den verschiedenen SQL Server Versionen: <a href="/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features">Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace &amp; Profiler einfach von gestern sind :-)</a></p>
<p>Weiter zu XEvents: es gibt keine neuen Prädikate, aber eine Anzahl neuer Maps, was natürlich nicht überrascht bei der Menge neuer Events.<br /> Targets, Actions, Typen und Session Optionen  sind unverändert.</p>
<p>Und hier ist die Liste der neuen Extended Events:</p>
</td>
<td valign="top" width="334">
<p>The number of Extended Events increased from <strong>625 in </strong><strong>SQL Server 2012</strong> (SP1) to <strong>870 in </strong><strong>SQL Server 2014</strong> (RTM). That makes <strong>245</strong> new events! – Plenty of opportunities to look into internals :-)<br /> 2 events have been renamed:</p>
<p><em>recovery_incremental_checkpoint</em> into</p>
<p><em>recovery_indirect_checkpoint</em></p>
<p>and <em>hekaton_slow_param_passing</em> into</p>
<p><strong><span style="font-size: x-small;"><em>natively_compiled_proc_slow_parameter_passing</em></span></strong></p>
<p>Yes, you read correctly. There have already been a couple of events for the new XTP engine within SQL Server 2012. It’s quite common that you can find bits of future developments within the current release.</p>
<p>By the way: SQL Trace has not been touched by the slightest bit. The number of SQL Trace events stays at 180 since SQL Server 2008. – here you find an overview of the number of Extended Events vs SQL Trace events in the various SQL Server versions: <a href="/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features">Comparing Extended Events vs SQL Trace – or why SQL Trace &amp; Profiler are just a thing of the past :-)</a></p>
<p>Continuing with XEvents: There are no new predicates, but a couple more maps, which is of course not surprisingly considering the amount of new events.<br /> Targets, actions, types and session options are unchanged.</p>
<p>And here is the list of all new extended events:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table style="width: 350px;">
<tbody>
<tr>
<td><span style="font-size: small;"><strong>Package<br />name</strong></span></td>
<td><span style="font-size: small;"><strong>Event name</strong></span></td>
<td><span style="font-size: small;"><strong>Description</strong></span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_async_shutdown_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store encounters an error during async query store shutdown</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_cleanup_task_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for cleanup of QDS stale data is not completed successfully</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_task_creation_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for QDS data persistence could not be created</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_task_initialization_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for QDS data persistence could not be initialized</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_task_persist_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for QDS data persistence is not completed successfully</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_begin_persist_runtime_stat</span></strong></td>
<td><span style="font-size: x-small;">Fired immediately before current runtime statistics for a query plan is persisted to the database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_bloom_filter_false_positive</span></strong></td>
<td><span style="font-size: x-small;">Fired if the Bloom filter for QDS statement texts gives a false positive result</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_check_consistency_init_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when check consistency task fails during initialization</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_database_initialization_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if initialization of the Query Store for database has failed. The Query Store will be disabled for this database</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_db_cleanup__finished</span></strong></td>
<td><span style="font-size: x-small;">Fired if cleanup of QDS stale data finished for particular database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_db_cleanup__started</span></strong></td>
<td><span style="font-size: x-small;">Fired if cleanup of QDS stale data started for particular database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_disk_size_check_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when a check against Query Store on-disk size limit fails</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_disk_size_info</span></strong></td>
<td><span style="font-size: x-small;">Fired when a check against QDS on-disk size is performed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_execution_runtime_info</span></strong></td>
<td><span style="font-size: x-small;">Fired when runtime information is sent to the query store.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_execution_runtime_info_discarded</span></strong></td>
<td><span style="font-size: x-small;">Fired when runtime information sent to the query store is discarded.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_execution_runtime_info_evicted</span></strong></td>
<td><span style="font-size: x-small;">Fired when runtime information sent to the query store is evicted.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_flush_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store failed to flush dirty data</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_loaded</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store is loaded</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_notify_dirty_shutdown_on_partition_startup</span></strong></td>
<td><span style="font-size: x-small;">Fired when previous instance of query store for the partition is shutdown by force in order to allow creation of a new instance</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_notify_force_failure_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store failed to notify force failure</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_persist_task_init_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when persist task fails during initialization</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_plan_forcing_failed</span></strong></td>
<td><span style="font-size: x-small;">Occurs when forcing of plan from qds fail</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_plan_persistence_failure</span></strong></td>
<td><span style="font-size: x-small;">Fired if there's a failure to persist plan</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_plan_removal</span></strong></td>
<td><span style="font-size: x-small;">Fired when plan is removed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_query_persistence_failure</span></strong></td>
<td><span style="font-size: x-small;">Fired if there's a failure to persist query</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_read_write_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the read/write to Query Store internal tables failed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_statement_not_found</span></strong></td>
<td><span style="font-size: x-small;">Fired in case when statement couldn't be found due to race condition or ambiguous user request.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_unloaded</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store is unloaded from memory</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlos</strong></span></td>
<td><strong><span style="font-size: x-small;">nonpreemptive_long_syncio</span></strong></td>
<td><span style="font-size: x-small;">record long sync io operation in nonpreemptive worker</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlos</strong></span></td>
<td><strong><span style="font-size: x-small;">stuck_dispatcher_callback_executed</span></strong></td>
<td><span style="font-size: x-small;">Stuck dispatcher callback executed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlos</strong></span></td>
<td><strong><span style="font-size: x-small;">wait_completed</span></strong></td>
<td><span style="font-size: x-small;">Occurs when there is a wait completed on a SQLOS controlled resource.  Use this event to track wait completion.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">after_natively_compiled_proc_entry_removal_on_drop</span></strong></td>
<td><span style="font-size: x-small;">Fired after the procedure cache entry is flushed when dropping a natively compiled procedure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">availability_replica_state</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the Availability Replica is starting or shutting down.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">before_natively_compiled_proc_entry_removal_on_drop</span></strong></td>
<td><span style="font-size: x-small;">Fired before the procedure cache entry is flushed when dropping a natively compiled procedure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">before_redo_lsn_update</span></strong></td>
<td><span style="font-size: x-small;">Occurs just prior to the update of the EOL LSN</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_eviction_thresholds_recalculated</span></strong></td>
<td><span style="font-size: x-small;">Lazywriter and/or worker clock has wrapped the BUF array and thresholds are re-calculated.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_extension_pages_evicted</span></strong></td>
<td><span style="font-size: x-small;">Page is evicted from the buffer pool extension cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_extension_pages_read</span></strong></td>
<td><span style="font-size: x-small;">Page is read from the buffer pool extension cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_extension_pages_written</span></strong></td>
<td><span style="font-size: x-small;">Page or contiguous set of pages evicted into the buffer pool extension cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_phase_tracing</span></strong></td>
<td><span style="font-size: x-small;">Occurs when DBCC CHECK enters a new phase of the checking. Use this event to trace the phases of DBCC CHECK process.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_thread_message_statistics</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of messages a DBCC CHECK thread has sent or received.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_thread_page_io_statistics</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of logical, physical, and read-ahead IOs a DBCC CHECK thread has performed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_thread_page_latch_statistics</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a phase of DBCC CHECK is finished. Use This event to collect the number and time of page latch and IO latch waits.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">clustered_columnstore_index_rebuild</span></strong></td>
<td><span style="font-size: x-small;">Occurs when clustered index on the table was rebuilt. This event is raised three times for ALTER index rebuild operation on CCSI. The event is raised when the operation takes lock on index rebuild resource, when lock is taken on the table and when S lock on the table is upgraded to SCH_M lock to switch indexes in metadata.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_code_coverage</span></strong></td>
<td><span style="font-size: x-small;">Code coverage Xevent for columnstore code.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_index_build_low_memory</span></strong></td>
<td><span style="font-size: x-small;">Occurs when Storage Engine detects low memory condition and the rowgroup size is reduced.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_index_build_process_segment</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a segment is processed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_index_build_throttle</span></strong></td>
<td><span style="font-size: x-small;">Shows the statistics of columnstore index build parallelism throttling</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">columnstore_tuple_mover_begin_compress</span></strong></td>
<td><span style="font-size: x-small;">Occurs when column store tuple mover starts compressing a deltastore.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">columnstore_tuple_mover_end_compress</span></strong></td>
<td><span style="font-size: x-small;">Occurs when column store tuple mover is done compressing a deltastore.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">database_xml_deadlock_report</span></strong></td>
<td><span style="font-size: x-small;">Produces a deadlock report for a victim, with information scoped to the victim's database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">db_lock_acquired_from_cache</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a DB lock is acquired from the XactWorkspace DB lock cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">db_lock_released_from_cache</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a DB lock is released from the XactWorkspace DB lock cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ddl_with_wait_at_low_priority</span></strong></td>
<td><span style="font-size: x-small;">A DDL statement was executed using the WAIT_AT_LOW_PRIORITY options</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">diag_quantum_end</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the diag is notified of quantum end.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">dyn_throttle_checkpoint</span></strong></td>
<td><span style="font-size: x-small;">Occurs when checkpointing has been dynamically throttled with a new Checkpoint rate.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">feature_extension</span></strong></td>
<td><span style="font-size: x-small;">Occurs when received and parses data for a feature in feature extension.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_handle_in_use</span></strong></td>
<td><span style="font-size: x-small;">Fired when a file handle we're trying to delete is in use and we don't expect it to be. The typical response is dumping all the handles in the system via SysInternals HANDLE.EXE</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_read_enqueued</span></strong></td>
<td><span style="font-size: x-small;">File read enqueued</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_read_throttled</span></strong></td>
<td><span style="font-size: x-small;">File read throttled</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_write_enqueued</span></strong></td>
<td><span style="font-size: x-small;">File write enqueued</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_write_throttled</span></strong></td>
<td><span style="font-size: x-small;">File write throttled</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_packet_enqueue</span></strong></td>
<td><span style="font-size: x-small;">A task packet is enqueued</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_process_packet</span></strong></td>
<td><span style="font-size: x-small;">A task packet is dequeued and processed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_process_pages_for_db_packet</span></strong></td>
<td><span style="font-size: x-small;">Purge the pages that contain ghost records found in a database</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_start</span></strong></td>
<td><span style="font-size: x-small;">Ghost cleanup task start</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_suspend</span></strong></td>
<td><span style="font-size: x-small;">Ghost cleanup task suspend</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">hadr_tds_synchronizer_payload_skip</span></strong></td>
<td><span style="font-size: x-small;">Hadron Tds Listener Synchronizer skipped a listener payload because there were no changes since the previous payload.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">lock_request_priority_state</span></strong></td>
<td><span style="font-size: x-small;">The priority state of a lock request</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">log_cache_write_block</span></strong></td>
<td><span style="font-size: x-small;">Writing a log block to the log cache</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">metadata_ddl_add_column</span></strong></td>
<td><span style="font-size: x-small;">Occurs when an ALTER TABLE ADD column operation is updating base index.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">metadata_ddl_alter_column</span></strong></td>
<td><span style="font-size: x-small;">Occurs when an ALTER TABLE ALTER column operation is updating base index.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">metadata_ddl_drop_column</span></strong></td>
<td><span style="font-size: x-small;">Occurs when an ALTER TABLE DROP column operation is updating base index.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_extent_activation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed extent activation and deactivation operations.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_extent_allocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed extent allocation operations</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_extent_deallocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed extent deallocation operations.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_allocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed page allocation operations</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_deallocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed page allocation operations</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_scan_file</span></strong></td>
<td><span style="font-size: x-small;">Track the activity of SGAM scans for mixed page allocation</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_scan_page</span></strong></td>
<td><span style="font-size: x-small;">Track the activity of SGAM scans for mixed page allocation</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_skipextent</span></strong></td>
<td><span style="font-size: x-small;">Track the activity of SGAM scans for mixed page allocation</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">natively_compiled_proc_execution_started</span></strong></td>
<td><span style="font-size: x-small;">Fired before a natively compiled procedure is executed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">natively_compiled_proc_slow_parameter_passing</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a Hekaton procedure call dispatch goes to slow parameter passing code path</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">process_killed_by_abort_blockers</span></strong></td>
<td><span style="font-size: x-small;">A process is killed by an ABORT = BLOCKERS DDL statement</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_execution_batch_hash_aggregation_finished</span></strong></td>
<td><span style="font-size: x-small;">Occurs at the end of batch hash aggregation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_execution_batch_hash_children_reversed</span></strong></td>
<td><span style="font-size: x-small;">Occurs each time when hash join reverses build and probe side while processing data spilled to disk.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_execution_batch_hash_join_spilled</span></strong></td>
<td><span style="font-size: x-small;">Occurs each time when hash join spills some data to disk in batch processing.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_optimizer_estimate_cardinality</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the query optimizer estimates cardinality on a relational expression.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_optimizer_force_both_cardinality_estimation_behaviors</span></strong></td>
<td><span style="font-size: x-small;">Both traceflags 2312 and 9481 were enabled, attempting to force both old and new cardinality estimation behaviors at the same time. The traceflags were ignored. Disable one or both of the traceflags.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_failed_to_capture_query</span></strong></td>
<td><span style="font-size: x-small;">Fired if the Query Store failed to capture query. The Query Store will not track statistics for this query</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_failed_to_load_forced_plan</span></strong></td>
<td><span style="font-size: x-small;">Fired if the query failed to load forced plan from QDS. Forcing policy will not be applied</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_persist_on_shutdown_failed</span></strong></td>
<td><span style="font-size: x-small;">Occurs when SQL Server fails to store dirty entries in Query Store on database shutdown.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">recovery_indirect_checkpoint</span></strong></td>
<td><span style="font-size: x-small;">Chose to enqueue an indirect checkpoint as we are near our recovery target</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">remove_database_cache</span></strong></td>
<td><span style="font-size: x-small;">Remove database cache</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">server_max_workers</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a request enqueue fails because a worker was not guaranteed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">session_recoverable_state_change</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the server determines a state change in term of session recovery on a connectionresilency-enabled connection.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">sql_transaction_commit_single_phase</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a sql transaction is committed with single phase commit.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_blob_properties_obtained</span></strong></td>
<td><span style="font-size: x-small;">Windows Azure Storage blob property is obtained from response header.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_failed_request</span></strong></td>
<td><span style="font-size: x-small;">Failed to complete a request to Windows Azure Storage.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_header_obtained</span></strong></td>
<td><span style="font-size: x-small;">Response header is obtained from request to Windows Azure Storage.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_read_complete</span></strong></td>
<td><span style="font-size: x-small;">Read complete from Windows Azure Storage response.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_request_opened</span></strong></td>
<td><span style="font-size: x-small;">A request is opened to Windows Azure Storage.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_send_complete</span></strong></td>
<td><span style="font-size: x-small;">Request send to Windows Azure Storage is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_write_complete</span></strong></td>
<td><span style="font-size: x-small;">Request send to Windows Azure Storage is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_create_procedure</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of XTP procedure creation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_create_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of XTP table creation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_db_page_allocation_allowed</span></strong></td>
<td><span style="font-size: x-small;">Indicates that page allocations for the database are allowed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_db_page_allocation_disallowed</span></strong></td>
<td><span style="font-size: x-small;">Indicates that page allocations for the database are disallowed due to memory pressure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_deploy_done</span></strong></td>
<td><span style="font-size: x-small;">Occurs at completion of XTP object deployment.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_matgen</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of MAT generation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_offline_checkpoint_scan_start</span></strong></td>
<td><span style="font-size: x-small;">Fired by XTP offline checkpoint when the checkpoint thread begins.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_offline_checkpoint_scan_stop</span></strong></td>
<td><span style="font-size: x-small;">Fired by XTP offline checkpoint when the checkpoint thread stops.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_recover_done</span></strong></td>
<td><span style="font-size: x-small;">Occurs at completion of log recovery of XTP table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_recover_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of log recovery of XTP table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_storage_table_create</span></strong></td>
<td><span style="font-size: x-small;">Occurs at just before the XTP storage table is created.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_connection_rejected_by_proxy_whitelist</span></strong></td>
<td><span style="font-size: x-small;">After a connection attempt to the UCS proxy endpoint is rejected by whitelist check</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_connect_next_hop</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy next hop connection</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_receive_proxy_connect_message</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy receive proxy connect message</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_route_add</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy route added</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_route_disable</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy route disabled</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_route_refresh</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy route refreshed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_send_proxy_connect_message</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy send proxy connect message</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">cgen</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of C code generation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">invoke_cl</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to the invocation of the C compiler.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">mat_export</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of MAT export.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">pitgen_procs</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of PIT generation for procedures.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">pitgen_tables</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of PIT generation for tables.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">after_changestatetx_event</span></strong></td>
<td><span style="font-size: x-small;">Fires after transaction changes state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">alloctx_event</span></strong></td>
<td><span style="font-size: x-small;"> </span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">attempt_committx_event</span></strong></td>
<td><span style="font-size: x-small;">Is raised when a transaction is asked to commit.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">before_changestatetx_event</span></strong></td>
<td><span style="font-size: x-small;">Fires before transaction changes state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">dependency_acquiredtx_event</span></strong></td>
<td><span style="font-size: x-small;">Raised after transaction takes a dependency on another transaction.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">endts_acquiredtx_event</span></strong></td>
<td><span style="font-size: x-small;">Fires after transaction acquires an end timestamp.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_base_generation_evaluation</span></strong></td>
<td><span style="font-size: x-small;">Indicates that an evaluation of updating the GC base generation has been made.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_base_generation_updated</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the oldest active transaction hint used for calculating the GC base generation has been updated.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_cycle_completed</span></strong></td>
<td><span style="font-size: x-small;">Indicates that a GC notification has been enqueued.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_notification</span></strong></td>
<td><span style="font-size: x-small;">Indicates that GC is processing a notification.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">redo_single_hk_record</span></strong></td>
<td><span style="font-size: x-small;">Redo on a HK log record</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_add_delta_filter_begin</span></strong></td>
<td><span style="font-size: x-small;">Adding delta filter.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_add_duplicate_delta_filter</span></strong></td>
<td><span style="font-size: x-small;">Adding duplicate delta filte.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_adding_tx_filter</span></strong></td>
<td><span style="font-size: x-small;">Adding tx filter.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_begin_close_ckpt_processing</span></strong></td>
<td><span style="font-size: x-small;">Beginning close checkpoint processing: checkpoint flush fence = $2 ($3 state).</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfd_entry_deleted</span></strong></td>
<td><span style="font-size: x-small;">Cleaned up data CFD entry for file $2 $3.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfd_rows_created</span></strong></td>
<td><span style="font-size: x-small;">Successfully created CFD rows.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfdtable_dump</span></strong></td>
<td><span style="font-size: x-small;">CfdTable dump</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfp_handles_opened</span></strong></td>
<td><span style="font-size: x-small;">Opened CFP handles for {data: $2 delta: $3} in section $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfp_removed_from_freelist</span></strong></td>
<td><span style="font-size: x-small;">Removed CFP from freelist for destination file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checkpoint_file_flush</span></strong></td>
<td><span style="font-size: x-small;">Indicating that a file has started a flush operation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checkpoint_load_begin</span></strong></td>
<td><span style="font-size: x-small;">Starting Checkpoint load with checkpoint timestamp=$2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checkpoint_write_io</span></strong></td>
<td><span style="font-size: x-small;">Logs an event indicating that an IO has started (when event_type == IoStarted) or that an IO has completed (when event_type == IoComplete).</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checksum_validation_succeeded</span></strong></td>
<td><span style="font-size: x-small;">Checksum validation for Hekaton checkpoint file during backup succeeded.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_close_begin</span></strong></td>
<td><span style="font-size: x-small;">Closing checkpoint in active/passive state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_close_signaled</span></strong></td>
<td><span style="font-size: x-small;">Signaling checkpoint close. The checkpoint policy object is flagged to close the current checkpoint</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_closed</span></strong></td>
<td><span style="font-size: x-small;">Checkpoint closed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_load_thread_stats</span></strong></td>
<td><span style="font-size: x-small;">Statistics of the checkpoint load thread.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_mrt_dump</span></strong></td>
<td><span style="font-size: x-small;">Mrt dump</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_serialization_state_dump</span></strong></td>
<td><span style="font-size: x-small;">Checkpoint serialization state dump.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_stream_io_stats</span></strong></td>
<td><span style="font-size: x-small;">Io statistics for this particular stream.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_close_file_log_rec_created</span></strong></td>
<td><span style="font-size: x-small;">Successfully created close file log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_data_file_pages_txs</span></strong></td>
<td><span style="font-size: x-small;">This event gives the number of pages and the transaction range for a data file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_data_from_page_deserialized</span></strong></td>
<td><span style="font-size: x-small;">Deserialized data from page $2 in file $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_data_row_modified</span></strong></td>
<td><span style="font-size: x-small;">Data row modified/deleted.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_cfd_rows_begin</span></strong></td>
<td><span style="font-size: x-small;">Matching MRT not found for the Data CFD. Deleting corresponding CFD Rows.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_DeletedObjectTable_row_begin</span></strong></td>
<td><span style="font-size: x-small;">Deleting row from DeletedObjectTable in the context of transaction: $5.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_merged_source_file</span></strong></td>
<td><span style="font-size: x-small;">Deleting merged source $7 file $5:$6. DeleteLSN = $2:$3:$4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_mrtrow_for_target_begin</span></strong></td>
<td><span style="font-size: x-small;">Deleting mrt row for target.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_entry_skipped</span></strong></td>
<td><span style="font-size: x-small;">Skipping delta {$3, $4, $5} because it is beyond the snapshot checkpoint: $6.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_future_count_rows_pages_update</span></strong></td>
<td><span style="font-size: x-small;">Updating future count pages and count rows for delta file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_lastgood_count_rows_pages_update</span></strong></td>
<td><span style="font-size: x-small;">Updating lastgood count pages and count rows for delta file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_pages_txs</span></strong></td>
<td><span style="font-size: x-small;">This event gives the number of pages and the transaction range while reading a delta file for a particular operations.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_processed</span></strong></td>
<td><span style="font-size: x-small;">Completed processing of Delta file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_set_clean_or_dirty</span></strong></td>
<td><span style="font-size: x-small;">Delta file set clean or dirty.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_filter_removed</span></strong></td>
<td><span style="font-size: x-small;">Removing delta filter from DeltaFilterMap due to transaction filter.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_watermark_removed</span></strong></td>
<td><span style="font-size: x-small;">Removed delta watermark.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_watermark_updated</span></strong></td>
<td><span style="font-size: x-small;">Updated delta watermark row for FileId: $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_deserialize_chained_records</span></strong></td>
<td><span style="font-size: x-small;">Info pertaining to the deserialized content of the mrtRecords chain.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_deserialize_data_from_page_begin</span></strong></td>
<td><span style="font-size: x-small;">Deserializing data from page $2 in file $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_deserialize_source_delta_file_begin</span></strong></td>
<td><span style="font-size: x-small;">Deserializing source delta file $4: page range [$2, $3).</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_dump_cfd_row</span></strong></td>
<td><span style="font-size: x-small;">Dump cfd row</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_dump_mrt_row</span></strong></td>
<td><span style="font-size: x-small;">Merge Request</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_file_close_skipped</span></strong></td>
<td><span style="font-size: x-small;">Skipping file close for $2 as the cfp had been merged, It could not be found in the Storage array.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_file_skipped</span></strong></td>
<td><span style="font-size: x-small;">Skipping file $4 due to reason $5.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_file_skipped_with_tx_range</span></strong></td>
<td><span style="font-size: x-small;">Skipping file $5 with TX range { $3 -&gt; $4 } due to MaxTxId == InvalidTxId.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_first_page_header_flushed</span></strong></td>
<td><span style="font-size: x-small;">Flushed first page header for file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_flush_io_operation_for_delta_file</span></strong></td>
<td><span style="font-size: x-small;">This trace is trying to catch pages issued for flush that didn't make it to the file, or were lacking the correct DeltaWatermark Timestamp.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_flush_skipped_for_closed_data_file</span></strong></td>
<td><span style="font-size: x-small;">Skipping flush for data file ('$2') as it is closed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_future_count_pages_update</span></strong></td>
<td><span style="font-size: x-small;">Updating future count pages.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_initial_merge</span></strong></td>
<td><span style="font-size: x-small;">Doing initial merge for destination $3 at CheckpointTs: $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_insert_DeletedObjectTable_row_begin</span></strong></td>
<td><span style="font-size: x-small;">Inserting row to DeletedObjectTable in the context of transaction: $5.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_intialize_worker_file_begin</span></strong></td>
<td><span style="font-size: x-small;">Processing file close.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mark_data_file_closed</span></strong></td>
<td><span style="font-size: x-small;">Marking the active data file as closed to prevent the offline worker fom flushing them.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_merge_cancelled</span></strong></td>
<td><span style="font-size: x-small;">Merge was cancelled for destination $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_merge_complete_log_rec_ignored</span></strong></td>
<td><span style="font-size: x-small;">MergeCompleteLogRecord ignored for destination file $3.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_merge_complete_log_rec_processed</span></strong></td>
<td><span style="font-size: x-small;">Successfully processed MergeCompleteLogRecord.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mrt_dump</span></strong></td>
<td><span style="font-size: x-small;">Mrt dump.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mrt_row_inplace_update</span></strong></td>
<td><span style="font-size: x-small;">Mrt row updated in place.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mrtrow_not_found</span></strong></td>
<td><span style="font-size: x-small;">Could not find row with Destination ID: $2 in MRT table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_new_delta_watermark_inserted</span></strong></td>
<td><span style="font-size: x-small;">Inserted new delta watermark row for FileId $3.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_offline_process_stale_merge_item</span></strong></td>
<td><span style="font-size: x-small;">Offline processing of stale merge item {$2, $3} Destination $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_pending_tx</span></strong></td>
<td><span style="font-size: x-small;">Pending Transaction</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_populate_storage_array</span></strong></td>
<td><span style="font-size: x-small;">Populating the storage array.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_post_writefile</span></strong></td>
<td><span style="font-size: x-small;">This event is fired after issuing IO on the proxy.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_file_close_begin</span></strong></td>
<td><span style="font-size: x-small;">Processing file close.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_merge_complete_log_record</span></strong></td>
<td><span style="font-size: x-small;">Process merge complete log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_merge_request</span></strong></td>
<td><span style="font-size: x-small;">Process Merge Request</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_source_file</span></strong></td>
<td><span style="font-size: x-small;">Processing source $4 file $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_target_file</span></strong></td>
<td><span style="font-size: x-small;">Processing target $4 file $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_queue_merge_work_item</span></strong></td>
<td><span style="font-size: x-small;">Queue work item: {$2, $3} $5 - $6 with CheckpointTs as $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_recovered_existing_file</span></strong></td>
<td><span style="font-size: x-small;">Recovered exising files files allocated during forward processing that are not already part of the CCB.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_resyncing_state_of_file</span></strong></td>
<td><span style="font-size: x-small;">Resyncing state of file $4 ('$5') post recovery:  $2 pages, $3 rows.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialization_object_cleaned</span></strong></td>
<td><span style="font-size: x-small;">Cleaned serialization object.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialize_abort_transaction_begin</span></strong></td>
<td><span style="font-size: x-small;">Serializing the abort transaction filter to the delta cache corresponding to its own transaction range.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialize_tx_begin</span></strong></td>
<td><span style="font-size: x-small;">Serialize TS begin for completing the checkpoint in active state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialize_tx_end</span></strong></td>
<td><span style="font-size: x-small;">Serialize TS end for completing the checkpoint.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialized_delta_rows_to_file</span></strong></td>
<td><span style="font-size: x-small;">Serialized delta rows to file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_source_file_load_stats</span></strong></td>
<td><span style="font-size: x-small;">Load stats for source files in merge.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_storage_refreshed_for_file</span></strong></td>
<td><span style="font-size: x-small;">Storage refreshed for file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_uninitialize_file</span></strong></td>
<td><span style="font-size: x-small;">uninitializing_file</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_wrote_delta_watermark</span></strong></td>
<td><span style="font-size: x-small;">Wrote delta watermark for file: $3, checkpointTs: $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">waiting_for_dependenciestx_event</span></strong></td>
<td><span style="font-size: x-small;">Raised when we have explicitly waited for dependencies to clear.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_before_create_log_record</span></strong></td>
<td><span style="font-size: x-small;">Fired before submitting a request to the host to serialize a non-transactional log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_file_flush</span></strong></td>
<td><span style="font-size: x-small;">Indicates the point at which a given file has been flushed to disk.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_file_flush_complete</span></strong></td>
<td><span style="font-size: x-small;">Indicates the point at which all in-flight buffers have been flushed to disk.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_file_read</span></strong></td>
<td><span style="font-size: x-small;">Indicates reading of a file in XTP checkpoint recovery.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_worker_active_log</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpoint worker has started processing the log records in the active portion of the log.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_worker_started</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpoint worker has started processing the log records.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_worker_stopped</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpoint worker has started processing the log records.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_write_io</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpointing subsystem has issued or completed a write IO.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_complete_checkpoint</span></strong></td>
<td><span style="font-size: x-small;">Indicates the begin and end of complete checkpoint processing.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_create_log_record</span></strong></td>
<td><span style="font-size: x-small;">Fires when the XTP engine creates a log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_delta_marked_dirty</span></strong></td>
<td><span style="font-size: x-small;">Indicates that a delete/update was serialized and marked a delta file dirty</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_complete_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge complete log record is posted to the log.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_log_complete_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge log record was interpreted by the offline worker.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_process_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge log record was interpreted by the offline worker.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_request_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge request log record is posted to the log.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_request_started</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge request has been picked up by the merge worker thread.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_root_deserialized</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the load of a checkpoint root is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_root_serialized</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the write of the checkpoint root is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">bind_md</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to binding metadata for a memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">bind_tables</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to binding tables for a natively compiled procedure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">create_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to creating memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">deserialize_md</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to deserializing metadata.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">load_dll</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to loading the generated DLL.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">recover_done</span></strong></td>
<td><span style="font-size: x-small;">Occurs at completion of checkpoint recovery of a memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">recover_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of checkpoint recovery of a memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">serialize_md</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to serializing metadata.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">unload_dll</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to unloading the generated DLL.</span></td>
</tr>
</tbody>
</table>
<p>Happy tracing,</p>
<p> </p>
<p>Andreas</p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2014/04/new-extended-events-for-tracing-in-sql-server-2014#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3667</wfw:commentRss>
		</item>
				<item>
			<title>Comparing Extended Events vs SQL Trace – or why SQL Trace &#38; Profiler are just a thing of the past :-)</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features</link>
			<pubDate>Thu, 21 Nov 2013 21:38:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="main">Extended Events</category>
<category domain="alt">SQL Trace &amp; Profiler</category>			<guid isPermaLink="false">3610@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace &amp;amp; Profiler einfach von gestern sind :-)&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(de)&lt;br /&gt;Zur Erinnerung: Extended Events sind &lt;strong&gt;seit SQL Server 2008 in SQL Server integriert&lt;/strong&gt;. Und seit SQL Server 2012 SP1 sind alle Events verfügbar, die es in SQL Trace gibt. Zudem sind Extended Events seit SQL Server 2012 auch für Analysis Services verfügbar (&lt;a href=&quot;/blogs/andreaswolter/2013/04/tracing-analysis-services-with-extended&quot;&gt;Tracing Analysis Services (SSAS) with Extended Events – Yes it works and this is how&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Für alle, die noch mit dem alten Werkzeug &lt;em&gt;SQL Server Profiler&lt;/em&gt; (Profiler ist das Frontend für &lt;em&gt;SQL Trace&lt;/em&gt;, gestartet mit &lt;em&gt;sp_trace_create&lt;/em&gt;) arbeiten, und sich noch nicht für die neue Technologie entscheiden konnten, hier eine kleine Entscheidungshilfe.&lt;/p&gt;
&lt;p&gt;Was Extended Events (XEvents) besser als SQLTrace machen:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(en)&lt;br /&gt;As a reminder: Extended Events have been &lt;strong&gt;integrated in SQL Server since SQL Server 2008&lt;/strong&gt;. And since SQL Server 2012 SP1, all events existing in SQL Trace have been available. In addition, Extended Events have also been available for Analysis Services since SQL Server 2012 &lt;a href=&quot;/blogs/andreaswolter/2013/04/tracing-analysis-services-with-extended&quot;&gt;Tracing Analysis Services (SSAS) with Extended Events – Yes it works and this is how&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;For those of you who are still working with the old tool &lt;em&gt;SQL Server Profiler&lt;/em&gt; (Profiler is the frontend for &lt;em&gt;SQL Trace&lt;/em&gt;, started with &lt;em&gt;sp_trace_create&lt;/em&gt;) and have not quite been able to decide for the new technology, here is some decision guidance.&lt;/p&gt;
&lt;p&gt;What Extended Events (XEvents) do better than SQL Trace:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;ol&gt;
&lt;li&gt;Einzige Möglichkeit &lt;strong&gt;neue Features&lt;/strong&gt; wie FileStream, FileTable, AlwaysOn, ColumnStore, Hekaton/XTP etc. zu &lt;strong&gt;Tracen&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Viel mehr Events&lt;/strong&gt; tracebar, auch bereits für ältere Releases (siehe *1, *2 unten)&lt;/li&gt;
&lt;li&gt;Deutlich &lt;strong&gt;geringerer Beobachter-Overhead&lt;/strong&gt;&lt;br /&gt; siehe auch: &lt;a href=&quot;/blogs/andreaswolter/2013/08/performance-overhead-tracing-extended-events-sql-trace-under-cpu-load&quot;&gt;Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Performance/Last lässt sich konfigurieren &amp;amp; tunen&lt;/li&gt;
&lt;li&gt;Events und Filter lassen sich &lt;strong&gt;live anpassen &lt;/strong&gt;– während aktiver Session also&lt;/li&gt;
&lt;li&gt;Ofiziell &lt;strong&gt;2 µs/Event&lt;/strong&gt; gg. 4ms/Event in SQLTrace&lt;/li&gt;
&lt;li&gt;Event-Verlust konfigurierbar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effiziente Filterung&lt;/strong&gt; durch Architektur&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Komplexe Prädikate &lt;/strong&gt;wie z.B. &lt;em&gt;Zähler&lt;/em&gt; oder &lt;em&gt;last_error&lt;/em&gt;, &lt;em&gt;less_than_min_datatype&lt;/em&gt; oder &lt;em&gt;greater_than_max_datatype&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Korrelation von Events &lt;/strong&gt;möglich&lt;/li&gt;
&lt;li&gt;Möglichkeit &lt;strong&gt;Events vom Client bis in die Datenbank&lt;/strong&gt; zu verfolgen&lt;/li&gt;
&lt;li&gt;Einfache Automatisierung&lt;/li&gt;
&lt;li&gt;Direkt &lt;strong&gt;in Management Studio integriert&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Viele &lt;strong&gt;Analysen direkt in der GUI&lt;/strong&gt; möglich (Um diese noch zu verbessern, &lt;strong&gt;bitte&lt;/strong&gt; hier bei Microsoft Connect &lt;strong&gt;voten&lt;/strong&gt;: &lt;a href=&quot;https://connect.microsoft.com/SQLServer/feedback/details/798731/extended-events-ui-export-display-settings-include-grouping&quot; target=&quot;_blank&quot;&gt;Extended Events UI Export Display Settings: include grouping&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Query_hash&lt;/em&gt; zum Identifizieren &lt;/strong&gt;von identischen Abfragen verfügbar&lt;/li&gt;
&lt;li&gt;Keine &lt;strong&gt;10 Klicks zum Aufsetzen&lt;/strong&gt; einer simplen Session inkl. Filter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unterschiedliche Speicher-Ziele&lt;/strong&gt; für EventDaten zur Auswahl (6)&lt;/li&gt;
&lt;li&gt;„Ergebnisorientierte“ Ziele wie &lt;strong&gt;Counter und Histogramm&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple Ziele&lt;/strong&gt; lassen sich für “&lt;em&gt;On the fly - Top-Down Analysen&lt;/em&gt;” kombinieren&lt;/li&gt;
&lt;li&gt;Möglichkeiten für ganz neue &lt;strong&gt;Einblicke in Interna&lt;/strong&gt; der Datenbank-Engine (Latching, Spinlocks, Multi-victim-Deadlock, Wait_Infos per session/query, Caching-Vorgänge, Ghost-cleanup, Analyse von Page Splits, Page-Compression Vorgänge, um nur einige zu nennen)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stack Tracen eines einzelnen Prozesses&lt;/strong&gt; möglich – anstelle eines vollständigen Server Dumps&lt;/li&gt;
&lt;li&gt;Definition mit Standard &lt;strong&gt;DDL-Statements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API&lt;/strong&gt; zur Integration in eigene Tools verfügbar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PowerShell&lt;/strong&gt;-Unterstützung&lt;/li&gt;
&lt;li&gt;Last but not least: Endlich ein Grund, &lt;strong&gt;XML &amp;amp; XQuery&lt;/strong&gt; zu lernen? ;-)&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;ol&gt;
&lt;li&gt;The only possibility of &lt;strong&gt;Tracing&lt;/strong&gt; &lt;strong&gt;new features&lt;/strong&gt; like FileStream, FileTable, AlwaysOn, ColumnStore, Hekaton/XTP etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Many more Events&lt;/strong&gt; traceable, even for older releases (see *1, *2 below)&lt;/li&gt;
&lt;li&gt;Significantly &lt;strong&gt;less Observer-Overhead&lt;/strong&gt;, also see: &lt;a href=&quot;/blogs/andreaswolter/2013/08/performance-overhead-tracing-extended-events-sql-trace-under-cpu-load&quot;&gt;Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Performance/Overhead can be configured and tuned&lt;/li&gt;
&lt;li&gt;Events and Filters can be &lt;strong&gt;adapted live&lt;/strong&gt; – meaning during active session&lt;/li&gt;
&lt;li&gt;Official &lt;strong&gt;2 µs/Event&lt;/strong&gt; vs. 4ms/Event in SQLTrace&lt;/li&gt;
&lt;li&gt;Event-loss is configurable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Efficient filtering&lt;/strong&gt; through architecture&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complex predicates&lt;/strong&gt; such as &lt;em&gt;Counter&lt;/em&gt; or &lt;em&gt;last_error&lt;/em&gt;, &lt;em&gt;less_than_min_datatype&lt;/em&gt; oder &lt;em&gt;greater_than_max_datatype&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlation of Events &lt;/strong&gt;possible&lt;/li&gt;
&lt;li&gt;Possibility of following &lt;strong&gt;Events from Client into the Database&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Easy Automation&lt;/li&gt;
&lt;li&gt;Directly integrated in Management Studio&lt;/li&gt;
&lt;li&gt;Many &lt;strong&gt;analysis directly inside the GUI&lt;/strong&gt; possible (in order to improve them, &lt;strong&gt;please vote&lt;/strong&gt; at Microsoft Connect: &lt;a href=&quot;https://connect.microsoft.com/SQLServer/feedback/details/798731/extended-events-ui-export-display-settings-include-grouping&quot; target=&quot;_blank&quot;&gt;Extended Events UI Export Display Settings: include grouping&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Query_hash &lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;for identification&lt;/strong&gt; of identical queries available&lt;/li&gt;
&lt;li&gt;No &lt;strong&gt;10 clicks to set up&lt;/strong&gt; a simple session including filter&lt;/li&gt;
&lt;li&gt;Choice of &lt;strong&gt;different destinations for storing &lt;/strong&gt;EventData (6)&lt;/li&gt;
&lt;li&gt;“Goal-oriented” destinations such as &lt;strong&gt;Counter and Histogram&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple destinations&lt;/strong&gt; can be combined for “&lt;em&gt;On the fly – top-down analyses&lt;/em&gt;”&lt;/li&gt;
&lt;li&gt;Possibilities for entirely new &lt;strong&gt;insights into internal matters&lt;/strong&gt; of database engine (Latching, Spinlocks, Multi-victim-Deadlock, Wait_Infos per session/query, Caching-processes, Ghost-cleanup, analysis of Page Splits, Page-Compression processes, to name just a few)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stack Tracing of a single process&lt;/strong&gt; possible – instead of a complete Server Dump&lt;/li&gt;
&lt;li&gt;Definition with standard &lt;strong&gt;DDL-Statements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API&lt;/strong&gt; for integration into one’s own tools available&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PowerShell&lt;/strong&gt; support&lt;/li&gt;
&lt;li&gt;Last but not least: Finally a good reason to learn &lt;strong&gt;XML &amp;amp; XQuery&lt;/strong&gt;? ;-)&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; *1&lt;br /&gt; &lt;strong&gt;Extended Events vs. SQL trace Events per Version&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2013/11/1710_Extended_Events_per_SQL_Server_Version-1.png&quot; alt=&quot;Extended_Events_per_SQL_Server_Version&quot; width=&quot;528&quot; height=&quot;181&quot; /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;*2&lt;br /&gt;As an example: For &lt;strong&gt;Service Broker&lt;/strong&gt; there are:&lt;br /&gt;&lt;strong&gt;15&lt;/strong&gt; &lt;strong&gt;Events&lt;/strong&gt; in SQLTrace vs. &lt;strong&gt;44&lt;/strong&gt; &lt;strong&gt;Events&lt;/strong&gt; in XEvents (SQL Server 2012 SP1)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Ich hoffe, das hilft dem einen oder anderen, die alte Gewohnheit abzulegen, und die kleine Lernphase in Kauf zu nehmen.&lt;/p&gt;
&lt;p&gt;Eine Liste aller Extended Events in SQL Server 2012 SP1 samt Ihrem Gegenstück in SQL Trace, welche man für Migrationszwecke (SQLTrace -&amp;gt; XEvent Trace) verwenden kann findet sich in &lt;a href=&quot;http://www.andreas-wolter.com/public/sql-server-resources/1311_Mapping_Extended_Events_to_SQLTrace.htm&quot;&gt;dieser Seite&lt;/a&gt;. (Aufgrund einer Größenbeschränkung passte sie nicht mehr hier hinein.)&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;I hope this helps some of you to unlearn the old habit and accept the little learning phase. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;A list of all Extended Events in SQL Server 2012 SP1 including its counter piece in SQL Trace that can be used for migration purposes (SQLTrace-&amp;gt; XEvent Trace) is available on &lt;a href=&quot;http://www.andreas-wolter.com/public/sql-server-resources/1311_Mapping_Extended_Events_to_SQLTrace.htm&quot;&gt;this page&lt;/a&gt;. (Due to size restriction, it didn’t fit in here anymore.)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;gt; &lt;a title=&quot;Mapping Extended Events to SQL Trace&quot; href=&quot;http://www.andreas-wolter.com/public/sql-server-resources/1311_Mapping_Extended_Events_to_SQLTrace.htm&quot;&gt;Mapping Extended Events with &lt;em&gt;sys.trace_xe_event_map&lt;/em&gt; to SQL Trace&lt;/a&gt; &amp;lt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Happy better Tracing&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;PS: Für 2014 befindet sich mit den &lt;a href=&quot;http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm&quot;&gt;SQL Server Master-Classes zum Thema „&lt;strong&gt;Tracing mit Extended Events&lt;/strong&gt;“&lt;/a&gt; auch die nächste Runde der Trainings zu diesem Thema in der Planung :-)&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;P.S. For 2014, the next round of training in this topic is being developed in conjunction with &lt;a href=&quot;http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm&quot;&gt;SQL Server Master-Classes on the topic “&lt;strong&gt;Tracing with Extended Events&lt;/strong&gt;”&lt;/a&gt; :-)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace &amp; Profiler einfach von gestern sind :-)</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>(de)<br />Zur Erinnerung: Extended Events sind <strong>seit SQL Server 2008 in SQL Server integriert</strong>. Und seit SQL Server 2012 SP1 sind alle Events verfügbar, die es in SQL Trace gibt. Zudem sind Extended Events seit SQL Server 2012 auch für Analysis Services verfügbar (<a href="/blogs/andreaswolter/2013/04/tracing-analysis-services-with-extended">Tracing Analysis Services (SSAS) with Extended Events – Yes it works and this is how</a>).</p>
<p>Für alle, die noch mit dem alten Werkzeug <em>SQL Server Profiler</em> (Profiler ist das Frontend für <em>SQL Trace</em>, gestartet mit <em>sp_trace_create</em>) arbeiten, und sich noch nicht für die neue Technologie entscheiden konnten, hier eine kleine Entscheidungshilfe.</p>
<p>Was Extended Events (XEvents) besser als SQLTrace machen:</p>
</td>
<td valign="top" width="334">
<p>(en)<br />As a reminder: Extended Events have been <strong>integrated in SQL Server since SQL Server 2008</strong>. And since SQL Server 2012 SP1, all events existing in SQL Trace have been available. In addition, Extended Events have also been available for Analysis Services since SQL Server 2012 <a href="/blogs/andreaswolter/2013/04/tracing-analysis-services-with-extended">Tracing Analysis Services (SSAS) with Extended Events – Yes it works and this is how</a>).</p>
<p>For those of you who are still working with the old tool <em>SQL Server Profiler</em> (Profiler is the frontend for <em>SQL Trace</em>, started with <em>sp_trace_create</em>) and have not quite been able to decide for the new technology, here is some decision guidance.</p>
<p>What Extended Events (XEvents) do better than SQL Trace:</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<ol>
<li>Einzige Möglichkeit <strong>neue Features</strong> wie FileStream, FileTable, AlwaysOn, ColumnStore, Hekaton/XTP etc. zu <strong>Tracen</strong></li>
<li><strong>Viel mehr Events</strong> tracebar, auch bereits für ältere Releases (siehe *1, *2 unten)</li>
<li>Deutlich <strong>geringerer Beobachter-Overhead</strong><br /> siehe auch: <a href="/blogs/andreaswolter/2013/08/performance-overhead-tracing-extended-events-sql-trace-under-cpu-load">Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load</a></li>
<li>Performance/Last lässt sich konfigurieren &amp; tunen</li>
<li>Events und Filter lassen sich <strong>live anpassen </strong>– während aktiver Session also</li>
<li>Ofiziell <strong>2 µs/Event</strong> gg. 4ms/Event in SQLTrace</li>
<li>Event-Verlust konfigurierbar</li>
<li><strong>Effiziente Filterung</strong> durch Architektur</li>
<li><strong>Komplexe Prädikate </strong>wie z.B. <em>Zähler</em> oder <em>last_error</em>, <em>less_than_min_datatype</em> oder <em>greater_than_max_datatype</em></li>
<li><strong>Korrelation von Events </strong>möglich</li>
<li>Möglichkeit <strong>Events vom Client bis in die Datenbank</strong> zu verfolgen</li>
<li>Einfache Automatisierung</li>
<li>Direkt <strong>in Management Studio integriert</strong></li>
<li>Viele <strong>Analysen direkt in der GUI</strong> möglich (Um diese noch zu verbessern, <strong>bitte</strong> hier bei Microsoft Connect <strong>voten</strong>: <a href="https://connect.microsoft.com/SQLServer/feedback/details/798731/extended-events-ui-export-display-settings-include-grouping" target="_blank">Extended Events UI Export Display Settings: include grouping</a>)</li>
<li><strong><em>Query_hash</em> zum Identifizieren </strong>von identischen Abfragen verfügbar</li>
<li>Keine <strong>10 Klicks zum Aufsetzen</strong> einer simplen Session inkl. Filter</li>
<li><strong>Unterschiedliche Speicher-Ziele</strong> für EventDaten zur Auswahl (6)</li>
<li>„Ergebnisorientierte“ Ziele wie <strong>Counter und Histogramm</strong></li>
<li><strong>Multiple Ziele</strong> lassen sich für “<em>On the fly - Top-Down Analysen</em>” kombinieren</li>
<li>Möglichkeiten für ganz neue <strong>Einblicke in Interna</strong> der Datenbank-Engine (Latching, Spinlocks, Multi-victim-Deadlock, Wait_Infos per session/query, Caching-Vorgänge, Ghost-cleanup, Analyse von Page Splits, Page-Compression Vorgänge, um nur einige zu nennen)</li>
<li><strong>Stack Tracen eines einzelnen Prozesses</strong> möglich – anstelle eines vollständigen Server Dumps</li>
<li>Definition mit Standard <strong>DDL-Statements</strong></li>
<li><strong>API</strong> zur Integration in eigene Tools verfügbar</li>
<li><strong>PowerShell</strong>-Unterstützung</li>
<li>Last but not least: Endlich ein Grund, <strong>XML &amp; XQuery</strong> zu lernen? ;-)</li>
</ol>
</td>
<td valign="top" width="334">
<ol>
<li>The only possibility of <strong>Tracing</strong> <strong>new features</strong> like FileStream, FileTable, AlwaysOn, ColumnStore, Hekaton/XTP etc.</li>
<li><strong>Many more Events</strong> traceable, even for older releases (see *1, *2 below)</li>
<li>Significantly <strong>less Observer-Overhead</strong>, also see: <a href="/blogs/andreaswolter/2013/08/performance-overhead-tracing-extended-events-sql-trace-under-cpu-load">Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load</a></li>
<li>Performance/Overhead can be configured and tuned</li>
<li>Events and Filters can be <strong>adapted live</strong> – meaning during active session</li>
<li>Official <strong>2 µs/Event</strong> vs. 4ms/Event in SQLTrace</li>
<li>Event-loss is configurable</li>
<li><strong>Efficient filtering</strong> through architecture</li>
<li><strong>Complex predicates</strong> such as <em>Counter</em> or <em>last_error</em>, <em>less_than_min_datatype</em> oder <em>greater_than_max_datatype</em></li>
<li><strong>Correlation of Events </strong>possible</li>
<li>Possibility of following <strong>Events from Client into the Database</strong></li>
<li>Easy Automation</li>
<li>Directly integrated in Management Studio</li>
<li>Many <strong>analysis directly inside the GUI</strong> possible (in order to improve them, <strong>please vote</strong> at Microsoft Connect: <a href="https://connect.microsoft.com/SQLServer/feedback/details/798731/extended-events-ui-export-display-settings-include-grouping" target="_blank">Extended Events UI Export Display Settings: include grouping</a>)</li>
<li><strong><em>Query_hash </em></strong><strong>for identification</strong> of identical queries available</li>
<li>No <strong>10 clicks to set up</strong> a simple session including filter</li>
<li>Choice of <strong>different destinations for storing </strong>EventData (6)</li>
<li>“Goal-oriented” destinations such as <strong>Counter and Histogram</strong></li>
<li><strong>Multiple destinations</strong> can be combined for “<em>On the fly – top-down analyses</em>”</li>
<li>Possibilities for entirely new <strong>insights into internal matters</strong> of database engine (Latching, Spinlocks, Multi-victim-Deadlock, Wait_Infos per session/query, Caching-processes, Ghost-cleanup, analysis of Page Splits, Page-Compression processes, to name just a few)</li>
<li><strong>Stack Tracing of a single process</strong> possible – instead of a complete Server Dump</li>
<li>Definition with standard <strong>DDL-Statements</strong></li>
<li><strong>API</strong> for integration into one’s own tools available</li>
<li><strong>PowerShell</strong> support</li>
<li>Last but not least: Finally a good reason to learn <strong>XML &amp; XQuery</strong>? ;-)</li>
</ol>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> *1<br /> <strong>Extended Events vs. SQL trace Events per Version</strong></p>
<p><strong><img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2013/11/1710_Extended_Events_per_SQL_Server_Version-1.png" alt="Extended_Events_per_SQL_Server_Version" width="528" height="181" /></strong></p>
<p> </p>
<p>*2<br />As an example: For <strong>Service Broker</strong> there are:<br /><strong>15</strong> <strong>Events</strong> in SQLTrace vs. <strong>44</strong> <strong>Events</strong> in XEvents (SQL Server 2012 SP1)</p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Ich hoffe, das hilft dem einen oder anderen, die alte Gewohnheit abzulegen, und die kleine Lernphase in Kauf zu nehmen.</p>
<p>Eine Liste aller Extended Events in SQL Server 2012 SP1 samt Ihrem Gegenstück in SQL Trace, welche man für Migrationszwecke (SQLTrace -&gt; XEvent Trace) verwenden kann findet sich in <a href="http://www.andreas-wolter.com/public/sql-server-resources/1311_Mapping_Extended_Events_to_SQLTrace.htm">dieser Seite</a>. (Aufgrund einer Größenbeschränkung passte sie nicht mehr hier hinein.)</p>
</td>
<td valign="top" width="334">
<p>I hope this helps some of you to unlearn the old habit and accept the little learning phase. </p>
<p> </p>
<p>A list of all Extended Events in SQL Server 2012 SP1 including its counter piece in SQL Trace that can be used for migration purposes (SQLTrace-&gt; XEvent Trace) is available on <a href="http://www.andreas-wolter.com/public/sql-server-resources/1311_Mapping_Extended_Events_to_SQLTrace.htm">this page</a>. (Due to size restriction, it didn’t fit in here anymore.)</p>
</td>
</tr>
</tbody>
</table>
<p>&gt; <a title="Mapping Extended Events to SQL Trace" href="http://www.andreas-wolter.com/public/sql-server-resources/1311_Mapping_Extended_Events_to_SQLTrace.htm">Mapping Extended Events with <em>sys.trace_xe_event_map</em> to SQL Trace</a> &lt;</p>
<p> </p>
<p>Happy better Tracing</p>
<p> </p>
<p>Andreas</p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>PS: Für 2014 befindet sich mit den <a href="http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm">SQL Server Master-Classes zum Thema „<strong>Tracing mit Extended Events</strong>“</a> auch die nächste Runde der Trainings zu diesem Thema in der Planung :-)</p>
</td>
<td valign="top" width="334">
<p>P.S. For 2014, the next round of training in this topic is being developed in conjunction with <a href="http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm">SQL Server Master-Classes on the topic “<strong>Tracing with Extended Events</strong>”</a> :-)</p>
</td>
</tr>
</tbody>
</table>
<p> </p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3610</wfw:commentRss>
		</item>
				<item>
			<title>Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2013/08/performance-overhead-tracing-extended-events-sql-trace-under-cpu-load</link>
			<pubDate>Wed, 14 Aug 2013 16:16:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="main">Tracing &amp; Monitoring</category>
<category domain="alt">Extended Events</category>
<category domain="alt">SQL Trace &amp; Profiler</category>
<category domain="alt">Performance</category>			<guid isPermaLink="false">3570@https://www.insidesql.org/blogs/</guid>
						<description>&lt;h2&gt;Leistungseinbußen beim Tracing, Extended Event Ziele gegen SQL Trace unter CPU Last&lt;/h2&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;(DE)&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Inspiriert durch den Blog Post Post “&lt;a href=&quot;http://www.sqlperformance.com/2012/10/sql-trace/observer-overhead-trace-extended-events&quot; target=&quot;_blank&quot;&gt;Measuring Observer Overhead of SQL Trace vs. Extended Events&lt;/a&gt;” von Jonathan Kehayias, war ich neugierig, ein paar weitere Benchmarks durchzuführen. Die Resultate habe ich bereits in meinen &lt;a href=&quot;http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm&quot;&gt;SQL Server Master-Class&lt;/a&gt; Workshops zu XEvents und auf der PreCon des &lt;a href=&quot;http://sqlsaturday.com/230/&quot; target=&quot;_blank&quot;&gt;SQLSaturday #230&lt;/a&gt; präsentiert. Nun teile ich sie endlich hier.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Vor allem folgende Aspekte interessierten mich:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Was ist der Performance-overhead einer &lt;strong&gt;Extended Event Session selber&lt;/strong&gt; – ohne die Verarbeitung und des Dispatchens zu den Targets&lt;/li&gt;
&lt;li&gt;Wie verhält sich das im Vergleich zu &lt;strong&gt;SQL Trace&lt;/strong&gt; – auch das &lt;strong&gt;ohne Overhead für ein Ziel&lt;/strong&gt; (Keine Datei, kein Profiler: gar kein Konsument)&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;day&quot;&gt;Da ich einmal das Setup bereit hatte, habe ich mich entschieden, &lt;strong&gt;alle anderen Ziele&lt;/strong&gt; ebenfalls aufzunehmen, sowie einige &lt;strong&gt;grundlegende Options-Variationen&lt;/strong&gt;, um einen kompletten Überblick zu erhalten, der in sich vergleichbar ist.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;(EN)&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Inspired by the Blog Post “&lt;a href=&quot;http://www.sqlperformance.com/2012/10/sql-trace/observer-overhead-trace-extended-events&quot; target=&quot;_blank&quot;&gt;Measuring Observer Overhead of SQL Trace vs. Extended Events&lt;/a&gt;” by Jonathan Kehayias, I was curious to do some more benchmarking.&lt;br /&gt; I have already presented the results in my &lt;a href=&quot;http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm&quot;&gt;SQL Server Master-Class&lt;/a&gt; workshops on XEvents as well as at the PreCon of the &lt;a href=&quot;http://sqlsaturday.com/230/&quot; target=&quot;_blank&quot;&gt;SQLSaturday #230&lt;/a&gt;. Now I am finally sharing them with you here.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;I was interested in the following aspects, in particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the Performance-overhead of an &lt;strong&gt;Extended Event Session itself&lt;/strong&gt; – not including the processing/dispatching for the target&lt;/li&gt;
&lt;li&gt;How does this compare to the old-school &lt;strong&gt;SQL Trace&lt;/strong&gt; – again with &lt;strong&gt;no Target overhead&lt;/strong&gt; (No File, no Profiler: no consumer at all)&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;day&quot;&gt;Besides that, once I had the setup ready, I decided to include &lt;strong&gt;all the other targets&lt;/strong&gt; and some &lt;strong&gt;basic option-variations&lt;/strong&gt;, to have a complete overview that is comparable in itself.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Ich entschied mich für &lt;strong&gt;ein System, das bereits unter CPU Druck steht&lt;/strong&gt; – &lt;strong&gt;die CPU Verwendung liegt fast vollständig bei 100%.&lt;/strong&gt;&lt;br /&gt; Unter diesen Umständen hoffte ich die &lt;strong&gt;maximalen Auswirkungen von Extended Events („Erweiterte Ereignisse“) als auch SQL Trace&lt;/strong&gt; (Zur Erinnerung: SQL Profiler basiert auf SQL Trace) zu erhalten. Man könnte meinen, dass eine E/A(I/O)-lastige Arbeitslast noch mehr beeinflusst werden würde, aber das hängt an den Targets für Extended Events. – 4 davon gehen lediglich in den Arbeitsspeicher, gegenüber einem File-Target (welches man ohnehin auf ein Nicht-Daten-Volume legen sollte). Und da ich auch den reinen Overhead der Trace-Technologien (ohne Ziel) messen möchte, macht das noch mehr Sinn. Abgesehen davon kann I/O in der Regel meist recht einfach getuned werden, indem man auf ein ansonsten unverwendetes und schnelles Device schreibt, wohingegen es für CPU nicht so einfach ist, die Kosten unsichtbar zu halten. Das im Hinterkopf zu behalten hilft, die Resultate, die hier präsentiert werden zu evaluieren und sie in den rechten Kontext zu rücken.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;I also decided for a test of &lt;strong&gt;a system that’s already under CPU pressure&lt;/strong&gt; - so &lt;strong&gt;the Processor Usage is almost constantly hitting 100%&lt;/strong&gt;.&lt;br /&gt; Under these circumstances I was hoping to get the&lt;strong&gt; maximum impact of Extended Events as well as SQL Trace&lt;/strong&gt;. (Remember: SQL Profiler is based on SQL Trace) One could think that an I/O driven workload would be even more influenced, but that depends on the targets of Extended Events. - 4 of which only go to memory, vs. one file target (which one should put onto a non-data volume anyways). And since I also want to measure the pure overhead of the tracing technologies (without any target), this makes even more sense.&lt;br /&gt; Besides that, I/O usually can be tuned quite easily by writing to an otherwise idle and fast device, whereas for CPU it is not as simple to keep the costs invisible. Keeping this in mind helps to evaluate the results presented here and bringing them into the right context.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;day&quot;&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Test Umgebung&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;“Einfach aber physikalisch”&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;1 Windows 2008 R2 Server mit SQL Server 2012 SP1. Keine laufenden Dienste abseits des minimal Notwendigem, um Seiten-Effekte zu verhindern.&lt;br /&gt; Ich habe auch die Default-Trace sowie die system_health_session gestoppt.&lt;br /&gt; Der Distributed Replay-Client wurde für alle Test local ausgeführt, und Ja, das hat Effekt auf den Server, aber das war gleich für alle Tests. Alle Tests wurden 3 Mal wiederholt (einige sogar öfter), um sicherzustellen, dass der Durchschnitt/Median valide ist.&lt;br /&gt; Der Server, wie gesagt, war physikalisch (das kommt praktisch, wenn man Benchmarks mit einer Gesamtzeit von ~50 Stunden durchführt.): 1 Dual Core Intel Xeon mit 8 GB RAM (was bei Weitem genug war), Daten Volumen und Volumen für Trace-Targets auf separate Controllers.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Die Arbeitslast war ein Mix von meist kurzen (Sub-Sekunden) aber auch einigen Abfragen mit mehreren Sekunden Laufzeit, (Ad Hoc und gespeicherte Prozeduren), um eine einigermaßen realistische Decision-Support-System Last zu simulieren – jedoch ohne Datenänderungen.&lt;br /&gt; Die Baseline Workload dauerte 00:24:24 Minuten. Die Statistiken blieben für alle Workload-Zyklen identisch. Die verwendete Datenbank war AdventureWorks2012.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Test Environment&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;“Simple but physical”&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;1 Windows 2008 R2 Server with SQL Server 2012 SP1. No running services above the minimum required, to avoid side-effects.&lt;br /&gt; I also shut down the default trace as well as the system_health_session.&lt;br /&gt; The Distributed Replay-client was run locally for all tests, so yes, this has effect on the server, but it was equally for all tests. All tests have been repeated 3 times (some even more) to make sure the average/median is valid.&lt;br /&gt; The server, as I already said, was physical (which comes in handy when you are running benchmarks for a total of ~50 hours): 1 Dual Core Intel Xeon with 8 GB of RAM (which was by far enough), Data Volumes and Volumes for Trace-Targets on separate Controllers.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;The workload was a mixture of mostly short (sub-second) but also several queries of several second runtime, (Ad Hoc and stored procedures) to simulate a somehow realistic decision-support-systems’ load – no data changes though.&lt;br /&gt; The baseline workload took 00:24:24 minutes. The statistics stayed the same for all workloads cycles. The database used was AdventureWorks2012.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;day&quot;&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Trace-Konfigurationen&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Ich habe mich für eine einfache, aber nicht unübliche Trace entschieden, die typischerweise viele Daten sammelt.&lt;br /&gt; Die Trace sammelt nur 2 Ereignisse:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Trace-Configurations&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;I decided for a simple but not uncommon trace that typically collects a lot of data. The trace collects only 2 events:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Lock acquired&lt;/li&gt;
&lt;li&gt;Lock released&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Ausgefiltert: System-Sitzungen und andere Datenbanken als die, die hier unter Last steht.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Gesammelte Daten:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Filtered out: System-sessions and other databases than the one under load here.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;CollectedData:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lock:Released   BinaryData&lt;/li&gt;
&lt;li&gt;Lock:Released   DatabaseID&lt;/li&gt;
&lt;li&gt;Lock:Released   TransactionID&lt;/li&gt;
&lt;li&gt;Lock:Released   SPID&lt;/li&gt;
&lt;li&gt;Lock:Released   ObjectID&lt;/li&gt;
&lt;li&gt;Lock:Released   Mode&lt;/li&gt;
&lt;li&gt;Lock:Released   BigintData1&lt;/li&gt;
&lt;li&gt;Lock:Released   IntegerData2&lt;/li&gt;
&lt;li&gt;Lock:Released   ObjectID2&lt;/li&gt;
&lt;li&gt;Lock:Released   Type&lt;/li&gt;
&lt;li&gt;Lock:Released   OwnerID&lt;/li&gt;
&lt;li&gt;Lock:Released   IsSystem&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Lock:Acquired   BinaryData&lt;/li&gt;
&lt;li&gt;Lock:Acquired   DatabaseID&lt;/li&gt;
&lt;li&gt;Lock:Acquired   TransactionID&lt;/li&gt;
&lt;li&gt;Lock:Acquired   SPID&lt;/li&gt;
&lt;li&gt;Lock:Acquired   Duration&lt;/li&gt;
&lt;li&gt;Lock:Acquired   ObjectID&lt;/li&gt;
&lt;li&gt;Lock:Acquired   IsSystem&lt;/li&gt;
&lt;li&gt;Lock:Acquired   Mode&lt;/li&gt;
&lt;li&gt;Lock:Acquired   BigintData1&lt;/li&gt;
&lt;li&gt;Lock:Acquired   IntegerData2&lt;/li&gt;
&lt;li&gt;Lock:Acquired   ObjectID2&lt;/li&gt;
&lt;li&gt;Lock:Acquired   Type&lt;/li&gt;
&lt;li&gt;Lock:Acquired   OwnerID&lt;/li&gt;
&lt;/ul&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Das gab mir den Vorteil, einen validen Test für alle Extended Event Targets, die bereitgestellt werden, zu haben (lediglich ETW-Tracing wurde ausgelassen) - speziell das Histogramm und die „Ereignispaarbildung“ (Pair-Matching)(Die wenigen Ereignisse von Lock-Escalation störten mich bewusst nicht).&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Die folgenden &lt;strong&gt;Trace Technologien und -Ziele&lt;/strong&gt; wurden verwendet:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;This gave me the advantage to have a valid test for all Extended Event Targets that are provided (only ETW-Tracing was left out) - specifically histogram and Pair Matching (I did not care about the few occasions of lock escalation on purpose).&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;The following &lt;strong&gt;Trace technologies and -Targets&lt;/strong&gt; were used:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XEvent Trace, Target: None&lt;/li&gt;
&lt;li&gt;XEvent Trace, Target: Ring Buffer&lt;/li&gt;
&lt;li&gt;XEvent Trace, Target: File&lt;/li&gt;
&lt;li&gt;XEvent Trace, Target: Counter&lt;/li&gt;
&lt;li&gt;XEvent Trace, Target: Histogram
&lt;ul&gt;
&lt;li&gt;Here I chose to filter on lock acquired and to bucketize on the lock mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XEvent Trace, Target: Pair Matching
&lt;ul&gt;
&lt;li&gt;Guess, what I matched here ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SQL Trace, Target: None (I had to trick a little bit to get this to work, but I made sure, the behavior of this unsupported configuration did not distort the results: It’s just a SQL Trace with no Provider processing, so all events are lost by nature.)&lt;/li&gt;
&lt;li&gt;SQL Trace, Target: File&lt;/li&gt;
&lt;li&gt;SQL Profiler, remotely&lt;/li&gt;
&lt;/ul&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Für jedes Ziel der Extended Events habe ich &lt;strong&gt;4 Varianten&lt;/strong&gt; getestet, basierend auf den Sitzungsoptionen:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;For each Extended Event Target I tested &lt;strong&gt;4 variations&lt;/strong&gt;, based on the session options:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Single event loss&lt;/li&gt;
&lt;li&gt;No event loss&lt;/li&gt;
&lt;li&gt;Multiple event loss&lt;/li&gt;
&lt;li&gt;Single event loss with causality tracking on&lt;/li&gt;
&lt;/ul&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Alle anderen Optionen verwendeten die Standardwerte für diese Tests.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;All other options were using the defaults for these tests.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;img src=&quot;http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_sessions.png&quot; alt=&quot;XEvent_PerfComparison_sessions&quot; width=&quot;218&quot; height=&quot;526&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Picture: the 24 prepared traces&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Die Ergebnisse&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Ich habe die Gesamtlaufzeit für die Workload sowie Batches pro Sekunde und CPU Zeit % gemessen.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Und hier ist die vollständige Tabelle mit den Ergebnissen:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;The Results&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;I measured the total time for the workload to take as well as batches per second and CPU time %.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;And here is the complete Table of Results:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;img src=&quot;http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_Runtime_Avg_EvSec.png&quot; alt=&quot;XEvent_PerfComparison_Runtime_Avg_EvSec&quot; width=&quot;600&quot; height=&quot;525&quot; /&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;EL&lt;/strong&gt; = Ereignisverlust. &lt;strong&gt;S&lt;/strong&gt; = Verlust einzelner Ereignisse, &lt;strong&gt;N&lt;/strong&gt; = Kein Ereignisverlust, &lt;strong&gt;M&lt;/strong&gt; = Verlust mehrerer Ereignisse&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;CT&lt;/strong&gt; = Kausalitätsverfolgung (Causality Tracking) Ein&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;EL&lt;/strong&gt; = Event Loss. &lt;strong&gt;S&lt;/strong&gt; = Single event loss, &lt;strong&gt;N&lt;/strong&gt; = No event loss, &lt;strong&gt;M&lt;/strong&gt; = Multiple event loss&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;CT&lt;/strong&gt; = Causality Tracking On&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Um Zeit und Platz zu sparen, &lt;strong&gt;konzentriere ich mich &lt;/strong&gt;&lt;strong&gt;auf&lt;/strong&gt; die Benchmarks mit den Optionen &lt;strong&gt;&lt;em&gt;single event loss&lt;/em&gt; und &lt;em&gt;no event loss&lt;/em&gt; ohne &lt;em&gt;Causality Tracking&lt;/em&gt;&lt;/strong&gt;. Tatsächlich waren &lt;strong&gt;die Kosten von Causality Tracking weniger als 1% für alle Ziele&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Hier ist daher das &lt;strong&gt;komprimierte Ergebnis&lt;/strong&gt;:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;For the sake of saving space and time, &lt;strong&gt;I will focus on&lt;/strong&gt; the benchmarks with the options &lt;strong&gt;&lt;em&gt;single event loss&lt;/em&gt; and &lt;em&gt;no event loss &lt;/em&gt;without &lt;em&gt;causality tracking&lt;/em&gt;&lt;/strong&gt;. In fact, &lt;strong&gt;the cost of causality tracking was less than 1% for all targets&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;So this is the more &lt;strong&gt;condensed result&lt;/strong&gt;:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;img src=&quot;http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_Runtime_S_N_Avg_EvSec.png&quot; alt=&quot;XEvent_PerfComparison_Runtime_S_N_Avg_EvSec&quot; width=&quot;600&quot; height=&quot;308&quot; /&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Was wir demnach sagen können, ist:&lt;br /&gt; (Erinnern wir uns daran: alles läuft unter Hoher CPU Last. Das ist die Grundlage aller Ergebnisse.)&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;What we can tell from that, is:&lt;br /&gt; (Remember: Everything is running under High CPU Load, so that’s the base of all results.)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Eine &lt;strong&gt;blanke XEvent Session &lt;/strong&gt;alleine, ohne Targets, hat bereits einen spürbaren Einfluss von ~15 % Leistungsverlust.&lt;/li&gt;
&lt;li&gt;Der Aufschlag („Overhead“) der künstlich erzeugten (nicht unterstützten) Version einer &lt;strong&gt;blanken SQL Trace&lt;/strong&gt;, ohne den Aufschlag eines Rowset oder File Providers („Target“), ist nicht allzu weit von dem einer Extended Events Session ohne dem Dispatchen zu einem Target entfernt (~19% gegen ~15%).&lt;/li&gt;
&lt;li&gt;Der &lt;strong&gt;Ringpuffer (Ring Buffer)&lt;/strong&gt; ist das XE-Target mit dem größten Overhead (~40%). (!)&lt;/li&gt;
&lt;li&gt;Das &lt;strong&gt;Ereignisdateiziel (“File-Target”)&lt;/strong&gt; hat, wie erwartet, wirklich den geringsten Overhead, aber dieser beläuft sich immer noch auf 25%.&lt;/li&gt;
&lt;li&gt;Die Unterschiede zwischen &lt;strong&gt;den Targets Ereigniszähler („Counter“), Histogramm und Ereignispaarbildung („Pair Matching“) &lt;/strong&gt;sind irrelevant.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Ja, sogar der simple &lt;strong&gt;Counter&lt;/strong&gt; hat einen höheren Overhead als das File Target.&lt;/li&gt;
&lt;li&gt;Das &lt;strong&gt;File Target mit &lt;em&gt;No Event Loss&lt;/em&gt; &lt;/strong&gt;zu konfigurieren, fügt fast den vierfachen Overhead hinzu.&lt;/li&gt;
&lt;li&gt;Die Unterschiede für die anderen Targets zwischen &lt;strong&gt;&lt;em&gt;single&lt;/em&gt;, &lt;em&gt;multiple&lt;/em&gt; und sogar &lt;em&gt;no event loss&lt;/em&gt;&lt;/strong&gt; ist in diesem Szenario fast negierbar.&lt;/li&gt;
&lt;li&gt;Verglichen mit Extended Events ist der Overhead durch eine &lt;strong&gt;SQL Trace&lt;/strong&gt; fast schon “brutal”: Er vervierfacht die Gesamtlaufzeit.&lt;/li&gt;
&lt;li&gt;Und noch mehr: Tracing mit dem &lt;strong&gt;SQL Profiler&lt;/strong&gt; ist in solch einem Szenario schlicht ein Ding der Unmöglichkeit: Ich habe 21 Stunden eingetragen, aber das ist tatsächlich eine &lt;span style=&quot;text-decoration: underline;&quot;&gt;Schätzung&lt;/span&gt;: Ich beendete diese Test-Zyklen nach rund 3 Stunden (man möge mir verzeihen, aber es ist schlicht Zeitverschwendung...), zählte die beendeten Events und rechnete aus, wie lange es noch gedauert hätte, grob – aber tatsächlich eher optimistisch. Profiler ist, wie ich es immer sage, ein “No-Go” um für längere Zeiträume zu tracen, vor allem, wenn die Performance ohnehin bereits leidet.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt; 
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;plain XEvent Session &lt;/strong&gt;itself, with no Targets, already does have a noticeable impact of ~15 % performance decrease.&lt;/li&gt;
&lt;li&gt;The overhead of the artificial (not supported) version &lt;strong&gt;plain SQL Trace&lt;/strong&gt;, without the overhead of a rowset or file provider (aka target), is not too far off the Extended Events Session without the dispatching to any target (~19% versus ~15%).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Ring Buffer&lt;/strong&gt; is the XE-Target with the greatest overhead (~40%). (!)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;File-Target&lt;/strong&gt; really does have the lowest overhead as expected, but it’s still 25%.&lt;/li&gt;
&lt;li&gt;The differences between &lt;strong&gt;the Targets Counter, Histogram and Pair Matching &lt;/strong&gt;are irrelevant.
&lt;ul&gt;
&lt;li&gt;Yes, even the simple &lt;strong&gt;Counter&lt;/strong&gt; has a higher overhead than the File Target.&lt;/li&gt;
&lt;li&gt;Configuring the&lt;strong&gt; file target with &lt;em&gt;no event loss&lt;/em&gt; &lt;/strong&gt;adds approximately 4 times as much performance overhead.&lt;/li&gt;
&lt;li&gt;The difference for the other targets between &lt;strong&gt;&lt;em&gt;single&lt;/em&gt;, &lt;em&gt;multiple&lt;/em&gt; and even &lt;em&gt;no event loss&lt;/em&gt;&lt;/strong&gt; is mostly negligible in this scenario.&lt;/li&gt;
&lt;li&gt;Compared to Extended Events, the overhead through &lt;strong&gt;SQL Trace&lt;/strong&gt; is almost “brutal”: It quadruplicated the total runtime.&lt;/li&gt;
&lt;li&gt;And there&#039;s even more: Tracing with &lt;strong&gt;SQL Profiler&lt;/strong&gt; is absolutely impossible for such a scenario: I filled in 21 hours, but that’s actually an &lt;span style=&quot;text-decoration: underline;&quot;&gt;estimate&lt;/span&gt;: I stopped those test cycles after around 3 hours (forgive me, but it’s just a waste of time...), counted the finished events and calculated how much else it would have taken, roughly – in an actually rather optimistic manner. Profiler, as I always say, is a “no go” for tracing longer periods of time, especially if performance is already at stake.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Ein schönes Bild der &lt;strong&gt;SQL Trace Architektur&lt;/strong&gt; findet sich in den BOL: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh245121.aspx&quot; target=&quot;_blank&quot;&gt;msdn.microsoft.com/en-us/library/hh245121.aspx&lt;/a&gt; &lt;br /&gt; Die &lt;strong&gt;Extended Events Architektur&lt;/strong&gt; wird hier bildlich gezeigt: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx&quot; target=&quot;_blank&quot;&gt;msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;You have a nice picture of the &lt;strong&gt;SQL Trace Architecture&lt;/strong&gt; in BOL: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh245121.aspx&quot; target=&quot;_blank&quot;&gt;msdn.microsoft.com/en-us/library/hh245121.aspx&lt;/a&gt; &lt;br /&gt; The &lt;strong&gt;Extended Events Architecture&lt;/strong&gt; is depicted here: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx&quot; target=&quot;_blank&quot;&gt;msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Hinzufügen von Filtern&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Wie ändert das Hinzufügen von Filtern den Beobachter-Overhead?&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Es ist wichtig, zu wissen, was ich als Filter verwendet habe: Die database_id / source_database_id. &lt;br /&gt; - Tatsächlich habe ich einen Filter verwendet, der niemals “true” zurückgeben würde, indem ich einen Filter auf database_id = 77 angelegt habe – da keine Sitzung/Abfrage/Sperre je auf dieser nicht-existenten Datenbank lag.&lt;br /&gt; Warum habe ich das gemacht? – Das ist ein rein künstlicher Test/Benchmark. Was mich interessiert, ist der reine Overhead des Tracen, und nicht, was passiert, wenn ein bestimmter Prozentsatz der Aktivität nicht protokolliert wird. (Das könnte vielleicht etwas für einen anderen Benchmark sein. :-))&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Adding Filters&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;How does adding filters change the observer overhead?&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Now it is important to note what I actually used as a filter: The database_id / source_database_id.&lt;br /&gt; - I essentially added a filter that would never return “true” by adding a filter on database_id = 77 – since no session/query/lock was on this non-existing database.&lt;br /&gt; Why did I do that? – This is a totally artificial test/benchmark. I am interested what the pure overhead of tracing is, and not what happens if a certain percentage of activity is not logged. (That might be something for a different benchmark. :-))&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Dieses Mal konzentriere ich mich nur auf „single“ und „no event loss“.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Die Resultate des gefilterten Tracing, ohne tatsächlich irgendwelche Events zu speichern/protokollieren&lt;/strong&gt;, ist wie folgt:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;This time I only focused on “single” and “no event loss”.&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;The results of Filtered Tracing, without actually storing/logging any events&lt;/strong&gt; is as follows:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;img src=&quot;http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_Runtime_Filtered_Avg.png&quot; alt=&quot;XEvent_PerfComparison_Runtime_Filtered_Avg&quot; width=&quot;300&quot; height=&quot;264&quot; /&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Wie man sehen kann, fällt der Overhead der reinen &lt;strong&gt;XEvent Session ohne Target &lt;/strong&gt;von ~ 15% auf 9% bzw. ~ 16,5% gg. 12,5 % (No Event loss)&lt;/li&gt;
&lt;li&gt;Die anderen Targets zeigen in diesem Setup tatsächlich die größten Unterschiede:
&lt;ul&gt;
&lt;li&gt;Das &lt;strong&gt;Counter Target mit single event loss&lt;/strong&gt; profitiert am Meisten von dem Filter und fällt von ~33,5 auf 8,4 % Overhead.&lt;/li&gt;
&lt;li&gt;Nur &lt;strong&gt;Ring Buffer und Pair Matching&lt;/strong&gt; zeigen keinen Unterschied zwischen &lt;em&gt;single&lt;/em&gt; und &lt;em&gt;no event loss&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Trace &lt;/strong&gt;mit und ohne rowset Provider (Datei) als Target haben fast den gleichen Overhead – keine Überraschung, wenn man die Architektur kennt. Das ist tatsächlich ein weiterer risen Unterschied, der für Extended Events spricht, wo Filters viel früher in der Trace berücksichtigt werden.&lt;/li&gt;
&lt;li&gt;Das der Overhead von &lt;strong&gt;SQL Trace ohne Target und zugleich aller Events herausgefiltert&lt;/strong&gt; &lt;strong&gt;sogar höher&lt;/strong&gt; ist, als der Overhead ohne Target aber auch ohne Filter (von dem vorhergehenden Test-Zyklus), muss an dem Verarbeiten des Ausfilterns selber liegen. Ich werde mich damit aber nicht weiter befassen, da das Setup weder dokumentiert noch unterstützt ist.&lt;br /&gt; Und in meinen Augen ist “SQL Trace“ sowieso „tot“ ;-) – Okay, ich übertreibe hier ein wenig, aber ich bin auch ganz offen: Für SQL Server 2012 gibt es fast keinen Grund mehr zu dessen Verwendung. – Benchmarks mithilfe von Distributed Replay durchzuführen, ist so ein Grund – ist das nicht ironisch?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;day&quot;&gt;Für diesen Test habe ich SQL Profiler nicht ausgeführt, Pardon. Sie wissen bis hierhin wahrscheinlich schon, warum. ;-)&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;ul&gt;
&lt;li&gt;As one can see, the overhead of the pure &lt;strong&gt;XEvent session without target&lt;/strong&gt; drops from ~ 15% to 9% respectively ~ 16.5% vs. 12.5 % (no Event loss)&lt;/li&gt;
&lt;li&gt;The other targets do in fact show more differences in this setup:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Counter Target with single event loss&lt;/strong&gt; benefits most of the filter and drops from ~33.5 to 8.4 % overhead.&lt;/li&gt;
&lt;li&gt;Only &lt;strong&gt;Ring Buffer and Pair Matching&lt;/strong&gt; show no difference between &lt;em&gt;single&lt;/em&gt; and &lt;em&gt;no event loss.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Trace &lt;/strong&gt;with and without rowset provider (file) as target have almost the same overhead – no surprise if you know the architecture. This is in fact another huge difference which counts for Extended Events, where filters get honored much sooner within the Trace.&lt;/li&gt;
&lt;li&gt;That the overhead of &lt;strong&gt;SQL Trace without target and at the same time all events being filtered out&lt;/strong&gt; &lt;strong&gt;is actually higher&lt;/strong&gt; than the overhead without target but no filtering (from the former test cycle) must be caused by the processing of for filtering out. I will not dive more into this though, since this setup is not documented and or supported.&lt;br /&gt; And in my eyes, “SQL trace is dead” anyways ;-) – okay, I am exaggerating a bit here, but I am also just being frank: For SQL Server 2012 there is almost no need to use it any more. – Running benchmarks using Distributed Replay is such a reason – isn’t that ironic?&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;I did not run SQL Profiler for this Test, forgive me. You probably know why by now. ;-)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Wait-Types für Extended Events&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Ein weiterer Aspekt, der mich interessierte, waren die XEvent Wait-Typen, die auftreten würden, wenn man Extended Event Sessions ausführt. (Die Warte-Statistiken sind oft die Basis für Performance-Analysen)&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Allgemein sieht man folgende:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;&lt;strong&gt;Wait-Types for Extended Events&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;Another aspect I was interested in were the specific XEvent wait-types which would occur when running Extended Event sessions.&lt;br /&gt; (Wait-Statistics are often the base for performance analysis)&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;In general, you will see the following:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Beim &lt;strong&gt;Starten&lt;/strong&gt; einer Sitzung:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;When &lt;strong&gt;starting&lt;/strong&gt; a session:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;PREEMPTIVE_XE_TARGETINIT&lt;br /&gt;PREEMPTIVE_XE_CALLBACKEXECUTE&lt;br /&gt;PREEMPTIVE_XE_SESSIONCOMMIT&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Beim &lt;strong&gt;Beenden&lt;/strong&gt; einer Sitzung:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;When &lt;strong&gt;stopping&lt;/strong&gt; a session:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;PREEMPTIVE_XE_SESSIONCOMMIT&lt;br /&gt;XE_BUFFERMGR_ALLPROCESSED_EVENT&lt;br /&gt;PREEMPTIVE_XE_CALLBACKEXECUTE&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt; &lt;strong&gt;Während&lt;/strong&gt; Sessions aktiv sind, sieht man:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;While &lt;strong&gt;running&lt;/strong&gt; sessions you will see:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;XE_DISPATCHER_WAIT  - From BOL: Occurs when a background thread that is used for Extended Events sessions is waiting for event buffers to process. - You should be able to safely ignore this unless you believe a problem is occurring with processing of events for async targets. Since this works on a queue you can have bursts of high wait times especially when no XEvent sessions are active.&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;XE_TIMER_EVENT – From BOL: Used to indicate a background task is waiting for &quot;expired&quot; timers for internal Xevent engine work. - You should be able to safely ignore this one. Just used by the Xevent engine for internal processing of its work. If something was possibly wrong with Xevent processing you might see if this thread ever &quot;wakes up&quot;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Beim &lt;strong&gt;Starten&lt;/strong&gt; eines &lt;strong&gt;File-Targets&lt;/strong&gt; sieht man außerdem:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;When &lt;strong&gt;starting&lt;/strong&gt; the &lt;strong&gt;File target&lt;/strong&gt; you will also see:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;PREEMPTIVE_XE_TARGETINIT&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;Wenn man eine Sitzung mit der &lt;strong&gt;&lt;em&gt;No Event Loss&lt;/em&gt;&lt;/strong&gt; Option ausführt, sieht man gegebenenfalls:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;If you run a session with the &lt;strong&gt;&lt;em&gt;no event loss&lt;/em&gt;&lt;/strong&gt; option you might see&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;XE_BUFFERMGR_FREEBUF_EVENT - which by BOL means: An Extended Events session is configured for no event loss, and all buffers in the session are currently full. This can indicate that the buffers for an Extended Events session are too small, or should be partitioned.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;So. Ich hoffe das war interessant. Man kann noch weitere und andere Schlüsse aus den Ergebnissen ziehen. Immer im Hinterkopf zu behalten, ist, dass das ein sehr spezielles Szenario ist, wo keine CPU Reserven zur Verfügung stehen, so das der Trace/Beobachter-Overhead sich manifestieren muss – keine Chance, als eben (CPU) Ressourcen wegzunehmen.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p class=&quot;day&quot;&gt;So, I hope this was interesting for you. You may draw more and other conclusions out of these results. Remember though: this is a very specific scenario with no CPU reserves, so the Tracing/observer overhead has to show up – no choice but to take away (CPU) resources.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Happy Tracing&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;
&lt;p class=&quot;day&quot;&gt;PS: I just discovered that my MCM and SQLSkills-class buddy Steven Ormrod also has recently blogged about the performance overhead from a SQL Trace to remote file share on production here: &lt;a href=&quot;http://stevenormrod.com/2013/06/remote-trace-slowing-down-server/&quot; target=&quot;_blank&quot;&gt;stevenormrod.com/2013/06/remote-trace-slowing-down-server/&lt;/a&gt;&lt;/p&gt;</description>
			<content:encoded><![CDATA[<h2>Leistungseinbußen beim Tracing, Extended Event Ziele gegen SQL Trace unter CPU Last</h2>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">(DE)</p>
<p class="day">Inspiriert durch den Blog Post Post “<a href="http://www.sqlperformance.com/2012/10/sql-trace/observer-overhead-trace-extended-events" target="_blank">Measuring Observer Overhead of SQL Trace vs. Extended Events</a>” von Jonathan Kehayias, war ich neugierig, ein paar weitere Benchmarks durchzuführen. Die Resultate habe ich bereits in meinen <a href="http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm">SQL Server Master-Class</a> Workshops zu XEvents und auf der PreCon des <a href="http://sqlsaturday.com/230/" target="_blank">SQLSaturday #230</a> präsentiert. Nun teile ich sie endlich hier.</p>
<p class="day">Vor allem folgende Aspekte interessierten mich:</p>
<ul>
<li>Was ist der Performance-overhead einer <strong>Extended Event Session selber</strong> – ohne die Verarbeitung und des Dispatchens zu den Targets</li>
<li>Wie verhält sich das im Vergleich zu <strong>SQL Trace</strong> – auch das <strong>ohne Overhead für ein Ziel</strong> (Keine Datei, kein Profiler: gar kein Konsument)</li>
</ul>
<p class="day">Da ich einmal das Setup bereit hatte, habe ich mich entschieden, <strong>alle anderen Ziele</strong> ebenfalls aufzunehmen, sowie einige <strong>grundlegende Options-Variationen</strong>, um einen kompletten Überblick zu erhalten, der in sich vergleichbar ist.</p>
</td>
<td valign="top" width="334">
<p class="day">(EN)</p>
<p class="day">Inspired by the Blog Post “<a href="http://www.sqlperformance.com/2012/10/sql-trace/observer-overhead-trace-extended-events" target="_blank">Measuring Observer Overhead of SQL Trace vs. Extended Events</a>” by Jonathan Kehayias, I was curious to do some more benchmarking.<br /> I have already presented the results in my <a href="http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm">SQL Server Master-Class</a> workshops on XEvents as well as at the PreCon of the <a href="http://sqlsaturday.com/230/" target="_blank">SQLSaturday #230</a>. Now I am finally sharing them with you here.</p>
<p class="day">I was interested in the following aspects, in particular:</p>
<ul>
<li>What is the Performance-overhead of an <strong>Extended Event Session itself</strong> – not including the processing/dispatching for the target</li>
<li>How does this compare to the old-school <strong>SQL Trace</strong> – again with <strong>no Target overhead</strong> (No File, no Profiler: no consumer at all)</li>
</ul>
<p class="day">Besides that, once I had the setup ready, I decided to include <strong>all the other targets</strong> and some <strong>basic option-variations</strong>, to have a complete overview that is comparable in itself.</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p class="day">Ich entschied mich für <strong>ein System, das bereits unter CPU Druck steht</strong> – <strong>die CPU Verwendung liegt fast vollständig bei 100%.</strong><br /> Unter diesen Umständen hoffte ich die <strong>maximalen Auswirkungen von Extended Events („Erweiterte Ereignisse“) als auch SQL Trace</strong> (Zur Erinnerung: SQL Profiler basiert auf SQL Trace) zu erhalten. Man könnte meinen, dass eine E/A(I/O)-lastige Arbeitslast noch mehr beeinflusst werden würde, aber das hängt an den Targets für Extended Events. – 4 davon gehen lediglich in den Arbeitsspeicher, gegenüber einem File-Target (welches man ohnehin auf ein Nicht-Daten-Volume legen sollte). Und da ich auch den reinen Overhead der Trace-Technologien (ohne Ziel) messen möchte, macht das noch mehr Sinn. Abgesehen davon kann I/O in der Regel meist recht einfach getuned werden, indem man auf ein ansonsten unverwendetes und schnelles Device schreibt, wohingegen es für CPU nicht so einfach ist, die Kosten unsichtbar zu halten. Das im Hinterkopf zu behalten hilft, die Resultate, die hier präsentiert werden zu evaluieren und sie in den rechten Kontext zu rücken.</p>
</td>
<td valign="top" width="334">
<p class="day">I also decided for a test of <strong>a system that’s already under CPU pressure</strong> - so <strong>the Processor Usage is almost constantly hitting 100%</strong>.<br /> Under these circumstances I was hoping to get the<strong> maximum impact of Extended Events as well as SQL Trace</strong>. (Remember: SQL Profiler is based on SQL Trace) One could think that an I/O driven workload would be even more influenced, but that depends on the targets of Extended Events. - 4 of which only go to memory, vs. one file target (which one should put onto a non-data volume anyways). And since I also want to measure the pure overhead of the tracing technologies (without any target), this makes even more sense.<br /> Besides that, I/O usually can be tuned quite easily by writing to an otherwise idle and fast device, whereas for CPU it is not as simple to keep the costs invisible. Keeping this in mind helps to evaluate the results presented here and bringing them into the right context.</p>
</td>
</tr>
</tbody>
</table>
<p class="day"> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"><strong>Test Umgebung</strong></p>
<p class="day">“Einfach aber physikalisch”</p>
<p class="day">1 Windows 2008 R2 Server mit SQL Server 2012 SP1. Keine laufenden Dienste abseits des minimal Notwendigem, um Seiten-Effekte zu verhindern.<br /> Ich habe auch die Default-Trace sowie die system_health_session gestoppt.<br /> Der Distributed Replay-Client wurde für alle Test local ausgeführt, und Ja, das hat Effekt auf den Server, aber das war gleich für alle Tests. Alle Tests wurden 3 Mal wiederholt (einige sogar öfter), um sicherzustellen, dass der Durchschnitt/Median valide ist.<br /> Der Server, wie gesagt, war physikalisch (das kommt praktisch, wenn man Benchmarks mit einer Gesamtzeit von ~50 Stunden durchführt.): 1 Dual Core Intel Xeon mit 8 GB RAM (was bei Weitem genug war), Daten Volumen und Volumen für Trace-Targets auf separate Controllers.</p>
<p class="day">Die Arbeitslast war ein Mix von meist kurzen (Sub-Sekunden) aber auch einigen Abfragen mit mehreren Sekunden Laufzeit, (Ad Hoc und gespeicherte Prozeduren), um eine einigermaßen realistische Decision-Support-System Last zu simulieren – jedoch ohne Datenänderungen.<br /> Die Baseline Workload dauerte 00:24:24 Minuten. Die Statistiken blieben für alle Workload-Zyklen identisch. Die verwendete Datenbank war AdventureWorks2012.</p>
</td>
<td valign="top" width="334">
<p class="day"><strong>Test Environment</strong></p>
<p class="day">“Simple but physical”</p>
<p class="day">1 Windows 2008 R2 Server with SQL Server 2012 SP1. No running services above the minimum required, to avoid side-effects.<br /> I also shut down the default trace as well as the system_health_session.<br /> The Distributed Replay-client was run locally for all tests, so yes, this has effect on the server, but it was equally for all tests. All tests have been repeated 3 times (some even more) to make sure the average/median is valid.<br /> The server, as I already said, was physical (which comes in handy when you are running benchmarks for a total of ~50 hours): 1 Dual Core Intel Xeon with 8 GB of RAM (which was by far enough), Data Volumes and Volumes for Trace-Targets on separate Controllers.</p>
<p class="day">The workload was a mixture of mostly short (sub-second) but also several queries of several second runtime, (Ad Hoc and stored procedures) to simulate a somehow realistic decision-support-systems’ load – no data changes though.<br /> The baseline workload took 00:24:24 minutes. The statistics stayed the same for all workloads cycles. The database used was AdventureWorks2012.</p>
</td>
</tr>
</tbody>
</table>
<p class="day"> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"><strong>Trace-Konfigurationen</strong></p>
<p class="day">Ich habe mich für eine einfache, aber nicht unübliche Trace entschieden, die typischerweise viele Daten sammelt.<br /> Die Trace sammelt nur 2 Ereignisse:</p>
</td>
<td valign="top" width="334">
<p class="day"><strong>Trace-Configurations</strong></p>
<p class="day">I decided for a simple but not uncommon trace that typically collects a lot of data. The trace collects only 2 events:</p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Lock acquired</li>
<li>Lock released</li>
</ul>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Ausgefiltert: System-Sitzungen und andere Datenbanken als die, die hier unter Last steht.</p>
<p class="day">Gesammelte Daten:</p>
</td>
<td valign="top" width="334">
<p class="day">Filtered out: System-sessions and other databases than the one under load here.</p>
<p class="day">CollectedData:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<ul>
<li>Lock:Released   BinaryData</li>
<li>Lock:Released   DatabaseID</li>
<li>Lock:Released   TransactionID</li>
<li>Lock:Released   SPID</li>
<li>Lock:Released   ObjectID</li>
<li>Lock:Released   Mode</li>
<li>Lock:Released   BigintData1</li>
<li>Lock:Released   IntegerData2</li>
<li>Lock:Released   ObjectID2</li>
<li>Lock:Released   Type</li>
<li>Lock:Released   OwnerID</li>
<li>Lock:Released   IsSystem</li>
</ul>
<ul>
<li>Lock:Acquired   BinaryData</li>
<li>Lock:Acquired   DatabaseID</li>
<li>Lock:Acquired   TransactionID</li>
<li>Lock:Acquired   SPID</li>
<li>Lock:Acquired   Duration</li>
<li>Lock:Acquired   ObjectID</li>
<li>Lock:Acquired   IsSystem</li>
<li>Lock:Acquired   Mode</li>
<li>Lock:Acquired   BigintData1</li>
<li>Lock:Acquired   IntegerData2</li>
<li>Lock:Acquired   ObjectID2</li>
<li>Lock:Acquired   Type</li>
<li>Lock:Acquired   OwnerID</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Das gab mir den Vorteil, einen validen Test für alle Extended Event Targets, die bereitgestellt werden, zu haben (lediglich ETW-Tracing wurde ausgelassen) - speziell das Histogramm und die „Ereignispaarbildung“ (Pair-Matching)(Die wenigen Ereignisse von Lock-Escalation störten mich bewusst nicht).</p>
<p class="day">Die folgenden <strong>Trace Technologien und -Ziele</strong> wurden verwendet:</p>
</td>
<td valign="top" width="334">
<p class="day">This gave me the advantage to have a valid test for all Extended Event Targets that are provided (only ETW-Tracing was left out) - specifically histogram and Pair Matching (I did not care about the few occasions of lock escalation on purpose).</p>
<p class="day">The following <strong>Trace technologies and -Targets</strong> were used:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<ul>
<li>XEvent Trace, Target: None</li>
<li>XEvent Trace, Target: Ring Buffer</li>
<li>XEvent Trace, Target: File</li>
<li>XEvent Trace, Target: Counter</li>
<li>XEvent Trace, Target: Histogram
<ul>
<li>Here I chose to filter on lock acquired and to bucketize on the lock mode</li>
</ul>
</li>
<li>XEvent Trace, Target: Pair Matching
<ul>
<li>Guess, what I matched here ;-)</li>
</ul>
</li>
<li>SQL Trace, Target: None (I had to trick a little bit to get this to work, but I made sure, the behavior of this unsupported configuration did not distort the results: It’s just a SQL Trace with no Provider processing, so all events are lost by nature.)</li>
<li>SQL Trace, Target: File</li>
<li>SQL Profiler, remotely</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Für jedes Ziel der Extended Events habe ich <strong>4 Varianten</strong> getestet, basierend auf den Sitzungsoptionen:</p>
</td>
<td valign="top" width="334">
<p class="day">For each Extended Event Target I tested <strong>4 variations</strong>, based on the session options:</p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Single event loss</li>
<li>No event loss</li>
<li>Multiple event loss</li>
<li>Single event loss with causality tracking on</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Alle anderen Optionen verwendeten die Standardwerte für diese Tests.</p>
</td>
<td valign="top" width="334">
<p class="day">All other options were using the defaults for these tests.</p>
</td>
</tr>
</tbody>
</table>
<p> <img src="http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_sessions.png" alt="XEvent_PerfComparison_sessions" width="218" height="526" /></p>
<p>Picture: the 24 prepared traces</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"><strong>Die Ergebnisse</strong></p>
<p class="day">Ich habe die Gesamtlaufzeit für die Workload sowie Batches pro Sekunde und CPU Zeit % gemessen.</p>
<p class="day">Und hier ist die vollständige Tabelle mit den Ergebnissen:</p>
</td>
<td valign="top" width="334">
<p class="day"><strong>The Results</strong></p>
<p class="day">I measured the total time for the workload to take as well as batches per second and CPU time %.</p>
<p class="day">And here is the complete Table of Results:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> <img src="http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_Runtime_Avg_EvSec.png" alt="XEvent_PerfComparison_Runtime_Avg_EvSec" width="600" height="525" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"><strong>EL</strong> = Ereignisverlust. <strong>S</strong> = Verlust einzelner Ereignisse, <strong>N</strong> = Kein Ereignisverlust, <strong>M</strong> = Verlust mehrerer Ereignisse</p>
<p class="day"><strong>CT</strong> = Kausalitätsverfolgung (Causality Tracking) Ein</p>
</td>
<td valign="top" width="334">
<p class="day"><strong>EL</strong> = Event Loss. <strong>S</strong> = Single event loss, <strong>N</strong> = No event loss, <strong>M</strong> = Multiple event loss</p>
<p class="day"><strong>CT</strong> = Causality Tracking On</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Um Zeit und Platz zu sparen, <strong>konzentriere ich mich </strong><strong>auf</strong> die Benchmarks mit den Optionen <strong><em>single event loss</em> und <em>no event loss</em> ohne <em>Causality Tracking</em></strong>. Tatsächlich waren <strong>die Kosten von Causality Tracking weniger als 1% für alle Ziele</strong>.</p>
<p class="day">Hier ist daher das <strong>komprimierte Ergebnis</strong>:</p>
</td>
<td valign="top" width="334">
<p class="day">For the sake of saving space and time, <strong>I will focus on</strong> the benchmarks with the options <strong><em>single event loss</em> and <em>no event loss </em>without <em>causality tracking</em></strong>. In fact, <strong>the cost of causality tracking was less than 1% for all targets</strong>.</p>
<p class="day">So this is the more <strong>condensed result</strong>:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> <img src="http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_Runtime_S_N_Avg_EvSec.png" alt="XEvent_PerfComparison_Runtime_S_N_Avg_EvSec" width="600" height="308" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Was wir demnach sagen können, ist:<br /> (Erinnern wir uns daran: alles läuft unter Hoher CPU Last. Das ist die Grundlage aller Ergebnisse.)</p>
</td>
<td valign="top" width="334">
<p class="day">What we can tell from that, is:<br /> (Remember: Everything is running under High CPU Load, so that’s the base of all results.)</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<ul>
<li>Eine <strong>blanke XEvent Session </strong>alleine, ohne Targets, hat bereits einen spürbaren Einfluss von ~15 % Leistungsverlust.</li>
<li>Der Aufschlag („Overhead“) der künstlich erzeugten (nicht unterstützten) Version einer <strong>blanken SQL Trace</strong>, ohne den Aufschlag eines Rowset oder File Providers („Target“), ist nicht allzu weit von dem einer Extended Events Session ohne dem Dispatchen zu einem Target entfernt (~19% gegen ~15%).</li>
<li>Der <strong>Ringpuffer (Ring Buffer)</strong> ist das XE-Target mit dem größten Overhead (~40%). (!)</li>
<li>Das <strong>Ereignisdateiziel (“File-Target”)</strong> hat, wie erwartet, wirklich den geringsten Overhead, aber dieser beläuft sich immer noch auf 25%.</li>
<li>Die Unterschiede zwischen <strong>den Targets Ereigniszähler („Counter“), Histogramm und Ereignispaarbildung („Pair Matching“) </strong>sind irrelevant.</li>
<ul>
<li>Ja, sogar der simple <strong>Counter</strong> hat einen höheren Overhead als das File Target.</li>
<li>Das <strong>File Target mit <em>No Event Loss</em> </strong>zu konfigurieren, fügt fast den vierfachen Overhead hinzu.</li>
<li>Die Unterschiede für die anderen Targets zwischen <strong><em>single</em>, <em>multiple</em> und sogar <em>no event loss</em></strong> ist in diesem Szenario fast negierbar.</li>
<li>Verglichen mit Extended Events ist der Overhead durch eine <strong>SQL Trace</strong> fast schon “brutal”: Er vervierfacht die Gesamtlaufzeit.</li>
<li>Und noch mehr: Tracing mit dem <strong>SQL Profiler</strong> ist in solch einem Szenario schlicht ein Ding der Unmöglichkeit: Ich habe 21 Stunden eingetragen, aber das ist tatsächlich eine <span style="text-decoration: underline;">Schätzung</span>: Ich beendete diese Test-Zyklen nach rund 3 Stunden (man möge mir verzeihen, aber es ist schlicht Zeitverschwendung...), zählte die beendeten Events und rechnete aus, wie lange es noch gedauert hätte, grob – aber tatsächlich eher optimistisch. Profiler ist, wie ich es immer sage, ein “No-Go” um für längere Zeiträume zu tracen, vor allem, wenn die Performance ohnehin bereits leidet.</li>
</ul>
</ul>
</td>
<td valign="top" width="334"> 
<ul>
<li>A <strong>plain XEvent Session </strong>itself, with no Targets, already does have a noticeable impact of ~15 % performance decrease.</li>
<li>The overhead of the artificial (not supported) version <strong>plain SQL Trace</strong>, without the overhead of a rowset or file provider (aka target), is not too far off the Extended Events Session without the dispatching to any target (~19% versus ~15%).</li>
<li>The <strong>Ring Buffer</strong> is the XE-Target with the greatest overhead (~40%). (!)</li>
<li>The <strong>File-Target</strong> really does have the lowest overhead as expected, but it’s still 25%.</li>
<li>The differences between <strong>the Targets Counter, Histogram and Pair Matching </strong>are irrelevant.
<ul>
<li>Yes, even the simple <strong>Counter</strong> has a higher overhead than the File Target.</li>
<li>Configuring the<strong> file target with <em>no event loss</em> </strong>adds approximately 4 times as much performance overhead.</li>
<li>The difference for the other targets between <strong><em>single</em>, <em>multiple</em> and even <em>no event loss</em></strong> is mostly negligible in this scenario.</li>
<li>Compared to Extended Events, the overhead through <strong>SQL Trace</strong> is almost “brutal”: It quadruplicated the total runtime.</li>
<li>And there's even more: Tracing with <strong>SQL Profiler</strong> is absolutely impossible for such a scenario: I filled in 21 hours, but that’s actually an <span style="text-decoration: underline;">estimate</span>: I stopped those test cycles after around 3 hours (forgive me, but it’s just a waste of time...), counted the finished events and calculated how much else it would have taken, roughly – in an actually rather optimistic manner. Profiler, as I always say, is a “no go” for tracing longer periods of time, especially if performance is already at stake.</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p class="day">Ein schönes Bild der <strong>SQL Trace Architektur</strong> findet sich in den BOL: <a href="http://msdn.microsoft.com/en-us/library/hh245121.aspx" target="_blank">msdn.microsoft.com/en-us/library/hh245121.aspx</a> <br /> Die <strong>Extended Events Architektur</strong> wird hier bildlich gezeigt: <a href="http://msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx" target="_blank">msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx</a></p>
</td>
<td valign="top" width="334">
<p class="day">You have a nice picture of the <strong>SQL Trace Architecture</strong> in BOL: <a href="http://msdn.microsoft.com/en-us/library/hh245121.aspx" target="_blank">msdn.microsoft.com/en-us/library/hh245121.aspx</a> <br /> The <strong>Extended Events Architecture</strong> is depicted here: <a href="http://msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx" target="_blank">msdn.microsoft.com/en-us/library/bb630318%28v=sql.105%29.aspx</a></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"><strong>Hinzufügen von Filtern</strong></p>
<p class="day">Wie ändert das Hinzufügen von Filtern den Beobachter-Overhead?</p>
<p class="day">Es ist wichtig, zu wissen, was ich als Filter verwendet habe: Die database_id / source_database_id. <br /> - Tatsächlich habe ich einen Filter verwendet, der niemals “true” zurückgeben würde, indem ich einen Filter auf database_id = 77 angelegt habe – da keine Sitzung/Abfrage/Sperre je auf dieser nicht-existenten Datenbank lag.<br /> Warum habe ich das gemacht? – Das ist ein rein künstlicher Test/Benchmark. Was mich interessiert, ist der reine Overhead des Tracen, und nicht, was passiert, wenn ein bestimmter Prozentsatz der Aktivität nicht protokolliert wird. (Das könnte vielleicht etwas für einen anderen Benchmark sein. :-))</p>
</td>
<td valign="top" width="334">
<p class="day"><strong>Adding Filters</strong></p>
<p class="day">How does adding filters change the observer overhead?</p>
<p class="day">Now it is important to note what I actually used as a filter: The database_id / source_database_id.<br /> - I essentially added a filter that would never return “true” by adding a filter on database_id = 77 – since no session/query/lock was on this non-existing database.<br /> Why did I do that? – This is a totally artificial test/benchmark. I am interested what the pure overhead of tracing is, and not what happens if a certain percentage of activity is not logged. (That might be something for a different benchmark. :-))</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p class="day">Dieses Mal konzentriere ich mich nur auf „single“ und „no event loss“.</p>
<p class="day"><strong>Die Resultate des gefilterten Tracing, ohne tatsächlich irgendwelche Events zu speichern/protokollieren</strong>, ist wie folgt:</p>
</td>
<td valign="top" width="334">
<p class="day">This time I only focused on “single” and “no event loss”.</p>
<p class="day"><strong>The results of Filtered Tracing, without actually storing/logging any events</strong> is as follows:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> <img src="http://www.sarpedonqualitylab.com/sql-images/sql-articles/1308_XEvent_PerfComparison_Runtime_Filtered_Avg.png" alt="XEvent_PerfComparison_Runtime_Filtered_Avg" width="300" height="264" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<ul>
<li>Wie man sehen kann, fällt der Overhead der reinen <strong>XEvent Session ohne Target </strong>von ~ 15% auf 9% bzw. ~ 16,5% gg. 12,5 % (No Event loss)</li>
<li>Die anderen Targets zeigen in diesem Setup tatsächlich die größten Unterschiede:
<ul>
<li>Das <strong>Counter Target mit single event loss</strong> profitiert am Meisten von dem Filter und fällt von ~33,5 auf 8,4 % Overhead.</li>
<li>Nur <strong>Ring Buffer und Pair Matching</strong> zeigen keinen Unterschied zwischen <em>single</em> und <em>no event loss</em>.</li>
<li><strong>SQL Trace </strong>mit und ohne rowset Provider (Datei) als Target haben fast den gleichen Overhead – keine Überraschung, wenn man die Architektur kennt. Das ist tatsächlich ein weiterer risen Unterschied, der für Extended Events spricht, wo Filters viel früher in der Trace berücksichtigt werden.</li>
<li>Das der Overhead von <strong>SQL Trace ohne Target und zugleich aller Events herausgefiltert</strong> <strong>sogar höher</strong> ist, als der Overhead ohne Target aber auch ohne Filter (von dem vorhergehenden Test-Zyklus), muss an dem Verarbeiten des Ausfilterns selber liegen. Ich werde mich damit aber nicht weiter befassen, da das Setup weder dokumentiert noch unterstützt ist.<br /> Und in meinen Augen ist “SQL Trace“ sowieso „tot“ ;-) – Okay, ich übertreibe hier ein wenig, aber ich bin auch ganz offen: Für SQL Server 2012 gibt es fast keinen Grund mehr zu dessen Verwendung. – Benchmarks mithilfe von Distributed Replay durchzuführen, ist so ein Grund – ist das nicht ironisch?</li>
</ul>
</li>
</ul>
<p class="day">Für diesen Test habe ich SQL Profiler nicht ausgeführt, Pardon. Sie wissen bis hierhin wahrscheinlich schon, warum. ;-)</p>
</td>
<td valign="top" width="334">
<ul>
<li>As one can see, the overhead of the pure <strong>XEvent session without target</strong> drops from ~ 15% to 9% respectively ~ 16.5% vs. 12.5 % (no Event loss)</li>
<li>The other targets do in fact show more differences in this setup:</li>
<ul>
<li>The <strong>Counter Target with single event loss</strong> benefits most of the filter and drops from ~33.5 to 8.4 % overhead.</li>
<li>Only <strong>Ring Buffer and Pair Matching</strong> show no difference between <em>single</em> and <em>no event loss.</em></li>
<li><strong>SQL Trace </strong>with and without rowset provider (file) as target have almost the same overhead – no surprise if you know the architecture. This is in fact another huge difference which counts for Extended Events, where filters get honored much sooner within the Trace.</li>
<li>That the overhead of <strong>SQL Trace without target and at the same time all events being filtered out</strong> <strong>is actually higher</strong> than the overhead without target but no filtering (from the former test cycle) must be caused by the processing of for filtering out. I will not dive more into this though, since this setup is not documented and or supported.<br /> And in my eyes, “SQL trace is dead” anyways ;-) – okay, I am exaggerating a bit here, but I am also just being frank: For SQL Server 2012 there is almost no need to use it any more. – Running benchmarks using Distributed Replay is such a reason – isn’t that ironic?</li>
</ul>
</ul>
<p>I did not run SQL Profiler for this Test, forgive me. You probably know why by now. ;-)</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"><strong>Wait-Types für Extended Events</strong></p>
<p class="day">Ein weiterer Aspekt, der mich interessierte, waren die XEvent Wait-Typen, die auftreten würden, wenn man Extended Event Sessions ausführt. (Die Warte-Statistiken sind oft die Basis für Performance-Analysen)</p>
<p class="day">Allgemein sieht man folgende:</p>
</td>
<td valign="top" width="334">
<p class="day"><strong>Wait-Types for Extended Events</strong></p>
<p class="day">Another aspect I was interested in were the specific XEvent wait-types which would occur when running Extended Event sessions.<br /> (Wait-Statistics are often the base for performance analysis)</p>
<p class="day">In general, you will see the following:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Beim <strong>Starten</strong> einer Sitzung:</p>
</td>
<td valign="top" width="334">
<p class="day">When <strong>starting</strong> a session:</p>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;">PREEMPTIVE_XE_TARGETINIT<br />PREEMPTIVE_XE_CALLBACKEXECUTE<br />PREEMPTIVE_XE_SESSIONCOMMIT</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Beim <strong>Beenden</strong> einer Sitzung:</p>
</td>
<td valign="top" width="334">
<p class="day">When <strong>stopping</strong> a session:</p>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;">PREEMPTIVE_XE_SESSIONCOMMIT<br />XE_BUFFERMGR_ALLPROCESSED_EVENT<br />PREEMPTIVE_XE_CALLBACKEXECUTE</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day"> <strong>Während</strong> Sessions aktiv sind, sieht man:</p>
</td>
<td valign="top" width="334">
<p class="day">While <strong>running</strong> sessions you will see:</p>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;">XE_DISPATCHER_WAIT  - From BOL: Occurs when a background thread that is used for Extended Events sessions is waiting for event buffers to process. - You should be able to safely ignore this unless you believe a problem is occurring with processing of events for async targets. Since this works on a queue you can have bursts of high wait times especially when no XEvent sessions are active.</p>
<p style="padding-left: 30px;">XE_TIMER_EVENT – From BOL: Used to indicate a background task is waiting for "expired" timers for internal Xevent engine work. - You should be able to safely ignore this one. Just used by the Xevent engine for internal processing of its work. If something was possibly wrong with Xevent processing you might see if this thread ever "wakes up"</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Beim <strong>Starten</strong> eines <strong>File-Targets</strong> sieht man außerdem:</p>
</td>
<td valign="top" width="334">
<p class="day">When <strong>starting</strong> the <strong>File target</strong> you will also see:</p>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;">PREEMPTIVE_XE_TARGETINIT</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">Wenn man eine Sitzung mit der <strong><em>No Event Loss</em></strong> Option ausführt, sieht man gegebenenfalls:</p>
</td>
<td valign="top" width="334">
<p class="day">If you run a session with the <strong><em>no event loss</em></strong> option you might see</p>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;">XE_BUFFERMGR_FREEBUF_EVENT - which by BOL means: An Extended Events session is configured for no event loss, and all buffers in the session are currently full. This can indicate that the buffers for an Extended Events session are too small, or should be partitioned.</p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p class="day">So. Ich hoffe das war interessant. Man kann noch weitere und andere Schlüsse aus den Ergebnissen ziehen. Immer im Hinterkopf zu behalten, ist, dass das ein sehr spezielles Szenario ist, wo keine CPU Reserven zur Verfügung stehen, so das der Trace/Beobachter-Overhead sich manifestieren muss – keine Chance, als eben (CPU) Ressourcen wegzunehmen.</p>
</td>
<td valign="top" width="334">
<p class="day">So, I hope this was interesting for you. You may draw more and other conclusions out of these results. Remember though: this is a very specific scenario with no CPU reserves, so the Tracing/observer overhead has to show up – no choice but to take away (CPU) resources.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Happy Tracing</p>
<p> </p>
<p>Andreas</p>
<p class="day">PS: I just discovered that my MCM and SQLSkills-class buddy Steven Ormrod also has recently blogged about the performance overhead from a SQL Trace to remote file share on production here: <a href="http://stevenormrod.com/2013/06/remote-trace-slowing-down-server/" target="_blank">stevenormrod.com/2013/06/remote-trace-slowing-down-server/</a></p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2013/08/performance-overhead-tracing-extended-events-sql-trace-under-cpu-load#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3570</wfw:commentRss>
		</item>
				<item>
			<title>Survey: Which Tracing and Analysis-Tools do you use for SQL Server?</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2013/06/poll-sql-server-tracing-and-analysis-tools-used</link>
			<pubDate>Thu, 20 Jun 2013 22:20:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="alt">SQLPASS</category>
<category domain="main">Tracing &amp; Monitoring</category>
<category domain="alt">Extended Events</category>
<category domain="alt">SQL Trace &amp; Profiler</category>
<category domain="alt">Surveys / Umfragen</category>			<guid isPermaLink="false">3515@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt; &lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Umfrage: Welche Tracing und Analyse-Tools verwendet ihr für SQL Server?&lt;/span&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;(DE)&lt;br /&gt;In meiner Session „Hasta la vista Profiler – Tracing with Extended Events“, die ich nun seit über einem Jahr bei diversen Gelegenheiten gehalten habe, habe ich die Zuhörer meist gefragt, welche Monitoring-Tools sie bisher verwendeten.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Ich möchte diese Stelle einmal nutzen, um einmal breit zu erheben, welche Werkzeuge von SQL Server Professionals zur Protokollierung und Analyse von &lt;span style=&quot;text-decoration: underline;&quot;&gt;Performance-Problemen&lt;/span&gt; verwendet werden. Um ein differenzierteres Bild zu erhalten, ist auch eine Einordnung in „Administrator“, und „Entwickler“ sicherlich interessant.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Die Ergebnisse werde ich auf dem kommenden &lt;a href=&quot;http://sqlsaturday.com/230/&quot;&gt;SQLSaturday #230&lt;/a&gt; am 12. Juli in St. Augustin auf der PreCon, „&lt;a href=&quot;http://sqlsaturday230.eventbrite.de&quot;&gt;From SQL Traces to Extended Events. The next big switch&lt;/a&gt;.“, die ich zusammen mit Mladen Prajdic gebe, präsentieren, und später mit Sicherheit noch auf dem &lt;a href=&quot;http://www.sqlpasscamp.de/&quot;&gt;PASS Camp&lt;/a&gt; sowie bei weiteren Gelegenheiten der deutschen und auch internationalen PASS - und natürlich hier in meinem Blog selber. Die Antworten können natürlich auch anonym abgegeben werden.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Im Folgenden liste ich eine Reihe von geläufigen Tools auf.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Bitte gebt Eure Stimme einfach als Kommentar wie im folgenden Beispiel ab - ich gebe ALLE Antworten (außer reinem Spam und Werbung) frei, auch Oracle-Tools ;-)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;(EN-US)&lt;br /&gt;In my session Session „Hasta la vista Profiler – Tracing with Extended Events“, that I have been presenting at several occasions, I used to ask the audience, which tools they used for monitoring so far. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;I would like to use this platform to survey on a broader range, which tools are being used by SQL Server professionals for logging and analyzing performance-problems. In order to get a differentiated result, a classification in “Administrator” and “Developer” is certainly also interesting. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;The results will be presented first at the upcoming &lt;a href=&quot;http://sqlsaturday.com/230/&quot;&gt;SQLSaturday #230 &lt;/a&gt;on the 12th of Juli in St. Augustin/Germany at the PreCon, &lt;a href=&quot;http://sqlsaturday230.eventbrite.de&quot;&gt;From SQL Traces to Extended Events. The next big switch&lt;/a&gt;.“, which I will be giving together with Mladen Prajdic gebe, and later on certainly also at the &lt;a href=&quot;http://www.sqlpasscamp.de/&quot;&gt;PASS Camp&lt;/a&gt; and other occasions of the German and international PASS - and of course also here in my blog itself. You can of course also keep your comments anonymously.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;In the following I am listing a series of common tools.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Please simply provide your vote as a comment like in the following example – I will publish ALL answers (except plain spam/ads), even Oracle-Tools ;-)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;„Administrator and/or Developer“&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;A 3&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;B 1&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;D 2&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt; &lt;strong&gt;L 0&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Dabei stehen die Zahlen für // The numbers stand for:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;&lt;strong&gt;3: fast immer // almost all the time&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;2: manchmal // sometimes&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;1: selten // rarely&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;-1: das Tool ist mir unbekannt // I haven&#039;t hear of this tool&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;- Die Auswahl “unbekannt” auf Anregung eines Lesers (Danke!).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Werkzeuge, die nie verwendet werden gerne einfach weglassen.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Und das ist die Auswahl an Tools:&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;The choice “unknown” at a reader’s suggestion (Thank you!).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Tools that are not used can be simply left out.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;And these are the choices of tools:&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;&lt;strong&gt;A) ClearTrace&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;B) Datenbankoptimierungsratgeber // Database Engine Tuning Advisor &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;C) Dynamic Management Views (DMV&#039;s)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;D) Event Notifications&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;E) Extended Events unter 2008/R2&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;F) Extended Events unter 2012&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;G) Management Datawarehouse (MDW) / Data Collection Reports&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;H) PAL&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;I) PerfMon&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;J) RML Utilities / ReadTrace&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;K) SQL Diag&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;L) SQL Profiler&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;M) SQL Trace&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;N) Software von Drittherstellern – siehe auch O) // Third-Party Tools - also see O)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt; &lt;strong&gt;O) Andere // Other: …&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;- Die Reihenfolge ist alphabetisch und soll nichts implizieren :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Meine Liste enthält ausschließlich mit SQL Server gelieferte, sowie codeplex-Tools, es können aber auch andere angegeben werden. (Punkt „O“)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Mir ist natürlich völlig bewusst, das auch die SQL Server Version und ggf. Edition Einfluss auf die zur Verfügung stehende Auswahl hat, aber ich möchte die Umfrage auch nicht zu komplex gestalten. Das Ziel, einen Eindruck über die Verbreitung der Tracing-Gewohnheiten zu erreichen, wird so sicherlich erreicht werden können :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Vielen Dank an dieser Stelle schon einmal für die Beteiligung - ich bin sicher, dass es auch viele andere Community-Mitglieder gern sehen, was andere so für ihre Arbeit einsetzen. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;- The order is alphabetical and not supposed to imply anything :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;My list contains solely tools shipped with SQL Server and from codeplex, but feel free to add others (point “O”)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;I am totally aware that also the SQL Server version and possibly edition have an influence on the choices available, but I also do not want to make the survey all too complex. The aim, to gain an impression on the prevalence and practices of tracing-habits will certainly be reached like that, too :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Thank you very much for participating – I am sure that many members of the SQL Server Community are also interested to see, what others use for their work. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style=&quot;font-family: tahoma,arial,helvetica,sans-serif;&quot;&gt;Andreas&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p> <span style="font-family: tahoma,arial,helvetica,sans-serif;">Umfrage: Welche Tracing und Analyse-Tools verwendet ihr für SQL Server?</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">(DE)<br />In meiner Session „Hasta la vista Profiler – Tracing with Extended Events“, die ich nun seit über einem Jahr bei diversen Gelegenheiten gehalten habe, habe ich die Zuhörer meist gefragt, welche Monitoring-Tools sie bisher verwendeten.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Ich möchte diese Stelle einmal nutzen, um einmal breit zu erheben, welche Werkzeuge von SQL Server Professionals zur Protokollierung und Analyse von <span style="text-decoration: underline;">Performance-Problemen</span> verwendet werden. Um ein differenzierteres Bild zu erhalten, ist auch eine Einordnung in „Administrator“, und „Entwickler“ sicherlich interessant.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Die Ergebnisse werde ich auf dem kommenden <a href="http://sqlsaturday.com/230/">SQLSaturday #230</a> am 12. Juli in St. Augustin auf der PreCon, „<a href="http://sqlsaturday230.eventbrite.de">From SQL Traces to Extended Events. The next big switch</a>.“, die ich zusammen mit Mladen Prajdic gebe, präsentieren, und später mit Sicherheit noch auf dem <a href="http://www.sqlpasscamp.de/">PASS Camp</a> sowie bei weiteren Gelegenheiten der deutschen und auch internationalen PASS - und natürlich hier in meinem Blog selber. Die Antworten können natürlich auch anonym abgegeben werden.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Im Folgenden liste ich eine Reihe von geläufigen Tools auf.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Bitte gebt Eure Stimme einfach als Kommentar wie im folgenden Beispiel ab - ich gebe ALLE Antworten (außer reinem Spam und Werbung) frei, auch Oracle-Tools ;-)</span></p>
</td>
<td valign="top" width="334">
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">(EN-US)<br />In my session Session „Hasta la vista Profiler – Tracing with Extended Events“, that I have been presenting at several occasions, I used to ask the audience, which tools they used for monitoring so far. <br /></span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">I would like to use this platform to survey on a broader range, which tools are being used by SQL Server professionals for logging and analyzing performance-problems. In order to get a differentiated result, a classification in “Administrator” and “Developer” is certainly also interesting. <br /></span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">The results will be presented first at the upcoming <a href="http://sqlsaturday.com/230/">SQLSaturday #230 </a>on the 12th of Juli in St. Augustin/Germany at the PreCon, <a href="http://sqlsaturday230.eventbrite.de">From SQL Traces to Extended Events. The next big switch</a>.“, which I will be giving together with Mladen Prajdic gebe, and later on certainly also at the <a href="http://www.sqlpasscamp.de/">PASS Camp</a> and other occasions of the German and international PASS - and of course also here in my blog itself. You can of course also keep your comments anonymously.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">In the following I am listing a series of common tools.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Please simply provide your vote as a comment like in the following example – I will publish ALL answers (except plain spam/ads), even Oracle-Tools ;-)</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong></strong><strong>„Administrator and/or Developer“</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>A 3</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>B 1</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>D 2</strong><strong><br /> <strong>L 0</strong></strong></span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Dabei stehen die Zahlen für // The numbers stand for:</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>3: fast immer // almost all the time</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>2: manchmal // sometimes</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>1: selten // rarely</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>-1: das Tool ist mir unbekannt // I haven't hear of this tool</strong></span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">- Die Auswahl “unbekannt” auf Anregung eines Lesers (Danke!).</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Werkzeuge, die nie verwendet werden gerne einfach weglassen.</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Und das ist die Auswahl an Tools:</span></p>
</td>
<td valign="top" width="334">
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">The choice “unknown” at a reader’s suggestion (Thank you!).</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Tools that are not used can be simply left out.<br /><br /></span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">And these are the choices of tools:</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;"><strong>A) ClearTrace</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>B) Datenbankoptimierungsratgeber // Database Engine Tuning Advisor </strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>C) Dynamic Management Views (DMV's)</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>D) Event Notifications</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>E) Extended Events unter 2008/R2</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>F) Extended Events unter 2012</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>G) Management Datawarehouse (MDW) / Data Collection Reports</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>H) PAL</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>I) PerfMon</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>J) RML Utilities / ReadTrace</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>K) SQL Diag</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>L) SQL Profiler</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>M) SQL Trace</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>N) Software von Drittherstellern – siehe auch O) // Third-Party Tools - also see O)</strong></span><br /><span style="font-family: tahoma,arial,helvetica,sans-serif;"> <strong>O) Andere // Other: …</strong></span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">- Die Reihenfolge ist alphabetisch und soll nichts implizieren :-)</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Meine Liste enthält ausschließlich mit SQL Server gelieferte, sowie codeplex-Tools, es können aber auch andere angegeben werden. (Punkt „O“)</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Mir ist natürlich völlig bewusst, das auch die SQL Server Version und ggf. Edition Einfluss auf die zur Verfügung stehende Auswahl hat, aber ich möchte die Umfrage auch nicht zu komplex gestalten. Das Ziel, einen Eindruck über die Verbreitung der Tracing-Gewohnheiten zu erreichen, wird so sicherlich erreicht werden können :-)</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Vielen Dank an dieser Stelle schon einmal für die Beteiligung - ich bin sicher, dass es auch viele andere Community-Mitglieder gern sehen, was andere so für ihre Arbeit einsetzen. <br /></span></p>
</td>
<td valign="top" width="334">
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">- The order is alphabetical and not supposed to imply anything :-)</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">My list contains solely tools shipped with SQL Server and from codeplex, but feel free to add others (point “O”)</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">I am totally aware that also the SQL Server version and possibly edition have an influence on the choices available, but I also do not want to make the survey all too complex. The aim, to gain an impression on the prevalence and practices of tracing-habits will certainly be reached like that, too :-)</span></p>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Thank you very much for participating – I am sure that many members of the SQL Server Community are also interested to see, what others use for their work. <br /></span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: tahoma,arial,helvetica,sans-serif;">Andreas<br /></span></p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2013/06/poll-sql-server-tracing-and-analysis-tools-used#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3515</wfw:commentRss>
		</item>
			</channel>
</rss>
