<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblogcasts.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>sqlworkshops : SQLBits Performance</title><link>http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/SQLBits+Performance/default.aspx</link><description>Tags: SQLBits Performance</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Workspace Memory / Query Memory Tuning – RESOURCE_SEMAPHORE / IO_COMPLETION / SLEEP_TASK Waits</title><link>http://sqlblogcasts.com/blogs/sqlworkshops/archive/2011/10/14/workspace-memory-query-memory-tuning-resource-semaphore-io-completion-sleep-task-waits.aspx</link><pubDate>Fri, 14 Oct 2011 17:01:00 GMT</pubDate><guid isPermaLink="false">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:15928</guid><dc:creator>sqlworkshops</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://sqlblogcasts.com/blogs/sqlworkshops/rsscomments.aspx?PostID=15928</wfw:commentRss><comments>http://sqlblogcasts.com/blogs/sqlworkshops/archive/2011/10/14/workspace-memory-query-memory-tuning-resource-semaphore-io-completion-sleep-task-waits.aspx#comments</comments><description>&lt;p class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;strong&gt;SQL Server is configured to use a lot of memory, but my query is slow and not using all the memory available and it is spilling the sort or the hash match operation to tempdb, how can you tune the configuration and the query?&lt;/strong&gt;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;Memory allocating queries request memory based on estimation (ideal memory) and query memory (workspace memory) availability, when they don’t get the right amount of memory they spill to tempdb and lead to performance issues. Previous &lt;span class="style21"&gt;&lt;span class="style7"&gt;&lt;strong&gt;&lt;u&gt;&lt;b&gt;&lt;a href="http://www.sqlworkshops.com/articles.htm"&gt;&lt;u&gt;articles&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt; discussed ways to make the estimation better; this article discusses ways to address query memory availability.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;You can find the ideal amount of memory a query needs (when the query is executing) using sys.dm_exec_query_memory_grants. Common memory allocating queries are that perform Sort and do Hash Match operations like Hash Join or Hash Aggregation or Hash Union.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:gray;"&gt;*&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;from&lt;/span&gt; &lt;span style="COLOR:green;"&gt;sys&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;&lt;span style="COLOR:green;"&gt;dm_exec_query_memory_grants&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;" class="style28"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;Column ideal_memory_kb indicates the ideal amount of memory the query needs. This is based on estimation, this might be incorrect for various reasons including out of date statistics, in some cases (more common that you might think) under estimation of memory by the optimizer even when the statistics are up to date (refer to article &lt;font color="#03664b"&gt;&lt;u&gt;&lt;a title="http://jahaines.blogspot.com/2010/03/performance-tuning-101-what-you-will.html" href="http://jahaines.blogspot.com/2010/03/performance-tuning-101-what-you-will.html" target="_blank"&gt;&lt;u&gt;&lt;span class="style7"&gt;http://jahaines.blogspot.com/2010/03/performance-tuning-101-what-you-will.html&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt;) and due to plan caching (refer to article &lt;u&gt;&lt;a href="http://www.sqlworkshops.com/plancachingandquerymemory.htm"&gt;&lt;u&gt;Plan Caching and Query Memory&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;). Some might recommend tweaking the index/column statistics in an undocumented way to inflate the estimation for additional memory, I suggest following the MSSQL Tip &lt;font color="#03664b"&gt;&lt;u&gt;&lt;a title="http://www.mssqltips.com/sqlservertip/1955" href="http://www.mssqltips.com/sqlservertip/1955" target="_blank"&gt;&lt;u&gt;&lt;span class="style7"&gt;http://www.mssqltips.com/sqlservertip/1955&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt; and webcast 1 and 2 at &lt;a href="http://www.sqlworkshops.com/agenda.asp"&gt;&lt;u&gt;www.sqlworkshops.com/webcasts&lt;/u&gt;&lt;/a&gt; to understand the issue and the recommendations.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style21"&gt;To read additional articles I wrote click &lt;span class="style7"&gt;&lt;strong&gt;&lt;u&gt;&lt;b&gt;&lt;a href="http://www.sqlworkshops.com/articles.htm"&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style21"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;The ideal amount of memory a query needs is based on estimat&lt;/font&gt;&lt;/span&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;ion. Requested memory is based on ideal memory and maximum available workspace memory. There is a possibility the estimation is correct (let’s say you have up to date statistics and/or fixed the under estimation issues by following the above articles) but the available workspace memory is not enough and hence ideal amount is low. The next question is: what is available workspace memory.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Available workspace memory, also known as query memory, is the amount of memory available for common memory allocating queries that perform Sort and do Hash Match operations. This is automatically calculated based on your system configuration. You can monitor the currently available workspace memory and maximum workspace memory by executing the command dbcc memorystatus and looking for ‘Available’ and ‘Current Max’ under ‘Query Memory Objects (default)’ and ‘Small Query Memory Objects (default)’. Or using Performance Monitor counters ‘Granted Workspace Memory (KB)’ and ‘Maximum Workspace Memory (KB)’ under object Memory Manager. ‘Maximum Workspace Memory (KB)’ is the sum of ‘Current Max’ of both ‘Query Memory Objects (default)’ and ‘Small Query Memory Objects (default)’, note ‘Current Max’ is in pages (* 8 = KB).&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Here is a query to find the ‘Maximum Workspace Memory (KB)’ using sys.dm_os_performance_counters, ‘Maximum Workspace Memory (KB)’ can be up to 75% of ‘Target Server Memory (KB)’.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;font size="2"&gt;The best way to learn is to practice. To create the below tables and reproduce the behavior, join the mailing list by using this link: &lt;font color="#03664b"&gt;&lt;u&gt;&lt;a title="http://www.sqlworkshops.com/ml" href="http://visitor.constantcontact.com/d.jsp?m=1102928002407&amp;amp;p=oi" target="_blank"&gt;&lt;u&gt;&lt;span class="style23"&gt;www.sqlworkshops.com/ml&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt; and I will send you the table creation script.&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; cntr_value&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt; &lt;span style="COLOR:green;"&gt;sys&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;&lt;span style="COLOR:green;"&gt;dm_os_performance_counters&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;object_name&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;%Memory Manager%&amp;#39;&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;and&lt;/span&gt; counter_name &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;Maximum Workspace Memory (KB)%&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;as&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;Maximum Workspace Memory (KB)&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; cntr_value&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt; &lt;span style="COLOR:green;"&gt;sys&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;&lt;span style="COLOR:green;"&gt;dm_os_performance_counters&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;object_name&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;%Memory Manager%&amp;#39;&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;and&lt;/span&gt; counter_name &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;Target Server Memory (KB)%&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;as&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;Target Server Memory (KB)&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; cntr_value&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt; &lt;span style="COLOR:green;"&gt;sys&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;&lt;span style="COLOR:green;"&gt;dm_os_performance_counters&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;object_name&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;%Memory Manager%&amp;#39;&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;and&lt;/span&gt; counter_name &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;Maximum Workspace Memory (KB)%&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;*&lt;/span&gt; 100.0 &lt;span style="COLOR:gray;"&gt;/&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; cntr_value&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt; &lt;span style="COLOR:green;"&gt;sys&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;&lt;span style="COLOR:green;"&gt;dm_os_performance_counters&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;object_name&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;%Memory Manager%&amp;#39;&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;and&lt;/span&gt; counter_name &lt;span style="COLOR:gray;"&gt;like&lt;/span&gt; &lt;span style="COLOR:red;"&gt;&amp;#39;Target Server Memory (KB)%&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;as&lt;/span&gt; Ratio&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt; 
&lt;p class="style18"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;In my server, when Target Server Memory is 4096MB, Maximum Workspace Memory is 3077MB, which is about 75% of Target Server Memory.&lt;/p&gt;
&lt;p class="style18"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;By default a query will not request more than 25% of this Maximum Workspace Memory in SQL Server 2008 and above and this Memory Grant 25% can be changed using Resource Governor Workload Group settings. With SQL Server 2005 and below, this is 20% and cannot be changed without the support of Microsoft (with a combination of undocumented trace flag and changes to the configuration parameters).&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Why should you care about 25%? You might have a customer executing a heavy reporting query in the night and they want to use more than 25% of Maximum Workspace Memory for that single query. Let’s assume the customer configured 4096MB for their SQL Server instance (the Target Server Memory might be less than the configured memory if there is memory pressure on the server), let&amp;#39;s say their workspace memory is 3077MB (‘Query Memory Objects (default)’-&amp;gt;‘Current Max’ = 381175 pages = 3049400KB + ‘Small Query Memory Objects (default)’ -&amp;gt;‘Current Max’ = 12800 pages = 102400KB; 3049400KB + 102400KB = 3077MB. And this customer’s query executing the report is limited to a maximum of 3049400KB / 4 = 744MB.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Let’s say the customer’s query executing the report needs 1,470MB of query memory (ideal memory) in order not to spill the sort to tempdb, but the query will request only 744MB. In case the customer can set the ‘request_max_memory_grant_percent’ (Memory Grant %) of the Workload Group setting to 50%, then the query can request up to 1,488MB and in this case the query will request the ideal memory it needs which is 1,470MB.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;SQL Server has memory grant queues based on cost, if queries need more memory and there is not enough memory available in the queue, then the query will wait, you can get additional details using the command dbcc memorystatus. If a query requests huge amount of memory, but doesn’t utilize it (due to over estimation), this memory will be reserved and cannot be used by other queries, in some cases this will lead to unnecessary memory grant waits. So one has to be very careful not to overestimate (also described in the webcast &lt;/font&gt;&lt;a href="http://www.sqlworkshops.com/agenda.asp"&gt;&lt;u&gt;&lt;font size="2"&gt;www.sqlworkshops.com/webcasts&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="2"&gt;) too much memory as it will affect concurrency. When the query waits for memory, the wait type will be ‘RESOURCE_SEMAPHORE’.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;Let&amp;#39;s set &amp;#39;max server memory (MB)&amp;#39; to 4GB.&lt;/p&gt;
&lt;p class="style18"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;exec&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:maroon;"&gt;sp_configure&lt;/span&gt;&lt;span style="COLOR:blue;"&gt; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;max server memory (MB)&amp;#39;&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; 4096&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;reconfigure&lt;br /&gt;go&lt;/span&gt; 
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;The best way to learn is to practice. To create the below tables and reproduce the behavior, join the mailing list by using this link: &lt;font color="#03664b"&gt;&lt;u&gt;&lt;a title="http://www.sqlworkshops.com/ml" href="http://visitor.constantcontact.com/d.jsp?m=1102928002407&amp;amp;p=oi" target="_blank"&gt;&lt;u&gt;&lt;span class="style23"&gt;www.sqlworkshops.com/ml&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt; and I will send you the table creation script.&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span class="style18"&gt;Scenario 1:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="style18"&gt;This query will underestimate memory due to optimizer issues and will also request less memory (744MB) due to the 25% Resource Governor Workload Group Memory Grant setting. &lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;The query will be slow spilling the sort to tempdb.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000" size="2"&gt;&lt;span class="style18"&gt;&lt;span class="style30"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style24"&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;When the sort spills to tempdb the wait type will be ‘&lt;strong&gt;IO_COMPLETION&lt;/strong&gt;’ but when the Hash Match operation spills to tempdb the wait type will be ‘&lt;strong&gt;SLEEP_TASK&lt;/strong&gt;’.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="style24"&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;We are using option (maxdop 1) to disable parallelism, to learn more about monitoring and tuning parallel query execution, refer to the webcast &lt;/font&gt;&lt;a href="http://www.sqlworkshops.com/agenda.asp"&gt;&lt;u&gt;&lt;font size="2"&gt;www.sqlworkshops.com/webcasts&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="2"&gt; and article &lt;/font&gt;&lt;/span&gt;&lt;span class="style18"&gt;&lt;u&gt;&lt;a href="http://www.sqlworkshops.com/parallelmerge.htm"&gt;&lt;u&gt;&lt;font size="2"&gt;Parallel Sort and Merge Join – Watch out for unpredictability in performance&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;statistics&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;time&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;on&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="COLOR:gray;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;1&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt; 
&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span class="style18"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span class="style18"&gt;Scenario 2:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="style18"&gt;This query will have better memory estimation due to the option clause with optimize for hint, but will still request less memory (744MB) due to the 25% Resource Governor Workload Group Memory Grant setting. &lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;The query will also be slow spilling the sort to tempdb.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000" size="2"&gt;&lt;span class="style18"&gt;&lt;span class="style30"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;statistics&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;time&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;on&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 600000&lt;span style="COLOR:gray;"&gt;)&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="COLOR:gray;"&gt;, &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;1&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;/span&gt;&lt;span class="style33"&gt;&lt;font color="#008000" size="2" face="Courier New"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt; 
&lt;p class="style24"&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style24"&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;Scenario 3:&lt;br /&gt;&lt;/strong&gt;This query will have better memory estimation due to the option clause with optimize for hint and will also request enough memory (1,470MB) due to the 50% Resource Governor Workload Group Memory Grant setting.&lt;span class="style31"&gt;&lt;font color="#00ff00"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;The query will be fast with no spilling of sort to tempdb.&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="style24"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;span class="style18"&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;strong&gt;Please read the entire article and answer the challenge posted at the end of this article before changing the Resource Governor Workload Group Memory Grant setting in your production server as there are major disadvantages of changing the Resource Governor Workload Group Memory Grant setting, don&amp;#39;t do it without understanding the full picture.&lt;/strong&gt;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;alter&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;workload&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;group&lt;/span&gt; [default] &lt;span style="COLOR:blue;"&gt;with&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;request_max_memory_grant_percent&lt;span style="COLOR:gray;"&gt;=&lt;/span&gt;50&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;alter&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;resource&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;governor&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;reconfigure&lt;/span&gt;&lt;span class="style29"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;statistics&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;time&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;on&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 600000&lt;span style="COLOR:gray;"&gt;)&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;, &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;/span&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt; 
&lt;p&gt;&lt;strong&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Scenario 4:&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;L&lt;span class="style18"&gt;&lt;font size="2"&gt;et&amp;#39;s execute 2 of this query concurrently in 2 sessions, with 25% Resource Governor Workload Group Memory Grant setting.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;alter&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;workload&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;group&lt;/span&gt; [default] &lt;span style="COLOR:blue;"&gt;with&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;request_max_memory_grant_percent&lt;span style="COLOR:gray;"&gt;=&lt;/span&gt;25&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;alter&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;resource&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;governor&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;reconfigure&lt;/span&gt;&lt;span class="style29"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt; 
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;Session 1:&lt;/u&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Let&amp;#39;s execute this query in a loop and measure the performance of the query executed in session 2. This query will have better memory estimation due to the option clause with optimize for hint, but will still request less memory (744MB) due to the 25% &lt;font size="2"&gt;&lt;span class="style18"&gt;Resource Governor Workload Group Memory Grant setting&lt;/span&gt;&lt;/font&gt;. &lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;The query will be spilling the sort to tempdb.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;while 1=1&lt;br /&gt;begin&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 600000&lt;span style="COLOR:gray;"&gt;), &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;end&lt;br /&gt;go&lt;/span&gt;&lt;/span&gt; 
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;Session 2:&lt;/u&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Let&amp;#39;s execute this query few times. This query will have better memory estimation due to the option clause with optimize for hint, but will still request less memory (744MB) due to the 25% &lt;font size="2"&gt;&lt;span class="style18"&gt;Resource Governor Workload Group Memory Grant setting&lt;/span&gt;&lt;/font&gt;. &lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;The query will be slow spilling the sort to tempdb. &lt;/font&gt;&lt;/span&gt;This query might take up to twice the amount of time to complete compared to Scenario 2, because 2 queries from 2 sessions are concurrently spilling to tempdb. There is no wait for memory grants (no RESOURCE_SEMAPHORE waits).&lt;/p&gt;
&lt;p class="style18"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;statistics&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;time&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;on&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 600000&lt;span style="COLOR:gray;"&gt;), &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt;&lt;/span&gt; 
&lt;p&gt;&lt;strong&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Scenario 5:&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;L&lt;span class="style18"&gt;&lt;font size="2"&gt;et&amp;#39;s execute 2 of this query concurrently in 2 sessions, with 50% Resource Governor Workload Group Memory Grant setting.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;alter&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;workload&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;group&lt;/span&gt; [default] &lt;span style="COLOR:blue;"&gt;with&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;request_max_memory_grant_percent&lt;span style="COLOR:gray;"&gt;=50)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;alter&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;resource&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;governor&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;reconfigure&lt;/span&gt;&lt;span class="style29"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt; 
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;Session 1:&lt;/u&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Let&amp;#39;s execute this query in a loop and measure the performance of the query executed in session 2. &lt;font size="2"&gt;This query will have better memory estimation due to the option clause with optimize for hint and will also request enough memory (1,470MB) due to the 50% Resource Governor Workload Group Memory Grant setting.&lt;span class="style31"&gt;&lt;font color="#00ff00"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;The query will have no spilling of sort to tempdb.&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;while 1=1&lt;br /&gt;begin&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 600000&lt;span style="COLOR:gray;"&gt;), &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;end&lt;br /&gt;go&lt;/span&gt;&lt;/span&gt; 
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;Session 2:&lt;/u&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Let&amp;#39;s execute this query few times. &lt;font size="2"&gt;This query will have better memory estimation due to the option clause with optimize for hint and will also request enough memory (1,470MB) due to the 50% Resource Governor Workload Group Memory Grant setting.&lt;span class="style31"&gt;&lt;font color="#00ff00"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;The query will be fast with no spilling of sort to tempdb.&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt; But this query might take up to twice the amount of time to complete compared to Scenario 3, because 2 queries from 2 sessions are concurrently requesting nearly 50% of workspace memory. &lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;There is wait for memory grants (RESOURCE_SEMAPHORE waits)&lt;/font&gt;&lt;/span&gt;, SQL Server grants memory to one query at a time as the memory in the grant queue is not enough to grant simultaneously the requested memory to both queries.&lt;/p&gt;
&lt;p class="style18"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;statistics&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;time&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;on&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 500000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 600000&lt;span style="COLOR:gray;"&gt;), &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;/span&gt;&lt;/span&gt; 
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;Overall performance of scenario 5 is better than scenario 4 even though there was memory grant waits. &lt;/u&gt;&lt;/span&gt;In this case waiting for memory is far worse than spilling the sort to tempdb.&lt;/p&gt;
&lt;p class="style18"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;Scenario 6:&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;L&lt;span class="style18"&gt;&lt;font size="2"&gt;et&amp;#39;s execute two queries with less memory requirement concurrently in two sessions (so memory can be granted for both queries simultaneously from the same memory grant queue), with 50% Resource Governor Workload Group Memory Grant setting.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;font size="2"&gt;Session 1:&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;font size="2"&gt;Let&amp;#39;s execute this query in a loop and measure the performance of the query executed in session 2. This query will have better memory estimation due to the option clause with optimize for hint and will also request enough memory (1,102MB) due to the 50% Resource Governor Workload Group Memory Grant setting.&lt;span class="style31"&gt;&lt;font color="#00ff00"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;The query will have no spilling of sort to tempdb.&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;while&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; 1&lt;span style="COLOR:gray;"&gt;=&lt;/span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;begin&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 400000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 450000&lt;span style="COLOR:gray;"&gt;), &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;end&lt;br /&gt;go&lt;/span&gt;&lt;/span&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;span class="style32"&gt;&lt;u&gt;&lt;font size="2"&gt;Session 2:&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;font size="2"&gt;Let&amp;#39;s execute this query few times. This query will have better memory estimation due to the option clause with optimize for hint and will also request enough memory (1,102MB) due to the 50% Resource Governor Workload Group Memory Grant setting.&lt;span class="style31"&gt;&lt;font color="#00ff00"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span class="style29"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;The query will be fast with no spilling of sort to tempdb.&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt; &lt;span class="style29"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;There will be no wait for memory grants (RESOURCE_SEMAPHORE waits)&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;, SQL Server grants memory to both queries simultaneously as the memory in the grant queue is enough to grant the requested memory to both queries.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="style18"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;statistics&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;time&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;on&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;go&lt;br /&gt;&lt;/span&gt;--Example provided by www.sqlworkshops.com&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:blue;"&gt;char&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;2000&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;declare&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:blue;"&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 400000&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; @c1 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c2 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c2&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; @c3 &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; c3&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; tab7&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; c1 &lt;span style="COLOR:gray;"&gt;&amp;lt;&lt;/span&gt; @i&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;by&lt;/span&gt; c2&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:gray;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;optimize &lt;span style="COLOR:blue;"&gt;for &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@i &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 450000&lt;span style="COLOR:gray;"&gt;), &lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;maxdop &lt;/span&gt;&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- Option optimize for is used to inflate memory request&lt;br /&gt;-- without this the query will spill the sort to tempdb due&lt;br /&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:blue;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:green;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;-- to query optimizer under estimation of memory.&lt;br /&gt;&lt;span class="style33"&gt;-- One possibility is to inflate the number of rows,&lt;br /&gt;-- the other possibility is to inflate the row size&lt;br /&gt;&lt;/span&gt;-- For more information refer to webcasts 1 &amp;amp; 2&lt;br /&gt;-- at www.sqlworkshops.com/webcasts.&lt;/span&gt;&lt;br /&gt;go&lt;/span&gt;&lt;/span&gt; 
&lt;p class="style24"&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style24"&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;Challenge:&lt;br /&gt;&lt;/strong&gt;&lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;There are major disadvantages of changing the Resource Governor Workload Group Memory Grant setting, so don&amp;#39;t make any changes without understanding the full picture. I will cover this is the next article, meanwhile if you can guess some reasons, write to me:&lt;/font&gt;&lt;/span&gt; &lt;span class="style6"&gt;&lt;font class="style18" size="2"&gt;&lt;a href="http://www.sqlworkshops.com/contacts.asp"&gt;&lt;u&gt;Contacts&lt;/u&gt;&lt;/a&gt;&lt;span class="style30"&gt;&lt;font color="#ff0000"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="style24"&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;span class="style6"&gt;&lt;font class="style18" color="#ff0000" size="2"&gt;&lt;span class="style30"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;I explain some of these concepts with detailed examples in my webcasts (&lt;/strong&gt;&lt;a href="http://www.sqlworkshops.com/agenda.asp"&gt;&lt;u&gt;&lt;strong&gt;www.sqlworkshops.com/webcasts&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;&lt;strong&gt;), I recommend you to watch them. The best way to learn is to practice. To create the above tables and reproduce the behavior, join the mailing list at &lt;font color="#03664b"&gt;&lt;u&gt;&lt;a title="http://www.sqlworkshops.com/ml" href="http://visitor.constantcontact.com/d.jsp?m=1102928002407&amp;amp;p=oi" target="_blank"&gt;&lt;u&gt;&lt;span class="style23"&gt;www.sqlworkshops.com/ml&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt; and I will send you the relevant SQL Scripts.&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;span class="style18"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span class="style6"&gt;
&lt;p class="style21"&gt;Register for the upcoming 3 Day Level 400 Microsoft SQL Server 2008 Performance Monitoring &amp;amp; Tuning Hands-on Workshop &lt;span&gt;in &lt;strong&gt;&lt;span class="style4"&gt;&lt;font style="BACKGROUND-COLOR:#d3cd2e;"&gt;Vienna, Austria&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;during&lt;strong&gt; &lt;u&gt;&lt;b&gt;&lt;a href="http://www.sqlworkshops.com/registrationaustria7.asp"&gt;&lt;u&gt;November 15-17, 2011&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/strong&gt;, click &lt;strong&gt;&lt;u&gt;&lt;b&gt;&lt;a href="http://www.sqlworkshops.com/registrationaustria7.asp"&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/strong&gt; to register / &lt;font color="#03664b"&gt;&lt;u&gt;&lt;a title="http://blogs.technet.com/b/austria/archive/2010/06/06/sql-server-2008-and-2005-performance-monitoring-and-tuning-workshop-im-juni.aspx" href="http://blogs.technet.com/b/austria/archive/2010/06/06/sql-server-2008-and-2005-performance-monitoring-and-tuning-workshop-im-juni.aspx" target="_blank"&gt;&lt;u&gt;&lt;span class="style1"&gt;&lt;strong&gt;Microsoft Austria TechNet&lt;/strong&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt; or in &lt;strong&gt;&lt;span class="style4"&gt;&lt;font style="BACKGROUND-COLOR:#d3cd2e;"&gt;Oslo, Norway&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt; during &lt;strong&gt;&lt;u&gt;&lt;b&gt;&lt;a href="http://www.sqlworkshops.com/registrationnorway1.asp"&gt;&lt;u&gt;January 17-19, 2012&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/strong&gt;, click &lt;strong&gt;&lt;u&gt;&lt;b&gt;&lt;a href="http://www.sqlworkshops.com/registrationnorway1.asp"&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/strong&gt; to register. These are hands-on workshops with a maximum of 12 participants and not lectures. For consulting engagements click &lt;u&gt;&lt;a href="http://www.sqlworkshops.com/consulting.asp"&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;&lt;/u&gt;.&lt;/p&gt;
&lt;p class="style21"&gt;&amp;nbsp;&lt;/p&gt;&lt;span class="style6"&gt;
&lt;p class="style21"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span class="style18"&gt;Disclaimer and copyright information:&lt;/span&gt;&lt;/strong&gt;&lt;br class="style18" /&gt;&lt;span class="style18"&gt;This article refers to organizations and products that may be the trademarks or registered trademarks of their various owners.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font class="style18"&gt;&lt;font size="2"&gt;Copyright of this article belongs to &lt;/font&gt;&lt;a href="http://www.sqlworkshops.com/instructor.htm"&gt;&lt;u&gt;&lt;font color="#006bad" size="2"&gt;&lt;strong&gt;R Meyyappan&lt;/strong&gt;&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="2"&gt; / &lt;/font&gt;&lt;a href="http://www.sqlworkshops.com/"&gt;&lt;u&gt;&lt;font color="#006bad" size="2"&gt;&lt;strong&gt;www.sqlworkshops.com&lt;/strong&gt;&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="2"&gt;. You may freely use the ideas and concepts discussed in this article with acknowledgement (&lt;/font&gt;&lt;a href="http://www.sqlworkshops.com/"&gt;&lt;u&gt;&lt;font color="#006bad" size="2"&gt;&lt;strong&gt;www.sqlworkshops.com&lt;/strong&gt;&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="2"&gt;), but you may not claim any of it as your own work.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="style18"&gt;This article is for informational purposes only; you use any of the suggestions given here entirely at your own risk.&lt;/p&gt;
&lt;p class="style21"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="style21"&gt;R Meyyappan &lt;a href="mailto:rmeyyappan@sqlworkshops.com"&gt;&lt;strong&gt;&lt;font color="#006bad"&gt;rmeyyappan@sqlworkshops.com&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="style21"&gt;LinkedIn: &lt;a href="http://at.linkedin.com/in/rmeyyappan"&gt;&lt;strong&gt;&lt;font color="#006bad"&gt;http://at.linkedin.com/in/rmeyyappan&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="style21"&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=15928" width="1" height="1"&gt;</description><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/SQLBits+Performance/default.aspx">SQLBits Performance</category><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/SQLBits.com/default.aspx">SQLBits.com</category><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/SQLBits/default.aspx">SQLBits</category><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/Performance/default.aspx">Performance</category><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/Training/default.aspx">Training</category><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/Level+400/default.aspx">Level 400</category><category domain="http://sqlblogcasts.com/blogs/sqlworkshops/archive/tags/Workshop/default.aspx">Workshop</category></item></channel></rss>