<?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: Guidance for MySQL Optimizer Developers</title>
	<atom:link href="http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/</link>
	<description>Everything about MySQL Performance</description>
	<lastBuildDate>Sun, 21 Mar 2010 02:39:05 +0000</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/comment-page-1/#comment-657333</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Thu, 24 Sep 2009 18:50:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=1211#comment-657333</guid>
		<description>Clint,

I think Drizzle is moving in right direction with this.  And NDB (MySQL Cluster) is another example 
You should not be forced to ONLY access your storage using SQL.  There are cases when you can avoid expense of parsing and picking optimizer plan when transaction is predictable and performance critical.</description>
		<content:encoded><![CDATA[<p>Clint,</p>
<p>I think Drizzle is moving in right direction with this.  And NDB (MySQL Cluster) is another example<br />
You should not be forced to ONLY access your storage using SQL.  There are cases when you can avoid expense of parsing and picking optimizer plan when transaction is predictable and performance critical.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Clint Byrum</title>
		<link>http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/comment-page-1/#comment-657262</link>
		<dc:creator>Clint Byrum</dc:creator>
		<pubDate>Thu, 24 Sep 2009 16:35:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=1211#comment-657262</guid>
		<description>We&#039;ve all been bit by the optimizer suddenly picking a poor plan when the data set changes, most probably without even knowing that the problem lies therein. Its not like saving an explain of every query is really all that common practice (though we have to give a nod to mk-query-digest which would make doing that relatively easy). The most common scenario is probably &quot;hey query X is going REALLY slow on live but its really fast on dev.. explain both.. realize that query on live is now scanning a table.. add index hints or archive some data. This is all reasonable, but it probably means angry database users waiting on highly technical work to complete, which is never a good place to be in.

I think this is a large driving force behind people moving bits of their architecture to simpler key/value systems. Among other things, the value of predictable scalability is outweighing the flexibility of SQL, even when it means rewriting and refactoring large pieces of applications.

So yes, I have to agree that adding more places to force queries to run with a predictable plan is indeed something MySQL will need to continue to meet the demands of users.</description>
		<content:encoded><![CDATA[<p>We&#8217;ve all been bit by the optimizer suddenly picking a poor plan when the data set changes, most probably without even knowing that the problem lies therein. Its not like saving an explain of every query is really all that common practice (though we have to give a nod to mk-query-digest which would make doing that relatively easy). The most common scenario is probably &#8220;hey query X is going REALLY slow on live but its really fast on dev.. explain both.. realize that query on live is now scanning a table.. add index hints or archive some data. This is all reasonable, but it probably means angry database users waiting on highly technical work to complete, which is never a good place to be in.</p>
<p>I think this is a large driving force behind people moving bits of their architecture to simpler key/value systems. Among other things, the value of predictable scalability is outweighing the flexibility of SQL, even when it means rewriting and refactoring large pieces of applications.</p>
<p>So yes, I have to agree that adding more places to force queries to run with a predictable plan is indeed something MySQL will need to continue to meet the demands of users.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/comment-page-1/#comment-656785</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Wed, 23 Sep 2009 20:54:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=1211#comment-656785</guid>
		<description>Didier,

There are a lot of cases why optimizer can do mistakes.  I have not seen optimizer which would never pick the slower plan for some kind of query.  It is good if optimizer is fixed but you can&#039;t always upgrade to the next release.  For example if you have problem with MySQL 5.0 the problem may be fixed in 5.4.x but you may not really be able to upgrade immediately.</description>
		<content:encoded><![CDATA[<p>Didier,</p>
<p>There are a lot of cases why optimizer can do mistakes.  I have not seen optimizer which would never pick the slower plan for some kind of query.  It is good if optimizer is fixed but you can&#8217;t always upgrade to the next release.  For example if you have problem with MySQL 5.0 the problem may be fixed in 5.4.x but you may not really be able to upgrade immediately.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Didier Spezia</title>
		<link>http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/comment-page-1/#comment-656767</link>
		<dc:creator>Didier Spezia</dc:creator>
		<pubDate>Wed, 23 Sep 2009 19:52:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=1211#comment-656767</guid>
		<description>I cannot agree more. Some database projects (for instance PostgreSQL) have the following policy: if the optimizer is wrong, then the optimizer must be fixed, and there is no point supporting hints. Rationale is this policy is supposed to increase the quality of the optimized in the long term. It may work or not work, this is debatable. I will not comment on the relative quality of Oracle/MySQL/PostgreSQL query optimizer.

My point is it is not really a pragmatic approach.  Giving full control over the query execution plans to the developer or DBA is an invaluable tool to get the job done, especially for large databases, in a high throughput, high availability context. Results of a query optimizer can only be as good as the collected statistics, which are sometimes quite difficult to generate in some situations.</description>
		<content:encoded><![CDATA[<p>I cannot agree more. Some database projects (for instance PostgreSQL) have the following policy: if the optimizer is wrong, then the optimizer must be fixed, and there is no point supporting hints. Rationale is this policy is supposed to increase the quality of the optimized in the long term. It may work or not work, this is debatable. I will not comment on the relative quality of Oracle/MySQL/PostgreSQL query optimizer.</p>
<p>My point is it is not really a pragmatic approach.  Giving full control over the query execution plans to the developer or DBA is an invaluable tool to get the job done, especially for large databases, in a high throughput, high availability context. Results of a query optimizer can only be as good as the collected statistics, which are sometimes quite difficult to generate in some situations.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
