Skip to content

Commit

Permalink
Quelques corrections de la relecture d'indexam
Browse files Browse the repository at this point in the history
  • Loading branch information
gleu committed Jan 3, 2017
1 parent 1441465 commit 11d3827
Showing 1 changed file with 28 additions and 28 deletions.
56 changes: 28 additions & 28 deletions postgresql/indexam.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@

<para>
Dans les faits, un index est une correspondance entre certaines valeurs de données clés
et les identifiants des lignes (<firstterm>tuple identifiers</firstterm>, ou <acronym>TIDs</acronym>),
dans leurs différentes versions, dans la table parente de l'index. Un TID consiste en un
et les identifiants des lignes (<firstterm>tuple identifiers</firstterm>, ou <acronym>TIDs</acronym>),
dans leurs différentes versions, dans la table parente de l'index. Un TID consiste en un
numéro de bloc et un numéro d'élément dans ce bloc (voir <xref
linkend="storage-page-layout"/>). L'information est suffisante pour
récupérer une version d'une ligne particulière à partir de la table. Les index
Expand All @@ -55,7 +55,7 @@
<para>
Chaque méthode d'accès à un index est décrite par une ligne dans le
catalogue système <link
linkend="catalog-pg-am"><structname>pg_am</structname></link>.Elle
linkend="catalog-pg-am"><structname>pg_am</structname></link>. Elle
indique un nom et une <firstterm>fonction gestionnaire</firstterm>
pour la méthode d'accès. Ces entrées peuvent être
créées et supprimées en utilisant les commandes SQL <xref
Expand Down Expand Up @@ -91,7 +91,7 @@ typedef struct IndexAmRoutine

/*
* Nombre total de stratégies (opérateurs) par lequels nous pouvons
* traverser la méthode d'accès oy chercher dedans. Zéro si la méthode
* traverser la méthode d'accès ou chercher dedans. Zéro si la méthode
* n'a pas de jeu de stratégies fixé.
*/
uint16 amstrategies;
Expand All @@ -101,25 +101,25 @@ typedef struct IndexAmRoutine
bool amcanorder;
/* la méthode supporte-t-elle un ORDER BY sur le résultat d'un opérateur appliqué à une colonne indexée ? */
bool amcanorderbyop;
/* la méthode support-t-elle le parcours à rebours ? */
/* la méthode supporte-t-elle le parcours à rebours ? */
bool amcanbackward;
/* la méthode supporte-t-elle les indexes UNIQUE ? */
/* la méthode supporte-t-elle les index UNIQUE ? */
bool amcanunique;
/* la méthde supporte-t-elle les index multi-colonnes ? */
/* la méthode supporte-t-elle les index multi-colonnes ? */
bool amcanmulticol;
/* la méthode exige-t-elle un parcours pour une contrainte sur la première colonne de l'index ? */
bool amoptionalkey;
/* la méthode gère-t-elle les qualitificatifs ScalarArrayOpExpr ? */
/* la méthode gère-t-elle les qualificatifs ScalarArrayOpExpr ? */
bool amsearcharray;
/* la méthode gère-elle les qualificatifs IS NULL/IS NOT NULL ? */
bool amsearchnulls;
/* le type de la valeur dans l'index peut-elle différer du type de la colonne ? */
bool amstorage;
/* un index de ce type peut-ili servir à un cluster ? */
/* un index de ce type peut-il être la cible de la commande CLUSTER ? */
bool amclusterable;
/* la méthode gèreètelle les locks sur prédicat ? */
/* la méthode gère-t-elle les verrous sur prédicat ? */
bool ampredlocks;
/* type de données stockés dans l'index, ou InvalidOid si variable */
/* type de données stocké dans l'index, ou InvalidOid si variable */
Oid amkeytype;

/* fonctions d'interfaçage */
Expand Down Expand Up @@ -242,7 +242,7 @@ ambuild (Relation heapRelation,
mais elle est vide. Elle doit être remplie avec toute donnée figée nécessaire
à la méthode d'accès, ainsi que les entrées pour toutes les lignes existant
déjà dans la table. Habituellement, la fonction <function>ambuild</function>
appelle <function>IndexBuildHeapScan()</function> pour parcourir la table
appelle <function>IndexBuildHeapScan()</function> pour parcourir la table
à la recherche des lignes existantes et calculer les clés à insérer
dans l'index. La fonction doit renvoyer une structure allouée par palloc
contenant les statistiques du nouvel index.
Expand Down Expand Up @@ -270,7 +270,7 @@ aminsert (Relation indexRelation,
</programlisting>
Insère une nouvelle ligne dans un index existant. Les tableaux
<literal>values</literal> et <literal>isnull</literal> donnent les valeurs
de clés à indexer et <literal>heap_tid</literal> est le TID à indexer.
de clés à indexer et <literal>heap_tid</literal> est le TID à indexer.
Si la méthode d'accès supporte les
index uniques (son drapeau <structfield>amcanunique</structfield>
vaut true), alors <literal>checkUnique</literal> indique le type de
Expand Down Expand Up @@ -323,7 +323,7 @@ ambulkdelete (IndexVacuumInfo *info,
suppression de nombreux tuples peut nécessiter d'appeler
<function>ambulkdelete</function> à plusieurs reprises.
L'argument <literal>stats</literal> est le résultat du dernier appel pour
cet index (il est NULL au premier appel dans une opération
cet index (il est NULL au premier appel dans une opération
<command>VACUUM</command>). Ceci permet à la méthode d'accumuler des
statistiques sur toute l'opération. Typiquement,
<function>ambulkdelete</function> modifie et renvoie la même structure
Expand All @@ -342,11 +342,11 @@ amvacuumcleanup (IndexVacuumInfo *info,
<literal>stats</literal> est le retour de l'appel à
<function>ambulkdelete</function>, ou NULL si
<function>ambulkdelete</function> n'a pas été appelée car aucune ligne
n'avait besoin d'être supprimée. Si le résultat n'est pas NULL, il s'agit
d'une structure allouée par palloc. Les statistiques qu'elle contient
seront utilisées pour mettre à jour <structname>pg_class</structname>,
et sont rapportées par <command>VACUUM</command> si
<literal>VERBOSE</literal> est indiqué. La onction peut retourner NULL
n'avait besoin d'être supprimée. Si le résultat n'est pas NULL, il s'agit
d'une structure allouée par palloc. Les statistiques qu'elle contient
seront utilisées pour mettre à jour <structname>pg_class</structname>,
et sont rapportées par <command>VACUUM</command> si
<literal>VERBOSE</literal> est indiqué. La fonction peut retourner NULL
si l'index n'a pas été modifié lors de l'opération
de <command>VACUUM</command> mais, dans le cas contraire, il faut retourner
des statistiques correctes.
Expand All @@ -373,7 +373,7 @@ amcanreturn (Relation indexRelation, int attno);
seul</firstterm></link> sur la colonne indiquée, en renvoyant les valeurs
des colonnes pour un enregistrement d'index sous forme d'un
<structname>IndexTuple</structname>. Les numéros des attributs commencent
à 1 (c'est-à-dire : pour la première colonne attno vaut 1).
à 1 (c'est-à-dire&nbsp;:: pour la première colonne, attno vaut 1).
Renvoie true si c'est supporté, sinon false. Si la méthode d'accès ne
supporte pas du tout les parcours d'index seul, le champ
<structfield>amcanreturn</structfield> de la structure
Expand Down Expand Up @@ -495,7 +495,7 @@ amvalidate (Oid opclassoid);
<para>
Le but d'un index est bien sûr de supporter les parcours de lignes
qui correspondent à une condition <literal>WHERE</literal> indexable,
souvent appelée <firstterm>qualificateur</firstterm>
souvent appelée <firstterm>qualificateur</firstterm>
(<foreignphrase>qualifier</foreignphrase>) ou <firstterm>clé de
parcours</firstterm> (<foreignphrase>scan key</foreignphrase>). La sémantique
du parcours d'index est décrite plus complètement dans <xref linkend="index-scanning"/>,
Expand Down Expand Up @@ -883,7 +883,7 @@ amrestrpos (IndexScanDesc scan);
</listitem>
<listitem>
<para>
lorsqu'entrée de la table va être supprimée (par <command>VACUUM</command>),
lorsqu'une entrée de la table va être supprimée (par <command>VACUUM</command>),
on doit d'abord supprimer toutes les entrées d'index&nbsp;;
</para>
</listitem>
Expand All @@ -898,7 +898,7 @@ amrestrpos (IndexScanDesc scan);
</listitem>
</itemizedlist>

Sans la troisième règle il serait possible qu'un lecteur d'index voit
Sans la troisième règle, il serait possible qu'un lecteur d'index voit
une entrée dans l'index juste avant qu'elle ne soit supprimée par un
<command>VACUUM</command> et arrive à l'entrée correspondante de
la table après sa suppression par le <command>VACUUM</command>.
Expand Down Expand Up @@ -929,7 +929,7 @@ amrestrpos (IndexScanDesc scan);
<quote>synchrones</quote>&nbsp;: chaque ligne de la table doit être récupérée
immédiatement après récupération de l'entrée d'index correspondante.
Cela est coûteux pour plusieurs raisons. Un parcours <quote>asynchrone</quote>,
où l'ont récupère de nombreux TID depuis l'index et où l'on ne visite la table
où l'on récupère de nombreux TID depuis l'index et où l'on ne visite la table
que plus tard, requiert moins de
surcharge de verrouillage de l'index et autorise un modèle d'accès à
la table plus efficace. D'après l'analyse ci-dessus,
Expand Down Expand Up @@ -1047,8 +1047,8 @@ amrestrpos (IndexScanDesc scan);
doit faire une vérification préliminaire d'unicité dès
l'insertion initiale. Si elle ne montre pas de conflit avec une
ligne visible, nous avons terminé. Sinon, nous devons planifier une
nouvelle vérification quand il sera temps de forcer la contrainte. Si
lors de la nouvelle vérification la ligne insérée et d'autres lignes de
nouvelle vérification quand il sera temps de forcer la contrainte. Si,
lors de la nouvelle vérification, la ligne insérée et d'autres lignes de
la même clé sont vivantes, alors l'erreur doit être rapportée. (Notez que,
dans ce contexte, <quote>vivant</quote> signifie réellement <quote>toute
ligne dans la chaîne HOT de l'entrée d'index est vivante</quote>.)
Expand Down Expand Up @@ -1263,7 +1263,7 @@ amcostestimate (PlannerInfo *root,
<para>
Le <quote>coût de lancement</quote> est la partie du coût total de parcours
à dépenser avant de commencer à récupérer la première ligne.
Pour la plupart des index on peut prendre zéro, mais un type
Pour la plupart des index, on peut prendre zéro, mais un type
d'index avec un grand coût au démarrage peut nécessiter une valeur supérieure à zéro.
</para>

Expand Down Expand Up @@ -1297,7 +1297,7 @@ amcostestimate (PlannerInfo *root,
Estime et renvoie la fraction des lignes de la table parente
visitées d'après les conditions de qualification données. En l'absence de toute
connaissance spécifique sur le type d'index, on utilise la fonction standard
de l'optimiseur <function>clauselist_selectivity()</function>:
de l'optimiseur <function>clauselist_selectivity()</function>&nbsp;:

<programlisting>+*indexSelectivity = clauselist_selectivity(root, path-&gt;indexquals,
path-&gt;indexinfo-&gt;rel-&gt;relid,
Expand Down

0 comments on commit 11d3827

Please sign in to comment.