{"id":2084,"date":"2017-06-02T11:45:01","date_gmt":"2017-06-02T15:45:01","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/jonathan\/?p=2084"},"modified":"2017-06-06T12:47:15","modified_gmt":"2017-06-06T16:47:15","slug":"tracking-compiles-with-extended-events","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/","title":{"rendered":"Tracking Compiles with Extended Events"},"content":{"rendered":"<p>This post comes from a <a href=\"https:\/\/dba.stackexchange.com\/questions\/175073\/do-triggers-compile-each-time\" target=\"_blank\" rel=\"noopener noreferrer\">question by Tara Kizer on DBA StackExchange<\/a> related to Compilations\/Sec in PerfMon and using Extended Events to try and track the compilations that were happening in SQL Server for one of their clients.\u00a0 There are a number of events in Extended Events that relate to plans in SQL Server, and Tara was using the sqlserver.query_pre_execution_showplan event as a way of tracking compiles with Extended Events.\u00a0 When I read the post on StackExchange this stood out to me as not being the correct event for tracking an actual compilation, and I would have selected the query_post_compilation_showplan event instead.\u00a0 These two events have similar descriptions, but they differ by one specific word:<\/p>\n<p><strong>query_pre_execution_showplan<\/strong><\/p>\n<blockquote><p>Occurs after a SQL statement is compiled. This event returns an XML representation of the estimated query plan that is generated when the query is <strong>optimized<\/strong>. Using this event can have a significant performance overhead so it should only be used when troubleshooting or monitoring specific problems for brief periods of time.<\/p><\/blockquote>\n<p><strong>query_post_compilation_showplan<\/strong><\/p>\n<blockquote><p>Occurs after a SQL statement is compiled. This event returns an XML representation of the estimated query plan that is generated when the query is <strong>compiled<\/strong>. Using this event can have a significant performance overhead so it should only be used when troubleshooting or monitoring specific problems for brief periods of time.<\/p><\/blockquote>\n<blockquote><p><strong>NOTE:<\/strong> Both of these event descriptions state <strong>\u201cUsing this event can have a significant performance overhead so it should only be used when troubleshooting or monitoring specific problems for brief periods of time.\u201d<\/strong> There are only a handful of events in Extended Events that include this warning in their description and each can introduce significant performance impacts to production workloads, so using them in live workloads is not something I\u2019d recommend. (<a href=\"https:\/\/sqlperformance.com\/2013\/03\/sql-plan\/showplan-impact\" target=\"_blank\" rel=\"noopener noreferrer\">query_post_execution_showplan impact<\/a> post)<\/p><\/blockquote>\n<p>The events aren&#8217;t exactly the same in description and occur at different times using the repro example from the StackExchange post. Using a much larger event session definition that includes additional events, it is easy to see where compilations actually are happening.\u00a0 The event session definition used for proofing this is:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\nCREATE EVENT SESSION &#x5B;Compiles] ON SERVER\r\nADD EVENT sqlserver.query_post_compilation_showplan(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.query_pre_execution_showplan(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sp_cache_hit(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sp_cache_insert(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sp_cache_miss(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sp_cache_remove(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sp_statement_completed(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sp_statement_starting(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sql_batch_completed(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sql_batch_starting(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sql_statement_completed(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sql_statement_recompile(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.sql_statement_starting(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0))),\r\nADD EVENT sqlserver.uncached_sql_batch_statistics(\r\n    ACTION(sqlserver.client_app_name,sqlserver.sql_text)\r\n    WHERE (&#x5B;sqlserver].&#x5B;is_system]=(0)))\r\nWITH (MAX_MEMORY=4096 KB,\r\n      EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,\r\n      MAX_DISPATCH_LATENCY=30 SECONDS,\r\n      MAX_EVENT_SIZE=0 KB,\r\n      MEMORY_PARTITION_MODE=NONE,\r\n      TRACK_CAUSALITY=ON,\r\n      STARTUP_STATE=OFF)\r\nGO\r\n<\/pre>\n<p>Using part of the repro example from the StackExchange post with slight changes to include clearing the plan cache and also to break the steps down into individual batches and then individual statements we can show how the plans were being used from cache and where compiles actually are occurring.<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\nCREATE TABLE t1 (transaction_id int, Column2 varchar(100));\r\nCREATE TABLE t2 (Column1 varchar(max), Column2 varchar(100));\r\nGO\r\n\r\nCREATE TRIGGER t2_ins\r\nON t2\r\nAFTER INSERT\r\nAS\r\n\r\nINSERT INTO t1\r\nSELECT (SELECT TOP 1 transaction_id FROM sys.dm_tran_active_transactions), Column2\r\nFROM inserted;\r\nGO\r\n\r\nDBCC FREEPROCCACHE\r\nGO\r\n\r\n--Both of these show compilation events\r\nINSERT INTO t2 VALUES ('row1', 'value1');\r\nINSERT INTO t2 VALUES ('row2', 'value2');\r\nGO\r\n\r\n--Both of these show compilation events\r\nINSERT INTO t2 VALUES ('row1', 'value1');\r\nINSERT INTO t2 VALUES ('row2', 'value2');\r\nGO\r\n\r\n--Both of these show compilation events\r\nINSERT INTO t2 VALUES ('row1', 'value1');\r\nGO\r\n\r\nINSERT INTO t2 VALUES ('row2', 'value2');\r\nGO<\/pre>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-large wp-image-2086\" src=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-1024x417.png\" alt=\"\" width=\"1024\" height=\"417\" srcset=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-1024x417.png 1024w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-300x122.png 300w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-768x313.png 768w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-900x367.png 900w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations.png 1353w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Here you can see the first compilation happening for the INSERT statements as prepared plans being auto-parameterized in the green box. The trigger is compiled in the red box and the plan is inserted into the cache as shown by the sp_cache_insert event. Then in the orange box the trigger execution gets a cache hit and reuses the trigger plan for the second INSERT statement in the batch, so it&#8217;s not compiling every execution of the INSERT command and the plan does get reused as you can see with the sp_cache_hit event for the trigger.\u00a0 The uncached_sql_batch_statistics event also fires for the initial batch since it doesn\u2019t have a plan in cache and has to compile.<\/p>\n<p>If we run the two INSERT statements individually again after the first execution the trigger doesn&#8217;t compile again as shown in the events below:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-2087\" src=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations2-1024x464.png\" alt=\"\" width=\"1024\" height=\"464\" srcset=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations2-1024x464.png 1024w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations2-300x136.png 300w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations2-768x348.png 768w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations2-900x408.png 900w, https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations2.png 1211w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Here the first statement encounters a cache hit for the prepared auto-parameterized version of the statement in cache but a miss for the adhoc batch that was submitted. The trigger gets a cache hit and doesn&#8217;t compile again as shown in the red block of events. The green block of events repeats this behavior for the second INSERT statement run as a separate batch. However, in every case you still see the query_pre_execution_showplan event firing which I can only attribute to the difference in being <strong>optimized<\/strong> vs <strong>compiled<\/strong> in the event description, but the trigger isn&#8217;t compiling for every execution as shown by these series of events.\u00a0 The query_post_compilation_showplan event only fires when the plan is actually being compiled for the statements and\/or trigger.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post comes from a question by Tara Kizer on DBA StackExchange related to Compilations\/Sec in PerfMon and using Extended Events to try and track the compilations that were happening in SQL Server for one of their clients.\u00a0 There are a number of events in Extended Events that relate to plans in SQL Server, and [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,27,49,31],"tags":[],"class_list":["post-2084","post","type-post","status-publish","format-standard","hentry","category-extended-events","category-internals","category-performance-tuning","category-plan-cache"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tracking Compiles with Extended Events - Jonathan Kehayias<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tracking Compiles with Extended Events - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"This post comes from a question by Tara Kizer on DBA StackExchange related to Compilations\/Sec in PerfMon and using Extended Events to try and track the compilations that were happening in SQL Server for one of their clients.\u00a0 There are a number of events in Extended Events that relate to plans in SQL Server, and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-02T15:45:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-06-06T16:47:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-1024x417.png\" \/>\n<meta name=\"author\" content=\"Jonathan Kehayias\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kehayias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"Tracking Compiles with Extended Events\",\"datePublished\":\"2017-06-02T15:45:01+00:00\",\"dateModified\":\"2017-06-06T16:47:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/\"},\"wordCount\":1107,\"commentCount\":3,\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Tracking-Compilations-1024x417.png\",\"articleSection\":[\"Extended Events\",\"Internals\",\"Performance Tuning\",\"Plan Cache\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/\",\"name\":\"Tracking Compiles with Extended Events - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Tracking-Compilations-1024x417.png\",\"datePublished\":\"2017-06-02T15:45:01+00:00\",\"dateModified\":\"2017-06-06T16:47:15+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Tracking-Compilations.png\",\"contentUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Tracking-Compilations.png\",\"width\":1353,\"height\":551},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/tracking-compiles-with-extended-events\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extended Events\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/extended-events\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tracking Compiles with Extended Events\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\",\"name\":\"Jonathan Kehayias - The Rambling DBA\",\"description\":\"The Rambling DBA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\",\"name\":\"Jonathan Kehayias\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"caption\":\"Jonathan Kehayias\"},\"sameAs\":[\"http:\\\/\\\/3.209.169.194\\\/blogs\\\/jonathan\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tracking Compiles with Extended Events - Jonathan Kehayias","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/","og_locale":"en_US","og_type":"article","og_title":"Tracking Compiles with Extended Events - Jonathan Kehayias","og_description":"This post comes from a question by Tara Kizer on DBA StackExchange related to Compilations\/Sec in PerfMon and using Extended Events to try and track the compilations that were happening in SQL Server for one of their clients.\u00a0 There are a number of events in Extended Events that relate to plans in SQL Server, and [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/","og_site_name":"Jonathan Kehayias","article_published_time":"2017-06-02T15:45:01+00:00","article_modified_time":"2017-06-06T16:47:15+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-1024x417.png","type":"","width":"","height":""}],"author":"Jonathan Kehayias","twitter_misc":{"Written by":"Jonathan Kehayias","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"Tracking Compiles with Extended Events","datePublished":"2017-06-02T15:45:01+00:00","dateModified":"2017-06-06T16:47:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/"},"wordCount":1107,"commentCount":3,"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-1024x417.png","articleSection":["Extended Events","Internals","Performance Tuning","Plan Cache"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/","name":"Tracking Compiles with Extended Events - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations-1024x417.png","datePublished":"2017-06-02T15:45:01+00:00","dateModified":"2017-06-06T16:47:15+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#primaryimage","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations.png","contentUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2017\/06\/Tracking-Compilations.png","width":1353,"height":551},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/tracking-compiles-with-extended-events\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Extended Events","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/extended-events\/"},{"@type":"ListItem","position":3,"name":"Tracking Compiles with Extended Events"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/","name":"Jonathan Kehayias - The Rambling DBA","description":"The Rambling DBA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c","name":"Jonathan Kehayias","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","caption":"Jonathan Kehayias"},"sameAs":["http:\/\/3.209.169.194\/blogs\/jonathan"]}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/2084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/comments?post=2084"}],"version-history":[{"count":1,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/2084\/revisions"}],"predecessor-version":[{"id":2085,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/2084\/revisions\/2085"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=2084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=2084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=2084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}