{"id":14491,"date":"2015-12-16T10:00:00","date_gmt":"2015-12-16T18:00:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2015\/12\/16\/tuning-workload-performance-with-query-store\/"},"modified":"2024-01-22T22:52:26","modified_gmt":"2024-01-23T06:52:26","slug":"tuning-workload-performance-with-query-store","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/","title":{"rendered":"Tuning Workload Performance with Query Store"},"content":{"rendered":"<p>As your database grows, it is not unusual to experience performance problems caused by queries that once performed well, but now perform poorly. Without the ability to see all the changes in the query execution over time, it is difficult to figure out why regressions happen and what you can do to prevent them. Troubleshooting these performance issues can take hours or even days.<\/p>\n<p>That\u2019s exactly what Query Store, a new feature <a href=\"https:\/\/azure.microsoft.com\/en-us\/updates\/general-availability-azure-sql-database-query-store\/?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">available in Azure SQL Database<\/a> and <a href=\"https:\/\/technet.microsoft.com\/evalcenter\/mt130694?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">SQL Server 2016<\/a>, aims to improve.<\/p>\n<p>Similar to an airplane\u2019s flight data recorder, Query Store constantly collects information about all queries and greatly simplifies performance forensics by reducing the time to diagnose and resolve issues. Query Store also allows you to force query plans from the history, which makes the process of fixing problems with plan choice regressions extremely easy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"border-color: currentColor;margin-right: auto;margin-left: auto\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png\" alt=\" \" width=\"500\" height=\"185\" \/><\/p>\n<p>As a result, time to detect and mitigate performance issues is now in the range of minutes.<\/p>\n<h1>Typical usage scenarios<\/h1>\n<p>Query Store can be used in a wide set of scenarios when tracking and ensuring predictable workload performance is critical. It is equally useful when you need to <strong>react<\/strong> to an immediate problem as well as when you want to ensure optimal performance <strong>proactively<\/strong> for the long term (after the database upgrade, for other maintenance operations, or upon new application roll-out, for example).<\/p>\n<p>The following diagram depicts typical usage scenarios from the perspective of proactive\/reactive mode of operation:<\/p>\n<p><img decoding=\"async\" style=\"margin-right: auto;margin-left: auto\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Scenarios.png\" alt=\" \" border=\"0\" \/><\/p>\n<p>Here is a brief scenario description:<\/p>\n<ul>\n<li><strong>Fixing plan regressions:<\/strong> When you have queries whose recent performance is significantly worse because of plan choice changes, you can use Query Store to quickly identify and fix situations with the plan forcing mechanism.<\/li>\n<li><strong>Identifying top resource consuming queries:<\/strong> Learn which queries use the most system resources (CPU, memory, IO) and focus all your efforts on optimizing those.<\/li>\n<li><strong>A\/B testing: <\/strong>Use Query Store to compare workload performance before and after the application or platform change you plan to introduce, and conclude whether impact on performance is acceptable. You can use Query Store in a wider set of performance assessment scenarios such as\n<ul>\n<li>Testing new application versions<\/li>\n<li>Adding new hardware to the server<\/li>\n<li>Changing the database compatibility level<\/li>\n<li>Creating\/modifying indexes<\/li>\n<\/ul>\n<\/li>\n<li><strong>Reducing the risk of upgrade:<\/strong> Use database compatibility level and Query Store to avoid plan changes at point of upgrade and record performance baseline with the current version of the Query Optimizer. Leverage Query Store to quickly fix performance of the regressed queries when you decide to move to the Query Optimizer available on the latest SQL Server version.<\/li>\n<li><strong>Improving ad-hoc workloads:<\/strong> Use Query Store to identify dominant execution patterns in your workload by analyzing query frequency. If the majority of the queries are ad hoc (executed once or very rarely), significant system resources are spent on the compilation, so you may want to optimize resource utilization by forcing parametrization or applying some other techniques.<\/li>\n<\/ul>\n<p>For more details, refer to <a href=\"https:\/\/msdn.microsoft.com\/en-US\/library\/mt614796.aspx?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Query Store Usage Scenarios<\/a> on MSDN.<\/p>\n<h1>Getting started with the Query Store<\/h1>\n<p>Query Store is a database-scoped feature, so you must first enable it for the databases that you want to monitor. You can enable Query Store very easily from the new UI in SQL Server Management Studio (SSMS) or by running a simple Transact-SQL script:<\/p>\n<p><a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Properties.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-color: currentColor;margin-right: auto;margin-left: auto\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Properties.png\" alt=\" \" width=\"500\" height=\"414\" \/><\/a><\/p>\n<p><span style=\"font-family: courier new,courier;background-color: #f5f5f5\">ALTER DATABASE <span style=\"color: #800000\">&lt;database_name&gt;<\/span> SET QUERY_STORE = ON;<\/span><\/p>\n<p>Once you have enabled the Query Store, the next thing to do is to analyze the data and tune \u201cproblematic\u201d queries. It will take some time until Query Store collects the data set that accurately represents your workload. Usually, one day is enough even for very complex workloads, but you should adjust the time based on execution patterns in your application. Even so, you can start exploring the data and identifying the queries that need your attention immediately after enabling the feature.<br \/>\nThe easiest way to analyze the data is by using a set of built-in views available in the latest SQL Server Management Studio. Navigate to the Query Store sub-folder under the database node in Object Explorer of Management Studio to open troubleshooting views for specific scenarios:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<p><b><span style=\"font-family: Calibri\">SSMS view<\/span><\/b><\/p>\n<p>&nbsp;<\/td>\n<td>\n<p><b><span style=\"font-family: Calibri\">Scenario<\/span><\/b><\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p><b><span style=\"font-family: Calibri\">Regressed queries<\/span><\/b><\/p>\n<p>&nbsp;<\/td>\n<td valign=\"top\">\n<p><span style=\"font-family: Calibri\">Pinpoint queries for which execution metrics have recently regressed (i.e. changed to worse). Use this view to correlate observed performance problems in your application with the actual queries that need to be fixed or improved.<\/span><\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p><b><span style=\"font-family: Calibri\">Top resource consuming queries<\/span><\/b><\/p>\n<p>&nbsp;<\/td>\n<td valign=\"top\">\n<p><span style=\"font-family: Calibri\">Choose an execution metric of interest and identify queries that have the most extreme values for a provided time interval. Use this view to focus your attention on the most relevant queries that have the biggest impact to database resource consumption.<\/span><\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p><b><span style=\"font-family: Calibri\">Tracked queries<\/span><\/b><\/p>\n<p>&nbsp;<\/td>\n<td valign=\"top\">\n<p><span style=\"font-family: Calibri\">Track the execution of the most important queries in real-time. Typically, you use this view when you have queries with forced plans and you want to make sure that query performance is stable.<\/span><\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p><b><span style=\"font-family: Calibri\">Overall resource consumption<\/span><\/b><\/p>\n<p>&nbsp;<\/td>\n<td valign=\"top\">\n<p><span style=\"font-family: Calibri\">Analyze the total resource consumption for the database for any of the execution metrics. Use this view to identify resource patterns (daily vs. nightly workloads) and optimize overall consumption for your database.<\/span><\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For more details, check out <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/mt604821.aspx#Anchor_3?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">How to Start with Performance Troubleshooting<\/a> on MSDN. Please note, you can write your own Transact-SQL scripts for the custom data analysis. Refer to <a href=\"https:\/\/msdn.microsoft.com\/en-US\/library\/mt631173.aspx?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">How Query Store collects the data<\/a> on MSDN to learn about data structures presented by the Query Store and their relations.<\/p>\n<p>The Performance Auditing and Troubleshooting section in <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/dn817826.aspx#Anchor_6?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Key Usage Scenarios<\/a> at MSDN provides more examples on using Query Store views in the custom scripts. The <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/query-store-a-flight-data-recorder-for-your-database\/?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Query Store: A flight data recorder for your database<\/a> article contains additional scripts for troubleshooting.<\/p>\n<p>If you run Query Store on the on-premises instance of SQL Server, you can download <a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=49502?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">AdventureWorks Database for SQL Server 2016 CTP3<\/a> with script samples. Query Store is already enabled on the sample database while <em>SQLServer2016CTP3Samples.zip<\/em> contains examples showcasing how you can query data collected by the Query Store (follow the instructions in the Query Store folder).<\/p>\n<p><strong><a href=\"\/sqlserver\/2015\/12\/01\/get-the-most-out-of-sql-server-2016\/?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">See other posts in the SQL Server 2016 blogging series<\/a>.<\/strong><\/p>\n<h1><a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2016\/03\/DPI-Blog_RC_Button1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-14851\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2016\/03\/DPI-Blog_RC_Button1.png\" alt=\"Try SQL Server 2016 RC\" width=\"300\" height=\"57\" \/><\/a><em>Learn more<\/em><\/h1>\n<ul>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-US\/library\/dn817826.aspx?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Monitoring Performance by Using the Query Store<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-US\/library\/mt614796.aspx?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Query Store Usage Scenarios<\/a><\/li>\n<li><a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/query-store-a-flight-data-recorder-for-your-database\/?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Query Store: A flight data recorder for your database<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/mt604821.aspx?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Best practices with the Query Store<\/a><\/li>\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/mt590480.aspx?wt.mc_id=WW_CE_DM_OO_BLOG_NONE\">Using the Query Store with In-Memory OLTP<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>As your database grows, it is not unusual to experience performance problems caused by queries that once performed well, but now perform poorly. Without the ability to see all the changes in the query execution over time, it is difficult to figure out why regressions happen and what you can do to prevent them.<\/p>\n","protected":false},"author":1457,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[],"product":[],"content-type":[2448],"topic":[],"coauthors":[],"class_list":["post-14491","post","type-post","status-publish","format-standard","hentry","content-type-updates","review-flag-new-1593580247-437"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tuning Workload Performance with Query Store - Microsoft SQL Server Blog<\/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.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tuning Workload Performance with Query Store - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"As your database grows, it is not unusual to experience performance problems caused by queries that once performed well, but now perform poorly. Without the ability to see all the changes in the query execution over time, it is difficult to figure out why regressions happen and what you can do to prevent them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft SQL Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/sqlserver\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-16T18:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T06:52:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png\" \/>\n<meta name=\"author\" content=\"SQL Server Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:site\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"SQL Server Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/\"},\"author\":[{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/author\\\/sql-server-team\\\/\",\"@type\":\"Person\",\"@name\":\"SQL Server Team\"}],\"headline\":\"Tuning Workload Performance with Query Store\",\"datePublished\":\"2015-12-16T18:00:00+00:00\",\"dateModified\":\"2024-01-23T06:52:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/\"},\"wordCount\":1044,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/Query20Store20Architecture.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/\",\"url\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/\",\"name\":\"Tuning Workload Performance with Query Store - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/Query20Store20Architecture.png\",\"datePublished\":\"2015-12-16T18:00:00+00:00\",\"dateModified\":\"2024-01-23T06:52:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/Query20Store20Architecture.png\",\"contentUrl\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/Query20Store20Architecture.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/2015\\\/12\\\/16\\\/tuning-workload-performance-with-query-store\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tuning Workload Performance with Query Store\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/\",\"name\":\"Microsoft SQL Server Blog\",\"description\":\"Official News from Microsoft\u2019s Information Platform\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#organization\",\"name\":\"Microsoft SQL Server Blog\",\"url\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Microsoft-Logo.png\",\"contentUrl\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft SQL Server Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.microsoft.com\\\/en-us\\\/sql-server\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"http:\\\/\\\/www.facebook.com\\\/sqlserver\",\"https:\\\/\\\/x.com\\\/SQLServer\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tuning Workload Performance with Query Store - Microsoft SQL Server Blog","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.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/","og_locale":"en_US","og_type":"article","og_title":"Tuning Workload Performance with Query Store - Microsoft SQL Server Blog","og_description":"As your database grows, it is not unusual to experience performance problems caused by queries that once performed well, but now perform poorly. Without the ability to see all the changes in the query execution over time, it is difficult to figure out why regressions happen and what you can do to prevent them.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2015-12-16T18:00:00+00:00","article_modified_time":"2024-01-23T06:52:26+00:00","og_image":[{"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png","type":"","width":"","height":""}],"author":"SQL Server Team","twitter_card":"summary_large_image","twitter_creator":"@SQLServer","twitter_site":"@SQLServer","twitter_misc":{"Written by":"SQL Server Team","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/","@type":"Person","@name":"SQL Server Team"}],"headline":"Tuning Workload Performance with Query Store","datePublished":"2015-12-16T18:00:00+00:00","dateModified":"2024-01-23T06:52:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/"},"wordCount":1044,"commentCount":3,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/","name":"Tuning Workload Performance with Query Store - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png","datePublished":"2015-12-16T18:00:00+00:00","dateModified":"2024-01-23T06:52:26+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/Query20Store20Architecture.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2015\/12\/16\/tuning-workload-performance-with-query-store\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Tuning Workload Performance with Query Store"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","name":"Microsoft SQL Server Blog","description":"Official News from Microsoft\u2019s Information Platform","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization","name":"Microsoft SQL Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft SQL Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/sqlserver","https:\/\/x.com\/SQLServer","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"msxcm_animated_featured_image":null,"bloginabox_display_generated_audio":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/14491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/users\/1457"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/comments?post=14491"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/14491\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=14491"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=14491"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=14491"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=14491"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=14491"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=14491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}