{"id":1743,"date":"2013-11-07T09:00:00","date_gmt":"2013-11-07T17:00:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/"},"modified":"2024-01-22T22:49:06","modified_gmt":"2024-01-23T06:49:06","slug":"io-resource-governance-in-sql-server-2014","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/","title":{"rendered":"IO Resource Governance in SQL Server 2014"},"content":{"rendered":"<p><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb933866.aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">Resource Governor<\/a> was introduced in SQL Server 2008 to achieve predictable performance in a multi-tenant environment, to support mixed workload patterns,\u00a0to provide mechanisms and tools to deal with runaway queries, and to enforce resource limits for CPU and memory. It enables customers to implement database consolidation or to configure their own database as a service. Since then, we\u2019ve <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/jj573256?WT.mc_id=Blog_SQL_InMem_SQL2014\">been incrementally enhancing this feature<\/a> in major releases to address the top customer requests in this area. In SQL Server 2014, we are excited to add support for IO resource governance.<\/p>\n<p><strong>What is new?<\/strong><\/p>\n<ul>\n<li>\n<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/hh510189.aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">Resource Pools<\/a> now support configuration of minimum and maximum IOPS per volume in addition to CPU\/Memory settings enabling more comprehensive resource isolation controls. See syntax details for <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb895329(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">Create<\/a> and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb934024(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">Alter<\/a> resource pool with IO support.<\/li>\n<li>Ability to configure the\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb895329(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">maximum outstanding IO<\/a> per volume (at instance scope). This knob is meant to calibrate the resource governor feature for your storage subsystem.<\/li>\n<li>As a note of clarification, by volume we refer to the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/aa365728(v=vs.85).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">disk volume<\/a> as identified by Windows File system APIs<\/li>\n<li>We\u2019ve\u00a0added new columns in the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb934023(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">sys.dm_resource_governor_resource_pools<\/a> and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb934099(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">sys.dm_resource_governor_configuration<\/a> dynamic management views to surface the IO usage and configuration. In addition, we\u2019ve also added a new DMV called <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn358348(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">sys.dm_resource_governor_resource_pool_volumes<\/a> that captures IO usage stats across different volumes used by the instance.<\/li>\n<li>Two new XEvents\u00a0(file_write_enqueued, file_read_enqueued) were added to monitor IO requests to the IO Resource Manager queues. These XEvents follow the conventions of the existing IO related events, such as issuing IO and IO completion<\/li>\n<li>Last but not least, we\u2019ve added relevant performance counters such as Disk Read IO\/sec, Disk Read Bytes\/sec, Avg Disk Read IO (ms), Disk Write IO\/sec, Disk Write Bytes\/sec, Avg Disk Write IO (ms), Disk Read IO Throttled\/sec, Disk Write IO Throttled\/sec to the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/cc645958(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">SQLServer:Resource Pool Stats<\/a>.<\/li>\n<\/ul>\n<p><strong>How to use it?<\/strong><\/p>\n<p>Let\u2019s take the following scenario as an example of how IO Resource Governance can be used to control the resource usage in a SQL Server instance:<\/p>\n<p>Let\u2019s suppose we are a Database hoster or running a Private cloud for database consolidation and we need to host multiple databases from different tenants (or customers) within a single SQL Server instance to achieve better density and COGS. If one of the tenants is running a very IO intensive workload, this can saturate the IO subsystem, causing performance problems to concurrent workloads that need to perform IO.<\/p>\n<p>The first step would be to create a Resource Pool for each tenant\/database and a classifier function that will map the sessions from each tenant to the corresponding Resource Pool. For example, sessions for Customer 1 can be mapped to Resource Pool 1 and sessions for Customer 2 to Resource Pool 2.<\/p>\n<p>If you want to use IO Resource Governance, it is important to set the min or max IOPS setting for every Resource Pool so that the IO requests are redirected to the governance subsystem and minimum reservations can be honored. In the example below, we set the MAX_IOPS_PER_VOLUME to the maximum value for every Pool:<\/p>\n<div>\n<div>\n<pre class=\"scroll\"><code class=\"mysql\"><span style=\"color:#00ff00;\">-- Create 2 resource pools &amp; 2 workload groups.<\/span><br><span style=\"color:#0000ff;\">CREATE RESOURCE POOL<\/span> Customer1Pool;<br><span style=\"color:#0000ff;\">CREATE RESOURCE POOL<\/span> Customer2Pool;<br> GO<br><br><span style=\"color:#0000ff;\">CREATE WORKLOAD GROUP<\/span> Customer1Group <span style=\"color:#0000ff;\">USING<\/span> Customer1Pool;<br><span style=\"color:#0000ff;\">CREATE WORKLOAD GROUP<\/span> Customer2Group <span style=\"color:#0000ff;\">USING<\/span> Customer2Pool;<br><span style=\"color:#0000ff;\">GO<\/span><br><br><span style=\"color:#00ff00;\"> -- Create classifier function<\/span><br><span style=\"color:#0000ff;\">CREATE FUNCTION<\/span> fnUserClassifier()<br><span style=\"color:#0000ff;\">RETURNS SYSNAME<\/span><br><span style=\"color:#0000ff;\">WITH SCHEMABINDING<\/span><br><span style=\"color:#0000ff;\"> AS<\/span><br><span style=\"color:#0000ff;\"> BEGIN<\/span><br><span style=\"color:#0000ff;\"> IF<\/span> <span style=\"color:#ff00ff;\">ORIGINAL_DB_NAME<\/span>() = <span style=\"color:#ff0000;\">'Customer1DB'<\/span><br><span style=\"color:#0000ff;\">BEGIN<\/span><br><span style=\"color:#0000ff;\">RETURN<\/span> <span style=\"color:#ff0000;\">'Customer1Group'<\/span><br><span style=\"color:#0000ff;\">END<\/span><br><br><span style=\"color:#0000ff;\"> IF<\/span> <span style=\"color:#ff00ff;\">ORIGINAL_DB_NAME<\/span>() = <span style=\"color:#ff0000;\">'Customer2DB'<\/span><br><span style=\"color:#0000ff;\">BEGIN<\/span><br><span style=\"color:#0000ff;\"> RETURN<\/span> <span style=\"color:#ff0000;\">'Customer2Group'<\/span><br><span style=\"color:#0000ff;\">END<\/span><br><br><span style=\"color:#0000ff;\"> RETURN<\/span> <span style=\"color:#ff0000;\">'default'<\/span><br><span style=\"color:#0000ff;\"> END;<\/span><br><span style=\"color:#0000ff;\"> GO<\/span><br><br><span style=\"color:#00ff00;\">-- Set the classifier function and enable RG.<\/span><br><span style=\"color:#0000ff;\"> ALTER RESOURCE GOVERNOR WITH<\/span> (CLASSIFIER_FUNCTION = dbo.fnUserClassifier);<br><span style=\"color:#0000ff;\">ALTER RESOURCE GOVERNOR RECONFIGURE;<\/span><br><span style=\"color:#0000ff;\"> GO<\/span><br><br><span style=\"color:#00ff00;\"> -- Set default values for the resource pools so that IO RG is enabled.<\/span><br><span style=\"color:#0000ff;\"> ALTER RESOURCE POOL<\/span> Customer1Pool <span style=\"color:#0000ff;\">WITH<\/span> (MIN_IOPS_PER_VOLUME=0, MAX_IOPS_PER_VOLUME=2147483647);<br><span style=\"color:#0000ff;\">ALTER RESOURCE POOL<\/span> Customer2Pool <span style=\"color:#0000ff;\">WITH<\/span> (MIN_IOPS_PER_VOLUME=0, MAX_IOPS_PER_VOLUME=2147483647);<br><span style=\"color:#0000ff;\">ALTER RESOURCE GOVERNOR RECONFIGURE;<\/span><br><span style=\"color:#0000ff;\"> GO<\/span><br><\/code><\/pre>\n<p>Classifying each workload to a different Resource Pool allows us to configure the resource limits we want to provide for each tenant and also monitor the resource usage generated by their workload. The graph below (Performance Monitor) shows that the workload from Customer 1 is issuing too many IO requests causing a performance drop for Customer 2:<\/p>\n<p>\u00a0<a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png\" original-url=\"http:\/\/blogs.technet.com\/cfs-file.ashx\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54\/4527.Performance-Monitor.png\"><img decoding=\"async\" style=\"display:block;margin-left:auto;margin-right:auto;\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png\" original-url=\"http:\/\/blogs.technet.com\/resized-image.ashx\/__size\/550x0\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54\/4527.Performance-Monitor.png\" alt=\" \" border=\"0\" srcset=\"\"><\/a><\/p>\n<p>In order to protect Customer 2 and guarantee that he gets consistent performance, regardless of the activity from other tenants, we can set the MIN_IOPS_PER_VOLUME setting for the corresponding Resource Pool. From the graph above, it seems that the system can handle around 1300 IOPS, so we decide to reserve 650 IOPS for Customer 2:<\/p>\n<pre class=\"scroll\"><code class=\"mysql\"><span style=\"color:#0000ff;\">ALTER RESOURCE POOL<\/span> Customer2Pool <span style=\"color:#0000ff;\">WITH<\/span> (MIN_IOPS_PER_VOLUME=650);<br><span style=\"color:#0000ff;\">ALTER RESOURCE GOVERNOR RECONFIGURE;<\/span><br><span style=\"color:#0000ff;\"> GO<\/span><\/code><\/pre>\n<\/div>\n<div>\n<p>With this configuration, SQL Server will try to throttle the workloads that are running in other Resource Pools, in order to satisfy the 650 IOPS reservation for Customer 2. In the graph below, we can see that the IOPS of the system are now fairly distributed among the tenants and that the performance for Customer 2 is back to normal despite its noisy neighbor:<\/p>\n<p>\u00a0<a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8880.Performance20of20Customer20220normal.png\" original-url=\"http:\/\/blogs.technet.com\/cfs-file.ashx\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54\/8880.Performance-of-Customer-2-normal.png\"><img decoding=\"async\" style=\"display:block;margin-left:auto;margin-right:auto;\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8880.Performance20of20Customer20220normal.png\" original-url=\"http:\/\/blogs.technet.com\/resized-image.ashx\/__size\/550x0\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54\/8880.Performance-of-Customer-2-normal.png\" alt=\" \" border=\"0\" srcset=\"\"><\/a><\/p>\n<p>The MIN_IOPS_PER_VOLUME setting will make a reservation for the Resource Pool, but it won\u2019t set any limit for the maximum IOPS it can use. This means that the tenants will still get performance variation depending on how active the rest of the tenants on the instance are. To avoid this problem and guarantee predictable performance, we can set the MAX_IOPS_PER_VOLUME setting for each of the tenants. This will set a hard limit for the maximum IOPS the tenant\u2019s workload can use, guaranteeing predicable performance for the tenant, but also protecting the rest of the tenants on the instance:<\/p>\n<pre class=\"scroll\"><code class=\"mysql\"><span style=\"color:#0000ff;\">ALTER RESOURCE POOL<\/span> Customer2Pool <span style=\"color:#0000ff;\">WITH<\/span> (MAX_IOPS_PER_VOLUME=750)<br><span style=\"color:#0000ff;\">ALTER RESOURCE GOVERNOR RECONFIGURE<\/span><br><span style=\"color:#0000ff;\"> GO<\/span><\/code><\/pre>\n<p>By configuring the IO settings on the Resource Pools we can control the resources we want to provide for each tenant. This allows us to guarantee predictable performance regardless of the activity from other tenants or even provide differentiation in SLA for the Database Service based on the amount of the resources customers sign up to reserve.<\/p>\n<p>Another scenario that many of you might find applicable is isolating your OLTP workload from any maintenance operations that need to run in the database. Rebuilding an index, for example, is a common operation that can trigger a large number of IO requests, as it needs to scan the whole index or table. By using IO Resource Governance we can limit the number of IO operations these tasks can perform and guarantee predictable performance for concurrent OLTP workload.<\/p>\n<p>In this case, we need a Resource Pool dedicated for maintenance operations and a classifier function that will map maintenance sessions to the corresponding Resource Pool. Running these operation as a different user might be a good way to distinguish between regular and maintenance sessions. By configuring the MAX_IOPS_PER_VOLUME setting on the \u201cmaintenance\u201d Resource Pool, we can limit the number of IO operations these tasks can perform and protect concurrent OLTP workload from being impacted.<\/p>\n<p>I hope the example scenarios above demonstrate the core value of this feature.<\/p>\n<p><strong>Call to Action<\/strong><\/p>\n<p>Please try this feature right away by <a href=\"http:\/\/www.microsoft.com\/en-us\/sqlserver\/sql-server-2014.aspx?WT.mc_id=Blog_SQL_InMem_SQL2014\">downloading the SQL Server 2014 CTP2<\/a>. Even more easily test it in on the SQL Server 2014 CTP2 images that are now available in <a href=\"https:\/\/www.windowsazure.com\/en-us\/pricing\/free-trial\/?WT.mc_id=Blog_SQL_InMem_SQL2014\">Windows Azure<\/a>. We look forward to hearing your feedback.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Resource Governor was introduced in SQL Server 2008 to achieve predictable performance in a multi-tenant environment, to support mixed workload patterns,\u00a0to provide mechanisms and tools to deal with runaway queries, and to enforce resource limits for CPU and memory. It enables customers to implement database consolidation or to configure their own database as a service.<\/p>\n","protected":false},"author":1457,"featured_media":0,"comment_status":"open","ping_status":"open","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":[2487],"class_list":["post-1743","post","type-post","status-publish","format-standard","hentry","content-type-updates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>IO Resource Governance in SQL Server 2014 - 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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IO Resource Governance in SQL Server 2014 - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"Resource Governor was introduced in SQL Server 2008 to achieve predictable performance in a multi-tenant environment, to support mixed workload patterns,\u00a0to provide mechanisms and tools to deal with runaway queries, and to enforce resource limits for CPU and memory. It enables customers to implement database consolidation or to configure their own database as a service.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\" \/>\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=\"2013-11-07T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T06:49:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.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=\"5 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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/\",\"@type\":\"Person\",\"@name\":\"SQL Server Team\"}],\"headline\":\"IO Resource Governance in SQL Server 2014\",\"datePublished\":\"2013-11-07T17:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\"},\"wordCount\":1081,\"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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\",\"name\":\"IO Resource Governance in SQL Server 2014 - 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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png\",\"datePublished\":\"2013-11-07T17:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IO Resource Governance in SQL Server 2014\"}]},{\"@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":"IO Resource Governance in SQL Server 2014 - 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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/","og_locale":"en_US","og_type":"article","og_title":"IO Resource Governance in SQL Server 2014 - Microsoft SQL Server Blog","og_description":"Resource Governor was introduced in SQL Server 2008 to achieve predictable performance in a multi-tenant environment, to support mixed workload patterns,\u00a0to provide mechanisms and tools to deal with runaway queries, and to enforce resource limits for CPU and memory. It enables customers to implement database consolidation or to configure their own database as a service.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2013-11-07T17:00:00+00:00","article_modified_time":"2024-01-23T06:49:06+00:00","og_image":[{"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.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":"5 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/","@type":"Person","@name":"SQL Server Team"}],"headline":"IO Resource Governance in SQL Server 2014","datePublished":"2013-11-07T17:00:00+00:00","dateModified":"2024-01-23T06:49:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/"},"wordCount":1081,"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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/","name":"IO Resource Governance in SQL Server 2014 - 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\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png","datePublished":"2013-11-07T17:00:00+00:00","dateModified":"2024-01-23T06:49:06+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/4527.Performance20Monitor.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/07\/io-resource-governance-in-sql-server-2014\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"IO Resource Governance in SQL Server 2014"}]},{"@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_display_generated_audio":false,"msxcm_animated_featured_image":null,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/1743","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=1743"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/1743\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=1743"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=1743"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=1743"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=1743"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=1743"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=1743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}