<?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>PHP - TechnoFrame &#187; Mysql</title>
	<atom:link href="http://www.netfulvpc.fr/phptechnoframe/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.netfulvpc.fr/phptechnoframe</link>
	<description>Le Blog des Technologies PHP</description>
	<lastBuildDate>Sun, 08 Nov 2009 11:28:22 +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 Performance &amp; Tuning</title>
		<link>http://www.netfulvpc.fr/phptechnoframe/etudes/mysql-performance-tuning/</link>
		<comments>http://www.netfulvpc.fr/phptechnoframe/etudes/mysql-performance-tuning/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 10:03:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Performance]]></category>
<category>MYSQL</category>
		<guid isPermaLink="false">http://www.netfulvpc.fr/phptechnoframe/etudes/mysql-performance-tuning</guid>
		<description><![CDATA[Il y a quelques temps déjà, un webcast de MySql AB expliquait comment bien utiliser MySql et en faire un concurrent à la mesure d&#8217;Oracle.
J&#8217;ai repris sous forme PDF ce webcast (in english) intéressant et vous pouvez le télécharger ici .
Il serait temps que les DSI et dirigeants informatiques commencent à comprendre que l&#8217;univers PHP / MySql [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Il y a quelques temps déjà, un webcast de <a title="MySQL Performance Tuning: Top 5 Tips" href="http://www.mysql.com/news-and-events/on-demand-webinars/mysql-performance-tuning.php" target="_blank"><strong>MySql AB</strong></a> expliquait comment bien utiliser MySql et en faire un concurrent à la mesure d&#8217;Oracle.<br />
J&#8217;ai repris sous forme PDF ce webcast (in english) intéressant et vous pouvez le télécharger <a title="MySql Performance &amp; Tuning" href="http://www.netfulvpc.fr/phptechnoframe/wp-content/uploads/2007/09/performance-et-tunning-mysql.rar"><strong>ici</strong></a> .<br />
Il serait temps que les DSI et dirigeants informatiques commencent à comprendre que l&#8217;univers PHP / MySql peut apporter des solutions professionnelles et qu&#8217;ils <strong><span style="color: #ff6600;">abandonnent</span></strong> l&#8217;association suivante : <strong>PHP/MySql = bidouille</strong> !!!</p>
<br /><strong>Tags:</strong> <a href="http://www.netfulvpc.fr/phptechnoframe/tag/MYSQL" title="Naviguer dans MYSQL" rel="tag">MYSQL</a>]]></content:encoded>
			<wfw:commentRss>http://www.netfulvpc.fr/phptechnoframe/etudes/mysql-performance-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OPTIMISER PHP &amp; MYSQL</title>
		<link>http://www.netfulvpc.fr/phptechnoframe/etudes/optimiser-php-mysql/</link>
		<comments>http://www.netfulvpc.fr/phptechnoframe/etudes/optimiser-php-mysql/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 14:13:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Etudes]]></category>
		<category><![CDATA[Trucs et Astuces]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
<category>MYSQL</category><category>PHP</category>
		<guid isPermaLink="false">http://www.netfulvpc.fr/phptechnoframe/trucs-et-astuces/optimiser-php-mysql</guid>
		<description><![CDATA[RASMUS LERDORF, le créateur de PHP, nous gratifie d&#8217;un SlideShow (uniquement visible sous FIREFOX ou SAFARI) qui nous explique comment optimiser les développements en PHP/MySql afin de diminuer les coûts d&#8217;infrastructure et le fameux T.C.O (coût de possession du matériel informatique : Total Cost of Ownership in english).
Il part d&#8217;un exemple simple : Un site [...]]]></description>
			<content:encoded><![CDATA[<p>RASMUS LERDORF, le créateur de PHP, nous gratifie d&#8217;un <strong><a title="Faire des économies" href="http://talks.php.net/show/phpuk07/6" target="_blank">SlideShow</a></strong> (uniquement visible sous FIREFOX ou SAFARI) qui nous explique comment optimiser les développements en PHP/MySql afin de diminuer les coûts d&#8217;infrastructure et le fameux <strong>T.C.O</strong> (coût de possession du matériel informatique : Total Cost of Ownership in english).</p>
<p>Il part d&#8217;un exemple simple : Un site de 500.000 utilisateurs faisant une moyenne quotidienne de 100 requêtes.<br />
Ce qui donne 578 requêtes par secondes, multiplié par 3 du fait que le traffic ne pas également distribué sur une journée, soit à peu près 1700 requêtes par seconde à gérer.<span id="more-19"></span>Après analyse de l&#8217;infrastructure intiale et d&#8217;un codage simple de quelques pages et quelques includes, le benchmark de cette petite application utilisée par <strong>500.000 utilisateurs</strong> nécessite <strong>100 serveurs</strong> (il ne traite que 17 requêtes par seconde).</p>
<p>Il enlève dans le fichier Postgresql.conf  l&#8217;appel à SSL;  Résultat  : on passe à <strong>108 </strong>requêtes par seconde. Il faut encore une vingtaine de serveurs</p>
<p>Ensuite c&#8217;est le temps d&#8217;accès à la base de données qui prend 10% du temps global, on met donc en place les connections persistentes.<br />
Résultat  : on passe à <strong>339 requêtes</strong> par seconde et il ne faut plus que <strong>5 serveurs</strong>.</p>
<p align="left">Puis on passe de :<code><span style="color: #000000"><span style="color: #dd0000">'db_opts' </span><span style="color: #007700">=&gt; array(</span><span style="color: #0000bb">PDO</span><span style="color: #007700">::</span><span style="color: #0000bb">ERRMODE_EXCEPTION </span><span style="color: #007700">=&gt; </span><span style="color: #0000bb">true</span><span style="color: #007700">, </span><span style="color: #0000bb"> PDO</span><span style="color: #007700">::</span><span style="color: #0000bb">ATTR_PERSISTENT </span><span style="color: #007700">=&gt; </span><span style="color: #0000bb">true</span><span style="color: #007700">)</span></span></code><br />
à<br />
<code><span style="color: #000000"><span style="color: #dd0000">'db_opts' </span><span style="color: #007700">=&gt; array(</span><span style="color: #0000bb">PDO</span><span style="color: #007700">::</span><span style="color: #0000bb">ERRMODE_EXCEPTION </span><span style="color: #007700">=&gt; </span><span style="color: #0000bb">true</span><span style="color: #007700">,<br />
</span><span style="color: #0000bb">PDO</span><span style="color: #007700">::</span><span style="color: #0000bb">ATTR_PERSISTENT </span><span style="color: #007700">=&gt; </span><span style="color: #0000bb">true</span><span style="color: #007700">,<br />
</span><strong><span style="color: #0000bb">PDO</span><span style="color: #007700">::</span><span style="color: #0000bb">ATTR_EMULATE_PREPARES</span><span style="color: #007700">=&gt;</span><span style="color: #0000bb">true</span></strong><span style="color: #007700">)</span></span></code></p>
<p>Le passage de Query en accès par les API Prepare/Execute de MySQLà des accès directs permet de monter à un traitement par le serveur de <strong>580 requêtes</strong> par seconde et il ne faut plus que <strong>3 serveurs</strong>. Les tables MyIsam ou InnoDb procurent les mêmes chiffres, et Sqlite3 est un peu moins performant mais pas beaucoup plus (550 requêtes/secondes).</p>
<p>La mise en place d&#8217;un gestionnaire de cache comme APC donne<strong> 805 requêtes</strong>/secondes. La Gestion de cache se satisfait mal des appels fréquent à des include_once ou require_once.  On les remplace par des REQUIRE simples. Résultat  : <strong>875 requêtes</strong> par seconde.</p>
<p>L&#8217;optimisation dans le php.ini d&#8217;APC, et l&#8217;ajout d&#8217;une instruction sous &#8216;db_opts&#8217; égale à <code><span style="color: #000000"><span style="color: #dd0000">'path' </span><span style="color: #007700">=&gt; </span><span style="color: #0000bb">getcwd</span><span style="color: #007700">()</span></span></code><br />
et quelque modification dans le code de l&#8217;application pour prendre en compte ces paramètres, nous amène à <strong>885  requêtes</strong> par seconde, soit 2 serveurs.</p>
<p>APC permet aussi de configurer le stockage des variables PHP en mémoire partagée. Résultat  : <strong>890 requêtes</strong> par seconde.<br />
Si l&#8217;on pousse un peu, on peut aussi stocker les résultats des requêtes à la base de données pendant 5 minutes en cache. Résultat  : <strong>1080 requêtes</strong> par seconde.</p>
<p>Enfin le remplacement des &laquo;&nbsp;includes&nbsp;&raquo;, l&#8217;ajout de  fonctions et la suppression de certains &laquo;&nbsp;Require&nbsp;&raquo;, nous amène à  1100 requêtes par seconde.<br />
Nous n&#8217;atteignons pas les 1700 requêtes par seconde nécessaires au traitement des consultations par les internautes, mais nous y sommes presque. <span style="color: #ff6600;"><strong><br />
On est passé de 100 à 2 serveurs : Que d&#8217;économies associées !!!</strong></span></p>
<br /><strong>Tags:</strong> <a href="http://www.netfulvpc.fr/phptechnoframe/tag/MYSQL" title="Naviguer dans MYSQL" rel="tag">MYSQL</a>|<a href="http://www.netfulvpc.fr/phptechnoframe/tag/PHP" title="Naviguer dans PHP" rel="tag">PHP</a>]]></content:encoded>
			<wfw:commentRss>http://www.netfulvpc.fr/phptechnoframe/etudes/optimiser-php-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
