<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.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>Search results matching tags 'Internals' and 'Tips'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=Internals,Tips&amp;orTags=0</link><description>Search results matching tags 'Internals' and 'Tips'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Squishy Limits in SQL Server Express Edition</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2013/03/28/squishy-limits-in-sql-server-express-edition.aspx</link><pubDate>Thu, 28 Mar 2013 12:19:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48447</guid><dc:creator>KKline</dc:creator><description>&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;It's an old story you've probably heard before. &amp;nbsp;Provide a free version of your software product with strict limitations on performance or other specific capabilities so that folks can give it a try without risk, while you minimize the chance of&amp;nbsp;cannibalizing&amp;nbsp;sales of your commercial products. &amp;nbsp;Microsoft has take this strategy with&amp;nbsp;&lt;a href="http://www.microsoft.com/en-us/sqlserver/editions/2012-editions/express.aspx"&gt;SQL Server Express Edition&lt;/a&gt;, not only to increase adoption in the student market but also to counter the threat of open-source (i.e. free) relational databases like MySQL for entry-level applications.&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;One such limitation of SQL Server Express Edition is that it supports no more than 1GB of RAM for the instance. &amp;nbsp;Of course, you could have many Express Edition instances on a single Windows server, each with its own 1GB of RAM.&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;But what does that metric of 1GB of RAM actually mean? &amp;nbsp;The key thing to remember is that the restriction is for&amp;nbsp;&lt;em&gt;&lt;strong&gt;buffer&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;cache.&amp;nbsp;&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;Since SQL Server has many other caches, even when not counting the plan cache, there are plenty of other caches within SQL Server. &amp;nbsp;(Run a query against&amp;nbsp;&lt;em&gt;sys.dm_os_memory_clerks&lt;/em&gt;&amp;nbsp;if you'd like to see some of the others). &amp;nbsp;Because only the buffer cache has the strict 1GB limitation, you can actually watch SQL Server Express Edition's memory working set size grow to around 1.4-1.5GB due to the other memory caches at play.&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;Pawel Potasinski, a SQL Server MVP from Poland (&lt;a href="http://twitter.com/pawelpotasinski"&gt;Twitter&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://sqlgeek.pl/"&gt;Blog&lt;/a&gt;), once&amp;nbsp;&lt;a href="http://sqlgeek.pl/2010/08/23/pl-sql-server-limity-w-sql-server-2008-r2-express-edition/"&gt;posted an interesting repro&lt;/a&gt;&amp;nbsp;for this behavior:&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;padding-left:30px;"&gt;&lt;span style="font-family:Consolas, Monaco, monospace;font-size:12px;line-height:18px;"&gt;-- Assess amount of databases resident in buffer cache&lt;/span&gt;&lt;/p&gt;&lt;pre style="font-size:12px;line-height:18px;font-family:Consolas, Monaco, monospace;padding-left:30px;"&gt;SELECT
 CASE
 WHEN database_id = 32767 THEN 'mssqlsystemresource'
 ELSE DB_NAME(database_id)
 END AS [Database],
 CONVERT(numeric(38,2),(8.0 / 1024) * COUNT(*)) AS [MB in buffer cache] 
FROM sys.dm_os_buffer_descriptors 
GROUP BY database_id 
ORDER BY 2 DESC; 
GO&lt;/pre&gt;&lt;pre style="font-size:12px;line-height:18px;font-family:Consolas, Monaco, monospace;padding-left:30px;"&gt;-- Assess amount of tables resident in buffer cache
SELECT
 QUOTENAME(OBJECT_SCHEMA_NAME(p.object_id)) + '.' +
 QUOTENAME(OBJECT_NAME(p.object_id)) AS [Object],
 CONVERT(numeric(38,2),(8.0 / 1024) * COUNT(*)) AS [MB In buffer cache] 
FROM sys.dm_os_buffer_descriptors AS d 
 INNER JOIN sys.allocation_units AS u ON d.allocation_unit_id = u.allocation_unit_id 
 INNER JOIN sys.partitions AS p ON (u.type IN (1,3) AND u.container_id = p.hobt_id) OR (u.type = 2 AND u.container_id = p.partition_id) 
WHERE d.database_id = DB_ID() 
GROUP BY QUOTENAME(OBJECT_SCHEMA_NAME(p.object_id)) + '.' + QUOTENAME(OBJECT_NAME(p.object_id))
ORDER BY [Object] DESC;
GO&lt;/pre&gt;&lt;pre style="font-size:12px;line-height:18px;font-family:Consolas, Monaco, monospace;padding-left:30px;"&gt;-- Fill up Express Edition's buffer allocation
IF OBJECT_ID(N'dbo.test', N'U') IS NOT NULL
 DROP TABLE dbo.test;
GO&lt;/pre&gt;&lt;pre style="font-size:12px;line-height:18px;font-family:Consolas, Monaco, monospace;padding-left:30px;"&gt;CREATE TABLE dbo.test (col_a char(8000));
GO&lt;/pre&gt;&lt;pre style="font-size:12px;line-height:18px;font-family:Consolas, Monaco, monospace;padding-left:30px;"&gt;INSERT INTO dbo.test (col_a)
 SELECT REPLICATE('col_a', 8000)
 FROM sys.all_objects 
 WHERE is_ms_shipped = 1;&lt;/pre&gt;&lt;pre style="font-size:12px;line-height:18px;font-family:Consolas, Monaco, monospace;padding-left:30px;"&gt;CHECKPOINT; 
GO 100&lt;/pre&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;padding-left:30px;"&gt;&lt;em&gt;&amp;nbsp;The bottom line for the hard memory limit of SQL Server Express Edition is "Yes, it's limited. &amp;nbsp;But it's a squishy limit. Not a hard limit."&lt;/em&gt;&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;&lt;span style="line-height:19px;"&gt;Although your mileage may vary, I'd bet a dollar that you'll find more than 1GB in the active working set for your instance of SQL Server Express Edition. &amp;nbsp;I am curious, however, if you're seeing much variation between versions and even service packs of SQL Server? &amp;nbsp;Let me know if you try this out on more than one version and/or service pack level of SQL Server. &amp;nbsp;Did it change much between versions? &amp;nbsp;Let me know!&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;Enjoy,&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;-Kevin&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;&lt;a href="http://twitter.com/kekline"&gt;-Follow me on Twitter!&lt;/a&gt;&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;&lt;a href="http://twitter.com/kekline"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://plus.google.com/u/1/113032055249023350257?rel=author"&gt;Google Author&lt;/a&gt;&lt;/p&gt;&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:13.333333969116211px;line-height:18.99305534362793px;"&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Learn More About SQL Server IO and Query Tuning in These Webcasts</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2012/12/14/learn-more-about-sql-server-io-and-query-tuning-in-these-webcasts.aspx</link><pubDate>Fri, 14 Dec 2012 18:50:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:46662</guid><dc:creator>KKline</dc:creator><description>
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;I'm doing two new webcasts next week on Wednesday, December 19th, one in the morning and the other after lunch.&lt;/p&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;SSDs are a Game Changer for SQL Server Storage&lt;/h2&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;No, session is not exclusively about SSDs. &amp;nbsp;But this is my first session on IO and storage tuning that emphasizes SSDs over hard disks. &amp;nbsp;As Bob Dylan said "Times, they are a'changin'". &amp;nbsp;This session on Wednesday, December 19th at 11:30 AM EST, sponsored by Astute Networks, takes you through all of the basics of storage and IO tuning, regardless of the underlying storage technology. &amp;nbsp;I'll show you how SQL Server handles storage structures, how to identify IO activity on Windows and SQL Server, and best practices for minimizing IO bottlenecks. &amp;nbsp;Register now for:&lt;a title="Kevin Kline's Storage IO Best Practices for SQL Server" href="http://bit.ly/UcXYI3"&gt;&amp;nbsp;Storage IO Best Practices for SQL Server and a New Approach to Solving Application Performance Issues&lt;/a&gt;.&lt;/p&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;Write Better SQL Queries&lt;/h2&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;The next webcast on Wednesday, December 19th at 2 PM EST, is with me, Aaron Bertrand &amp;nbsp;(&lt;a href="https://twitter.com/#!/AaronBertrand"&gt;Twitter&amp;nbsp;&lt;/a&gt;|&amp;nbsp;&lt;a href="http://sqlblog.com/blogs/aaron_bertrand/rss.aspx"&gt;Blog&lt;/a&gt;)&amp;nbsp;and SQLCruise Impresario &amp;amp; Microsoft MVP Tim Ford &amp;nbsp;(&lt;a href="https://twitter.com/#!/sqlagentman"&gt;Twitter&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://www.ford-it.com/sqlagentman/"&gt;Blog&lt;/a&gt;)&amp;nbsp;as we take you through the query tuning process, discussing important DMVs to use during query tuning, as well as demonstrating several essential query tuning techniques that every SQL developer should know. &amp;nbsp;Not only are we presenting an hour of top quality technical content, we’ll also be giving away some cool prizes, including the grand prize of a paid registration for the upcoming&amp;nbsp;&lt;a target="_blank" href="http://elink.sqlsentry.net/c/1/?aId=67857085&amp;amp;requestId=b34612-273953cd-e600-4a18-979a-a9f2ded860bd&amp;amp;rId=lead-a407ed107f65de119513001e0b614992-c233a49718324979b0d8efc0614ff5d0&amp;amp;ea=aunefuonetre=pbz=vagrepreir&amp;amp;dUrl=http%3A%2F%2Fsqlcruise.com%2F2013-cruises%3F_cldee%3DbmhhcnNoYmFyZ2VyQGludGVyY2VydmUuY29t&amp;amp;uId=0"&gt;SQLCruise Miami&lt;/a&gt;, a $1,395 value! &amp;nbsp;Register now for:&amp;nbsp;&lt;a title="SQL Server Query Tuning Best Practices, Hosted by Kevin Kline, Aaron Bertrand, and Tim Ford" href="http://bit.ly/UskPPm"&gt;SQL Server Query Tuning Best Practices, Hosted by Kevin Kline and Aaron Bertrand with special guest Tim Ford&lt;/a&gt;&lt;/p&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;I hope to see you at both of these sessions next week! &amp;nbsp;Best regards,&lt;/p&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;-Kev&lt;/p&gt;
&lt;p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;"&gt;&lt;a title="Kevin E. Kline on Twitter" href="http://twitter.com/kekline"&gt;-Follow me on Twitter!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Microsoft Windows Platforms Blog Watch</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2011/07/20/microsoft-windows-platforms-blog-watch.aspx</link><pubDate>Wed, 20 Jul 2011 14:44:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:37148</guid><dc:creator>KKline</dc:creator><description>&lt;p&gt;&lt;br&gt;&lt;a href="http://KevinEKline.com"&gt;&lt;img src="http://2.bp.blogspot.com/_B5-1oeewfB8/S67FJZgM_UI/AAAAAAAAKsU/CvIHTQiKREM/s1600/laurel-and-hardy.jpg" class="alignright" alt="" height="204" width="298"&gt;&lt;/a&gt;

&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remote Desktop Services Component Architecture Poster&lt;/strong&gt;

&lt;/p&gt;&lt;p&gt;Grab your own poster! A &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=9bc943b7-07c5-4335-9df9-20e77ed5032e" title="Microsoft RDS Services Poster" target="_blank"&gt;visual guide to key Remote Desktop Services technologies&lt;/a&gt; in Windows Server 2008R2

&amp;nbsp;

&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Virtually Free&lt;/strong&gt;

&lt;/p&gt;&lt;p&gt;Get the latest &lt;strong&gt;&lt;a href="http://support.microsoft.com/kb/2264080" title="Microsoft Hyper-V" target="_blank"&gt;update rollup package for the Hyper-V&lt;/a&gt;&lt;/strong&gt; role in Windows Server 2008 R2 and be sure to bookmark the &lt;strong&gt;&lt;a href="http://blogs.technet.com/virtualization" title="Microsoft Windows Virtualization Team Blog" target="_blank"&gt;Windows Virtualization Team Blog&lt;/a&gt;&lt;/strong&gt;.  Be sure to check out blog &lt;strong&gt;&lt;a href="http://blogs.technet.com/virtualworld" title="More virtual goodness from Microsoft" target="_blank"&gt;World Simplified is a Virtual World&lt;/a&gt;&lt;/strong&gt;. And doncha evah neglect application virtualization, such as the goodness at the&lt;strong&gt; &lt;a href="http://blogs.technet.com/appv" title="Microsoft App-V Team Blog" target="_blank"&gt;App-V Product Team Blog&lt;/a&gt;&lt;/strong&gt;.

&amp;nbsp;

&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Let's Optimize Some Desktops (Assuming You Have Gone Full Cloud Yet)
&lt;/strong&gt;

&lt;/p&gt;&lt;p&gt;Check out &lt;a href="http://blogs.technet.com/mdop" title="microsoft Desktop Optimization Pack"&gt;The Official Microsoft Desktop Optimization Pack (MDOP) Blog&lt;/a&gt; where you can get cool tools like the Diagnostics and Recovery Toolset (&lt;a href="http://blogs.technet.com/b/mdop/archive/2011/04/04/diagnostics-and-recovery-toolset-dart-7-beta-released.aspx" title="Microsoft Diagnostics and Recovery Toolset" target="_blank"&gt;DART&lt;/a&gt;), currently in its v7 beta release.&lt;/p&gt;&lt;p&gt;

&amp;nbsp;

&lt;strong&gt;&lt;a href="http://www.facebook.com/kekline"&gt;&lt;img src="http://3.bp.blogspot.com/-7RLcOYR_dmI/TagbsV2eiBI/AAAAAAAAAB8/J7-80luLEZk/s1600/Laurel-Hardy.jpg" class="alignleft" alt="" height="220" width="300"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;We Can Always Perform a Little Better&lt;/strong&gt;

&lt;/p&gt;&lt;p&gt;Have you checked out the &lt;a href="http://blogs.technet.com/askperf" title="Microsoft Performance Team Blog" target="_blank"&gt;Ask the Performance Team blog&lt;/a&gt; yet.  You should!  Then there's the&lt;a href="http://blogs.technet.com/networking" title="Microsoft Enterprise Networking Team Blog" target="_blank"&gt; Microsoft Enterprise Networking Team blog&lt;/a&gt;.  And if you're looking for help with the Windows Server Core, be sure to check out the &lt;a href="http://blogs.technet.com/askcore" title="Microsoft Enterprise Platforms Support: Windows Server Core Team" target="_blank"&gt;Ask the Core Team blog&lt;/a&gt;.  Excellent stuff!

As the &lt;a href="http://www.sqlmag.com/blogcontent/tool-time-blog-16" title="Kevin's Monthly Tool Time Column in SQL Server Magazine" target="_blank"&gt;Tool Time columnist at SQL Server Magazine&lt;/a&gt;, I'm always on the lookout for great free tools that get on-going support from their creators.  One common experience is finding a nice debugging tool, only to discover that there's &lt;em&gt;no information on how to interpret the debugger result sets&lt;/em&gt;!  (&lt;a href="http://sqlblog.com/blogs/kevin_kline/archive/2007/06/28/understanding-sqliosim-output.aspx" title="An Old but Still Popular Blog Entry on SQLIOSIM" target="_blank"&gt;SQLIOSim &lt;/a&gt;anyone?)  That's why I love the &lt;a href="http://blogs.msdn.com/b/ntdebugging/" title="Microsoft Windows Advanced Debugging and Troubleshooting Blog" target="_blank"&gt;Microsoft Advanced Windows Debugging and Troubleshooting blog&lt;/a&gt;.  Another must-have on your Favorites list.

&amp;nbsp;
&lt;/p&gt;&lt;p&gt;
Enjoy!

&lt;/p&gt;&lt;p&gt;-Kev

&lt;/p&gt;&lt;p&gt;&amp;nbsp;Follow me on &lt;a href="http://twitter.com/kekline" title="C'mon. You know you want to!" target="_blank"&gt;Twitter&lt;/a&gt;

&amp;nbsp;

&amp;nbsp;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;</description></item><item><title>New on SQLMag.Com: Update to SP_WHOISACTIVE</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2011/04/21/new-on-sqlmag-com-update-to-sp-whoisactive.aspx</link><pubDate>Thu, 21 Apr 2011 14:12:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:35077</guid><dc:creator>KKline</dc:creator><description>&lt;p&gt;I profiled Adam Machanic's (&lt;a href="http://sqlblog.com/blogs/adam_machanic/default.aspx" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/AdamMachanic" target="_blank"&gt;twitter&lt;/a&gt;)
 excellent stored procedure, SP_WHOISACTIVE, back in August of 2010 in 
my monthly SQLMag column, Tool Time.&amp;nbsp; Adam has been diligent about 
maintaining the tool and adding new features. Read the details on my SQLMag Tool Time column (here - &lt;a href="http://www.sqlmag.com/blogs/tool-time/entryid/76341/new-release-of-sp_whoisactive" target="_blank"&gt;http://www.sqlmag.com/blogs/tool-time/entryid/76341/new-release-of-sp_whoisactive&lt;/a&gt;).&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;-Kev&lt;/p&gt;
&lt;div&gt;&lt;a href="http://twitter.com/kekline" title="C'mon. You know you want to!" target="_blank"&gt;Twitter at kekline&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&amp;nbsp;More content at&lt;span&gt;&amp;nbsp;&lt;a href="http://kevinekline.com/"&gt;http://KevinEKline.com&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt; &lt;a href="http://kevinekline.com/"&gt;&lt;br&gt;
&lt;/a&gt; &lt;/div&gt;</description></item><item><title>Old Performance Tuning Recommendations Die Hard</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2009/06/23/old-performance-tuning-recommendations-die-hard.aspx</link><pubDate>Tue, 23 Jun 2009 14:19:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:14861</guid><dc:creator>KKline</dc:creator><description>&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;It’s interesting to me that old and inaccurate performance tuning recommendations seem to have a life of their own.&lt;span&gt;&amp;nbsp; &lt;/span&gt;In some ways, old performance tuning recommendations are like the Undead from some kind of cheesy, 1970’s zombie movie – no matter how many times you shoot them, they just keep coming back.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Here’s a good case in point, &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms345118.aspx"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;http://msdn2.microsoft.com/en-us/library/ms345118.aspx&lt;/span&gt;&lt;/a&gt;&lt;font face="Times New Roman" size="3"&gt;, a white paper discussing Performance Optimizations for the XML data type in SQL Server 2005.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The document states:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;h4 style="margin:10pt 0in 0pt 0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;&lt;i&gt;Multiple tempDB Files for Better Scalability of XML Variables and Parameters&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;XML variables and parameters use main memory as storage as long as their values are small. Large values, however, are backed by tempdb storage. In a multi-user scenario, if many large XML blobs occur, tempdb contention may become a bottleneck for good scalability. Creating multiple tempdb files reduces the storage contention and yields significantly better scalability. The next example illustrates how multiple tempdb files can be created.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="label1" style="margin:0in 0in 7.5pt 0.5in;vertical-align:top;line-height:140%;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;Example: Creating Multiple tempdb Files&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;This example creates two additional data files for tempdb, each with an initial size of 8&amp;nbsp;MB, and two log files with an initial size of 1&amp;nbsp;MB. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt 0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;&lt;a title="Copy Code"&gt;&lt;span style="font-size:12pt;line-height:140%;font-family:'Times New Roman','serif';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt 0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;&lt;a title="Copy Code"&gt;&lt;span&gt;Copy Code&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;USE TEMPDB&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;o:p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;ALTER DATABASE tempdb ADD FILE &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(NAME = 'Tempdb_Data1', &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;FILENAME = 'C:\temp\Tempdb_Data1.MDF', SIZE = 8 MB),&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(NAME = 'Tempdb_Data2', &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;FILENAME = 'C:\temp\Tempdb_Data2.MDF', SIZE = 8 MB) &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;o:p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;ALTER DATABASE tempdb ADD log FILE &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(NAME = 'Tempdb_Log1',&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;FILENAME = 'C:\temp\Tempdb_Log1.LDF', SIZE = 1 MB),&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(NAME = 'Tempdb_Log2',&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;FILENAME = 'C:\temp\Tempdb_Log2.LDF', SIZE = 1 MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span&gt;&lt;font face="Courier New"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p style="margin-left:0.5in;vertical-align:top;line-height:140%;"&gt;&lt;span style="font-size:8pt;line-height:140%;font-family:'Verdana','sans-serif';"&gt;These files can be removed by using the ALTER DATABASE tempdb REMOVE FILE command. For more information, see SQL Server Books Online.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;There was a time when this recommendation made sense.&lt;span&gt;&amp;nbsp; &lt;/span&gt;The intent behind multiple tempdb files prior to SQL Server 2005 was to avoid GAM contention on very high throughput scenarios.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Later, SQL Server 2005 introduced segmented GAMs even within a single tempdb file.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;This recommendation still holds for data files, especially on systems using NUMA processors, where IO should be aligned with one data file per NUMA socket.&lt;span&gt;&amp;nbsp; &lt;/span&gt;(It also does no harm on an SMP system to organize your data files this way, hence the standardized recommendation.)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;However, the recommendation fails when you get to the log portion of the equation.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Why?&lt;span&gt;&amp;nbsp; &lt;/span&gt;It’s because data file IO is written using the &lt;i&gt;proportional file&lt;/i&gt; algorithm where each&amp;nbsp;data file has&amp;nbsp;data written to it in round-robin style.&amp;nbsp; On the other hand, log files are written using the &lt;i&gt;active file&lt;/i&gt; algorithm where&amp;nbsp;LogFile1 is written first until full, then LogFile2 is written next until full, and so on…&lt;span&gt;&amp;nbsp; &lt;/span&gt;Long story made short (too late, I know) – you get no performance gain from having multiple files in the log because all writes occur on only one file.&lt;span&gt;&amp;nbsp; &lt;/span&gt;You can only get a performance gain from multiple files on the data portion of a database.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;As an aside, Simon Sabin (&lt;/font&gt;&lt;a href="http://sqlblogcasts.com/blogs/simons/"&gt;&lt;span&gt;&lt;font color="#800080" face="Times New Roman" size="3"&gt;http://sqlblogcasts.com/blogs/simons/&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font face="Times New Roman" size="3"&gt;) has a wonderful collection of addition myths, misunderstandings, and miscommunications.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I’m not sure if they’re put together in a single blog post, so put his blog on your watch list.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Cheers,&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;-Kev&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&amp;nbsp;Twitter @ kekline &lt;br&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;P.S.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Thanks to Tony Rogerson (&lt;/font&gt;&lt;a href="http://sqlblogcasts.com/blogs/tonyrogerson"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;http://sqlblogcasts.com/blogs/tonyrogerson&lt;/span&gt;&lt;/a&gt;&lt;font face="Times New Roman" size="3"&gt;) and Geoff Hiten for the inspiration on this blog post, btw.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;P.P.S.&amp;nbsp; I like how the MSDN article refers to SQL Server 2005 as SQL Server 9.0.&amp;nbsp; ;^)&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Architecture Questions - What's Your Opinion?</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2008/09/23/architecture-questions-what-s-your-opinion.aspx</link><pubDate>Tue, 23 Sep 2008 17:40:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9058</guid><dc:creator>KKline</dc:creator><description>&lt;P&gt;I had a great time speaking with the large communities of SQL Server users as I traveled about Europe last week and much of this week.&amp;nbsp; I'm always impressed by the skill, intelligence, and creativity of these professionals.&lt;/P&gt;
&lt;P&gt;And sometimes they raise questions that I think are worth sharing with everyone because they too might've heard the question before or asked it themselves.&amp;nbsp; Here are a few examples.&amp;nbsp; What are your thoughts on these questions?&lt;/P&gt;
&lt;P&gt;1. To what extent does compatibility mode effect the behavior of SQL Server?&amp;nbsp; For example, direct catalog updates aren't supported in SQL Server 2005. If we're running in SQL Server 2000 compatibility-mode, can we still access the SYS schema?&lt;/P&gt;
&lt;P&gt;2. There are strong architectural reasons why SQL Server doesn't support multiple log readers, right?&amp;nbsp; Let's discuss.&amp;nbsp; (I have my own ideas about why you wouldn't want to enable it.)&amp;nbsp; However, the potential for improving the performance of replication by the use of multiple Log Reader agents is very strong because you could have more data flowing from one server to another.&amp;nbsp; Imagine for example, if you could have one log reader pumping data for the "customer" table and another pumping data for the "orders" table.&amp;nbsp; How can we build a solution that offers us those benefits?&lt;/P&gt;
&lt;P&gt;3. Error messages?&amp;nbsp; Yes, error messages.&amp;nbsp; Is there any way we can find out what error messages are most commonly encountered across the SQL Server universe?&amp;nbsp; Maybe someone on the PSS team can help us out here?&lt;/P&gt;
&lt;P&gt;4. How do I give a good presentation?&amp;nbsp; Well, there's a hilarious YouTube video that covers all the bases - &lt;A href="http://www.youtube.com/watch?v=cagxPlVqrtM&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=cagxPlVqrtM&amp;amp;feature=related&lt;/A&gt;.&amp;nbsp; But if you're looking for some real resources, here are some others that are useful:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Good web sites from Garr Reynolds and his associated&amp;nbsp; book:&lt;BR&gt;&lt;A href="http://www.presentationzen.com/"&gt;http://www.presentationzen.com/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.garrreynolds.com/Presentation/index.html"&gt;http://www.garrreynolds.com/Presentation/index.html&lt;/A&gt; &lt;BR&gt;&lt;A href="http://www.amazon.com/gp/product/0321525655/103-6148611-3957463?ie=UTF8&amp;amp;tag=garrreynoldsc-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0321525655"&gt;http://www.amazon.com/gp/product/0321525655/103-6148611-3957463?ie=UTF8&amp;amp;tag=garrreynoldsc-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0321525655&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Guy Kawasaki web site:&lt;BR&gt;&lt;A href="http://blog.guykawasaki.com/"&gt;http://blog.guykawasaki.com/&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blog.guykawasaki.com/2008/09/winners-of-worl.html"&gt;http://blog.guykawasaki.com/2008/09/winners-of-worl.html&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blog.guykawasaki.com/2005/12/the_102030_rule.html"&gt;http://blog.guykawasaki.com/2005/12/the_102030_rule.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;How to Give a Steve Jobs Caliber Keynote Presentation:&lt;BR&gt;&lt;A href="http://www.maclife.com/article/how_to_give_a_steve_jobs_caliber_keynote_presentation?page=0%2C0"&gt;http://www.maclife.com/article/how_to_give_a_steve_jobs_caliber_keynote_presentation?page=0%2C0&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So what do you think about these questions?&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;-Kevin&lt;BR&gt;&lt;/P&gt;</description></item><item><title>WHY ISN'T AUTO_UPDATE STATISTICS RUNNING?</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2008/05/19/why-isn-t-auto-update-statistics-running.aspx</link><pubDate>Mon, 19 May 2008 15:58:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6858</guid><dc:creator>KKline</dc:creator><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;I find that auto_update statistics in SQL Server is a really good thing.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Without it, many third-party applications would simply fall over from lack of preventative maintenance.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; W&lt;/SPAN&gt;ith it, they are able to run for extraordinarily long periods of time without really needing a full-time DBA to check up on the databases.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Having said all of that, auto_update statistics is a mystery for many of us.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;This is reflected in the fact that I get lots of questions about auto_update statistics when I speak publicly (which seems to be at least once per month these days).&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;The most common question is “why isn’t auto_update statistics running?”&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;There are many elements to the answer to this question.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Naturally, you’re not going to have any new statistics in a database that is marked as readonly.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;However, you might not know that approximately 20% of a table needs to change before triggering an auto_update statistics run for the given table.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;If the table is &lt;I style="mso-bidi-font-style:normal;"&gt;really&lt;/I&gt; big, it’s possible that you’re simply not changing enough data.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Also remember that statistics are not the same in SQL Server 2005 as they are in SQL Server 2000 and that they must be upgraded using the &lt;I style="mso-bidi-font-style:normal;"&gt;sp_updatestats&lt;/I&gt; stored procedure after you migrate from version 2000 to 20005.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Otherwise, the old statistics are unusable by the query engine.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Once you’ve run &lt;I style="mso-bidi-font-style:normal;"&gt;sp_updatestats&lt;/I&gt;, the engine will maintain them automatically.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Be sure to check the article “After Upgrading the Database Engine” at &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-s/library/ms143695.aspx"&gt;&lt;FONT face="Times New Roman" size=3&gt;http://msdn2.microsoft.com/en-s/library/ms143695.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Times New Roman" size=3&gt; to make sure you covered all the bases.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Thanks to Connor Cunningham and Simon Sabin (&lt;/FONT&gt;&lt;A href="http://sqlblogcasts.com/blogs/simons"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;http://sqlblogcasts.com/blogs/simons&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face="Times New Roman" size=3&gt;) for help on this post. &lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>NASTY RUMORS ABOUT MAXDOP</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2008/04/15/nasty-rumors-about-maxdop.aspx</link><pubDate>Tue, 15 Apr 2008 17:48:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6225</guid><dc:creator>KKline</dc:creator><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;You'd think an article called "NASTY RUMORS ABOUT MAXDOP" would have something to do with Britney Spears or maybe Robert Downy Jr, but in that case it'd be total fiction (at least, it would be coming from my pen).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;So, I was en route to the 2008 Microsoft MVP Summit yesterday and I had a chance to catch up on my reading.&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT face="Times New Roman" size=3&gt;You may have heard some rumors that you should only ever set MAXDOP (maximum degrees of parallelism) to an even number.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;I can neither confirm nor deny these rumors since I haven’t had time to test this yet myself.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;But I’m curious if any readers out there have definitive information one way or the other. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Evidently, there are two roles involved in parallel processing, a writer and a consumer.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Naturally, when two roles are at work, the MAXDOP setting doesn’t have to share resources when it is set in increments of two.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Hope this helps,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;-Kevin&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Reading a SQL Server mini-dump</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2007/11/26/reading-a-sql-server-mini-dump.aspx</link><pubDate>Tue, 27 Nov 2007 00:08:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:3525</guid><dc:creator>KKline</dc:creator><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;I was recently trying to diagnose some problems in one of my SQL Servers when I ran across a problem that I hadn't encountered before involving 'nonyielding worker threads'.&amp;nbsp; SQL Server also produced a dump for me to review.&amp;nbsp; Unfortunately, the dump didn't make a lot of sense to me.&amp;nbsp; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;If you encounter one of SQL Server's mini-dump files and want more information, you'll be happy to know that there's a lot of information on-line:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/sql/2005/diagandcorrecterrs.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/sql/2005/diagandcorrecterrs.mspx&lt;/A&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/sql/2005/diagandcorrecter"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;This URL is also a wealth of diagnostic and internals information that I recommend for any serious SQL Server professional. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;Enjoy!&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;-Kev&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;P.S. And check out the new CD by Paramore - best alt rock CD of the year IMO.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/sql/2005/diagandcorrecter"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>More Pages Reported Than Actually Exist in the Table</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2007/10/26/more-pages-reported-than-actually-exist-in-the-table.aspx</link><pubDate>Fri, 26 Oct 2007 13:38:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:3098</guid><dc:creator>KKline</dc:creator><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;A class="" title="Hugo's Blog" href="http://sqlblog.com/blogs/hugo_kornelis/"&gt;MVP Hugo Kornelius&lt;/A&gt; once reported that he encountered a situation in which it was possible to perform a table scan on more pages than actually existed in the heap table.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Hugo deduced that this was due to a phenomenon called “forwarding pointers”.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Why in the world would this ever happen?&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Real Paul Randall’s excellent blog at &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/sqlserverstorageengine/archive/2006/09/19/761437.aspx"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;http://blogs.msdn.com/sqlserverstorageengine/archive/2006/09/19/761437.aspx&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt; for a hint:&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;“Another drawback [of heaps] is that when scanning through the heap, forwarding records have to followed immediately (as opposed to ignoring them and just reading the forwarded records when they're encountered). This is to vastly reduce the possiblity of read anomalies (such as non-repeatable reads or missed rows if a row moves before the scan point during a scan).”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Evidently, SQL Server chooses some times when it’s appropriate to ignore forwarding pointers for a speed advantage when scanning the entire table.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;Interesting details, though minute, to be sure.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Enjoy,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face="Times New Roman" size=3&gt;-Kev&lt;/FONT&gt;&lt;/P&gt;</description></item></channel></rss>