<?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>Un bout de DBA &#187; Standard</title>
	<atom:link href="http://www.noidea.ca/tag/standard/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noidea.ca</link>
	<description>MySQL, En long et en large</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL Query Cache: l&#8217;importance de la constance</title>
		<link>http://www.noidea.ca/2008/04/13/mysql-query-cache-constance/</link>
		<comments>http://www.noidea.ca/2008/04/13/mysql-query-cache-constance/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 19:39:15 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[Syntaxe]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=4</guid>
		<description><![CDATA[Chaque fois qu&#8217;une requête SELECT est envoyée au serveur, MySQL conserve la requête et le résultat dans une cache (MySQL Query Cache). Ainsi, si la même requête est redemandée, le serveur peut retourner le résultat sans physiquement  exécuter la requête. Cette cache joue un rôle très important dans la performance de la base de [...]]]></description>
			<content:encoded><![CDATA[<p>Chaque fois qu&#8217;une requête SELECT est envoyée au serveur, MySQL conserve la requête et le résultat dans une cache (MySQL Query Cache). Ainsi, si la même requête est redemandée, le serveur peut retourner le résultat sans physiquement  exécuter la requête. Cette cache joue un rôle très important dans la performance de la base de données.</p>
<p>Cependant, la cache possède quelques petites lacunes. Pour que le résultat d&#8217;une requête soit retourné par la cache, la syntaxe des requêtes doit être TRÈS EXACTEMENT PAREIL (bytes pour bytes). Ceci inclus le upper et lower case.</p>
<p>Donc, ces 3 requêtes seront considérées différentes:</p>
<div class="geshi no mysql">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> client <span class="kw1">WHERE</span> prenom <span class="sy0">=</span> <span class="st0">&#39;Pat&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> client <span class="kw1">WHERE</span> prenom <span class="sy0">=</span> <span class="st0">&quot;Pat&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> client <span class="kw1">WHERE</span> prenom <span class="sy0">=</span> <span class="st0">&#39;Pat&#39;</span>;</div>
</li>
</ol>
</div>
<p>Adopter un standard syntaxique devient un avantage qui joue un rôle dans l&#8217;optimisation de la base de données. Cependant, demeurer constant lorsque les requêtes sont écrites dans un code PHP (par exemple) n&#8217;est pas nécessairement facile car la syntaxe PHP utilisé pour formuler la requête peut influencer la requête elle-même.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$sql</span> <span class="sy0">=</span> <span class="st0">&#39;SELECT Name, District</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; FROM city</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; WHERE Population &gt; 30000</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; AND CountryCode != <span class="es0">\&#39;</span>AFG<span class="es0">\&#39;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; ORDER BY Name</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; LIMIT 10&#39;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Il est déconseillé d’utiliser ce genre de syntaxe PHP car plusieurs espaces (ou TAB) s&#8217;insèrent à chaque lignes. Si la même requête doit être utilisée dans un autre script qui possède une indentation différente, il ne sera probablement pas possible d&#8217;utiliser celle en cache.</p>
<p>Utilisez plutôt une syntaxe PHP qui permet de conserver qu&#8217;un seul espace entre chaque instruction:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$sql</span> <span class="sy0">=</span> <span class="st0">&#39;SELECT Name, District&#39;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#39; FROM city&#39;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#39; WHERE Population &gt; 30000&#39;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#39; AND CountryCode != <span class="es0">\&#39;</span>AFG<span class="es0">\&#39;</span>&#39;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#39; ORDER BY Name&#39;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#39; LIMIT 10&#39;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Les requêtes créés avec la deuxième forme conservent toujours qu&#8217;un seul espace entre chaque instruction et demeure lisible peu importe l&#8217;indentation du code. Si toutes les requêtes sont créées avec cette notation, les chances qu’elles se trouvent déjà dans la Query Cache sont meilleures.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2008/04/13/mysql-query-cache-constance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
