<?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: Stop Worrying About SQL Server Fragmentation</title>
	<atom:link href="http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/</link>
	<description></description>
	<lastBuildDate>Tue, 18 Jun 2013 19:06:07 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: Brent Ozar</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-187900</link>
		<dc:creator>Brent Ozar</dc:creator>
		<pubDate>Thu, 07 Feb 2013 22:53:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-187900</guid>
		<description><![CDATA[Hmm - again, I haven&#039;t met a lot of SAN admins who spend time focusing on issues like that.  I think it&#039;s great that you do, and that&#039;s awesome.  You&#039;re the right kind of shop to focus on fragmentation.  However, that&#039;s not what I typically see out in the field.]]></description>
		<content:encoded><![CDATA[<p>Hmm &#8211; again, I haven&#8217;t met a lot of SAN admins who spend time focusing on issues like that.  I think it&#8217;s great that you do, and that&#8217;s awesome.  You&#8217;re the right kind of shop to focus on fragmentation.  However, that&#8217;s not what I typically see out in the field.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lonny Niederstadt</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-187885</link>
		<dc:creator>Lonny Niederstadt</dc:creator>
		<pubDate>Thu, 07 Feb 2013 22:46:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-187885</guid>
		<description><![CDATA[You are misunderstanding me slightly.  For someone to say, &quot;who cares if its sequential or not, its all random on the SAN&quot; is not true, disregards what SAN admins spend lots of time doing, and potentially makes more work for the SAN admins.  Please don&#039;t give people that message.]]></description>
		<content:encoded><![CDATA[<p>You are misunderstanding me slightly.  For someone to say, &#8220;who cares if its sequential or not, its all random on the SAN&#8221; is not true, disregards what SAN admins spend lots of time doing, and potentially makes more work for the SAN admins.  Please don&#8217;t give people that message.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brent Ozar</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-187775</link>
		<dc:creator>Brent Ozar</dc:creator>
		<pubDate>Thu, 07 Feb 2013 21:17:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-187775</guid>
		<description><![CDATA[Lonny - hmm, I think we&#039;re coming from different perspectives.  You write that &quot;SAN administrators spend lots of their time planning for, and correcting&quot; access so that random access becomes sequential access.  That hasn&#039;t been my experience, but it sounds like you work with a team of really good SAN admins who have the time to hone that kind of thing.  That&#039;s great, and I&#039;m glad that works well for you.

In my experience - which is just different from yours, not better or worse - is that most SAN admins are overworked, and perhaps a little bit underfunded/undertrained.  They don&#039;t have the time to figure out random vs sequential access on a shared pool of storage.  In that type of environment, buying RAM is a lot cheaper than hiring more SAN admins and sending them to training, and dedicating their time to managing random vs sequential access.

Sounds like you&#039;re in a great environment, though, and more power to you!  Enjoy, and thanks for the comment.]]></description>
		<content:encoded><![CDATA[<p>Lonny &#8211; hmm, I think we&#8217;re coming from different perspectives.  You write that &#8220;SAN administrators spend lots of their time planning for, and correcting&#8221; access so that random access becomes sequential access.  That hasn&#8217;t been my experience, but it sounds like you work with a team of really good SAN admins who have the time to hone that kind of thing.  That&#8217;s great, and I&#8217;m glad that works well for you.</p>
<p>In my experience &#8211; which is just different from yours, not better or worse &#8211; is that most SAN admins are overworked, and perhaps a little bit underfunded/undertrained.  They don&#8217;t have the time to figure out random vs sequential access on a shared pool of storage.  In that type of environment, buying RAM is a lot cheaper than hiring more SAN admins and sending them to training, and dedicating their time to managing random vs sequential access.</p>
<p>Sounds like you&#8217;re in a great environment, though, and more power to you!  Enjoy, and thanks for the comment.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lonny Niederstadt</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-187542</link>
		<dc:creator>Lonny Niederstadt</dc:creator>
		<pubDate>Thu, 07 Feb 2013 17:54:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-187542</guid>
		<description><![CDATA[Brent - you do such a good job steering people away from myths, that when you give advice with hidden gotchas I feel compelled to speak up.  In your post you said &quot;Cache it and be done with it – 384GB of memory is just $5-$6k.&quot;
Be careful trying to cache a database working set in SQL Server.  Do NOT rely on the performance of an in-memory working set, unless all the factors of keeping the working set cached have been accounted for.  With 384 GB, on a four NUMA node server, you aren&#039;t guaranteed to keep even a 30 GB database working set in cache.   
To keep working set of 30GB of database blocks in database cache reliably, across SQL Server restarts and regardless of how tasks are distributed across the four NUMA nodes, you&#039;d need 400 GB + (buffer cache tempdb load) for max server memory.  Big it up for OS memory, worker thread memory, other applications, etc, to get the full amount of server RAM.
I haven&#039;t seen the task scheduling and NUMA node considerations for working set caching in SQL Server together in one place, so I made the first post in my new blog about it.  I don&#039;t think too many people will read my blog (it takes me forever to write anything and I don&#039;t have too much to add to the encyclopedia), but if I can put out a few things that work their way around among the really knowledgeable folks, I&#039;ll have accomplished what I&#039;m after :)
http://sqlsasquatch.blogspot.com/2013/02/sql-server-cache-database-working-set.html]]></description>
		<content:encoded><![CDATA[<p>Brent &#8211; you do such a good job steering people away from myths, that when you give advice with hidden gotchas I feel compelled to speak up.  In your post you said &#8220;Cache it and be done with it – 384GB of memory is just $5-$6k.&#8221;<br />
Be careful trying to cache a database working set in SQL Server.  Do NOT rely on the performance of an in-memory working set, unless all the factors of keeping the working set cached have been accounted for.  With 384 GB, on a four NUMA node server, you aren&#8217;t guaranteed to keep even a 30 GB database working set in cache.<br />
To keep working set of 30GB of database blocks in database cache reliably, across SQL Server restarts and regardless of how tasks are distributed across the four NUMA nodes, you&#8217;d need 400 GB + (buffer cache tempdb load) for max server memory.  Big it up for OS memory, worker thread memory, other applications, etc, to get the full amount of server RAM.<br />
I haven&#8217;t seen the task scheduling and NUMA node considerations for working set caching in SQL Server together in one place, so I made the first post in my new blog about it.  I don&#8217;t think too many people will read my blog (it takes me forever to write anything and I don&#8217;t have too much to add to the encyclopedia), but if I can put out a few things that work their way around among the really knowledgeable folks, I&#8217;ll have accomplished what I&#8217;m after <img src='http://cdn.prod.brentozar.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<a href="http://sqlsasquatch.blogspot.com/2013/02/sql-server-cache-database-working-set.html" rel="nofollow">http://sqlsasquatch.blogspot.com/2013/02/sql-server-cache-database-working-set.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lonny Niederstadt</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-187493</link>
		<dc:creator>Lonny Niederstadt</dc:creator>
		<pubDate>Thu, 07 Feb 2013 16:37:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-187493</guid>
		<description><![CDATA[Saying that sequential access is all basically random anyway - that completely disregards what SAN administrators spend lots of their time planning for, and correcting.  You probably won&#039;t win many over that way :)
The basic issue: even when the stripe unit per disk shrinks, truly random access to that disk for the next read incurs an average of half the maximum disk head seek time for the disk.  Performance disks spin at 15k rpm (or 10k).  But the heads move more slowly.  So go ahead and switch from disk to disk fast.  But incur as little head movement as possible.  That&#039;s why its STILL a bad idea to put two or more heavy write, heavy growth, heavy read database files on a single LUN (with the exception of SSD, although I don&#039;t recommend it there either).  The sequential activity at two different points in disk geometry introduces a particular type of head thrashing that Microsoft calls &quot;IO weaving&quot;.  The disk head weaves from the location for one sequential read track to the location for the other sequential read track - on each and every disk that the data is striped over.  In cases of IO weaving, sequential access performance can be WORSE than random read access, depending on the distance the head must travel between the two sequential read locations.  NetApp and ZFS are slightly less vulnerable to IO weaving than &quot;update in place&quot; storage.  But IO weaving results in trouble for them, too.
I like NetApp (and ZFS), although my heart will always be with Hitachi storage.  NetApp plays by its own rules (in comparison to other storage players like IBM, HP, EMC, and Hitachi), due to the ONTAP WAFL shadow paging filesystem.  But the read cache accelerator cards (they used to call them PAM) still benefit greatly from contiguity of access across the disks.  Although there is a conceptual 4k stripe unit, writes occur in 64k chunks per disk.  Its an under-the-covers optimization.  Here&#039;s how it works: if you have 16+2 in a RAID DP group (I don&#039;t recommend this, its for ease of illustration only) a 64k database extent will span the raid group.  But that&#039;s NOT how it gets written to the disks.  It goes to an NVRAM card first (and mirrored to another NVRAM card in the paired controller) and is burst from NVRAM to disk when NVRAM reaches its write pending threshold, or the timer goes off.  In NVRAM the writes are coalesced.  Assume that an index rebuild in a single database file database is the only current activity.  if 16 extents are written to the database file, the extents are sorted in NVRAM.  Eighteen 64k writes will take place.  Each 64k write is made up of 16 4k theoretical stripe units.  If you take the parity stripe units out of the mental picture, each write would have 4k of each of the 16 database extents.  Compact.  Compact especially for the inode maintenance that has to take place for the WAFL &quot;redirect on write&quot; to present a coherent file.  The more fragmentation in the files presented from WAFL, the more inode updates have to take place.
VMAX virtual pools use 768k extent sizes.  12 Symmetrix tracks of 64k each.  The 768k extent size is the minimal size for promotion in the Symmetrix auto tiering.  If there isn&#039;t a good amount of contiguity of database contents, autotiering will be inefficient.  
On the CLARiiON/VNX systems, the main consideration is what flavor the LUNs are.  They could be traditional LUNs, virtual pool LUNs, or thin provisioned virtual pool LUNs.  The rules for optimizing database performance on each are slightly different.  But in no case can one simply expect the sequential reads to be randomized and always achieve the benefits of sequential IO.   This is a good source for VNX implementation details.
http://virtualeverything.wordpress.com/2011/03/05/emc-storage-pool-deep-dive-design-considerations-caveats/
Note what Vijay, the blog author says about thin provisioned LUNs:
&quot;Utilizing Thin LUNs introduces a whole new level of considerations as it does not pre-allocate the 1GB slices, but rather writes in 8K extents. This can cause even more unpredictable behavior under the circumstances outlined above, but that should be something to be aware of when using Thin provisioning in general.&quot;
Thin LUNs do become more highly distributed and less sequential at the 8k level.  I do NOT recommend using thin LUNs for a performance oriented database unless the majority of access is 8k random.  Even then, if it grows considerably and the underlying disks are shared, the disk head movement when thin LUN contents from other applications are interleaved can be a performance killer.]]></description>
		<content:encoded><![CDATA[<p>Saying that sequential access is all basically random anyway &#8211; that completely disregards what SAN administrators spend lots of their time planning for, and correcting.  You probably won&#8217;t win many over that way <img src='http://cdn.prod.brentozar.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
The basic issue: even when the stripe unit per disk shrinks, truly random access to that disk for the next read incurs an average of half the maximum disk head seek time for the disk.  Performance disks spin at 15k rpm (or 10k).  But the heads move more slowly.  So go ahead and switch from disk to disk fast.  But incur as little head movement as possible.  That&#8217;s why its STILL a bad idea to put two or more heavy write, heavy growth, heavy read database files on a single LUN (with the exception of SSD, although I don&#8217;t recommend it there either).  The sequential activity at two different points in disk geometry introduces a particular type of head thrashing that Microsoft calls &#8220;IO weaving&#8221;.  The disk head weaves from the location for one sequential read track to the location for the other sequential read track &#8211; on each and every disk that the data is striped over.  In cases of IO weaving, sequential access performance can be WORSE than random read access, depending on the distance the head must travel between the two sequential read locations.  NetApp and ZFS are slightly less vulnerable to IO weaving than &#8220;update in place&#8221; storage.  But IO weaving results in trouble for them, too.<br />
I like NetApp (and ZFS), although my heart will always be with Hitachi storage.  NetApp plays by its own rules (in comparison to other storage players like IBM, HP, EMC, and Hitachi), due to the ONTAP WAFL shadow paging filesystem.  But the read cache accelerator cards (they used to call them PAM) still benefit greatly from contiguity of access across the disks.  Although there is a conceptual 4k stripe unit, writes occur in 64k chunks per disk.  Its an under-the-covers optimization.  Here&#8217;s how it works: if you have 16+2 in a RAID DP group (I don&#8217;t recommend this, its for ease of illustration only) a 64k database extent will span the raid group.  But that&#8217;s NOT how it gets written to the disks.  It goes to an NVRAM card first (and mirrored to another NVRAM card in the paired controller) and is burst from NVRAM to disk when NVRAM reaches its write pending threshold, or the timer goes off.  In NVRAM the writes are coalesced.  Assume that an index rebuild in a single database file database is the only current activity.  if 16 extents are written to the database file, the extents are sorted in NVRAM.  Eighteen 64k writes will take place.  Each 64k write is made up of 16 4k theoretical stripe units.  If you take the parity stripe units out of the mental picture, each write would have 4k of each of the 16 database extents.  Compact.  Compact especially for the inode maintenance that has to take place for the WAFL &#8220;redirect on write&#8221; to present a coherent file.  The more fragmentation in the files presented from WAFL, the more inode updates have to take place.<br />
VMAX virtual pools use 768k extent sizes.  12 Symmetrix tracks of 64k each.  The 768k extent size is the minimal size for promotion in the Symmetrix auto tiering.  If there isn&#8217;t a good amount of contiguity of database contents, autotiering will be inefficient.<br />
On the CLARiiON/VNX systems, the main consideration is what flavor the LUNs are.  They could be traditional LUNs, virtual pool LUNs, or thin provisioned virtual pool LUNs.  The rules for optimizing database performance on each are slightly different.  But in no case can one simply expect the sequential reads to be randomized and always achieve the benefits of sequential IO.   This is a good source for VNX implementation details.<br />
<a href="http://virtualeverything.wordpress.com/2011/03/05/emc-storage-pool-deep-dive-design-considerations-caveats/" rel="nofollow">http://virtualeverything.wordpress.com/2011/03/05/emc-storage-pool-deep-dive-design-considerations-caveats/</a><br />
Note what Vijay, the blog author says about thin provisioned LUNs:<br />
&#8220;Utilizing Thin LUNs introduces a whole new level of considerations as it does not pre-allocate the 1GB slices, but rather writes in 8K extents. This can cause even more unpredictable behavior under the circumstances outlined above, but that should be something to be aware of when using Thin provisioning in general.&#8221;<br />
Thin LUNs do become more highly distributed and less sequential at the 8k level.  I do NOT recommend using thin LUNs for a performance oriented database unless the majority of access is 8k random.  Even then, if it grows considerably and the underlying disks are shared, the disk head movement when thin LUN contents from other applications are interleaved can be a performance killer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brent Ozar</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-187423</link>
		<dc:creator>Brent Ozar</dc:creator>
		<pubDate>Thu, 07 Feb 2013 14:16:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-187423</guid>
		<description><![CDATA[Lonny - have you noticed the stripe sizes on newer EMC SANs? I haven&#039;t seen the VNX doing stripes that large, for example. NetApp is another example - it&#039;s 4k.]]></description>
		<content:encoded><![CDATA[<p>Lonny &#8211; have you noticed the stripe sizes on newer EMC SANs? I haven&#8217;t seen the VNX doing stripes that large, for example. NetApp is another example &#8211; it&#8217;s 4k.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lonny Niederstadt</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-186907</link>
		<dc:creator>Lonny Niederstadt</dc:creator>
		<pubDate>Thu, 07 Feb 2013 03:27:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-186907</guid>
		<description><![CDATA[I agree that index fragmentation may not deserve as much attention as it sometimes gets.  Improved query elapsed time after rebuilding indexes may be from the defragmentation, but may more likely be due to updated stats or the subsequent recompile of query plans dependent on those stats.
However, its simply not true that the SAN is performing random hard drive reads to retrieve data that the database and filesystem consider sequential.  Consider the stripe unit size per hard disk up through at least the EMC Symmetrix DMX4 - 960k.  That&#039;s 15 consecutive 64k database extents in one disk stripe unit.  There are efficiencies in retrieving as much data as possible in as few transfers as possible.  There&#039;s also less chance of being punished for QFULL or scsi_busy conditions.
SQL server does a good job with readahead, coalescing contiguous extent retrievals into reads of up to 512k (I&#039;ve heard rumors of more) and warming the database buffer cache before the query processing threads get there. So query elapsed time might not suffer from suboptimal IO (as long as QFULL conditions aren&#039;t incurred). But the SAN admin will notice if the system is busy enough.  And other tenants of the SAN could notice as well.  
On SSDs, the benefits of contiguity only really extend to the per drive stripe unit size, because each stripe unit is randomly placed within the drive regardless of its positioning within the filesystem or database.  There is still a benefit in retrieving as few stripe units as possible - less of a chance of saturation between the storage controller and the disks.
On a very busy SQL server, reasonably defragged large high use indexes and possibly the -E adjustment of proportional fill can make io performance more consistent for SQL server, and make SQL Server a better neighbor.]]></description>
		<content:encoded><![CDATA[<p>I agree that index fragmentation may not deserve as much attention as it sometimes gets.  Improved query elapsed time after rebuilding indexes may be from the defragmentation, but may more likely be due to updated stats or the subsequent recompile of query plans dependent on those stats.<br />
However, its simply not true that the SAN is performing random hard drive reads to retrieve data that the database and filesystem consider sequential.  Consider the stripe unit size per hard disk up through at least the EMC Symmetrix DMX4 &#8211; 960k.  That&#8217;s 15 consecutive 64k database extents in one disk stripe unit.  There are efficiencies in retrieving as much data as possible in as few transfers as possible.  There&#8217;s also less chance of being punished for QFULL or scsi_busy conditions.<br />
SQL server does a good job with readahead, coalescing contiguous extent retrievals into reads of up to 512k (I&#8217;ve heard rumors of more) and warming the database buffer cache before the query processing threads get there. So query elapsed time might not suffer from suboptimal IO (as long as QFULL conditions aren&#8217;t incurred). But the SAN admin will notice if the system is busy enough.  And other tenants of the SAN could notice as well.<br />
On SSDs, the benefits of contiguity only really extend to the per drive stripe unit size, because each stripe unit is randomly placed within the drive regardless of its positioning within the filesystem or database.  There is still a benefit in retrieving as few stripe units as possible &#8211; less of a chance of saturation between the storage controller and the disks.<br />
On a very busy SQL server, reasonably defragged large high use indexes and possibly the -E adjustment of proportional fill can make io performance more consistent for SQL server, and make SQL Server a better neighbor.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brent Ozar</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-87002</link>
		<dc:creator>Brent Ozar</dc:creator>
		<pubDate>Tue, 27 Nov 2012 14:24:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-87002</guid>
		<description><![CDATA[Mark - that&#039;s great to hear that you&#039;re able to work with a 1TB database with 1.5GB memory for the server.  Sounds like you&#039;ve found a solution that works well for you.  Have you blogged about your database setup?  I&#039;m sure a lot of readers would love to hear more about that. Thanks!]]></description>
		<content:encoded><![CDATA[<p>Mark &#8211; that&#8217;s great to hear that you&#8217;re able to work with a 1TB database with 1.5GB memory for the server.  Sounds like you&#8217;ve found a solution that works well for you.  Have you blogged about your database setup?  I&#8217;m sure a lot of readers would love to hear more about that. Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Jones</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-86999</link>
		<dc:creator>Mark Jones</dc:creator>
		<pubDate>Tue, 27 Nov 2012 14:22:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-86999</guid>
		<description><![CDATA[Hilarious, loved the point about 384GB ONLY costing $5-6K.  

And what about when your DB is closer to 1TB on disk and still working really well (sub second queries) with only 1.5GB of RAM for the server?  Oh yea, we call that MySQL with INNODB Tables.

In a cloud environment where you paying monthly for for RAM, it makes sense to NOT use databases that are as badly broken as MSSQL is.  And a MySQL defrag? haven&#039;t needed/done one in 5 years even though we add and purge 1 million entities/day (which is more than 1 million rows/day considering the multiple tables and joins).]]></description>
		<content:encoded><![CDATA[<p>Hilarious, loved the point about 384GB ONLY costing $5-6K.  </p>
<p>And what about when your DB is closer to 1TB on disk and still working really well (sub second queries) with only 1.5GB of RAM for the server?  Oh yea, we call that MySQL with INNODB Tables.</p>
<p>In a cloud environment where you paying monthly for for RAM, it makes sense to NOT use databases that are as badly broken as MSSQL is.  And a MySQL defrag? haven&#8217;t needed/done one in 5 years even though we add and purge 1 million entities/day (which is more than 1 million rows/day considering the multiple tables and joins).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Weaver</title>
		<link>http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/#comment-52320</link>
		<dc:creator>Tom Weaver</dc:creator>
		<pubDate>Tue, 23 Oct 2012 12:40:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=15245#comment-52320</guid>
		<description><![CDATA[On that note... I still prefer Kendra Little&#039;s art! Though each of us has our own talents :)]]></description>
		<content:encoded><![CDATA[<p>On that note&#8230; I still prefer Kendra Little&#8217;s art! Though each of us has our own talents <img src='http://cdn.prod.brentozar.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching using memcached
Object Caching 356/358 objects using memcached
Content Delivery Network via Amazon Web Services: S3: cdn.prod.brentozar.com
Application Monitoring using New Relic

 Served from: www.brentozar.com @ 2013-06-18 20:32:48 by W3 Total Cache -->