<?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: Using Multiple Key Caches for MyISAM Scalability</title>
	<atom:link href="http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/</link>
	<description>Percona&#039;s MySQL &#38; InnoDB performance and scalability blog</description>
	<lastBuildDate>Sat, 11 Feb 2012 16:45:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Allen D.</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-768419</link>
		<dc:creator>Allen D.</dc:creator>
		<pubDate>Sun, 04 Jul 2010 02:38:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-768419</guid>
		<description>Ted:

I would agree with Peter.  We do not have anything CPU-bound rather all concurrency and IO.  The posture of the servers in question is 90% writes and NO deletes.  Reads are filled by memcacxhe with the DB as backup if the cache for a record has expired.  Without the key cahces performance is abysimal! In our scenario, having the right indexes (read primary and a unique key only)  and memory allocated to each key cache helps concurrency a ton.</description>
		<content:encoded><![CDATA[<p>Ted:</p>
<p>I would agree with Peter.  We do not have anything CPU-bound rather all concurrency and IO.  The posture of the servers in question is 90% writes and NO deletes.  Reads are filled by memcacxhe with the DB as backup if the cache for a record has expired.  Without the key cahces performance is abysimal! In our scenario, having the right indexes (read primary and a unique key only)  and memory allocated to each key cache helps concurrency a ton.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-768276</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Thu, 01 Jul 2010 23:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-768276</guid>
		<description>Ted,

It did not work for you but it works in a lot of other cases.  CPU bound load does not mean it it bottleneck on the key cache mutex.

Also note there is another solution in the meanwhile. MariaDB has got fix to the key cache splitting this mutex to several hashes. You may want to try that.</description>
		<content:encoded><![CDATA[<p>Ted,</p>
<p>It did not work for you but it works in a lot of other cases.  CPU bound load does not mean it it bottleneck on the key cache mutex.</p>
<p>Also note there is another solution in the meanwhile. MariaDB has got fix to the key cache splitting this mutex to several hashes. You may want to try that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ted Osadchuk</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-768258</link>
		<dc:creator>Ted Osadchuk</dc:creator>
		<pubDate>Thu, 01 Jul 2010 18:26:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-768258</guid>
		<description>I experimented with separate key caches on a very busy instance and cpu intensive queries and did not see ANY improvement using separate key caches

This is yet another tuning knob that&#039;s completely useless!</description>
		<content:encoded><![CDATA[<p>I experimented with separate key caches on a very busy instance and cpu intensive queries and did not see ANY improvement using separate key caches</p>
<p>This is yet another tuning knob that&#8217;s completely useless!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Allen D.</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-756297</link>
		<dc:creator>Allen D.</dc:creator>
		<pubDate>Fri, 30 Apr 2010 03:33:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-756297</guid>
		<description>Hi, Peter:

First off, your blog is an AWESOME resource and I want to thank you for it.  I have found the intel contained herein of great value. 

I just wanted to post and confirm that smart use of multiple key caches for MyISAM tables can *dramatically* increase performance in high write applications where you have very little reads (think master tables).  The MySQL documentation is not quite as informative as I think it should be for this feature - they suggest creating 3 key caches without really talking about the flexibility you can have. While the MySQL docuementation appraoch may help some you can definitely squeeze more performance with N key caches as you describe.  

We have a very high-write environment that uses MyISAM for a number of reason (too much history to go into).  Before tinkering with multiple key caches I was able to only get 6k - 7k QPS (really all writes).  This was not utilizing the full capacity of the hardware we were running this particular master on.  We took the time to examine and segment the tables that were candidates for giving their own key cache too.  Our approach was not one cache per table but one per group of tables that are typically updated together by a single process. We choose this route really for manageability (we have a large warehouse with lots of daily tables).  We were able to size key caches easily based on index sizes and we now routinely see 15k-20k QPS now! I have seen it go as high as 40k with the current configuration.  The good news is the more ram and processor you can throw at your writes, the further you can segment your key caches.  Obviously there will be upper bounds but we haven&#039;t even come close to hammering them yet.

As Peter suggests, take time and look at your operational posture and your index sizes and you will be shocked at how much more you can get out of MyISAM.  It does not solve all the locking contention but if you have good table designs for your operational posture MyISAM can fly.</description>
		<content:encoded><![CDATA[<p>Hi, Peter:</p>
<p>First off, your blog is an AWESOME resource and I want to thank you for it.  I have found the intel contained herein of great value. </p>
<p>I just wanted to post and confirm that smart use of multiple key caches for MyISAM tables can *dramatically* increase performance in high write applications where you have very little reads (think master tables).  The MySQL documentation is not quite as informative as I think it should be for this feature &#8211; they suggest creating 3 key caches without really talking about the flexibility you can have. While the MySQL docuementation appraoch may help some you can definitely squeeze more performance with N key caches as you describe.  </p>
<p>We have a very high-write environment that uses MyISAM for a number of reason (too much history to go into).  Before tinkering with multiple key caches I was able to only get 6k &#8211; 7k QPS (really all writes).  This was not utilizing the full capacity of the hardware we were running this particular master on.  We took the time to examine and segment the tables that were candidates for giving their own key cache too.  Our approach was not one cache per table but one per group of tables that are typically updated together by a single process. We choose this route really for manageability (we have a large warehouse with lots of daily tables).  We were able to size key caches easily based on index sizes and we now routinely see 15k-20k QPS now! I have seen it go as high as 40k with the current configuration.  The good news is the more ram and processor you can throw at your writes, the further you can segment your key caches.  Obviously there will be upper bounds but we haven&#8217;t even come close to hammering them yet.</p>
<p>As Peter suggests, take time and look at your operational posture and your index sizes and you will be shocked at how much more you can get out of MyISAM.  It does not solve all the locking contention but if you have good table designs for your operational posture MyISAM can fly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Dzilvelis</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-501408</link>
		<dc:creator>John Dzilvelis</dc:creator>
		<pubDate>Tue, 10 Mar 2009 17:36:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-501408</guid>
		<description>To view the usage of the individual key buffers, I use &quot;mysqladmin debug&quot; and then view the error log.</description>
		<content:encoded><![CDATA[<p>To view the usage of the individual key buffers, I use &#8220;mysqladmin debug&#8221; and then view the error log.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Abhishek</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-482191</link>
		<dc:creator>Abhishek</dc:creator>
		<pubDate>Thu, 19 Feb 2009 10:29:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-482191</guid>
		<description>Hi Peter, 

How can we monitor performance of multiple key caches, like for monitoring global key cache we use &quot;show status like &#039;key_read%&#039;; &quot; but how i can see same information for new created key cache.</description>
		<content:encoded><![CDATA[<p>Hi Peter, </p>
<p>How can we monitor performance of multiple key caches, like for monitoring global key cache we use &#8220;show status like &#8216;key_read%&#8217;; &#8221; but how i can see same information for new created key cache.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-477673</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Sun, 15 Feb 2009 06:29:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-477673</guid>
		<description>Thomas,

It is hard to explain all the cases when one or another problem may be affecting you.  I try best I can when possible.  You are also always welcome to hire us to help you to understand what problem you&#039;re really running into.</description>
		<content:encoded><![CDATA[<p>Thomas,</p>
<p>It is hard to explain all the cases when one or another problem may be affecting you.  I try best I can when possible.  You are also always welcome to hire us to help you to understand what problem you&#8217;re really running into.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas B.</title>
		<link>http://www.mysqlperformanceblog.com/2008/11/26/using-multiple-key-caches-for-myisam-scalability/comment-page-1/#comment-475174</link>
		<dc:creator>Thomas B.</dc:creator>
		<pubDate>Fri, 13 Feb 2009 13:30:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=544#comment-475174</guid>
		<description>Hi peter,

thank you very much for all your valuable tips! I did not even think the KeyCache could be a problem.

But I wonder how to find out if I am hit by this problem or not. Does &quot;For CPU bound workload&quot; mean that I should have a look at this if the CPU usage on my database server is high?

Maybe it would make the articles even more useful if they started with &quot;You should look at this if you have this problem: ...&quot;.

Best Regards

Thomas B.</description>
		<content:encoded><![CDATA[<p>Hi peter,</p>
<p>thank you very much for all your valuable tips! I did not even think the KeyCache could be a problem.</p>
<p>But I wonder how to find out if I am hit by this problem or not. Does &#8220;For CPU bound workload&#8221; mean that I should have a look at this if the CPU usage on my database server is high?</p>
<p>Maybe it would make the articles even more useful if they started with &#8220;You should look at this if you have this problem: &#8230;&#8221;.</p>
<p>Best Regards</p>
<p>Thomas B.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

