<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PlanetMysql.ru - информация о СУБД MySQL &#187; 5.5</title>
	<atom:link href="http://planetmysql.ru/category/5-5/feed/" rel="self" type="application/rss+xml" />
	<link>http://planetmysql.ru</link>
	<description>Блог о самой популярной СУБД MySQL</description>
	<lastBuildDate>Sat, 04 Feb 2012 15:42:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Better Controlling MySQL Memory Usage</title>
		<link>http://blog.wl0.org/2012/01/better-controlling-mysql-memory-usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=better-controlling-mysql-memory-usage</link>
		<comments>http://blog.wl0.org/2012/01/better-controlling-mysql-memory-usage/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 23:32:53 +0000</pubDate>
		<dc:creator>Simon Mudd</dc:creator>
				<category><![CDATA[5.1]]></category>
		<category><![CDATA[5.5]]></category>
		<category><![CDATA[5.6]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[memory allocation]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[resource control]]></category>
		<category><![CDATA[swapping]]></category>

		<guid isPermaLink="false">http://blog.wl0.org/?p=512</guid>
		<description><![CDATA[MySQL, like a lot of other software, has many knobs you can tweak. Most of these knobs may affect behaviour, but more importantly most affect the memory usage of the server, so getting these settings right is very important.
Most of MySQL&#8217;s memory is really used just as a cache, in one form or another, information that otherwise is on disk. So ensuring you have as large a cache as possible is important. However, making these memory sizes too large will trigger the server to start swapping and possibly can cause it to crash or cause the kernel to kill the process when it runs out of memory.  So that&#8217;s something we want to avoid.
Certain settings affect memory allocation on a per connection/thread basis, being bounded by thread_cache_size and max_connections.  If you configure for the worst behaviour (max_connections) you may end up not actually using all the memory you have available, memory which normally could be used for other purposes.
Recently a server I managed was configured incorrectly with a large sort_buffer_size (4M to 256M) and larger read_buffer_size (4M to 20M).  The change in configuration on first glance looks quite innocent, and not noticing that these are per-connection settings this got rolled out. max_connections on this server was set to 1000, while normally there were ~40 connections of which only a few were active. The mysqld memory footprint on startup looked fine. In fact under normal usage it also worked fine. However spiky load suddenly changed this nice behaviour: as configured mysqld ramped up the thread count and hence memory usage, resulting in swapping and finally server death&#8230;
The fault of course was mine for not noticing, but this has been an issue with MySQL forever.  Most other RDBMSes manage memory slightly differently: you define how much memory you want to use (maximum), this is optinally locked into memory, and further requests for different buffers are taken from this global pool.  That is much safer, avoids unexpected swapping, or memory over-allocation, but does raise the question of what happens when a memory request can not be honoured.
Initially I would expect two different behaviours: either

kill a thread whose memory can not be allocated, or
wait a certain time to allocate that memory, after which it gets killed anyway.

Option (2) is probably saner, and possibly some sort of deadlock detection can kick if in all threads are waiting for memory, perhaps killing the younger thread, or thread which has done least work first. Possibly there are other better ways of doing this?
I can imagine that changing MySQL&#8217;s current behaviour to do something like this could be quite hard, especially as ideally the engines would also use the same memory management mechanisms, but I see this as being a good thing and would make MySQL more robust, especially under load, which is after all what counts.  Of course this will not happen in today&#8217;s 5.5 GA version, or tomorrow&#8217;s 5.6 version which is probably likely to appear some time this year. That&#8217;s a major change. It would be nice if Oracle look at this for 5.7 as a way of ensuring that when resource usage does come under pressure MySQL does not go heads up, but attempts to use the allocated resources as best as possible.
In the meantime what would help would be:

better documentation so we can see clearly how all mysql memory is allocated. There are several web pages commenting ways to calculate this, but certainly no definitive guide.
The InnoDB engine&#8217;s documentation talks about memory usage and most people think that the innodb_buffer_pool_size is the main setting. yet read further and there&#8217;s talk of an overhead of perhaps 1/8th. I have recently been playing with innodb_buffer_pool_instances settings &#62; 1 (using values in the range of 20-40) and am inclined to think that this increases that overhead somewhat more, yet there&#8217;s no documentation on this and whether my guess is right or not. Please InnoDB developers improve your documentation, if only to prove me wrong.
Ideally some tools to tell you if you server is possibly misconfigured. Coming from a Sybase environment I&#8217;d be tempted to suggest a stored procedure in the mysql database which can tell you total memory usage and how it is broken down as doing this with a single SELECT is going to be tricky.

Then once that is done consider adding some extra variable to enable total memory usage to be controlled. I made a feature request for this at http://bugs.mysql.com/?id=64108. If you think this feature might interest you please let Oracle know.]]></description>
			<content:encoded><![CDATA[<p>MySQL, like a lot of other software, has many knobs you can tweak. Most of these knobs may affect behaviour, but more importantly most affect the memory usage of the server, so getting these settings right is very important.</p>
<p>Most of MySQL&#8217;s memory is really used just as a cache, in one form or another, information that otherwise is on disk. So ensuring you have as large a cache as possible is important. However, making these memory sizes too large will trigger the server to start swapping and possibly can cause it to crash or cause the kernel to kill the process when it runs out of memory.  So that&#8217;s something we want to avoid.</p>
<p>Certain settings affect memory allocation on a per connection/thread basis, being bounded by thread_cache_size and max_connections.  If you configure for the worst behaviour (max_connections) you may end up not actually using all the memory you have available, memory which normally could be used for other purposes.</p>
<p>Recently a server I managed was configured incorrectly with a large sort_buffer_size (4M to 256M) and larger read_buffer_size (4M to 20M).  The change in configuration on first glance looks quite innocent, and not noticing that these are per-connection settings this got rolled out. max_connections on this server was set to 1000, while normally there were ~40 connections of which only a few were active. The mysqld memory footprint on startup looked fine. In fact under normal usage it also worked fine. However spiky load suddenly changed this <em>nice behaviour</em>: as configured mysqld ramped up the thread count and hence memory usage, resulting in swapping and finally server death&#8230;</p>
<p>The fault of course was mine for not noticing, but this has been an issue with MySQL forever.  Most other RDBMSes manage memory slightly differently: you define how much memory you want to use (maximum), this is optinally locked into memory, and further requests for different <em>buffers</em> are taken from this <em>global pool</em>.  That is much safer, avoids unexpected swapping, or memory over-allocation, but does raise the question of what happens when a memory request can not be honoured.</p>
<p>Initially I would expect two different behaviours: either</p>
<ol>
<li>kill a thread whose memory can not be allocated, or</li>
<li>wait a certain time to allocate that memory, after which it gets killed anyway.</li>
</ol>
<p>Option (2) is probably saner, and possibly some sort of deadlock detection can kick if in all threads are waiting for memory, perhaps killing the <em>younger thread</em>, or thread which has done least work first. Possibly there are other better ways of doing this?</p>
<p>I can imagine that changing MySQL&#8217;s current behaviour to do something like this could be quite hard, especially as ideally the engines would also use the same memory management mechanisms, but I see this as being a good thing and would make MySQL more robust, especially under load, which is after all what counts.  Of course this will not happen in today&#8217;s 5.5 GA version, or tomorrow&#8217;s 5.6 version which is probably likely to appear some time this year. That&#8217;s a major change. It would be nice if Oracle look at this for 5.7 as a way of ensuring that when resource usage does come under pressure MySQL does not go heads up, but attempts to use the allocated resources as best as possible.</p>
<p>In the meantime what would help would be:</p>
<ul>
<li>better documentation so we can see clearly how all mysql memory is allocated. There are several web pages commenting ways to calculate this, but certainly no definitive guide.</li>
<li>The InnoDB engine&#8217;s documentation talks about memory usage and most people think that the innodb_buffer_pool_size is the main setting. yet read further and there&#8217;s talk of an overhead of perhaps 1/8th. I have recently been playing with innodb_buffer_pool_instances settings &gt; 1 (using values in the range of 20-40) and am inclined to think that this increases that overhead somewhat more, yet there&#8217;s no documentation on this and whether my guess is right or not. Please InnoDB developers improve your documentation, if only to prove me wrong.</li>
<li>Ideally some tools to tell you if you server is possibly misconfigured. Coming from a Sybase environment I&#8217;d be tempted to suggest a stored procedure in the mysql database which can tell you total memory usage and how it is broken down as doing this with a single SELECT is going to be tricky.</li>
</ul>
<p>Then once that is done consider adding some extra variable to enable total memory usage to be controlled. I made a feature request for this at <a title="Provide a global maximum_memory setting to limit unexpected memory usage" href="http://bugs.mysql.com/?id=64108" >http://bugs.mysql.com/?id=64108</a>. If you think this feature might interest you please let Oracle know.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31791&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31791&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2012/01/25/better-controlling-mysql-memory-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nasty Regression Bug Seems Fixed in 5.5.18</title>
		<link>http://www.chriscalender.com/?p=471&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nasty-regression-bug-seems-fixed-in-5-5-18</link>
		<comments>http://www.chriscalender.com/?p=471#comments</comments>
		<pubDate>Thu, 01 Dec 2011 00:56:09 +0000</pubDate>
		<dc:creator>Chris Calender</dc:creator>
				<category><![CDATA[5.5]]></category>
		<category><![CDATA[5.5.18]]></category>
		<category><![CDATA[btr_pcur_restore_position_func]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[ha_innobase]]></category>
		<category><![CDATA[index_next_different]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[os0sync.c]]></category>
		<category><![CDATA[QUICK_GROUP_MIN_MAX_SELECT]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[regression bug fixed]]></category>
		<category><![CDATA[row_search_for_mysql]]></category>
		<category><![CDATA[SELECT COUNT(DISTINCT)]]></category>
		<category><![CDATA[sel_restore_position_for_mysql]]></category>

		<guid isPermaLink="false">http://www.chriscalender.com/?p=471</guid>
		<description><![CDATA[For those who saw my previous post about the crashing (regression) bug with SELECT COUNT(DISTINCT) on InnoDB with Primary Key (PK), you&#8217;ll be interested to know my test case does not crash in 5.5.18 (which was just released).
I&#8217;ve only tested my test case thus far, but it seems fine.
Unfortunately, the fix is not mentioned in the 5.5.18 changelogs though.
And there is no mention (yet, anyway) of a fix in the bug report I filed (though it was designated a &#8216;duplicate&#8217;, so it wouldn&#8217;t necessarily be updated).
I&#8217;m trying to get confirmation from the MySQL Dev Team on this (via the bug report), and will update this post if/when I hear anything.
I&#8217;ll also perform some of the other tests on my end to see if they all pass as well.
All in all, at least the initial results look very promising!]]></description>
			<content:encoded><![CDATA[<p>For those who saw my <a href="http://www.chriscalender.com/?p=315">previous post</a> about the crashing (regression) bug with SELECT COUNT(DISTINCT) on InnoDB with Primary Key (PK), you&#8217;ll be interested to know my test case does not crash in 5.5.18 (which was just released).</p>
<p>I&#8217;ve only tested my test case thus far, but it seems fine.</p>
<p>Unfortunately, the fix is not mentioned in the <a href="http://dev.mysql.com/doc/refman/5.5/en/news-5-5-18.html">5.5.18 changelogs</a> though.</p>
<p>And there is no mention (yet, anyway) of a fix in the <a href="http://bugs.mysql.com/bug.php?id=61842">bug report</a> I filed (though it was designated a &#8216;duplicate&#8217;, so it wouldn&#8217;t necessarily be updated).</p>
<p>I&#8217;m trying to get confirmation from the MySQL Dev Team on this (via the bug report), and will update this post if/when I hear anything.</p>
<p>I&#8217;ll also perform some of the other tests on my end to see if they all pass as well.</p>
<p>All in all, at least the initial results look very promising! <img src="http://www.chriscalender.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31074&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31074&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/12/01/nasty-regression-bug-seems-fixed-in-5-5-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nasty Regression Bug: SELECT COUNT(DISTINCT) crashes InnoDB when WHERE operand is in Primary Key or Unique Index</title>
		<link>http://www.chriscalender.com/?p=315&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nasty-regression-bug-select-countdistinct-crashes-innodb-when-where-operand-is-in-primary-key-or-unique-index</link>
		<comments>http://www.chriscalender.com/?p=315#comments</comments>
		<pubDate>Mon, 17 Oct 2011 16:07:40 +0000</pubDate>
		<dc:creator>Chris Calender</dc:creator>
				<category><![CDATA[5.5]]></category>
		<category><![CDATA[btr_pcur_restore_position_func]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[ha_innobase]]></category>
		<category><![CDATA[index_next_different]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[os0sync.c]]></category>
		<category><![CDATA[QUICK_GROUP_MIN_MAX_SELECT]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[row_search_for_mysql]]></category>
		<category><![CDATA[SELECT COUNT(DISTINCT)]]></category>
		<category><![CDATA[sel_restore_position_for_mysql]]></category>
		<category><![CDATA[SkySQL]]></category>

		<guid isPermaLink="false">http://www.chriscalender.com/?p=315</guid>
		<description><![CDATA[In 5.5, a crashing, regression bug exists if you use SELECT COUNT(DISTINCT) *and* one of the WHERE operands is in the Primary Key (or just a unique index).
This simple crash (if only one row is in the table) will crash mysqld.
Of course I&#8217;ve file...]]></description>
			<content:encoded><![CDATA[<p>In 5.5, a crashing, regression bug exists if you use SELECT COUNT(DISTINCT) *and* one of the WHERE operands is in the Primary Key (or just a unique index).</p>
<p>This simple crash (if only one row is in the table) will crash mysqld.</p>
<p>Of course I&#8217;ve filed a bug report, but that has been nearly 3 months and no updates yet.</p>
<p>Here is the bug I filed (which you won&#8217;t be able to view):</p>
<p><a href="http://bugs.mysql.com/bug.php?id=61842">http://bugs.mysql.com/bug.php?id=61842</a></p>
<p>Really, the only thing that happened to my bug report was that it was designated a duplicate of another bug (which we also cannot view):</p>
<p><a href="http://bugs.mysql.com/bug.php?id=61101">http://bugs.mysql.com/bug.php?id=61101</a></p>
<p>Based on the id, and the submitted dates of bugs 61100 and 61102, this initial bug (61101) was filed on May 9, 2011.  So, in fact, this bug has been present for over 5 months, and not one breath of an update to the public!</p>
<p>Therefore, I felt it necessary to warn others about this bug, (or possibly you&#8217;ll run across this if you&#8217;re searching on SELECT COUNT(DISTINCT) in the future).</p>
<p>All I can say is please watch out for it!</p>
<p>It is extremely easy to reproduce:</p>
<pre>CREATE TABLE t (a int(1), b int(1), PRIMARY KEY (a,b)) ENGINE=InnoDB;
INSERT INTO t VALUES (1, 1);
SELECT COUNT(DISTINCT a) FROM t WHERE b = 1;</pre>
<p>&#8211;> crash <--</p>
<p>For those interested, this was filed against 5.5.14.  However, with each new release, I've continued testing, and this bug is present in 5.5.15, 5.5.16, and thus far in 5.5.17 (built from the latest bzr tree).</p>
<p>Hopefully we don't go too many more months before this is finally fixed.</p>
<p>And for reference (and those searching on the stack trace / error log messages), here is my full error log snippet from 5.5.16:</p>
<pre>111017 10:54:47 [Note] C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld: ready for connections.
Version: &#8217;5.5.16&#8242;  socket: &#8221;  port: 3308  MySQL Community Server (GPL)
 len 128; hex f8aec9037d803805f017fc03189ddc030000000&#8230;
111017 10:55:12  InnoDB: Assertion failure in thread 5000 in file btr0pcur.c line 236
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
111017 10:55:12 &#8211; mysqld got exception 0xc0000005 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=26214400
read_buffer_size=65536
max_used_connections=1
max_threads=100
thread_count=1
connection_count=1
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 58325 K
bytes of memory
Hope that&#8217;s ok; if not, decrease some variables in the equation.

Thread pointer: 0x3c98428
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong&#8230;
00CE92EC    mysqld.exe!btr_pcur_restore_position_func()[btr0pcur.c:236]
00CA62FB    mysqld.exe!sel_restore_position_for_mysql()[row0sel.c:3081]
00CA6CEA    mysqld.exe!row_search_for_mysql()[row0sel.c:3820]
00C5FE20    mysqld.exe!ha_innobase::general_fetch()[ha_innodb.cc:5918]
00C5FEDD    mysqld.exe!ha_innobase::index_next()[ha_innodb.cc:5956]
00C20DDA    mysqld.exe!index_next_different()[opt_range.cc:11038]
00C249BC    mysqld.exe!QUICK_GROUP_MIN_MAX_SELECT::next_prefix()[opt_range.cc:11099]
00C26BE7    mysqld.exe!QUICK_GROUP_MIN_MAX_SELECT::get_next()[opt_range.cc:10824]
00B68D01    mysqld.exe!rr_quick()[records.cc:344]
00BC1B9A    mysqld.exe!sub_select()[sql_select.cc:11723]
00BD10A7    mysqld.exe!do_select()[sql_select.cc:11483]
00BD37BD    mysqld.exe!JOIN::exec()[sql_select.cc:2370]
00BD3A29    mysqld.exe!mysql_select()[sql_select.cc:2581]
00BD3D4B    mysqld.exe!handle_select()[sql_select.cc:297]
00ACD76E    mysqld.exe!execute_sqlcom_select()[sql_parse.cc:4511]
00ACF816    mysqld.exe!mysql_execute_command()[sql_parse.cc:2118]
00AD2D1F    mysqld.exe!mysql_parse()[sql_parse.cc:5548]
00AD3848    mysqld.exe!dispatch_command()[sql_parse.cc:1037]
00AD43BB    mysqld.exe!do_command()[sql_parse.cc:771]
00AF2DB6    mysqld.exe!do_handle_one_connection()[sql_connect.cc:789]
00AF2F44    mysqld.exe!handle_one_connection()[sql_connect.cc:708]
00C33DE4    mysqld.exe!pthread_start()[my_winthread.c:61]
00D9C6F3    mysqld.exe!_callthreadstartex()[threadex.c:348]
00D9C79B    mysqld.exe!_threadstartex()[threadex.c:326]
765F3823    kernel32.dll!BaseThreadInitThunk()
77CAA9BD    ntdll.dll!LdrInitializeThunk()

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (03DC0F10): SELECT COUNT(DISTINCT a) FROM t WHERE b = 1
Connection ID (thread ID): 1
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
InnoDB: Thread 5980 stopped in file os0sync.c line 781
InnoDB: Thread 6820 stopped in file os0sync.c line 474
InnoDB: Thread 7532 stopped in file os0sync.c line 474</pre><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=30401&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=30401&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/10/17/nasty-regression-bug-select-countdistinct-crashes-innodb-when-where-operand-is-in-primary-key-or-unique-index/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unexpected mysqld crashing in 5.5</title>
		<link>http://ronaldbradford.com/blog/unexpected-mysqld-crashing-in-5-5-2010-11-22/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unexpected-mysqld-crashing-in-5-5</link>
		<comments>http://ronaldbradford.com/blog/unexpected-mysqld-crashing-in-5-5-2010-11-22/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 13:41:25 +0000</pubDate>
		<dc:creator>Ronald Bradford</dc:creator>
				<category><![CDATA[5.5]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[tmpdir]]></category>
		<category><![CDATA[tmpfs]]></category>

		<guid isPermaLink="false">http://ronaldbradford.com/blog/?p=3366</guid>
		<description><![CDATA[An update of MySQL from 5.0 to 5.5 on CentOS 5.5 64bit has not resulted in a good experience.  The mysqld process would then crash every few minutes with the following message.

101120 8:29:27 InnoDB: Operating system error number 22 in a file operation.
InnoDB: Error number 22 means ‘Invalid argument’.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html
InnoDB: File name /tmpfs/#sql6cf3_5c_0.ibd
InnoDB: File operation call: ‘aio write’.
InnoDB: Cannot continue operation.

The work around was to change the tmpdir=/tmpfs (which was a 16G tmpfs filesystem) to a physical disk.
The referenced URL didn&#8217;t provide any more information of help. Unlike Bug #26662 O_DIRECT is not specified as the flush method.]]></description>
			<content:encoded><![CDATA[<p>An update of MySQL from 5.0 to 5.5 on CentOS 5.5 64bit has not resulted in a good experience.  The mysqld process would then crash every few minutes with the following message.</p>
<pre>
101120 8:29:27 InnoDB: Operating system error number 22 in a file operation.
InnoDB: Error number 22 means ‘Invalid argument’.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html
InnoDB: File name /tmpfs/#sql6cf3_5c_0.ibd
InnoDB: File operation call: ‘aio write’.
InnoDB: Cannot continue operation.
</pre>
<p>The work around was to change the tmpdir=/tmpfs (which was a 16G tmpfs filesystem) to a physical disk.</p>
<p>The referenced URL didn&#8217;t provide any more information of help. Unlike <a href="http://bugs.mysql.com/bug.php?id=26662">Bug #26662</a> O_DIRECT is not specified as the flush method.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26536&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26536&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2010/11/22/unexpected-mysqld-crashing-in-5-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 5.5: What&#8217;s New in Replication</title>
		<link>http://blogs.oracle.com/mysql/2010/11/mysql_55_whats_new_in_replication.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-5-5-whats-new-in-replication</link>
		<comments>http://blogs.oracle.com/mysql/2010/11/mysql_55_whats_new_in_replication.html#comments</comments>
		<pubDate>Mon, 15 Nov 2010 21:17:47 +0000</pubDate>
		<dc:creator>Oracle MySQL Group</dc:creator>
				<category><![CDATA[5.5]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL Community Edition]]></category>
		<category><![CDATA[mysql server]]></category>
		<category><![CDATA[Replication]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[In my continuing MySQL 5.5 blog series, today I am covering what's new on the replication front.&#160; MySQL replication is my favorite server and what drew me to MySQL during my tenure with Embarcadero Technologies.&#160; Others seem to agree as based on community and customer surveys, MySQL replication is the most popular and widely used database feature.&#160; Mostly because it is easy to set up and ease, it enables scalability and provides a pretty robust solution for data redundancy, backup and overall availability.&#160; In MySQL 5.5 replication has been enhanced in response to user requests that MySQL replication:Ensure data consistency between master and slave serversImmediately detect if replication is not workingAllow a crashed slave to automatically recover from the master relay logAllow users to filter events for specific serversCorrectly convert data types between master and slave serversMySQL 5.5 replication includes the following enhancements that support users in these key areas:&#160;Semi-synchronous ReplicationMySQL replication is asynchronous by default meaning that a master and its slave/slaves are autonomous when it comes to data consistency.&#160; Asynchronous replication provides optimal performance because a master is free to service other inbound transactional requests after writing updates to its Binlog without waiting to verify that updates have been replicated to at least one slave in the topology.&#160; While fast, this comes with a high risk of master/slave data inconsistency or even data loss at recovery if there is a failure on either end. &#160; MySQL 5.5 introduces semi-synchronous replication to ensure data consistency and redundancy between master and at least one slave in the calling chain.&#160; In this configuration, a master and any number of its replicant slaves are configured so that at least one slave in the replication topology must acknowledge updates have been received and written to its relay log before the parent master commits the transaction.&#160; In the event of a time-out, the originating master will temporarily switch to asynchronous replication until at least one of the slaves set up for semi-synchronous replication catches up.Semi-synchronous replication must be enabled on both the master and slave servers, otherwise the master defaults to asynchronous replication.&#160; MySQL 5.5 uses a new plug-in architecture to enable semi-synchronous replication.&#160; To this end, the following commands and variable settings are used to enable 5.5 masters and slaves.&#160; Static settings can also be added to the my.* configuration files: To enable the semi-synchronous replicator on the master:INSTALL PLUGIN 'rpl_semi_sync_master' SONAME 'semisync_master.so';SET rpl_semi_sync_master_enabled=1;SET rpl_semi_sync_master_timeout=1000; (1s, default 10s)To enable the semi-synchronous replicator on a slave or slaves:INSTALL PLUGIN 'rpl_semi_sync_slave' SONAME 'semisync_slave.so';SET rpl_semi_sync_slave_enabled=1;START SLAVE;Once enabled semi-synchronous replication exposes new system and status variables that can be used to check on configuration and operational status.&#160; The values for each are exposed using SHOW VARIABLES and SHOW STATUS.&#160; These include:&#160;On master:Rpl_semi_sync_master_status - indicates status of when master is using asynchronous or semi-sycnhronous replication.Rpl_semi_sync_master_clients - shows how many slaves are configured for semi-synchronous replication.Rpl_semi_sync_master_yes_tx - shows number of successfully acknowledged commits by slaves.Rpl_semi_sync_master_no_tx - shows number of unsuccessfully acknowledged commits by slaves.On Slave:Rpl_semi_sync_slave_status - indicates if semi-synchronous replication is enabled on slave.Replication HeartbeatMySQL 5.5 provides a new replication heartbeat option that helps users know immediately when replication stops working.&#160; The heartbeat is a message sent at regular intervals from a master node to slave nodes.&#160; The slave can be configured to automatically check connection and message status; if the message is not received by the slave the slave knows that a connection to the master node has failed in some way.&#160; Replication heartbeat is an optional configuration and is enabled on the 5.5 slave using:STOP SLAVE;CHANGE MASTER TO master_heartbeat_period= milliseconds;START SLAVE;The following status variables can then be monitored to easily detect when a master is idle and to get a finer-grained estimate on slave seconds behind master for recovery purposes:SHOW STATUS like 'slave_heartbeat period'SHOW STATUS like 'slave_received_heartbeats'Automatic Relay Log RecoveryMySQL 5.5 ensures master/slave consistency on a restart by allowing replication users to optionally configure slaves to automatically discard its own unprocessed relay logs and then recover pending transactions from the originating master.&#160; This can be used after a slave crash to ensure that potentially corrupted relay logs are not processed.&#160;&#160; For compatibility the default for this is disabled, but can be set using the new relay_log_recovery=value to 1 on the slave to be recovered.Replication Per Server FilteringCircular, or multi-master replication, provides a highly available deployment that ensures redundancy of data in the case any of the servers in a topology ring fails or is removed.&#160; In this configuration master servers are configured so that each is also a slave of another server in the topology.&#160; Updates written to any of the masters are then replicated around the ring until the transaction reaches the originating server which acts as the terminator of its own events.&#160; In the event of a node failure the affected server is removed from the topology and its slave is simply redirected to another master in the ring and processing then continues.In previous versions when a server is removed from the ring due to failure, maintenance, etc. users needed to manually ensure that all of its updates were terminated from the new calling chain.&#160; MySQL 5.5 provides a new set of time-saving commands that allow users to easily filter out any events related to a removed server.In the above case, when Server A is removed from the topology, users can now easily filter any Server A related events by entering the following command on the next server in the calling chain:Server B&#62; CHANGE MASTER TO MASTER_HOST=D ...IGNORE_SERVER_IDS=(A)&#160;Replication Slave Side Data Type ConversionsIn MySQL 5.1 precise data type conversions between master and slave are supported for statement-based replication only.&#160; In this configuration column types could be different in the master and slave tables as long as the underlying data had high level compatibility (INT to TINYINT for example).&#160; MySQL 5.5 now provides precise data type conversions between master and slave for both statement-based and row-based operations.&#160;&#160; Conversions within integer, decimal, string, binary, BIT, ENUM and SET domains are supported.&#160;A new SET variable in 5.5 enables the conversion, and requires that the slave be restarted to take effect.&#160; The settings and what they enable are:SET SLAVE_TYPE_CONVERSIONS="ALL_LOSSY' - enables conversions to types with smaller domain (INT to TINY for example)SET SLAVE_TYPE_CONVERSION="ALL_NON_LOSSY" - enables conversions to types with larger domain (TINY to INT for example)The above is not exhaustive so you can learn more about all of the new MySQL 5.5 replication features, including how to enable, monitor and tune them, here.Thanks for reading! &#160;]]></description>
			<content:encoded><![CDATA[In my continuing MySQL 5.5 blog series, today I am covering what's new on the replication front.&nbsp; MySQL replication is my favorite server and what drew me to MySQL during my tenure with Embarcadero Technologies.&nbsp; Others seem to agree as based on community and customer surveys, MySQL replication is the most popular and widely used database feature.&nbsp; Mostly because it is easy to set up and ease, it enables scalability and provides a pretty robust solution for data redundancy, backup and overall availability.&nbsp; In MySQL 5.5 replication has been enhanced in response to user requests that MySQL replication:<br /><br /><ul><li>Ensure data consistency between master and slave servers</li><li>Immediately detect if replication is not working</li><li>Allow a crashed slave to automatically recover from the master relay log</li><li>Allow users to filter events for specific servers</li><li>Correctly convert data types between master and slave servers</li></ul><br />MySQL 5.5 replication includes the following enhancements that support users in these key areas:<br />&nbsp;<br /><b>Semi-synchronous Replication</b><br /><br />MySQL replication is asynchronous by default meaning that a master and its slave/slaves are autonomous when it comes to data consistency.&nbsp; Asynchronous replication provides optimal performance because a master is free to service other inbound transactional requests after <br />writing updates to its Binlog without waiting to verify that updates have been replicated to at least one slave in the topology.&nbsp; While fast, this comes with a high risk of master/slave data inconsistency or even data loss at recovery if there is a failure on either end. &nbsp; <br /><br />MySQL 5.5 introduces semi-synchronous replication to ensure data consistency and redundancy between master and at least one slave in the calling chain.&nbsp; In this configuration, a master and any number of its replicant slaves are configured so that at least one slave in the replication topology must acknowledge updates have been received and written to its relay log before the parent master commits the transaction.&nbsp; In the event of a time-out, the originating master will temporarily switch to asynchronous replication until at least one of the slaves set up for semi-synchronous replication catches up.<br /><br />Semi-synchronous replication must be enabled on both the master and slave servers, otherwise the master defaults to asynchronous replication.&nbsp; MySQL 5.5 uses a new plug-in architecture to enable semi-synchronous replication.&nbsp; To this end, the following commands and variable settings are used to enable 5.5 masters and slaves.&nbsp; Static settings can also be added to the my.* configuration files: <br /><br />To enable the semi-synchronous replicator on the master:<br /><br />INSTALL PLUGIN 'rpl_semi_sync_master' SONAME 'semisync_master.so';<br />SET rpl_semi_sync_master_enabled=1;<br />SET rpl_semi_sync_master_timeout=1000; (1s, default 10s)<br /><br />To enable the semi-synchronous replicator on a slave or slaves:<br /><br />INSTALL PLUGIN 'rpl_semi_sync_slave' SONAME 'semisync_slave.so';<br />SET rpl_semi_sync_slave_enabled=1;<br />START SLAVE;<br /><br />Once enabled semi-synchronous replication exposes new system and status variables that can be used to check on configuration and operational status.&nbsp; The values for each are exposed using SHOW VARIABLES and SHOW STATUS.&nbsp; These include:<br />&nbsp;<br />On master:<br /><br /><ul><li>Rpl_semi_sync_master_status - indicates status of when master is using asynchronous or semi-sycnhronous replication.</li><li>Rpl_semi_sync_master_clients - shows how many slaves are configured for semi-synchronous replication.</li><li>Rpl_semi_sync_master_yes_tx - shows number of successfully acknowledged commits by slaves.</li><li>Rpl_semi_sync_master_no_tx - shows number of unsuccessfully acknowledged commits by slaves.</li></ul><br />On Slave:<br /><br /><ul><li>Rpl_semi_sync_slave_status - indicates if semi-synchronous replication is enabled on slave.</li></ul><br /><b>Replication Heartbeat</b><br /><br />MySQL 5.5 provides a new replication heartbeat option that helps users know immediately when replication stops working.&nbsp; The heartbeat is a message sent at regular intervals from a master node to slave nodes.&nbsp; The slave can be configured to automatically check connection and message status; if the message is not received by the slave the slave knows that a connection to the master node has failed in some way.&nbsp; <br /><br />Replication heartbeat is an optional configuration and is enabled on the 5.5 slave using:<br /><br />STOP SLAVE;<br />CHANGE MASTER TO master_heartbeat_period= milliseconds;<br />START SLAVE;<br /><br />The following status variables can then be monitored to easily detect when a master is idle and to get a finer-grained estimate on slave seconds behind master for recovery purposes:<br /><br />SHOW STATUS like 'slave_heartbeat period'<br />SHOW STATUS like 'slave_received_heartbeats'<br /><br /><br /><b>Automatic Relay Log Recovery</b><br /><br />MySQL 5.5 ensures master/slave consistency on a restart by allowing replication users to optionally configure slaves to automatically discard its own unprocessed relay logs and then recover pending transactions from the originating master.&nbsp; This can be used after a slave crash to ensure that potentially corrupted relay logs are not processed.&nbsp;&nbsp; For compatibility the default for this is disabled, but can be set using the new relay_log_recovery=value to 1 on the slave to be recovered.<br /><b><br />Replication Per Server Filtering</b><br /><br />Circular, or multi-master replication, provides a highly available deployment that ensures redundancy of data in the case any of the servers in a topology ring fails or is removed.&nbsp; In this configuration master servers are configured so that each is also a slave of another server in the topology.&nbsp; Updates written to any of the masters are then replicated around the ring until the transaction reaches the originating server which acts as the terminator of its own events.&nbsp; In the event of a node failure the affected server is removed from the topology and its slave is simply redirected to another master in the ring and processing then continues.<br /><br />In previous versions when a server is removed from the ring due to failure, maintenance, etc. users needed to manually ensure that all of its updates were terminated from the new calling chain.&nbsp; MySQL 5.5 provides a new set of time-saving commands that allow users to easily filter out any events related to a removed server.<br /><br /><span><a href="http://blogs.oracle.com/mysql/assets_c/2010/11/replfilter-10659.html"><img src="http://blogs.oracle.com/mysql/assets_c/2010/11/replfilter-thumb-500x177-10659.jpg" alt="replfilter.jpg" class="mt-image-none" style="" width="500" height="177" /></a></span><br /><br /><br />In the above case, when Server A is removed from the topology, users can now easily filter any Server A related events by entering the following command on the next server in the calling chain:<br /><br />Server B&gt; CHANGE MASTER TO MASTER_HOST=D ...<br />IGNORE_SERVER_IDS=(A)<br />&nbsp;<br /><br /><b>Replication Slave Side Data Type Conversions</b><br /><br />In MySQL 5.1 precise data type conversions between master and slave are supported for statement-based replication only.&nbsp; In this configuration column types could be different in the master and slave tables as long as the underlying data had high level compatibility (INT to TINYINT for example).&nbsp; MySQL 5.5 now provides precise data type conversions between master and slave for both statement-based and row-based operations.&nbsp;&nbsp; Conversions within integer, decimal, string, binary, BIT, ENUM and SET domains are supported.<br />&nbsp;<br />A new SET variable in 5.5 enables the conversion, and requires that the slave be restarted to take effect.&nbsp; The settings and what they enable are:<br /><br /><ul><li>SET SLAVE_TYPE_CONVERSIONS="ALL_LOSSY' - enables conversions to types with smaller domain (INT to TINY for example)</li><li>SET SLAVE_TYPE_CONVERSION="ALL_NON_LOSSY" - enables conversions to types with larger domain (TINY to INT for example)</li></ul><br />The above is not exhaustive so you can learn more about <a href="http://dev.mysql.com/doc/refman/5.5/en/replication.html">all of the new MySQL 5.5 replication features, including how to enable, monitor and tune them, here.</a><br /><br /><br />Thanks for reading! <br />&nbsp;<div><br /></div><div><br /></div><div><br /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26470&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26470&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2010/11/16/mysql-5-5-whats-new-in-replication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>building MySQL 5.5 with cmake</title>
		<link>http://datacharmer.blogspot.com/2010/04/building-mysql-55-with-cmake.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-mysql-5-5-with-cmake</link>
		<comments>http://datacharmer.blogspot.com/2010/04/building-mysql-55-with-cmake.html#comments</comments>
		<pubDate>Thu, 29 Apr 2010 06:38:00 +0000</pubDate>
		<dc:creator>Giuseppe Maxia</dc:creator>
				<category><![CDATA[5.5]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[cmake]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Yesterday I was testing a branch of MySQL 5.5 to help a colleague, and I was set aback at discovering that, with the default build options, the server did not include the Archive engine.In other times, I would have to dig into the build scripts or to examine the output of ./configure --help, but that is no longer necessary. MySQL 5.5 is built using cmake, the cross platform make.Why does this change make me feel better? Because cmake configuration is more user friendly than the old autoconf/automake/libtools horror syntax. Not only that, but there is a GUI!I am a command line guy, as you probably know, but when the purpose of a GUI is not only to show off but to make difficult choices easy, then I all for it.In my particular case, I enjoyed the idea of setting the options with a contextual help that told me the choices for each item.If you want to know more about the whole process of building MySQL with CMake, there is a comprehensive guide in MySQL Forge.Before I forget, though, there is something that reconciles my command line nature and the need for a good interface. Instead of using cmake-gui, I can get the same results with ccmakeIt is not as pretty as the graphical UI, but it has the advantage of working in a remote terminal, which for me is a must.So, if you want to try it, grab the latest MySQL 5.5 tree and follow the instructions.]]></description>
			<content:encoded><![CDATA[<table border="0"><tr><td><a href="http://forge.mysql.com/wiki/CMake"><img src="http://lh6.ggpht.com/_gVfZHGgf5LA/S9kfb1nJyPI/AAAAAAAAA3A/vrTipei3JBw/s512/cmake_mysql.png" alt="mysql with cmake" title="MySQL with cmake" width="250" border="0" /></a></td><td>Yesterday I was testing a branch of MySQL 5.5 to help a colleague, and I was set aback at discovering that, with the default build options, the server did not include the Archive engine.<br />In other times, I would have to dig into the build scripts or to examine the output of <code>./configure --help</code>, but that is no longer necessary. MySQL 5.5 is built using <a href="http://www.cmake.org/">cmake</a>, the cross platform <i>make</i>.</td></tr></table><br />Why does this change make me feel better? Because cmake configuration is more user friendly than the old <code>autoconf/automake/libtools</code> horror syntax. Not only that, but there is a GUI!<br />I am a command line guy, as you probably know, but when the purpose of a GUI is not only to show off but to make difficult choices easy, then I all for it.<br /><img src="http://lh3.ggpht.com/_gVfZHGgf5LA/S9kofmF_UDI/AAAAAAAAA3E/lb-piZxfIBw/s576/Screen%20shot%202010-03-01%20at%2021.42.45%20.png" /><br />In my particular case, I enjoyed the idea of setting the options with a contextual help that told me the choices for each item.<br />If you want to know more about the whole process of building MySQL with CMake, there is a <a href="http://forge.mysql.com/wiki/CMake">comprehensive guide in MySQL Forge</a>.<br />Before I forget, though, there is something that reconciles my command line nature and the need for a good interface. Instead of using <code>cmake-gui</code>, I can get the same results with <code>ccmake</code><br /><img src="http://lh6.ggpht.com/_gVfZHGgf5LA/S9kpr5OdFZI/AAAAAAAAA3Y/vgUREOGDsfY/s640/Screen%20shot%202010-04-29%20at%2008.13.36%20.png" /><br />It is not as pretty as the graphical UI, but it has the advantage of working in a remote terminal, which for me is a must.<br />So, if you want to try it, grab the latest <a href="http://code.launchpad.net/mysql-server">MySQL 5.5 tree</a> and follow the <a href="http://forge.mysql.com/wiki/CMake">instructions</a>.<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/16959946-2067082598522956480?l=datacharmer.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=24550&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=24550&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2010/04/29/building-mysql-5-5-with-cmake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Holiday gift &#8212; A deep look at MySQL 5.5 partitioning enhancements</title>
		<link>http://datacharmer.blogspot.com/2009/12/holiday-gift-deep-look-at-mysql-55.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=holiday-gift-a-deep-look-at-mysql-5-5-partitioning-enhancements</link>
		<comments>http://datacharmer.blogspot.com/2009/12/holiday-gift-deep-look-at-mysql-55.html#comments</comments>
		<pubDate>Thu, 24 Dec 2009 19:24:00 +0000</pubDate>
		<dc:creator>Giuseppe Maxia</dc:creator>
				<category><![CDATA[5.1]]></category>
		<category><![CDATA[5.5]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[partitioning]]></category>
		<category><![CDATA[partitions]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Half a day into my vacation, I managed to finish an article on a topic that has been intriguing me for a while. Since several colleagues were baffled by the semantics of the new enhancements of MySQL 5.5 partitions, after talking at length with the creator and the author of the manual pages, I produced this article: A deep look at MySQL 5.5 partitioning enhancements.Happy holidays!]]></description>
			<content:encoded><![CDATA[<table border="0"><tr><td><br /><a href="http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html"><img src="http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning/partitioning_placement_002.png" width="300" alt="A deep look at MySQL 5.5 partitioning enhancements" title="A deep look at MySQL 5.5 partitioning enhancements" border="0" /></a><br /></td><td><br />Half a day into my vacation, I managed to finish an article on a topic that has been intriguing me for a while. <br />Since several colleagues were baffled by the semantics of the new enhancements of MySQL 5.5 partitions, after talking at length with the creator and the author of the manual pages, I produced this article: <a href="http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html">A deep look at MySQL 5.5 partitioning enhancements</a>.<br />Happy holidays!<br /></td></tr></table><div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/16959946-8463892460899345105?l=datacharmer.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=22793&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=22793&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2009/12/24/holiday-gift-a-deep-look-at-mysql-5-5-partitioning-enhancements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

