<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: SQL Server Index Maintenance Performance Tuning for Large Tables</title>
	<atom:link href="http://www.sql-server-performance.com/2011/index-maintenance-performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/</link>
	<description>SQL Server Performance Tuning</description>
	<lastBuildDate>Fri, 17 May 2013 13:31:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: Luke Campbell</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-1316</link>
		<dc:creator>Luke Campbell</dc:creator>
		<pubDate>Thu, 09 Feb 2012 21:36:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-1316</guid>
		<description><![CDATA[Frank, I too ran into a similar issue.  We currently defrag smaller tables throughout the day based on the number of pages and level of fragmentation.  We had found it took longer to determine fragmentation than to actually reorganize or rebuild the indexes.  I ran across a post by Paul Randal that described how to create a wrapper function for sys.dm_db_index_physical_stats that can be used with cross apply.  So we now determine the page count of the indexes using sys.dm_db_partition_stats and then from there we cross apply to the wrapper function.  Its been working like a charm for about 6 months now and has dramatically reduced our maintenance time for these small indexes.  Check out the link below for more info.  Hope it helps!
http://www.sqlskills.com/blogs/paul/post/Indexes-From-Every-Angle-Using-CROSS-APPLY-with-sysdm_db_index_physical_stats.aspx]]></description>
		<content:encoded><![CDATA[<p>Frank, I too ran into a similar issue.  We currently defrag smaller tables throughout the day based on the number of pages and level of fragmentation.  We had found it took longer to determine fragmentation than to actually reorganize or rebuild the indexes.  I ran across a post by Paul Randal that described how to create a wrapper function for sys.dm_db_index_physical_stats that can be used with cross apply.  So we now determine the page count of the indexes using sys.dm_db_partition_stats and then from there we cross apply to the wrapper function.  Its been working like a charm for about 6 months now and has dramatically reduced our maintenance time for these small indexes.  Check out the link below for more info.  Hope it helps!</p>
<p><a href="http://www.sqlskills.com/blogs/paul/post/Indexes-From-Every-Angle-Using-CROSS-APPLY-with-sysdm_db_index_physical_stats.aspx" rel="nofollow">http://www.sqlskills.com/blogs/paul/post/Indexes-From-Every-Angle-Using-CROSS-APPLY-with-sysdm_db_index_physical_stats.aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Kalis</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-1226</link>
		<dc:creator>Frank Kalis</dc:creator>
		<pubDate>Mon, 16 Jan 2012 07:59:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-1226</guid>
		<description><![CDATA[
One thing that comes into mind, might be to look into partitioning to split such beasts into manageable units. Apart from this... I honestly don&#039;t know.  Sometimes I think SQL Server is more sensitive to outdated statistics than it is to fragmentation. We had several cases where updating statistics fixed time-outs on the client with fragmentation staying the same.
I think this is more of a black art than a science. :-)]]></description>
		<content:encoded><![CDATA[<p>One thing that comes into mind, might be to look into partitioning to split such beasts into manageable units. Apart from this&#8230; I honestly don&#8217;t know.  Sometimes I think SQL Server is more sensitive to outdated statistics than it is to fragmentation. We had several cases where updating statistics fixed time-outs on the client with fragmentation staying the same. </p>
<p>I think this is more of a black art than a science. <img src='http://www.sql-server-performance.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Regan</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-1220</link>
		<dc:creator>Regan</dc:creator>
		<pubDate>Fri, 13 Jan 2012 10:56:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-1220</guid>
		<description><![CDATA[Thanks for the article Frank - nice to see your approach on this.
We have got a similar, although slightly larger, issue to the 30 minute duration you talked about for the DMF - we have a 2 TB database, on a DL380 G6 (12 core) with 72 GB ram, where running the DMF in LIMITED mode takes 9h00+. SAMPLED was kiled after 26 hours, and DETAILEd - let&#039;s not even go there (36 hours +). Large amount of data load activity takes place on the server (it is a performance  data repository).
Given it is 2 TB in size, we don&#039;t just want to reindex it all, but we do note that performance degrades if maintenance fails.
Is there any other metric peristed, even if it is somewhat out-of-date by thr time we do maintenance on indexes, or do we have to activel;y ask SQL to find out the fragmentation of an index by reviewing the strucutre (i.e. either SHOWCONTIG or the DMF?)
I&#039;d like to avoid reindex 200 GB tables if they don&#039;t need it, but we can&#039;t afford 10 hours just to find out if we should do maintenance.]]></description>
		<content:encoded><![CDATA[<p>Thanks for the article Frank &#8211; nice to see your approach on this.</p>
<p>We have got a similar, although slightly larger, issue to the 30 minute duration you talked about for the DMF &#8211; we have a 2 TB database, on a DL380 G6 (12 core) with 72 GB ram, where running the DMF in LIMITED mode takes 9h00+. SAMPLED was kiled after 26 hours, and DETAILEd &#8211; let&#8217;s not even go there (36 hours +). Large amount of data load activity takes place on the server (it is a performance  data repository).</p>
<p>Given it is 2 TB in size, we don&#8217;t just want to reindex it all, but we do note that performance degrades if maintenance fails.</p>
<p>Is there any other metric peristed, even if it is somewhat out-of-date by thr time we do maintenance on indexes, or do we have to activel;y ask SQL to find out the fragmentation of an index by reviewing the strucutre (i.e. either SHOWCONTIG or the DMF?)</p>
<p>I&#8217;d like to avoid reindex 200 GB tables if they don&#8217;t need it, but we can&#8217;t afford 10 hours just to find out if we should do maintenance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ankit Singh</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-1117</link>
		<dc:creator>Ankit Singh</dc:creator>
		<pubDate>Sat, 24 Dec 2011 14:54:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-1117</guid>
		<description><![CDATA[This is one of the best answer so far, I  have read online.Just useful information. Very well presented. I had found another good collection of index in sql server over internet.
please check out this link...
http://mindstick.com/Articles/f7e21f40-d2f3-485a-b2aa-53093bac5ff7/?Index%20in%20SQL%20Server
Thanks]]></description>
		<content:encoded><![CDATA[<p>This is one of the best answer so far, I  have read online.Just useful information. Very well presented. I had found another good collection of index in sql server over internet.<br />
please check out this link&#8230;<br />
<a href="http://mindstick.com/Articles/f7e21f40-d2f3-485a-b2aa-53093bac5ff7/?Index%20in%20SQL%20Server" rel="nofollow">http://mindstick.com/Articles/f7e21f40-d2f3-485a-b2aa-53093bac5ff7/?Index%20in%20SQL%20Server</a></p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Kalis</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-918</link>
		<dc:creator>Frank Kalis</dc:creator>
		<pubDate>Tue, 29 Nov 2011 06:37:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-918</guid>
		<description><![CDATA[Do you have the link to that article?]]></description>
		<content:encoded><![CDATA[<p>Do you have the link to that article?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Kalis</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-575</link>
		<dc:creator>Frank Kalis</dc:creator>
		<pubDate>Thu, 01 Sep 2011 06:27:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-575</guid>
		<description><![CDATA[Hi Colin,
I&#039;m not sure I understand you fully. We had the idea of not bothering with detecting fragmentation on big tables at all, and go straight for a drop and (re)create, but never really investigated this much further when we implemented this. Since then, I thought about this as well and it is on my to-do list once we have reached our year-end change freeze. I guess that&#039;ll go into a follow-up article to this one.
How big are your tables? And how many rows are inserted or deleted on average daily?]]></description>
		<content:encoded><![CDATA[<p>Hi Colin,<br />
I&#8217;m not sure I understand you fully. We had the idea of not bothering with detecting fragmentation on big tables at all, and go straight for a drop and (re)create, but never really investigated this much further when we implemented this. Since then, I thought about this as well and it is on my to-do list once we have reached our year-end change freeze. I guess that&#8217;ll go into a follow-up article to this one.</p>
<p>How big are your tables? And how many rows are inserted or deleted on average daily?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Kalis</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-574</link>
		<dc:creator>Frank Kalis</dc:creator>
		<pubDate>Thu, 01 Sep 2011 06:16:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-574</guid>
		<description><![CDATA[Hi Willem,
determining the number of processors, that is &quot;cores&quot; is quite straightforward:
EXEC sys.xp_msver &#039;ProcessorCount&#039;
We dump this into a table variable and use it later on. This gives you a count of the cores on the machine that runs SQL Server, not a &quot;true&quot; processor count. I guess I wouldn&#039;t use this for licensing purposes. :-)]]></description>
		<content:encoded><![CDATA[<p>Hi Willem,</p>
<p>determining the number of processors, that is &#8220;cores&#8221; is quite straightforward: </p>
<p>EXEC sys.xp_msver &#8216;ProcessorCount&#8217;</p>
<p>We dump this into a table variable and use it later on. This gives you a count of the cores on the machine that runs SQL Server, not a &#8220;true&#8221; processor count. I guess I wouldn&#8217;t use this for licensing purposes. <img src='http://www.sql-server-performance.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Kalis</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-573</link>
		<dc:creator>Frank Kalis</dc:creator>
		<pubDate>Thu, 01 Sep 2011 06:11:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-573</guid>
		<description><![CDATA[Hi Matt,
I must confess, I haven&#039;t thought about running sys.dm_db_index_physical_stats as a separate step outside the maintenance window and then &quot;just&quot; pick-up that results during the maintenance window. I guess that&#039;ll give me food for thoughts now. Thanks!]]></description>
		<content:encoded><![CDATA[<p>Hi Matt,<br />
I must confess, I haven&#8217;t thought about running sys.dm_db_index_physical_stats as a separate step outside the maintenance window and then &#8220;just&#8221; pick-up that results during the maintenance window. I guess that&#8217;ll give me food for thoughts now. Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Kalis</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-572</link>
		<dc:creator>Frank Kalis</dc:creator>
		<pubDate>Thu, 01 Sep 2011 06:05:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-572</guid>
		<description><![CDATA[Hi Bob,
thanks for the heads up on this issue with filtered indexes. I can&#039;t wait to migrate that server to 2008 to try them and see whether they are useful for us or not.]]></description>
		<content:encoded><![CDATA[<p>Hi Bob,<br />
thanks for the heads up on this issue with filtered indexes. I can&#8217;t wait to migrate that server to 2008 to try them and see whether they are useful for us or not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LP</title>
		<link>http://www.sql-server-performance.com/2011/index-maintenance-performance/#comment-560</link>
		<dc:creator>LP</dc:creator>
		<pubDate>Thu, 25 Aug 2011 14:10:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.sql-server-performance.com/?=1947#comment-560</guid>
		<description><![CDATA[I believe this is how it can be accomplished.
CREATE INDEX index_name
ON schema.table_name ({index cols})
WITH (MAXDOP=4);
See http://msdn.microsoft.com/en-gb/library/ms189329.aspx]]></description>
		<content:encoded><![CDATA[<p>I believe this is how it can be accomplished.<br />
CREATE INDEX index_name<br />
ON schema.table_name ({index cols})<br />
WITH (MAXDOP=4);</p>
<p>See <a href="http://msdn.microsoft.com/en-gb/library/ms189329.aspx" rel="nofollow">http://msdn.microsoft.com/en-gb/library/ms189329.aspx</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
