[Trad] [svn:pgfr] r1073 - traduc/trunk/slony

svncommit at kryskool.org svncommit at kryskool.org
Mer 11 Juin 21:24:03 CEST 2008


Auteur: daamien
Date: 2008-06-11 21:24:03 +0200 (mer, 11 jun 2008)
Nouvelle Révision: 1073

Modification:
   traduc/trunk/slony/locking.xml
Log:
1ere traduction, à relire 



Modified: traduc/trunk/slony/locking.xml
===================================================================
--- traduc/trunk/slony/locking.xml	2008-06-11 09:04:23 UTC (rev 1072)
+++ traduc/trunk/slony/locking.xml	2008-06-11 19:24:03 UTC (rev 1073)
@@ -4,188 +4,194 @@
      par      $Author$
      révision $Revision$ -->
 
-<sect1 id="locking"> <title>Locking Issues</title>
+<sect1 id="locking"> <title>Problèmes de verrous</title>
 
-<indexterm><primary>locking issues</primary></indexterm>
+<indexterm><primary>problèmes de verrous</primary></indexterm>
 
-<para> One of the usual merits the use, by &postgres;, of
-Multi-Version Concurrency Control (<acronym>MVCC</acronym>) is that
-this eliminates a whole host of reasons to need to lock database
-objects.  On some other database systems, you need to acquire a table
-lock in order to insert data into the table; that can
-<emphasis>severely</emphasis> hinder performance.  On other systems,
-read locks can impede writes; with <acronym>MVCC</acronym>, &postgres;
-eliminates that whole class of locks in that <quote>old reads</quote>
-can access <quote>old tuples.</quote> Most of the time, this allows
-the gentle user of &postgres; to not need to worry very much about
-locks. </para>
+<para> L'un des avantages de &postgres; et de son contrôleur de concurrence de 
+  multiple version ( "Multi-Version Concurrency Control", nommé 
+  <acronym>MVCC</acronym> par la suite ) est qu'il élimine de nombreuses
+  raison de verrouiller les objets de base de données. Sur certains 
+  systèmes de gestion de bases de données, vous devez verrouiller une table
+  lorsque vous souhaitez insérer des données dans celle-ci; cela peut entraver
+  <emphasis>sévèrement</emphasis> les performances. Sur d'autres systèmes,
+  les lectures bloque les écritures concurrentes. Avec <acronym>MVCC</acronym>, &postgres;
+  supprime tous une catégorie de verrous, dans le sens ou les 
+  <quote>vieilles lectures</quote> peuvent accéder aux <quote>anciens tuples</quote>.
+  La pluspart du temps, cela évite aux aimables utilisateurs de 
+  &postgres; de trop se préoccuper des verrous.</para>
 
-<para> Unfortunately, there are several sorts of &slony1; events that
-do require exclusive locks on &postgres; tables, with the result that
-modifying &slony1; configuration can bring back some of those
-<quote>locking irritations.</quote>  In particular:</para>
+<para> Malheureusement, il existe plusieurs sortes d'événements &slony1; 
+  qui nécessite des verrous exclusifs sur les tables  &postgres;,
+  ce qui entraine que la modification de la configuration &slony1;,
+  peut provoquer des <quote>verrous génants</quote>.
+  En particulier:</para>
 
 <itemizedlist>
 
 <listitem><para><link linkend="stmtsetaddtable"> <command>set add
 table</command> </link></para>
 
-<para> A momentary exclusive table lock must be acquired on the
-<quote>origin</quote> node in order to add the trigger that collects
-updates for that table.  It only needs to be acquired long enough to
-establish the new trigger.</para>
+<para> Un verrou exclusif et momentané doit être posé sur
+  une table du noeud <quote>origine</quote> afin de d'ajouter le trigger
+  qui collecte les mises à jour de cette table. I doit simplement être
+  posé assez longtemps pour établir le nouveau trigger.</para>
 </listitem>
 
 <listitem><para><link linkend="stmtmoveset"> <command> move
 set</command> </link></para>
 
-<para> When a set origin is shifted from one node to another,
-exclusive locks must be acquired on each replicated table on both the
-old origin and the new origin in order to change the triggers on the
-tables.  </para></listitem>
+<para> Lorsqu'un ensemble sur un noeud origine est déplacé vers un autre noeud,
+  des verrous exclusifs sont posé sur chaque table répliquée à la fois sur 
+  l'ancien et le nouveau noeud origine afin de modifier les triggers sur ces tables.
+  </para></listitem>
 
 <listitem><para><link linkend="stmtlockset"> <command> lock set
 </command> </link> </para>
 
-<para> This operation expressly requests locks on each of the tables in a
-given replication set on the origin node.</para>
+<para> Cette opération demande explicitement des verrous sur chaque
+  table dans un ensemble de réplication donné sur le noeud origine.
+  </para>
 </listitem>
 
 <listitem><para><link linkend="stmtddlscript"> <command>execute
 script</command> </link> </para>
 
-<para> This operation runs a set of SQL queries; in order for it to
-work, the &slony1; triggers must be removed, followed by the query
-(which potentially updates the data) running, followed by triggers
-being restored.  The operation therefore must acquire table locks on
-all replicated tables on each node. </para>
+<para> Cette opération lance un ensemble de requête SQL;
+  pour qu'elle fonctionne, les triggers  &slony1; doivent être
+  retirés, ensuite les requêtes sont exécutées ( ce qui peut modifier
+  les données ), enfin les triggers sont restaurés. Pour cela, 
+  l'opération doit acquérir des verrous sur toutes les tables de
+  chaque noeuds. </para>
 </listitem>
 
-<listitem><para> During the <command>SUBSCRIBE_SET</command> event on
-a new subscriber </para>
+<listitem><para> Pendant un événement <command>SUBSCRIBE_SET</command> sur 
+    un nouvel abonné </para>
 
-<para> In a sense, this is the least provocative scenario, since,
-before the replication set has been populated, it is pretty reasonable
-to say that the node is <quote>unusable</quote> and that &slony1;
-could reasonably demand exclusive access to the node. </para>
+<para> Dans un sens, c'est le scénario le moins perturbant, car
+  avant que l'ensemble de réplication soit complet, on peut
+  penser que le noeud <quote>inutilisable</quote> et que 
+   &slony1; peut raisonnablement demander l'accès exclusif sur le noeud.
+    </para>
 
-<para> A change in version 1.2 is that an express <command>LOCK
-TABLE</command> SQL request is submitted in the loop that validates
-that all of the tables are there.  This means that
-<emphasis>all</emphasis> tables in the replication set will be locked
-via an exclusive lock for the entire duration of the process of
-subscription.  By locking the tables early, this means that the
-subscription cannot fail after copying some of the data due to some
-other process having held on to a table. </para>
+<para> Un changement dans la version 1.2 provoque une requête SQL <command>LOCK
+TABLE</command> explicite qui est placé dans la boucle qui valide que toutes les
+tables sont présentes. Cela signifie que 
+<emphasis>toutes</emphasis> les tables de l'ensemble de réplication
+sont verrouiller avec un verrou exclusif pour la durée totale du processus
+de souscription. En verrouillant les tables très tôt, on s'assure que
+le souscription n'échouera pas à cause d'un autre processus ayant un 
+verrou sur une table.
+</para>
 
-<para> In any case, note that this one began with the wording
-<quote>on a new subscriber.</quote> The locks are applied <emphasis>on
-the new subscriber.</emphasis> They are <emphasis>not</emphasis>
-applied on the provider or on the origin. </para>
+<para> Dans tous les cas, notez que ce script opère 
+<quote>sur un nouveau noeud abonné</quote>. Les verrous sont posés
+<quote>sur un nouveau noeud abonné</quote>. Ils s'appliquent <emphasis>pas</emphasis>  
+au noeud fournisseur ou au noeud origine. </para>
 
 </listitem>
 
-<listitem><para> <application>pg_autovacuum</application> may not be
-part of &slony1;, but those that run it find that it wakes up roughly
-once per minute and may, at any time, start vacuuming a table, thereby
-taking out a <envar>ShareUpdateExclusiveLock</envar> lock.  This may
-block the other events for an unpredictable period of time.</para>
+<listitem><para> <application>pg_autovacuum</application> ne fait pas partie
+de &slony1;, mais il se réveille une fois par minute et peut, à tout moment,
+se lancer dans le nettoyage d'une table, et ainsi poser un verrou
+<envar>ShareUpdateExclusiveLock</envar>. Ceci peut bloquer les autres événements
+pendant un période imprévisible.</para>
 </listitem>
 
 </itemizedlist>
 
-<para> Each of these actions requires, at some point, modifying each
-of the tables in the affected replication set, which requires
-acquiring an exclusive lock on the table.  Some users that have tried
-running these operations on &slony1; nodes that were actively
-servicing applications have experienced difficulties with deadlocks
-and/or with the operations hanging up. </para>
+<para> Chacune de ces actions nécessite, à un certain de point, de 
+  modifier chaque table de l'ensemble de réplication, ce qui implique
+  l'acquisition d'un verrou exclusif sur les tables. Certains utilisateurs
+  ont tenté d'effectuer ces opérations sur des noeuds qui étaient activement
+  sollicités par la couche applicative; ils ont rencontré des problèmes
+  d'inter-blocages ("deadlocks") et/ou des arrêts de réplication. </para>
 
-<para> The obvious question: <quote>What to do about such
-deadlocks?</quote> </para>
+<para> La question évident est : <quote>Que faire pour éviter ces inter-blocages ?</quote> </para>
 
-<para> Several possibilities admit themselves: </para>
+<para> Plusieurs possibilités sont envisageables : </para>
 
 <itemizedlist>
 
-<listitem><para> Announce an application outage to avoid deadlocks
-</para>
+<listitem><para> Annoncer une coupure de service pour éviter les inter-blocages 
+    </para>
 
-<para> If you can temporarily block applications from using the
-database, that will provide a window of time during which there is
-nothing running against the database other than administrative
-processes under your control. </para> </listitem>
+<para>Si vous pouvez empêcher temporairement les applications 
+  d'accéder à la base de données, cela vous offrira une fenêtre de temps
+  pendant laquelle aucune opération ne sera effectuée sur la base de données,
+  à l'exception des processus d'administration que vous controllerez.
+  </para> </listitem>
 
-<listitem><para> Try the operation, hoping for things to work </para> 
+<listitem><para> Tenter l'operation, en espérant que cela fonctionne </para> 
 
-<para> Since nothing prevents applications from leaving access locks
-in your way, you may find yourself deadlocked.  But if the number of
-remaining locks are small, you may be able to negotiate with users to
-<quote>get in edgewise.</quote> </para>
+<para> Puisque rien n'empêche les application de laisser de verrous sur
+  votre chemin, vous pourrez vous retrouver dans une situation de blocage.
+  Mais si le nombre de verrous restant est faible, vous pouvez négocier 
+  avec les utilisateurs pour <quote>avoir la priorité</quote>. </para>
 </listitem>
 
-<listitem><para> Use pgpool </para> 
+<listitem><para> Utiliser pgpool </para> 
 
-<para> If you can use this or some similar <quote>connection
-broker</quote>, you may be able to tell the connection manager to stop
-using the database for a little while, thereby letting it
-<quote>block</quote> the applications for you.  What would be ideal
-would be for the connection manager to hold up user queries for a
-little while so that the brief database outage looks, to them, like a
-period where things were running slowly.  </para></listitem>
+<para> Si vous pouvez utiliser pgpool ou un <quote>gestionnaire de connexion
+</quote> similaire, vous pouvez configurer le programme pour
+qu'il n'utilise plus la base pendant un petit moment, et ainsi 
+le laisser <quote>bloquer</quote> les applications pour vous.
+L'idéal étant que le gestionnaire de connexion retiennent les requêtes
+assez longtemps pour que la coupure de service apparaisse comme un
+simple ralentissement. </para></listitem>
 
-<listitem><para> Rapid Outage Management </para> 
+<listitem><para> Gestion rapide de coupure de service </para> 
 
-<para> The following procedure may minimize the period of the outage:
+<para> La procédure suivante minimisera le temps de coupure de service:
 
 <itemizedlist>
 
-<listitem><para> Modify <filename>pg_hba.conf</filename> so that only
-the <link linkend="slonyuser"> <command>slony</command> user </link>
-will have access to the database. </para> </listitem>
+<listitem><para> Modifier <filename>pg_hba.conf</filename> afin que seul
+<link linkend="slonyuser">l'utilisateur <command>slony</command> user </link>
+ait accès à la base de données.</para> </listitem>
 
-<listitem><para> Issue a <command>kill -SIGHUP</command> to the
-&postgres; postmaster.</para>
+<listitem><para> Envoyer un  <command>kill -SIGHUP</command> au postmaster de
+&postgres;.</para>
 
-<para> This will not kill off existing possibly-long-running queries,
-but will prevent new ones from coming in.  There is an application
-impact in that incoming queries will be rejected until the end of the
-process.
+<para> Ceci ne tuera pas les longues requêtes qui pourraient être en cours d'exécution
+  mais cela empêchera les nouvelles d'entrer. Cela a un impact sur l'application
+  puisque les requêtes entrantes seront rejetées jusqu'à la fin de la procédure.
 </para>
 </listitem>
 
-<listitem><para> If <quote>all looks good,</quote> then it should be
-safe to proceed with the &slony1; operation. </para> </listitem>
+<listitem><para> Si <quote>tout va bien</quote>, alors on peut
+    effectuer sans danger l'opération &slony1;. </para> </listitem>
 
-<listitem><para> If some old query is lingering around, you may need
-to <command>kill -SIGQUIT</command> one of the &postgres; processes.
-This will restart the backend and kill off any lingering queries.  You
-probably need to restart the <xref linkend="slon"/> processes that
-attach to the node. </para> 
+<listitem><para> si une requête est toujours en cours, vous devrez peut-être
+    effectuer un  <command>kill -SIGQUIT</command> sur un des processus
+    &postgres;. Cela relancera le moteur et tuera toutes les requêtes 
+    en attente. Vous devrez probablement relancer les processus  
+    <xref linkend="slon"/> qui sont attachés à ce noeud. </para> 
 
-<para> At that point, it will be safe to proceed with the &slony1;
-operation; there will be no competing processes.</para></listitem>
+<para> A ce point, l'opération &slony1; peut être effectuée sans danger;
+  Il n'y aura aucun autre processus concurrent.
+  </para></listitem>
 
-<listitem><para> Reset <filename>pg_hba.conf</filename> to allow other
-users in, and <command>kill -SIGHUP</command> the postmaster to make
-it reload the security configuration. </para> </listitem>
+<listitem><para> Recharger l'ancienne version du fichier <filename>pg_hba.conf</filename>
+    pour autoriser les utilisateurs, et envoyer un <command>kill -SIGHUP</command>
+    au processus postmaster pour qu'il recharge la configuration de sécurité. </para> </listitem>
 </itemizedlist>
 
 </para>
 </listitem>
 
-<listitem><para> The section  &rddlchanges; suggests some additional
-techniques that may be useful, such as moving tables between
-replication sets in such a way that you minimize the set of tables
-that need to be locked. </para></listitem>
+<listitem><para> La section  &rddlchanges; suggère des techniques
+    supplémentaires qui peuvent être utiles, telles que le déplacement
+    des tables vers d'autres ensemble de réplication afin de minimiser
+    le nombre de tables qu'il faut verrouiller.</para></listitem>
 
 </itemizedlist>
 
-<para> Regrettably, there is no perfect answer to this.  If it is
-<emphasis>necessary</emphasis> to submit a <xref
-linkend="stmtmoveset"/> request, then it is presumably
-<emphasis>necessary</emphasis> to accept the brief application outage.
-As &slony1;/<link linkend="pgpool"> pgpool </link> linkages improve,
-that may become a better way to handle this.</para>
-
-</sect1>
+<para> Malheureusement, il n'y a pas de solution miracle. 
+  Si il est <emphasis>nécessaire</emphasis> de soumettre une requête
+  <xref linkend="stmtmoveset"/>, alors il est probablement
+<emphasis>nécessaire</emphasis> d'accepter une courte coupure de service.
+Au fur et à mesure que les relations entre &slony1; et <link linkend="pgpool"> pgpool </link>,
+s'améliore, ce couple semble être la meilleure méthode pour éviter les inter-blocages. 
+</para>
+</sect1>
\ No newline at end of file



More information about the Trad mailing list