<?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</title>
	<atom:link href="http://www.noidea.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noidea.ca</link>
	<description>MySQL, En long et en large</description>
	<lastBuildDate>Wed, 27 Jan 2010 01:59:11 +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>L&#8217;importance des clés primaires avec mk-table-sync</title>
		<link>http://www.noidea.ca/2010/01/26/limportance-des-cles-primaires-avec-mk-table-sync/</link>
		<comments>http://www.noidea.ca/2010/01/26/limportance-des-cles-primaires-avec-mk-table-sync/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 01:59:11 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[Réplication]]></category>
		<category><![CDATA[Tranche de vie]]></category>
		<category><![CDATA[Maatkit]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=404</guid>
		<description><![CDATA[J&#8217;adore Maatkit. Je m&#8217;en sers régulièrement dans toutes sortes d&#8217;occasions. Pour tous les Slaves que je configure, j&#8217;ajoute un petit script maison qui utilise mk-table-sync afin valider l&#8217;intégrité des données sur le Slave avec le Master. Ce petit script envoie un email avec les différences et les requêtes à exécuter le cas échéant.
J&#8217;ai remarqué que [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;adore <a title="Maatkit" href="http://www.maatkit.org/">Maatkit</a>. Je m&#8217;en sers régulièrement dans toutes sortes d&#8217;occasions. Pour tous les Slaves que je configure, j&#8217;ajoute un petit script maison qui utilise mk-table-sync afin valider l&#8217;intégrité des données sur le Slave avec le Master. Ce petit script envoie un email avec les différences et les requêtes à exécuter le cas échéant.</p>
<p>J&#8217;ai remarqué que mk-table-sync possède certaines limitations, c&#8217;est-à-dire que le format de la table et l&#8217;encoding joue un rôle important sur la manière dont l&#8217;outil effectue ses comparaisons. Les tables sans clé primaire ou d&#8217;identifiant unique sont particulièrement problématiques, et c&#8217;est tout à fait compréhensible. Par définition, s&#8217;il n&#8217;y a pas d&#8217;identifiant unique, il est impossible d&#8217;être 100% sur que l&#8217;enregistrement #1 sur le Master correspond à l&#8217;enregistrement #1 sur le Slave. En étant limité à ce niveau, mk-table-sync  préfère &#8220;croire&#8221; que l&#8217;ensemble des données sur le Slave sont erronés et propose des requêtes pour supprimer et réinsérer tous les enregistrements de la table.</p>
<p>Bien que je m&#8217;assure que toutes les tables possèdent des clés primaires lors de leur création, il m&#8217;est arrivé de me faire avoir. Le statement CREATE TABLE tableName SELECT * FROM tableName2 WHERE &#8230;. ; crée une table SANS index! Du coup, mon petit script s&#8217;est mis à envoyer des emails de 17Mo de requêtes SQL, ce que Thunderbird digère très mal <img src='http://www.noidea.ca/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>La leçon est: si vous utilisez mk-table-sync, assurez-vous de TOUJOURS avoir un identifiant unique sur vos tables!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2010/01/26/limportance-des-cles-primaires-avec-mk-table-sync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolutions Geeks de 2010</title>
		<link>http://www.noidea.ca/2010/01/10/resolutions-geek-de-2010/</link>
		<comments>http://www.noidea.ca/2010/01/10/resolutions-geek-de-2010/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 23:05:53 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Autres]]></category>
		<category><![CDATA[Tranche de vie]]></category>
		<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[iWeb]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=393</guid>
		<description><![CDATA[L&#8217;année 2009 a été une année chargée pour MySQL: après son achat par Sun, il passe aux mains d&#8217;Oracle. Ce dernier achat fait beaucoup jaser et plusieurs personnes s&#8217;interrogent sur l&#8217;avenir de MySQL. Je suppose que nous saurons en 2010 ce que Oracle compte faire de MySQL. Personnellement, je préfère attendre les publications officielles plutôt [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;année 2009 a été une année chargée pour MySQL: après son achat par Sun, il passe aux mains d&#8217;Oracle. Ce dernier achat fait beaucoup jaser et plusieurs personnes s&#8217;interrogent sur l&#8217;avenir de MySQL. Je suppose que nous saurons en 2010 ce que Oracle compte faire de MySQL. Personnellement, je préfère attendre les publications officielles plutôt que de m&#8217;énerver sur les spéculations alarmistes qu&#8217;on a pu lire ces derniers mois&#8230;</p>
<p>De mon côté, l&#8217;année 2010 s&#8217;avère une année très mouvementée:</p>
<ul>
<li>Chez <a title="iWeb Technologies" href="http://www.iweb.com">iWeb</a>, je participe à un ambitieux projet qui devrait voir le jour au courant de l&#8217;été.</li>
<li>Le soir et les fins de semaine, je passe la majorité de mon temps au <a title="HEC" href="http://hec.ca/" target="_blank">HEC</a> pour satisfaire les exigences de <a href="http://hec.ca/programmes_formations/certificats/offerts/sys_info_analyse_affaires/index.html" target="_blank">mes cours</a>.</li>
</ul>
<p>Malgré tout, j&#8217;ai quand même l&#8217;intention de (ce sont mes résolutions):</p>
<ul>
<li>Écrire sur mon blog plus régulièrement</li>
<li>Être davantage présent chez les diverses communautés montréalaises et Open-Source</li>
<li>Parfaire mes habiletés de ScrumMaster/Chef d&#8217;équipe</li>
<li>Faire des recherches et tests plus sérieux avec <a title="Drizzle" href="https://launchpad.net/drizzle">Drizzle</a> et <a title="MariaDB" href="https://launchpad.net/maria">MariaDB</a></li>
</ul>
<p>Et vous, quelle sont vos résolutions geek 2010 ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2010/01/10/resolutions-geek-de-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retrospective du Demo Camp de Montréal</title>
		<link>http://www.noidea.ca/2009/12/03/retrospective-du-demo-camp-de-montreal/</link>
		<comments>http://www.noidea.ca/2009/12/03/retrospective-du-demo-camp-de-montreal/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:15:29 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[backup]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=378</guid>
		<description><![CDATA[Comme plusieurs bons ScrumMasters, j&#8217;applique des principes de scrums dans ma vie quotidienne. Dans ce sens, je me permets de publier ma rétrospective du Demo Camp d&#8217;hier soir.
Dans les points négatifs à améliorer:

Ne pas essayer de faire une présentation de 30 minutes en 10 minutes
S&#8217;informer davantage sur la formule de présentation
Prévoir que le Xorg de [...]]]></description>
			<content:encoded><![CDATA[<p>Comme plusieurs bons ScrumMasters, j&#8217;applique des principes de scrums dans ma vie quotidienne. Dans ce sens, je me permets de publier ma rétrospective du Demo Camp d&#8217;hier soir.</p>
<p>Dans les points négatifs à améliorer:</p>
<ul>
<li>Ne pas essayer de faire une présentation de 30 minutes en 10 minutes</li>
<li>S&#8217;informer davantage sur la formule de présentation</li>
<li>Prévoir que le Xorg de mon debian n&#8217;allait pas supporter les résolutions des mégas projecteurs</li>
<li>Prévoir que simuler le crash d&#8217;une DB et la recouvrir live implique un certain nombre de risques</li>
<li>Pratiquer la présentation, plus, beaucoup plus</li>
</ul>
<p>Dans les points positifs à retenir:</p>
<ul>
<li>De la bière gratuite fournie par Microsoft</li>
<li>Élargis mon réseau de contacts</li>
</ul>
<p>J&#8217;ai spécialement aimé la présentation de <a href="http://www.dokdok.com/" target="_blank">DokDok</a>.</p>
<p>Comme promis, je publie le script de backup que j&#8217;ai finalement à peine présenté. Anyway, pour les intéressés, il se trouve <a href="http://noidea.ca/wp-content/uploads/backup.sh">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/12/03/retrospective-du-demo-camp-de-montreal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Sandbox: bravo !</title>
		<link>http://www.noidea.ca/2009/11/30/mysql-sandbox-bravo/</link>
		<comments>http://www.noidea.ca/2009/11/30/mysql-sandbox-bravo/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 04:30:47 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[Réplication]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Sandbox]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=362</guid>
		<description><![CDATA[J&#8217;ai souvent entendu parler de MySQL Sandbox. Pour effectuer des tests avec un Master/Slave en fin de semaine, j&#8217;ai décidé de l&#8217;essayer puisque je n&#8217;avais que mon laptop. MySQL Sandbox est un outil pour installer un ou plusieurs serveurs isolés, sans affecter les autres.
Wow! Juste Wow! MySQL Sandbox est un outil vraiment génial! J&#8217;ai pu [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai souvent entendu parler de <a title="MySQL Sandbox" href="https://launchpad.net/mysql-sandbox" target="_blank">MySQL Sandbox</a>. Pour effectuer des tests avec un Master/Slave en fin de semaine, j&#8217;ai décidé de l&#8217;essayer puisque je n&#8217;avais que mon laptop. MySQL Sandbox est un outil pour installer un ou plusieurs serveurs isolés, sans affecter les autres.</p>
<p>Wow! Juste Wow! MySQL Sandbox est un outil vraiment génial! J&#8217;ai pu créer une instance de MySQL Master avec 2 instances Slaves sur la même machine en moins de 1 minute! C&#8217;est le genre de tâche qui prend de 30 minutes à 1 heure lorsqu&#8217;un administrateur expérimenté le fait manuellement. MySQL Sandbox permet non seulement d&#8217;installer rapidement 1 ou plusieurs serveurs, il permet aussi d&#8217;installer des versions différentes en quelque instant !</p>
<p>De plus, des options prédéfinies permettent de créer un setup Master-Slave ou  Master-Master automatiquement. Il vient avec des outils permettant d&#8217;effectuer des tâches d&#8217;administration complexes de manière excessivement simple. En résumé, il permet carrément de <strong>jouer avec MySQL</strong>.</p>
<p>Comment ça marche? On <a href="http://dev.mysql.com/downloads/" target="_blank">télécharge la version de MySQL</a> qu&#8217;on souhaite installer. Ensuite, on peut</p>
<p>Créer une instance de MySQL:</p>
<blockquote><p>make_sandbox  /path/to/mysql-X.X.XX-osinfo.tar.gz</p></blockquote>
<p>Créer un Master avec 2 Slaves:</p>
<blockquote><p>make_replication_sandbox /path/to/mysql-X.X.XX-osinfo.tar.gz</p></blockquote>
<p>Créer 4 serveurs avec une réplication circulaire (Master-Master)</p>
<blockquote><p>make_replication_sandbox &#8211;circular=4 /path/to/mysql-X.X.XX-osinfo.tar.gz</p></blockquote>
<p style="text-align: left;">Ces 3 commandes installent, configurent et démarrent le ou les serveurs MySQL. En quelques mots, MySQL Sandbox c&#8217;est simplicité, rapidité et fun!<br />
<img class="size-medium wp-image-371 aligncenter" title="MySQL Sandbox" src="http://www.noidea.ca/wp-content/uploads/2009/11/Sakila_sandbox_479x396_white_bg-300x248.png" alt="2009-11-30 00:16:29" width="300" height="248" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/11/30/mysql-sandbox-bravo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Un bout de DBA au Career Demo Camp de Montréal</title>
		<link>http://www.noidea.ca/2009/11/17/un-bout-de-dba-au-career-demo-camp-de-montreal/</link>
		<comments>http://www.noidea.ca/2009/11/17/un-bout-de-dba-au-career-demo-camp-de-montreal/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 01:43:06 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[Tranche de vie]]></category>
		<category><![CDATA[backup]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=355</guid>
		<description><![CDATA[Mercredi le 2 décembre, je serai parmi les speakers au Carrer Demo Camp de Montréal. Le CDCM est un événement gratuit qui se déroule simultanement et dans les même locaux que le Microsoft Techdays de Montréal. Il est animé par mon ami Jean-Luc Sanscartier et Joey DeVilla.
Au menu, une démonstration sur une manière simple et [...]]]></description>
			<content:encoded><![CDATA[<p>Mercredi le 2 décembre, je serai parmi les speakers au <a title="Career Demo Camp" href="http://careerdemocamp.eventbrite.com/" target="_blank">Carrer Demo Camp de Montréal</a>. Le CDCM est un événement gratuit qui se déroule simultanement et dans les même locaux que le <a href="http://www.microsoft.com/canada/fr/techdays/">Microsoft Techdays de Montréal</a>. Il est animé par mon ami <a href="http://ca.linkedin.com/in/jeanlucsanscartier" target="_blank">Jean-Luc Sanscartier </a>et Joey DeVilla.</p>
<p>Au menu, une démonstration sur une manière simple et efficace de faire des backups MySQL gratuitement.</p>
<p>Avis aux intéressés! Il reste encore quelques places!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/11/17/un-bout-de-dba-au-career-demo-camp-de-montreal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Une belle histoire de Scaling</title>
		<link>http://www.noidea.ca/2009/10/20/histoire-de-scalling-mysql/</link>
		<comments>http://www.noidea.ca/2009/10/20/histoire-de-scalling-mysql/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 01:00:09 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=342</guid>
		<description><![CDATA[J&#8217;ai lu une histoire très intéressante aujourd&#8217;hui à propos de l&#8217;utilisation de MySQL chez SoftLayer. Il raconte comment ils ont atteind les limites de MySQL de 5 manières différentes avant de trouver &#8220;la&#8221; solution pour construire un datawarehouse. Une belle histoire de scaling!
 http://sldn.softlayer.com/09/2009/building-the-data-warehouse/
Disponible en anglais uniquement&#8230;
]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai lu une histoire très intéressante aujourd&#8217;hui à propos de l&#8217;utilisation de MySQL chez SoftLayer. Il raconte comment ils ont atteind les limites de MySQL de 5 manières différentes avant de trouver &#8220;la&#8221; solution pour construire un datawarehouse. Une belle histoire de scaling!</p>
<p><a href="http://sldn.softlayer.com/09/2009/building-the-data-warehouse/" target="_blank"> http://sldn.softlayer.com/09/2009/building-the-data-warehouse/</a></p>
<p>Disponible en anglais uniquement&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/10/20/histoire-de-scalling-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL_MODE bonne ou mauvaise idée ?</title>
		<link>http://www.noidea.ca/2009/10/19/sql_mode-bonne-mauvaise-idee/</link>
		<comments>http://www.noidea.ca/2009/10/19/sql_mode-bonne-mauvaise-idee/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 00:50:55 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Standard]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=332</guid>
		<description><![CDATA[MySQL est connu pour être très flexible avec la validation des données. Les conversions silencieuses ne sont pas des pratiques courantes parmi les autres SGBD. Au lieu de lancer des erreurs, MySQL lance des warnings, ce que la majorité des applications ne gèrent pas. (Est-ce que votre application fait un SHOW WARNINGS; à chaque requête?)
Néanmoins, [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL est connu pour être très flexible avec la validation des données. Les conversions silencieuses ne sont pas des pratiques courantes parmi les autres SGBD. Au lieu de lancer des erreurs, MySQL lance des warnings, ce que la majorité des applications ne gèrent pas. (Est-ce que votre application fait un SHOW WARNINGS; à chaque requête?)</p>
<p>Néanmoins, la variable SQL_MODE permet de contrôler ce comportement. Plusieurs niveaux de validation peuvent donc être assignés, partant d&#8217;une validation quasi absente (par défaut) à une validation très stricte. Ce qui peut paraître comme une bonne affaire me parait plutôt comme une très mauvaise idée.</p>
<p>Le problème avec le SQL_MODE c&#8217;est que par défaut, la valeur est vide (oui oui!). Il n&#8217;y a pas de mode prédéfinie ce qui donne un comportement très souple. Plusieurs personnes ne savent pas que cette variable existe et construisent une application qui repose malheureusement sur cette souplesse. Lorsque votre application finie par en dépendre, c&#8217;est-à-dire qu&#8217;elle se comporte &#8220;normalement&#8221; avec cette absence de validation de données, vous risquez gros.</p>
<p>On peut insérer des dates impossibles comme le 31 février ou 0000-00-00 , des divisions par 0 dans des opérations mathématiques et des valeurs qui dépassent largement la limite possible des champs.  Votre application fait peut-être tout ça, sans même que vous le sachiez! Elle ne produit aucune erreur puisque du côté de MySQL, il n&#8217;y a que des Warnings.</p>
<p>Imaginez le scénario: vous désirez loguer des transactions bancaires, mais un bug idiot fait que toutes les dates des transactions sont insérées avec un string quelconque, 1-janvier-2009 par exemple, ce que MySQL converti en 0000-00-00. Le champ pour stocker l’IP de la personne qui fait la transaction est un SMALLINT, tous vos IP atteignent la valeur maximum et  sont convertis en 32767.</p>
<p><strong>Un bon conseil</strong>: si vous débutez un nouveau projet, assurez-vous de mettre un SQL_MODE strict pour vous éviter des problèmes tôt ou tard ! Essayez-le sur une application existante pour voir comme elle réagit!</p>
<p>Le SQL_MODE peut être modifié par session ou globalement pour l&#8217;ensemble des usagés. Parmi les plus stricts, on retrouve</p>
<p><em>strict_trans_table</em>: Si une valeur n&#8217;a pas pu être insérée dans une table transactionnelle sans modification, la commande est annulée. Pour une table non-transactionnelle, la commande est annulée si cela survient dans une ligne unique ou dans la première ligne d&#8217;une insertion multiple</p>
<p><em>traditional</em>: MySQL se comporte comme un système SQL &#8220;traditionnel&#8221;. Une description simple est que ce mode &#8220;émet une erreur et non pas une alerte&#8221; lors de l&#8217;insertion d&#8217;une valeur incorrecte dans une colonne. Note : si vous utilisez un moteur de table non-transactionnel, les commandes INSERT/UPDATE s&#8217;arrêteront dès que l&#8217;erreur est repérée.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/10/19/sql_mode-bonne-mauvaise-idee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Query Cache</title>
		<link>http://www.noidea.ca/2009/10/10/mysql-query-cache/</link>
		<comments>http://www.noidea.ca/2009/10/10/mysql-query-cache/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 13:32:47 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Consultation]]></category>
		<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Query Cache]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=323</guid>
		<description><![CDATA[La query cache de MySQL joue un rôle important dans la performance de plusieurs sites Web.  Elle a pour avantage d&#8217;être  transparente, c&#8217;est-à-dire que la ou les applications qui s&#8217;en servent n&#8217;ont pas besoin d&#8217;être modifiées.
J&#8217;ai recu la semaine passée la question suivante (je résume):
Je souhaite utiliser une cache pour le menu de mon site [...]]]></description>
			<content:encoded><![CDATA[<p>La query cache de MySQL joue un rôle important dans la performance de plusieurs sites Web.  Elle a pour avantage d&#8217;être  transparente, c&#8217;est-à-dire que la ou les applications qui s&#8217;en servent n&#8217;ont pas besoin d&#8217;être modifiées.</p>
<p>J&#8217;ai recu la semaine passée la question suivante (je résume):</p>
<blockquote><p>Je souhaite utiliser une cache pour le menu de mon site afin de le rendre plus performant. Puisque le contenu du menu ne change pratiquement jamais, est-il plus avantageux d&#8217;utiliser APC Cache que la Query Cache de MySQL puisque la communication s&#8217;effectue selon un schéma comme:</p>
<p>php -&gt; cache_apc (ram)<br />
php -&gt; mysql -&gt; query_cache (ram)</p>
<p>Je souhaite réduire au minimum les requêtes SQL exécutées.</p></blockquote>
<p>Personnellement, j&#8217;utiliserais la cache de MySQL. Tout d&#8217;abord, il faut savoir qu&#8217;il y a une énorme différence entre les 2 caches.</p>
<p>MySQL Query Cache est centralisée sur le serveur MySQL, c&#8217;est-à-dire qu&#8217;elle utilise la RAM de la machine du serveur MySQL. Elle possède un mécanisme d&#8217;invalidation basique, mais efficace. L&#8217;invalidation se produit lorsque des valeurs d&#8217;une table sont en cache, et que ces valeurs sont mise à jour par une application ou manuellement par un utilisateur.</p>
<p>APC Cache est centralisée sur le serveur Web, c&#8217;est-à-dire qu&#8217;elle utilise la RAM disponible sur le serveur qui roule Apache et PHP (en supposant que vous utilisez Apache). Vous serez responsable d&#8217;invalider la cache lorsque nécessaire. Si quelqu&#8217;un modifie la valeur directement dans MySQL, la cache possèdera la vieille valeur jusqu&#8217;à ce qu&#8217;un processus l&#8217;invalide.</p>
<p>Puisque les données ne changent pratiquement jamais, je ne me casserais pas la tête à réinventer la roue. MySQL fait déjà pour vous ce que APC ferait, sans le moindre effort. De plus, il est plus ou moins vrai de dire que d&#8217;appeler la cache correspond à une requête. Oui, la string SQL est nécessairement envoyé à MySQL, mais lorsque celui-ci la reçoit et valide que cette requête est cachée, il retourne immédiatement le résultat sans rien &#8220;processer&#8221;. C&#8217;est comme ça que fonctionne APC aussi, il lui faut un identifiant unique pour associer le résultat, tout comme fait MySQL avec le HASH de la requête.</p>
<p>Les caches (peu importe laquelle) sont tout aussi efficaces avec une petite requête qui consomme peu de ressource qu&#8217;avec une grosse qui en demande beaucoup. Il est donc plus avantageux de cacher les processus lourds que les légers.</p>
<p>Ce qu&#8217;il faut surtout se soucier lorsqu&#8217;on utilise une cache, c&#8217;est comment et à quelle fréquence il faut l&#8217;invalider. Lorsque la Query Cache de MySQL est activée, le processus de cacher les résultats et de les invalider s&#8217;effectue tout seul de manière invisible. Ainsi, d&#8217;autres requêtes que vous ne soupçonnez même pas bénéficient de la cache. À l&#8217;inverse, il faut modifier le code pour chaque requête que vous souhaitez cacher avec APC.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/10/10/mysql-query-cache/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Sondage: Storage engine non officiel</title>
		<link>http://www.noidea.ca/2009/09/21/sondage-storage-engine-non-officiel/</link>
		<comments>http://www.noidea.ca/2009/09/21/sondage-storage-engine-non-officiel/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 01:45:14 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[Storage Engine]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[XtraDB]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=308</guid>
		<description><![CDATA[Depuis quelques années, beaucoup de storages engines ont vue le jour pour répondre à des besoins que les storages engines fournis avec MySQL ne font pas bien, voir pas du tout. Selon moi, la majorité d&#8217;entre eux sont des projets qui risquent mourir dans un proche avenir. Toujours selon moi, pour que les projets gratuits [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelques années, beaucoup de storages engines ont vue le jour pour répondre à des besoins que les storages engines fournis avec MySQL ne font pas bien, voir pas du tout. Selon moi, la majorité d&#8217;entre eux sont des projets qui risquent mourir dans un proche avenir. Toujours selon moi, pour que les projets gratuits et opensource demeurent longtemps, il faut qu&#8217;ils jouissent d&#8217;une certaine popularité, ce que la majorité des storages engines ne possèdent pas. De plus, ils doivent être en mesure de prouver qu&#8217;ils sont sans faille; on ne peut se permettre de perdre des données à cause d&#8217;un engine immature.</p>
<p><img class=" alignright" title="percona-xtradb" src="../wp-content/uploads/2009/12/percona-xtradb.png" alt="Percona XtraDB" /></p>
<p>Malgré tout, je crois en un storage engine non officiel: <a title="Percona XtraDB" href="https://launchpad.net/percona-innodb" target="_blank">Percona-XtraDB</a>. Il est basé sur le populaire engine InnoDB, mais offre de meilleures performances tout en demeurant 100% compatible à ce que InnoDB peut accomplir. On peut donc remplacer aveuglement InnoDB par XtraDB sans craindre quoi que ce soit! On pourrait ainsi dire qu&#8217;il s&#8217;agit d&#8217;un nouveau InnoDB, plus rapide et plus robuste.</p>
<p>Comme son nom l&#8217;indique, il est principalement développé par <a title="Percona Website" href="http://www.percona.com/" target="_blank">Percona</a>, une entreprise pour laquelle j&#8217;ai un très grand respect. Bien qu&#8217;il soit encore jeune, j&#8217;ai confiance qu&#8217;il atteigne une maturité très rapidement. Je suis de très près son évolution et j&#8217;ai déjà élaboré quelques tests avec.</p>
<p>J&#8217;aimerais connaitre vos opinions sur les storages engines non officiels.</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/09/21/sondage-storage-engine-non-officiel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL comme référence</title>
		<link>http://www.noidea.ca/2009/09/09/mysql-comme-reference/</link>
		<comments>http://www.noidea.ca/2009/09/09/mysql-comme-reference/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 01:04:44 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Autres]]></category>
		<category><![CDATA[communauté]]></category>
		<category><![CDATA[freenode]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=300</guid>
		<description><![CDATA[Comme plusieurs savent déjà, je suis régulièrement sur IRC (sur Freenode) sur des canaux reliés à l’informatique. Je traîne notamment sur #MySQL et #MySQL-fr. Depuis peu, je vais sur #PostgreSQL histoire de voir ce qui se fait ailleurs et quel genre de problèmes les utilisateurs de PostgreSQL ont. Après quelques jours, j’ai remarqué quelque chose [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="sourire" src="../wp-content/uploads/2009/09/sourire-150x150.jpg" alt="sourire" width="100" height="100" />Comme plusieurs savent déjà, je suis régulièrement sur IRC (sur Freenode) sur des canaux reliés à l’informatique. Je traîne notamment sur #MySQL et #MySQL-fr. Depuis peu, je vais sur #PostgreSQL histoire de voir ce qui se fait ailleurs et quel genre de problèmes les utilisateurs de PostgreSQL ont. Après quelques jours, j’ai remarqué quelque chose qui m’a fait sourire: les gens sur #postgresql comparent souvent Postgresql à MySQL.</p>
<p>Beaucoup d’entre eux tentent de migrer de MySQL vers PostgreSQL et sont heurtés à toutes sortes de petits problèmes. Ce que j’en retiens comme conclusion, c’est que MySQL est d’abord et avant tout le SGBD de premier choix. Davantage de gens connaissent et apprennent MySQL en premier, avant de potentiellement se tourner vers d’autres solutions. Il est souvent le point de référence pour savoir si un truc va mieux ou moins bien que les autres solutions comme PostgreSQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/09/09/mysql-comme-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
