Changeset 713

Show
Ignore:
Timestamp:
09/21/07 11:46:58 (1 year ago)
Author:
sas
Message:

Relu la trad du merge + relecture complète

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • traduc/trunk/manuel/ref/cluster.xml

    r708 r713  
    44PostgreSQL documentation 
    55--> 
    6 <!-- SAS 20060616 --> 
     6<!-- SAS 20070921, PG825 --> 
    77 
    88<refentry id="sql-cluster"> 
     
    3131 
    3232  <para> 
    33    <command>CLUSTER</command> réorganise (regroupe) la table  
     33   <command>CLUSTER</command> réorganise (groupe) la table  
    3434   <replaceable class="parameter">nomtable</replaceable> 
    3535   en fonction de l'index <replaceable class="parameter">nomindex</replaceable>. L'index doit avoir été  
     
    3838 
    3939  <para> 
    40    Une table regroupée est physiquement réordonnée en fonction des informations de l'index. 
    41    Ce regroupement est une opération unique&nbsp;: 
    42    les modifications issues de mises à jour postérieures au groupage ne 
    43    sont pas réorganisées. C'est-à-dire qu'aucune tentative n'est 
    44    réalisée pour stocker les données nouvelles ou mises à jour 
     40   Une table reorganisée est physiquement réordonnée en fonction des informations de l'index. 
     41   Ce regroupement est une opération ponctuelle&nbsp;: 
     42   les actualisations ultérieures ne sont pas réorganisées. C'est-à-dire 
     43   qu'aucune tentative n'est réalisée pour stocker les lignes nouvelles ou actualisées 
    4544   d'après l'ordre de l'index. Une réorganisation périodique peut être 
    4645   obtenue en relançant la commande aussi souvent que souhaité. 
     
    4847 
    4948  <para> 
    50    Quand une table est groupée, <productname>PostgreSQL</productname>  
    51    enregistre l'index qui a servi à la réorganisation. La forme 
     49   Quand une table est réorganisée, <productname>PostgreSQL</productname>  
     50   enregistre l'index utilisé à cet effet. La forme 
    5251   <command>CLUSTER <replaceable class="parameter">nomtable</replaceable></command> 
    53    regroupe la table suivant ce même index
    54   </para> 
    55  
    56   <para> 
    57    <command>CLUSTER</command>, sans paramètre, groupe toutes les 
     52   réorganise la table d'après l'index précédemment utilisé
     53  </para> 
     54 
     55  <para> 
     56   <command>CLUSTER</command>, sans paramètre, réorganise toutes les 
    5857   tables de la base de données courante dont l'utilisateur est 
    5958   propriétaire, ou toutes les tables s'il s'agit d'un superutilisateur. (Les 
    60    tables qui n'ont jamais été groupées sont ignorées.) Cette forme de 
     59   tables qui n'ont jamais été réorganisées sont ignorées.) Cette forme de 
    6160   <command>CLUSTER</command> ne peut pas être exécutée à l'intérieur d'une 
    6261   transaction. 
     
    6463 
    6564  <para> 
    66    Quand une table est en cours de regroupement, un verrou 
     65   Quand une table est en cours de réorganisation, un verrou 
    6766   <literal>ACCESS EXCLUSIVE</literal> est acquis. Cela empêche toute opération 
    6867   sur la table (à la fois en lecture et en écriture) pendant l'exécution de  
     
    9998 
    10099   <para> 
    101     <command>CLUSTER</command> perd toute visibilité des lignes, ce qui fait 
    102     que la table semble vide à toute image de la base prise avant la fin de 
    103     la commande <command>CLUSTER</command>. Les applications ayant des 
    104     transactions accèdant à une table en cours de clusterisation peuvent donc 
    105     difficilement utiliser la commande <command>CLUSTER</command>. L'impact est 
    106     encore plus important avec les transactions sérialisables car elles prennent 
    107     seulement une image de la base, au début de la transaction. Cela étant dit, 
     100    <command>CLUSTER</command> supprime toute information de visibilité des 
     101    lignes, ce qui donne l'impression, à tout instantané 
     102    de la base pris avant la fin de la commande <command>CLUSTER</command>, que 
     103    la table est vide. 
     104    <command>CLUSTER</command> est de ce fait incompatible avec les 
     105    applications dont certaines transactions accèdent concurrentiellement à la table 
     106    en cours de réorganisation (clusterisation). L'impact est 
     107    encore plus important avec les transactions sérialisables car elles ne prennent 
     108    un instantané de la base qu'au début de la transaction. Cela dit, 
    108109    les transactions «&nbsp;read-committed&nbsp;» sont aussi affectées. 
    109110   </para> 
     
    113114    l'ordre réel des données dans la table n'a que peu d'importance. 
    114115    Toutefois, si certaines données sont plus accédées que d'autres, et qu'un 
    115     index les groupe, l'utilisation de <command>CLUSTER</command> peut s'avérer 
     116    index les regroupe, l'utilisation de <command>CLUSTER</command> peut s'avérer 
    116117    bénéfique. Si une requête porte sur un ensemble de valeurs indexées ou sur 
    117118    une seule valeur pour laquelle plusieurs lignes de la table correspondent, 
    118     <command>CLUSTER</command> se montre utile. En effet, lorsque l'index 
     119    <command>CLUSTER</command> est utile. En effet, lorsque l'index 
    119120    identifie la page de la table pour la première ligne correspondante, toutes 
    120121    les autres lignes correspondantes sont déjà probablement sur la même page 
     
    126127    est créée qui contient les données de la table dans l'ordre de l'index. Des 
    127128    copies temporaires de chaque index de la table sont également créées. De ce fait,  
    128     un espace libre sur le disque au moins égal à la somme de la taille de la table 
    129     et celles des index est nécessaire
     129    il est nécessaire de disposer d'un espace libre sur le disque au moins égal 
     130    à la somme de la taille de la table et celles des index
    130131   </para> 
    131132 
     
    133134    Puisque <command>CLUSTER</command> enregistre les informations de 
    134135    réorganisation, il est possible de réorganiser manuellement les tables souhaitées 
    135     la première fois et de planifier une réorganisation, à la façon d'un <command>VACUUM</command>. 
    136     Les tables sont ainsi régulièrement regroupées. 
    137    </para> 
    138  
    139    <para> 
    140     Comme le planificateur enregistre les statistiques d'ordonnancement 
     136    la première fois et de planifier une réorganisation, à la 
     137    manière de <command>VACUUM</command>, pour que les tables soient 
     138    régulièrement réorganisées. 
     139   </para> 
     140 
     141   <para> 
     142    Puisque le planificateur enregistre les statistiques d'ordonnancement 
    141143    des tables, il est conseillé de lancer 
    142     <xref linkend="sql-analyze" endterm="sql-analyze-title"/> sur la table réorganisée. 
    143     Dans le cas contraire, les plans de requêtes peuvent être mal choisis par le planificateur. 
    144    </para> 
    145  
    146    <para> 
    147     Il existe une autre façon de grouper les données. En effet, la commande 
     144    <xref linkend="sql-analyze" endterm="sql-analyze-title"/> sur la table 
     145    nouvellement réorganisée. Dans le cas contraire, les plans de requêtes 
     146    peuvent être mal choisis par le planificateur. 
     147   </para> 
     148 
     149   <para> 
     150    Il existe une autre façon de réorganiser les données. La commande 
    148151    <command>CLUSTER</command> réorganise la table originale en la parcourant 
    149     en suivant l'ordre de l'index indiqué&nbsp;;.cela peut devenir lent sur les 
    150     grandes tables parce que les lignes sont parcourues au niveau de la table 
     152    en fonction de l'ordre de l'index indiqué&nbsp;; cela peut être lent pour les 
     153    tables volumineuses parce que les lignes sont extraites de la table 
    151154    dans l'ordre de l'index et, si la table n'est pas ordonnée, les entrées sont 
    152     disséminées 
    153     dans des pages aléatoires. Une page disque est alors lue pour chaque 
     155    disséminées sur des pages aléatoires. Une page disque est alors lue pour chaque 
    154156    ligne déplacée. (<productname>PostgreSQL</productname> dispose d'un cache mais une 
    155157    grande table n'y tient généralement pas dans sa totalité.) L'autre moyen de 
     
    161163 
    162164    qui utilise le code de tri de <productname>PostgreSQL</productname> pour 
    163     créer l'ordre désiré&nbsp;; pour des données non triées, cela est 
    164     généralement bien plus rapide qu'un parcours d'index sur des données 
    165     non ordonnées. 
    166     L'ancienne table peut alors être supprimée. <command>ALTER TABLE ... RENAME</command> 
    167     est utilisé pour renommer <replaceable class="parameter">nouvelletable</replaceable> 
    168     en <replaceable class="parameter">table</replaceable>. Il ne reste plus 
    169     qu'à recréer les index de la table. Le gros inconvénient de cette approche 
     165    aboutir à l'ordre désiré&nbsp;; pour des données non triées, cela est 
     166    généralement bien plus rapide qu'un parcours d'index. 
     167    L'ancienne table peut alors être supprimée et <replaceable 
     168    class="parameter">nouvelletable</replaceable> renommée en <replaceable 
     169    class="parameter">table</replaceable> à l'aide de <command>ALTER TABLE ... 
     170    RENAME</command>. Il ne reste plus qu'à recréer les index de la table. 
     171    Le gros inconvénient de cette approche 
    170172    est qu'elle ne préserve pas les OID, les contraintes, les relations de clés 
    171173    étrangères, les droits et autres propriétés de la table &mdash; tous ces 
    172     éléments doivent être recréés manuellement. Un autre inconvénient est que 
    173     cette façon nécessire un fichier temporaire de tri de la même taille que 
    174     la table elle-même, donc l'utilisation limite du disque est d'environ 
    175     trois la taille de la table au lieu de deux fois. 
     174    éléments doivent être recréés manuellement. Un autre inconvénient est la 
     175    nécessité d'un fichier temporaire de tri de la même taille que 
     176    la table elle-même. Le pic d'utilisation du disque est alors d'environ 
     177    trois fois la taille de la table au lieu de deux fois. 
    176178   </para> 
    177179 </refsect1> 
     
    181183 
    182184  <para> 
    183    Grouper la table <literal>employes</literal> sur la base de son index 
     185   Réorganiser la table <literal>employes</literal> sur la base de son index 
    184186   <literal>emp_ind</literal>&nbsp;: 
    185187<programlisting>CLUSTER emp_ind ON employes; 
     
    188190 
    189191  <para> 
    190    Grouper la relation <literal>employes</literal> en utilisant le même index 
     192   Réorganiser la relation <literal>employes</literal> en utilisant le même index 
    191193   que précédemment&nbsp;: 
    192194<programlisting>CLUSTER employes; 
     
    195197 
    196198  <para> 
    197    Grouper toutes les tables de la base de données préalablement 
    198    groupées&nbsp;: 
     199   Réorganiser toutes les tables de la base de données qui ont déjà été préalablement 
     200   réorganisées&nbsp;: 
    199201<programlisting>CLUSTER; 
    200202</programlisting>