<?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; Locking</title>
	<atom:link href="http://www.noidea.ca/tag/locking/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>Locking et MyISAM</title>
		<link>http://www.noidea.ca/2008/04/20/locking-et-myisam/</link>
		<comments>http://www.noidea.ca/2008/04/20/locking-et-myisam/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 17:27:17 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Storage Engine]]></category>
		<category><![CDATA[Locking]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[Read Local]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=8</guid>
		<description><![CDATA[Avec MySQL, il existe deux types de locking : le Shared Lock et le Exclusive Lock. Un client peut demander explicitement un lock sur une ou plusieurs tables pour manipuler les données sans qu&#8217;un autre client interfère sur ces données. Il doit ensuite être relâché par le client qui l&#8217;a demandé lorsqu&#8217;il a terminé ses [...]]]></description>
			<content:encoded><![CDATA[<p>Avec MySQL, il existe deux types de locking : le Shared Lock et le Exclusive Lock. Un client peut demander explicitement un lock sur une ou plusieurs tables pour manipuler les données sans qu&#8217;un autre client interfère sur ces données. Il doit ensuite être relâché par le client qui l&#8217;a demandé lorsqu&#8217;il a terminé ses manipulations.</p>
<p>Il est possible de demander un Read Lock, un Write Lock ou un Read Local Lock et la manière de locker les tables diffère d&#8217;un engine à l&#8217;autre. Il faut aussi savoir que les Read Lock et Read Local Lock sont des Shared locks, ce qui signifie que la table demeure accessible en lecture pour tous les clients. Les Write Lock eux sont exclusifs, ce qui a pour effet que seul le client qui demande le lock peut lire et écrire dans la table.</p>
<p>Pour MyISAM, les tables entières doivent être lockées pour un lock exclusif. Évidemment, il y a des avantages et des inconvénients. L&#8217;un des avantages majeurs de locker une table au complet est qu&#8217;il est impossible de créer un deadlock car un lock exclusif appartient qu&#8217;à un seul client à la fois. De plus, ce genre de lock demande très très peu de mémoire et de temps CPU.</p>
<p>Étant donné que la table entière est lockée, les autres clients doivent attendre que le lock soit libéré pour pouvoir lire ou écrire dans la table. C&#8217;est un inconvénient majeur. Supposons que 1000 clients soient connectés au serveur et que ces 1000 clients tentent de lire une table qui a été lockée par un des 1000 clients, ils doivent tous attendre. Si pour une situation imprévue, la table demeure lockée pour 30 secondes, vous pouvez imaginer les problèmes que ça peut engendrer.</p>
<p>Dans certains cas, ce problème peut cependant être évité en utilisant un Read Local. Ce type de locking est exclusif à MyISAM. On pourrait comparer un lock Read Local avec une transaction dans le sens où lorsqu&#8217;un Read Local est demandé, le serveur crée une espèce de copie de l&#8217;état actuel de la table sans empêcher les autres utilisateurs de lire et écrire dedans. La table demeure virtuellement inchangée pour le client qui a demandé le lock jusqu&#8217;à ce qu&#8217;il le libère.</p>
<p>Soyez prudent avec les Locks, surtout avec MyISAM !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2008/04/20/locking-et-myisam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
