<?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: Adjusting Innodb for Memory resident workload</title>
	<atom:link href="http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/</link>
	<description>Everything about MySQL Performance</description>
	<lastBuildDate>Sat, 21 Nov 2009 05:23:57 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: The Deployer</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-523550</link>
		<dc:creator>The Deployer</dc:creator>
		<pubDate>Sun, 29 Mar 2009 19:01:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-523550</guid>
		<description>Hey Peter and Vadim, this site is absolutely great. I wonder how come it&#039;s the only good one of this kind. Database performance issues are all around, and yet I find almost all my answers here.

Keep up the good work, guys!</description>
		<content:encoded><![CDATA[<p>Hey Peter and Vadim, this site is absolutely great. I wonder how come it&#8217;s the only good one of this kind. Database performance issues are all around, and yet I find almost all my answers here.</p>
<p>Keep up the good work, guys!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Burton</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-523547</link>
		<dc:creator>Kevin Burton</dc:creator>
		<pubDate>Sun, 29 Mar 2009 18:45:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-523547</guid>
		<description>This feature would definitely be a big compelling reason to run XtraDB :)

Kevin</description>
		<content:encoded><![CDATA[<p>This feature would definitely be a big compelling reason to run XtraDB <img src='http://www.mysqlperformanceblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Kevin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-523475</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Sun, 29 Mar 2009 17:04:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-523475</guid>
		<description>Kevin,

Right.  This is one of the features in todo to have some command to  &quot;fetch&quot; either main tablespace or  bunch of .ibd files  This is actually relatively easy one but should help a lot with warmup case likes yours having just sequential IO.</description>
		<content:encoded><![CDATA[<p>Kevin,</p>
<p>Right.  This is one of the features in todo to have some command to  &#8220;fetch&#8221; either main tablespace or  bunch of .ibd files  This is actually relatively easy one but should help a lot with warmup case likes yours having just sequential IO.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Burton</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-523088</link>
		<dc:creator>Kevin Burton</dc:creator>
		<pubDate>Sun, 29 Mar 2009 11:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-523088</guid>
		<description>One thing to note.

Our warmup script has a LOT of random IO when warming up indexes.

I&#039;m currently doing a warmup right now and it&#039;s probably going to take 30-60 minutes.

I suspect that this could be boosted 10x if InnoDB had a native warmup method instead of having to &#039;trick&#039; InnoDB to warmup by performing a custom query.</description>
		<content:encoded><![CDATA[<p>One thing to note.</p>
<p>Our warmup script has a LOT of random IO when warming up indexes.</p>
<p>I&#8217;m currently doing a warmup right now and it&#8217;s probably going to take 30-60 minutes.</p>
<p>I suspect that this could be boosted 10x if InnoDB had a native warmup method instead of having to &#8216;trick&#8217; InnoDB to warmup by performing a custom query.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-522864</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Sun, 29 Mar 2009 07:28:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-522864</guid>
		<description>srv,

Answering you here will send a signal to everyone polluting blog with irrelevant comments is a great way to get a reply and I do not want to support such behavior.
Feel free to ask your question on our forums instead:
http://forum.percona.com/

You&#039;re also surely welcome to hire us to assist you with any difficulties.</description>
		<content:encoded><![CDATA[<p>srv,</p>
<p>Answering you here will send a signal to everyone polluting blog with irrelevant comments is a great way to get a reply and I do not want to support such behavior.<br />
Feel free to ask your question on our forums instead:<br />
<a href="http://forum.percona.com/" rel="nofollow">http://forum.percona.com/</a></p>
<p>You&#8217;re also surely welcome to hire us to assist you with any difficulties.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-522857</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Sun, 29 Mar 2009 07:26:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-522857</guid>
		<description>Kevin,

It is a tricky question if data which does not need to be flushed should be skipped.    If these &quot;holes&quot; are large (say several MB in size) it makes sense to skip it. However if it is just random holes it makes sense to write all of them -  for example if you look at 1MB block (64 pages) which only have random 16 pages dirty it will be faster to do one 1MB io rather than 16 individual IOs with seek in between.   But well this is tiny easy optimization. 

Now regarding log vs data  - these can hardly be compared.  Data is written always in 16K pages even if very little part of the page was modified, log can be written in 512 byte blocks.   In the worse case each single 512 byte log record can result in 16K dirty page which will make data write requirement to be 30x from the log write.   In reality however there can be multiple changes to the page before it needs to be flushed so the difference is really not so bad. 

Note however even if you&#039;re working with large blobs or something which will make log io close to data IO  data IO will be double because of the double write.</description>
		<content:encoded><![CDATA[<p>Kevin,</p>
<p>It is a tricky question if data which does not need to be flushed should be skipped.    If these &#8220;holes&#8221; are large (say several MB in size) it makes sense to skip it. However if it is just random holes it makes sense to write all of them &#8211;  for example if you look at 1MB block (64 pages) which only have random 16 pages dirty it will be faster to do one 1MB io rather than 16 individual IOs with seek in between.   But well this is tiny easy optimization. </p>
<p>Now regarding log vs data  &#8211; these can hardly be compared.  Data is written always in 16K pages even if very little part of the page was modified, log can be written in 512 byte blocks.   In the worse case each single 512 byte log record can result in 16K dirty page which will make data write requirement to be 30x from the log write.   In reality however there can be multiple changes to the page before it needs to be flushed so the difference is really not so bad. </p>
<p>Note however even if you&#8217;re working with large blobs or something which will make log io close to data IO  data IO will be double because of the double write.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: srv</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-521330</link>
		<dc:creator>srv</dc:creator>
		<pubDate>Sat, 28 Mar 2009 02:31:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-521330</guid>
		<description>Hello, peter.

This is absolutely off-topic, but can you please give me some insights on the situation I just had? Recently we got a lot of threads in the process list on one of our dedicated MySQL servers. I&#039;m not a DBA, but I know a little bit more about MySQL than most of the people here, so fixing this was up to me. cpu utilization, iowait, context switching (all via vmstat) and disk utilization (via iostat) were ok: ~20% for user+sys, 0-1% iowait, ~5% disk utilization. Data size was smaller than innodb_pool_buffer (almost all tables using InnoDB), and server still had a lot of free memory. So I conclude that this is not a resource bottleneck but maybe some concurrency issues. I tried to play with a innodb_thread_concurrency setting, but that did not help. After that I started to analyze queries (I&#039;m not good with understanding complicated queries, I do not know the DB structure for this project, so I hoped to evade this process). 

I found out that there was a set of queries that hurt performance badly, all of them with &quot;using intersect&quot; in &quot;Extra&quot; and &quot;index_merge&quot; in &quot;type&quot; EXPLAIN fields. Other queries were fine. Further investigation showed that all tables used by this queries were 1-5 mln rows and poorly indexed with simple indexes on almost every  field, most of them with low cardinality (&lt; 100). I just dropped those indexes and queries started to execute in less then a second. 

We using MySQL 5.0.27 with no patches (except maybe for OS vendor specific -- it`s RHEL 5.0). Binary log is on (this instance used as a master for replication process).

What happened? Is this a knowing behavior of index_merge on this data/index set? Is this a bug? If it is, could you please help me  to understand what caused it and fill a good bug report?</description>
		<content:encoded><![CDATA[<p>Hello, peter.</p>
<p>This is absolutely off-topic, but can you please give me some insights on the situation I just had? Recently we got a lot of threads in the process list on one of our dedicated MySQL servers. I&#8217;m not a DBA, but I know a little bit more about MySQL than most of the people here, so fixing this was up to me. cpu utilization, iowait, context switching (all via vmstat) and disk utilization (via iostat) were ok: ~20% for user+sys, 0-1% iowait, ~5% disk utilization. Data size was smaller than innodb_pool_buffer (almost all tables using InnoDB), and server still had a lot of free memory. So I conclude that this is not a resource bottleneck but maybe some concurrency issues. I tried to play with a innodb_thread_concurrency setting, but that did not help. After that I started to analyze queries (I&#8217;m not good with understanding complicated queries, I do not know the DB structure for this project, so I hoped to evade this process). </p>
<p>I found out that there was a set of queries that hurt performance badly, all of them with &#8220;using intersect&#8221; in &#8220;Extra&#8221; and &#8220;index_merge&#8221; in &#8220;type&#8221; EXPLAIN fields. Other queries were fine. Further investigation showed that all tables used by this queries were 1-5 mln rows and poorly indexed with simple indexes on almost every  field, most of them with low cardinality (&lt; 100). I just dropped those indexes and queries started to execute in less then a second. </p>
<p>We using MySQL 5.0.27 with no patches (except maybe for OS vendor specific &#8212; it`s RHEL 5.0). Binary log is on (this instance used as a master for replication process).</p>
<p>What happened? Is this a knowing behavior of index_merge on this data/index set? Is this a bug? If it is, could you please help me  to understand what caused it and fill a good bug report?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Burton</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-520552</link>
		<dc:creator>Kevin Burton</dc:creator>
		<pubDate>Fri, 27 Mar 2009 07:02:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-520552</guid>
		<description>Another approach is to update fuzzy checkpointing with more tunables.  

In reality, it only makes sense to write to disk at about 50MB/s since you&#039;re also writing to the logs at 50MB/s since you would still have to recover.

If you were to pause you could just write dirty blocks sequentially and jump over clean blocks.

It would be pseudo random but faster to seek over 100MB than to write it all.... 

Kevin</description>
		<content:encoded><![CDATA[<p>Another approach is to update fuzzy checkpointing with more tunables.  </p>
<p>In reality, it only makes sense to write to disk at about 50MB/s since you&#8217;re also writing to the logs at 50MB/s since you would still have to recover.</p>
<p>If you were to pause you could just write dirty blocks sequentially and jump over clean blocks.</p>
<p>It would be pseudo random but faster to seek over 100MB than to write it all&#8230;. </p>
<p>Kevin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Psih</title>
		<link>http://www.mysqlperformanceblog.com/2009/03/25/adjusting-innodb-for-memory-resident-workload/comment-page-1/#comment-519546</link>
		<dc:creator>Psih</dc:creator>
		<pubDate>Thu, 26 Mar 2009 10:58:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=649#comment-519546</guid>
		<description>That&#039;s definitely should be implemented - I&#039;m working on some social sites where databases isn&#039;t in terabytes, but has very high read/write ratio, so very heavy random I/O. Ability to make a 128GB RAM server and fit effectively database to memory so that disk I/O won&#039;t limit it&#039;s performance will be awesome.</description>
		<content:encoded><![CDATA[<p>That&#8217;s definitely should be implemented &#8211; I&#8217;m working on some social sites where databases isn&#8217;t in terabytes, but has very high read/write ratio, so very heavy random I/O. Ability to make a 128GB RAM server and fit effectively database to memory so that disk I/O won&#8217;t limit it&#8217;s performance will be awesome.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
