<?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 'Tips', 'Internals', and 'Performance'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=Tips,Internals,Performance&amp;orTags=0</link><description>Search results matching tags 'Tips', 'Internals', and 'Performance'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><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>The Perils of Hyperthreading for SQL Server</title><link>http://sqlblog.com/blogs/kevin_kline/archive/2007/08/18/the-perils-of-hyperthreading-for-sql-server.aspx</link><pubDate>Sat, 18 Aug 2007 20:47:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:2235</guid><dc:creator>KKline</dc:creator><description>&lt;FONT size=2&gt;
&lt;P&gt;Just a quick note to send a big Thank You to Christoph Stotz of Frankfurt, Germany for his hospitality on Sunday.&amp;nbsp; Thank you, Christoph!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Slava Oks has a rather well-known blog entry about how hyperthreading can negatively impact the performance of a SQL Server 2000 instance: &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/slavao/archive/2005/11/12/492119.aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;http://blogs.msdn.com/slavao/archive/2005/11/12/492119.aspx&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;.&lt;/P&gt;
&lt;P&gt;You might be wondering if those recommendations still hold true on SQL Server 2005?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Well, I have it on good authority (SQL Server MVP Geoff Hiten, FYI) that hyperthreading is still misbehaving on SQL Server 2005.&amp;nbsp; Evidently, hyperthreading looks like a multi-core system to SQL Server 2005 thus triggering some "soft NUMA" behavior.&amp;nbsp; As Geoff says, &lt;/P&gt;
&lt;P&gt;"The real problem&amp;nbsp;comes in the synchronization primitives that aren't hyperthreaded friendly (such as spinlock code). SQL 2000 had a bug that was fixed in build 910 that&amp;nbsp;dealt with this issue. This bug was re-introduced in SQL 2005 when&amp;nbsp;they changed the memory and scheduler to handle multi-core processors&amp;nbsp;and NUMA architectures. So, in short, I would turn off HT on SQL 2005&amp;nbsp;host computers as the default. As always, your mileage may vary."&lt;/P&gt;
&lt;P&gt;Great advice, Geoff!&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;-Kevin&lt;/P&gt;&lt;/FONT&gt;</description></item></channel></rss>