<?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>dasini.net - Journal d'un expert MySQL &#187; row based</title>
	<atom:link href="http://dasini.net/blog/tag/row-based/feed/" rel="self" type="application/rss+xml" />
	<link>http://dasini.net/blog</link>
	<description>Repousser les frontières de la connaissance</description>
	<lastBuildDate>Thu, 02 Feb 2012 09:06:27 +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>Les nouveautés de MySQL 5.1 &#8212; (part 2/5)</title>
		<link>http://dasini.net/blog/2008/12/03/les-nouveautes-de-mysql-51-part-25/</link>
		<comments>http://dasini.net/blog/2008/12/03/les-nouveautes-de-mysql-51-part-25/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 00:37:25 +0000</pubDate>
		<dc:creator>freshdaz</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[event scheduler]]></category>
		<category><![CDATA[MySQL 5.1]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[row based]]></category>
		<category><![CDATA[statement based]]></category>

		<guid isPermaLink="false">http://dasini.net/blog/?p=275</guid>
		<description><![CDATA[Pouvoir automatiser ses tâches de manière fiable et simple est le rêve de tout administrateur de base de données. Le programmateur d'évènements (Event Scheduler) est un planificateur de tâches (CRON-like) embarqué dans MySQL 5.1.]]></description>
			<content:encoded><![CDATA[<p><!-- 	 	 --><br />
<em>(<a title="Les nouveautés de MySQL 5.1 -- (part 1/5)" href="http://dasini.net/blog/2008/11/28/les-nouveautes-de-mysql-51-part-15/">&lt;- précédent</a>)</em><br />
<!-- 	 	 --></p>
<h2>Le programmateur d&#8217;évènements</h2>
<p>Pouvoir automatiser ses tâches de manière fiable et simple est le rêve de tout administrateur de base de données. Le programmateur d&#8217;évènements (<em><strong>Event Scheduler</strong></em>) est un planificateur de tâches (<strong>CRON-like</strong>) embarqué dans MySQL 5.1.</p>
<p>Il est alors possible d&#8217;exécuter, de façon récurrente ou <em>unique</em>, des <em>requêtes</em>, en fonction de la date et de l&#8217;heure.</p>
<p>L&#8217;évènement se crée avec la commande <strong>CREATE EVENT</strong>.</p>
<pre>CREATE EVENT nom_evenement ON SCHEDULE
      &lt;moment&gt; DO &lt;code_sql&gt;</pre>
<p>L&#8217;évènement peut être lancé une seule fois (<strong>AT</strong>) ou de manière répétitive (<strong>EVERY</strong>)</p>
<p><strong>&lt;moment&gt; = AT | EVERY</strong></p>
<p>L&#8217;évènement est constitué d&#8217;un ensemble de requêtes.</p>
<p><strong>&lt;code_sql&gt; = requêtes sql</strong></p>
<p>Créer une vue matérialisée rafraîchie toutes les 10 minutes :</p>
<pre>DELIMITER //
CREATE EVENT vue_materialisee
ON SCHEDULE EVERY 10 MINUTE
DO
BEGIN
   TRUNCATE TABLE _event.City_fra;
   INSERT INTO _event.City_fra
      SELECT * FROM world.City WHERE CountryCode='FRA'
      ORDER BY name;
END//
DELIMITER ;</pre>
<p align="left">
<h2>La réplication par les données (row based)</h2>
<p>MySQL permet de journaliser dans un fichier les requêtes d&#8217;écriture effectuées sur le serveur. Ce fichier, le <em>binary log</em>, stocke ces requêtes en un format binaire (d&#8217;où son nom). Il est indispensable à la réplication, et est également utilisé pour la restauration du serveur.</p>
<p>A partir de MySQL 5.1, le serveur permet de stocker cette information, non plus seulement sous forme de requêtes (<em><strong>statement</strong></em><strong> </strong><em><strong>based</strong></em>) mais également sous forme de lignes (<em><strong>row</strong></em><strong> </strong><em><strong>based</strong></em>). Cette nouvelle fonctionnalité est intéressante, en particulier en cas de réplication de requêtes non déterministes.</p>
<p>La commande <strong>SHOW VARIABLES LIKE &#8216;binlog_format&#8217;</strong> permet de connaître le format du journal binaire</p>
<pre>mysql&gt; SHOW VARIABLES LIKE 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.00 sec)</pre>
<p align="left">
<p align="left">
<p align="left">Trois options de journalisation sont disponibles :</p>
<ul>
<li><em><strong>Statement</strong></em><strong> </strong><em><strong>based</strong></em> (mode par défaut) : On journalise la requête <em>telle-quelle</em> (pas son résultat),</li>
<li><em><strong>Row</strong></em><strong> </strong><em><strong>based</strong></em> : On journalise le résultat de la requête,</li>
<li><em><strong>Mixed</strong></em> : MySQL 	choisit entre <em>statement</em> et <em>row</em> en fonction du 	contexte.</li>
</ul>
<p>Le mode de journalisation peut être changé dynamiquement avec la commande <strong>SET</strong></p>
<pre>mysql&gt; SET SESSION binlog_format='ROW';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SHOW VARIABLES LIKE 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.01 sec)

mysql&gt; SET SESSION binlog_format='STATEMENT';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SHOW VARIABLES LIKE 'binlog_format';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.01 sec)

mysql&gt; SET SESSION binlog_format='MIXED';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; SHOW VARIABLES LIKE 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.01 sec)</pre>
<p><em>(<a title="Les nouveautés de MySQL 5.1 -- (part 3/5)" href="http://dasini.net/blog/2008/12/06/les-nouveautes-de-mysql-51-part-35/">à suivre&#8230; MySQL Cluster &amp; general log, slow query log dans une table</a>)</em></p>
<p align="left">
]]></content:encoded>
			<wfw:commentRss>http://dasini.net/blog/2008/12/03/les-nouveautes-de-mysql-51-part-25/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

