<?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: The innodb_plugin &#8211; a pleasant surprise!</title>
	<atom:link href="http://blog.wl0.org/2010/03/the-innodb_plugin-a-pleasant-surprise/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.wl0.org/2010/03/the-innodb_plugin-a-pleasant-surprise/</link>
	<description>Random thoughts on different topics</description>
	<lastBuildDate>Fri, 27 Jan 2012 06:02:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Simon Mudd</title>
		<link>http://blog.wl0.org/2010/03/the-innodb_plugin-a-pleasant-surprise/comment-page-1/#comment-1796</link>
		<dc:creator>Simon Mudd</dc:creator>
		<pubDate>Thu, 04 Mar 2010 13:48:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.wl0.org/2010/03/the-innodb_plugin-a-pleasant-surprise/#comment-1796</guid>
		<description>Hi Mark,

To be fair the article I&#039;ve written are preliminary findings. However, that said I had a problem which the current hardware could not solve. It could not solve it because the problem was not in the hardware but was software (mysqld) related.

Just to re-iterate I&#039;m using a tool (Merlin) which collects performance data from many other database servers pretty much continuously during the day. This information can then be used to see graphs, or to trigger alerts about problematic behaviour. To avoid the disk filling up on the database where this information is stored there is a separate process which removes &lt;em&gt;old&lt;/em&gt; data.  That application is written by the MySQL developers.

However, in the environment where I run merlin, and with the number of servers that I&#039;m monitoring, the database server was really coming under load. So much so that the &lt;em&gt;purge&lt;/em&gt; process which deleted old data could not delete it quickly enough: too much new data was being inserted.

On the original db hardware I looked at the I/O statistics and saw that the disk subsystem was sustaining over 300 I/Os per second, and basically was saturated.

So as I had a spare box available, which was much bigger and had these Fusion IO solid state disks, I thought I could &lt;em&gt;temporarily&lt;/em&gt; solve the problem by throwing hardware at it. The server has 48GB of RAM and the Fusion IO card so on this hardware the problem would just go away...

However, I was completely wrong. The box was much faster but the 2 &lt;em&gt;competing sets of threads&lt;/em&gt; were still causing problems: The purge thread was still unable to DELETE data quickly enough.

Looking on comments such as this http://www.mysqlperformanceblog.com/2010/02/25/index-lock-and-adaptive-search-next-two-biggest-innodb-problems/ gave me the hint. I was hitting the same problem. I knew this as the Fusion IO card was not running flat out and also the CPUs were mainly idle.

So at the suggestion of the merlin developers I simply tried the plugin. I had nothing to lose as the database as it was was going to fill up the disk, unless I did something drastic like TRUNCATE TABLE. Not helpful for looking at graphs.

The results as I explained were quite clear. I made the alterations shown and watched to see what would happen.  The IO rate increased significantly and the &quot;purge&quot; thread that previously had been having problems started to catch up and was eventually able to delete the old data as fast as new data was being inserted.

In the meantime use of the merlin front-end has continued to work fine.

So no this is not 100% scientific, but _I_ am convinced that the plugin works and I have seen the benefit it made to me. It may well be possible to improve performance some more but right now that is not my concern as performance is sufficient and I have other more pressing things to look at.

You say that it&#039;s hard to test things but I&#039;d certainly suggest, if you can do this in your environment, that you clone your database as a slave. Doing so allows you to put a read load (SELECT only) on to it and if you have tools to do this you can stress the box until it [nearly] breaks. It&#039;s harder to stress the writes, unless you have tools to simulate that, but the SELECT load test gives you a good idea.

I hope that explains what I did and why I&#039;m convinced that the plugin worked for me.</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>To be fair the article I&#8217;ve written are preliminary findings. However, that said I had a problem which the current hardware could not solve. It could not solve it because the problem was not in the hardware but was software (mysqld) related.</p>
<p>Just to re-iterate I&#8217;m using a tool (Merlin) which collects performance data from many other database servers pretty much continuously during the day. This information can then be used to see graphs, or to trigger alerts about problematic behaviour. To avoid the disk filling up on the database where this information is stored there is a separate process which removes <em>old</em> data.  That application is written by the MySQL developers.</p>
<p>However, in the environment where I run merlin, and with the number of servers that I&#8217;m monitoring, the database server was really coming under load. So much so that the <em>purge</em> process which deleted old data could not delete it quickly enough: too much new data was being inserted.</p>
<p>On the original db hardware I looked at the I/O statistics and saw that the disk subsystem was sustaining over 300 I/Os per second, and basically was saturated.</p>
<p>So as I had a spare box available, which was much bigger and had these Fusion IO solid state disks, I thought I could <em>temporarily</em> solve the problem by throwing hardware at it. The server has 48GB of RAM and the Fusion IO card so on this hardware the problem would just go away&#8230;</p>
<p>However, I was completely wrong. The box was much faster but the 2 <em>competing sets of threads</em> were still causing problems: The purge thread was still unable to DELETE data quickly enough.</p>
<p>Looking on comments such as this <a href="http://www.mysqlperformanceblog.com/2010/02/25/index-lock-and-adaptive-search-next-two-biggest-innodb-problems/" rel="nofollow">http://www.mysqlperformanceblog.com/2010/02/25/index-lock-and-adaptive-search-next-two-biggest-innodb-problems/</a> gave me the hint. I was hitting the same problem. I knew this as the Fusion IO card was not running flat out and also the CPUs were mainly idle.</p>
<p>So at the suggestion of the merlin developers I simply tried the plugin. I had nothing to lose as the database as it was was going to fill up the disk, unless I did something drastic like TRUNCATE TABLE. Not helpful for looking at graphs.</p>
<p>The results as I explained were quite clear. I made the alterations shown and watched to see what would happen.  The IO rate increased significantly and the &#8220;purge&#8221; thread that previously had been having problems started to catch up and was eventually able to delete the old data as fast as new data was being inserted.</p>
<p>In the meantime use of the merlin front-end has continued to work fine.</p>
<p>So no this is not 100% scientific, but _I_ am convinced that the plugin works and I have seen the benefit it made to me. It may well be possible to improve performance some more but right now that is not my concern as performance is sufficient and I have other more pressing things to look at.</p>
<p>You say that it&#8217;s hard to test things but I&#8217;d certainly suggest, if you can do this in your environment, that you clone your database as a slave. Doing so allows you to put a read load (SELECT only) on to it and if you have tools to do this you can stress the box until it [nearly] breaks. It&#8217;s harder to stress the writes, unless you have tools to simulate that, but the SELECT load test gives you a good idea.</p>
<p>I hope that explains what I did and why I&#8217;m convinced that the plugin worked for me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Robson</title>
		<link>http://blog.wl0.org/2010/03/the-innodb_plugin-a-pleasant-surprise/comment-page-1/#comment-1795</link>
		<dc:creator>Mark Robson</dc:creator>
		<pubDate>Thu, 04 Mar 2010 10:05:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.wl0.org/2010/03/the-innodb_plugin-a-pleasant-surprise/#comment-1795</guid>
		<description>Hi,

I&#039;m interested in what the validation process was that you went through to evaluate the plugin. You have lots of servers in production, some of which were overloaded.

* How did you check for regressions in your app caused by the plugin?
* How did you confirm that it would benefit performance
* What non-functional (soak, stress) testing did you do?

I find it very difficult to upgrade anything because the testing requirements are so onerous (of course the second two above need to be tested on production-grade hardware). Essentially, there is no time to do things like this because the testing will blow the effort up to more than can be spared - Ops simply install more and more hardware instead.</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>I&#8217;m interested in what the validation process was that you went through to evaluate the plugin. You have lots of servers in production, some of which were overloaded.</p>
<p>* How did you check for regressions in your app caused by the plugin?<br />
* How did you confirm that it would benefit performance<br />
* What non-functional (soak, stress) testing did you do?</p>
<p>I find it very difficult to upgrade anything because the testing requirements are so onerous (of course the second two above need to be tested on production-grade hardware). Essentially, there is no time to do things like this because the testing will blow the effort up to more than can be spared &#8211; Ops simply install more and more hardware instead.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

