root/traduc/branches/bv747/divers/annotated_postgresql_conf.xml

Revision 394, 67.6 kB (checked in by gleu, 2 years ago)

Relecture de la version 8.1 du annotated postgresql.conf file.
Une correction dans les deux autres version.

<
Line 
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!-- SAS 20060728 : Traduction initiale -->
3 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
4 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" >
5
6 <article id="postgresqlconf" lang="fr">
7  <articleinfo>
8   <title>Fichier postgresql.conf et guide de configuration utilisateur générale
9   (<foreignphrase>Global User Configuration [GUC]</foreignphrase>) annotés</title>
10   <subtitle>PostgreSQL 7.4.x</subtitle>
11 </articleinfo>
12
13 <sect1>
14 <title>Connexions et authentification</title>
15
16 <sect2>
17 <title>Paramètres de connexion</title>
18
19 <table>
20 <tgroup cols="8" align="left" colsep="1" rowsep="1">
21
22 <thead>
23  <row>
24   <entry>Paramètre</entry>
25   <entry>Échelle</entry>
26   <entry>Ressources</entry>
27   <entry>Valeur par défaut</entry>
28   <entry>Positionnement</entry>
29   <entry>-o</entry>
30   <entry>Ce que dit la documentation</entry>
31   <entry>Commentaires</entry>
32  </row>
33 </thead>
34
35 <tbody>
36  <row>
37   <entry>tcpip_socket</entry>
38   <entry>true, false</entry>
39   <entry>Aucune</entry>
40   <entry>false</entry>
41   <entry>non</entry>
42   <entry>-i</entry>
43   <entry>
44   Positionné à true, le serveur accepte les connexions TCP/IP. Dans le cas
45   contraire, seules les connexions par la socket de domaine Unix sont
46   autorisées.
47   </entry>
48   <entry>
49   Sauf dans le cas d'un serveur de test, ce paramètre doit probablement être
50   positionné à true. Il est recommandé de faire cela
51   <emphasis>après</emphasis> avoir configuré le fichier pg_hba.conf, pour
52   sécuriser les accès.
53   </entry>
54  </row>
55  <row>
56   <entry>max_connections</entry>
57   <entry>2 à Int Max</entry>
58   <entry>14ko RAM</entry>
59   <entry>32</entry>
60   <entry>Non</entry>
61   <entry>-N #</entry>
62   <entry>
63   Nombre maximum de connexions concurrentes à un serveur de bases de données.
64   La valeur par défaut est 32 (à moins qu'elle n'ait été modifiée lors de
65   la construction du serveur).
66   </entry>
67   <entry>
68   Paramètre important. &Agrave; conserver le plus bas possible pour la
69   configuration de l'application. En combinaison avec une application web
70   à connexions persistantes, il doit être possible de l'abaisser vers 10-16.
71   </entry>
72  </row>
73  <row>
74   <entry>superuser_reserved_connections</entry>
75   <entry>0 à max_connections - 1</entry>
76   <entry>Réduit le nombre de connexions standard disponibles</entry>
77   <entry>2</entry>
78   <entry>Non</entry>
79   <entry></entry>
80   <entry>
81   Nombre de connexions réservées aux superutilisateurs PostgreSQL. Au plus
82   max_connections connexions peuvent être actives simultanément. Lorsque
83   le nombre de connexions concurrentes atteint max_connections moins
84   superuser_reserved_connections, seules les connexions de superutilisateurs
85   sont encore autorisées.
86   </entry>
87   <entry>
88   Cela protège l'accès des superutilisateurs en cas d'engorgement de la base.
89   Ce paramètre ne doit être positionné à 0 que lorsqu'il est certain que
90   toutes les connexions ne sont jamais utilisées. (NDR&nbsp;: je positionne
91   souvent ce paramètre à 1 puisque je ne me connecte à la base en superutilisateur
92   qu'en cas de problème.)
93   </entry>
94  </row>
95  <row>
96   <entry>port</entry>
97   <entry>129 à 32768</entry>
98   <entry>Aucune</entry>
99   <entry>5432</entry>
100   <entry>Non</entry>
101   <entry>-p #</entry>
102   <entry>
103   Le port TCP sur lequel le serveur écoute.
104   </entry>
105   <entry>
106   <para>
107   Le changement du port PostgreSQL peut être une protection contre les vers
108   de bases et les <emphasis>script kiddies</emphasis>. Néanmoins, il ne faudra pas oublier
109   de donner l'option de port à <emphasis>tous</emphasis> les logiciels et
110   bibliothèques effectuant une connexion, ce qui peut s'avérer pénible.
111   </para>
112   </entry>
113  </row>
114  <row>
115   <entry>unix_socket_directory</entry>
116   <entry></entry>
117   <entry></entry>
118   <entry>''</entry>
119   <entry>Non</entry>
120   <entry>-k $</entry>
121   <entry>
122   Répertoire du socket de domaine Unix sur lequel le serveur écoute
123   les connexions de clients. Par défaut, c'est /tmp, mais le paramètre
124   peut être modifié à la compilation.
125   </entry>
126   <entry>
127   Ces options s'appliquent aux connexions UDP vers le serveur, utilisées en
128   général uniquement à partir d'une console sur le serveur. (NDR&nbsp;:
129   Comme je considère les connexions UDP non sécurisées, je les désactive.
130   Je n'ai donc pas de recommendation particulière.)
131   </entry>
132  </row>
133  <row>
134   <entry>unix_socket_group</entry>
135   <entry></entry>
136   <entry></entry>
137   <entry>''</entry>
138   <entry>Non</entry>
139   <entry></entry>
140   <entry>
141   Groupe propriétaire du socket de domaine Unix (l'utilisateur propriétaire
142   de ce socket est toujours celui qui exécute le serveur). Combiné avec l'option
143   UNIX_SOCKET_PERMISSIONS, ce paramètre peut être utilisé comme mécanisme
144   supplémentaire de contrôle des accès pour ce type de socket. Par défaut,
145   c'est une chaîne vide, donc le groupe par défaut de l'utilisateur.
146   </entry>
147  </row>
148  <row>
149   <entry>unix_socket_permissions</entry>
150   <entry></entry>
151   <entry></entry>
152   <entry>0777</entry>
153   <entry>Non</entry>
154   <entry></entry>
155   <entry>
156   <para>Droits d'accès au socket de domaine Unix. Les sockets de domaine
157   Unix utilisent le système habituel de gestion des droits des systèmes de
158   fichiers Unix. La valeur de l'option doit être précisée sous la forme
159   numérique acceptée par les outils système chmod et umask. L'utilisation du
160   format octal impose un 0 (zéro) en début de nombre.
161   </para>
162   </entry>
163  </row>
164 </tbody>
165 </tgroup>
166 </table>
167
168 </sect2>
169
170 <sect2>
171 <title>Sécurité et authentification</title>
172
173 <table>
174 <tgroup cols="8" align="left" colsep="1" rowsep="1">
175
176 <thead>
177  <row>
178   <entry>Paramètre</entry>
179   <entry>&Eacute;chelle</entry>
180   <entry>Ressources</entry>
181   <entry>Valeur par défaut</entry>
182   <entry>Positionnement</entry>
183   <entry>-o</entry>
184   <entry>Ce que dit la documentation</entry>
185   <entry>Commentaires</entry>
186  </row>
187 </thead>
188
189 <tbody>
190  <row>
191   <entry>authentication_timeout</entry>
192   <entry>1-600 sec</entry>
193   <entry></entry>
194   <entry>60</entry>
195   <entry>Non</entry>
196   <entry></entry>
197   <entry>
198   Temps maximum laissé à un client pour réussir l'authentification, en secondes.
199   Si un client potentiel n'a pas terminé la séquence d'authentification
200   pendant ce laps de temps, le serveur met fin à la connexion. Cela permet
201   d'éviter qu'un client bloqué n'occupe indéfiniment une connexion.
202   Cette option, lue au démarrage, ne peut être positionnée qu'en ligne
203   de commande ou dans le fichier postgresql.conf.
204   </entry>
205   <entry>
206   </entry>
207  </row>
208  <row>
209   <entry>ssl</entry>
210   <entry>true, false</entry>
211   <entry>Voir les notes</entry>
212   <entry>false</entry>
213   <entry>Non</entry>
214   <entry>-l</entry>
215   <entry>Autoriser les connexions SSL</entry>
216   <entry>
217   SSL chiffre le traffic sur le port TCP/IP de sorte que les données
218   transférées ne puissent pas être lues normalement. Du fait du chiffrement,
219   cela implique une charge intense du CPU à la fois sur le client et le
220   serveur. Cela peut aussi accroître la taille des données transférées.
221   Néanmoins, SSL peut être difficile
222   à configurer, et tous les clients ne supportent pas l'accès SSL.
223   </entry>
224  </row>
225  <row>
226   <entry>krb_server_keyfile</entry>
227   <entry></entry>
228   <entry></entry>
229   <entry>''</entry>
230   <entry>Non</entry>
231   <entry></entry>
232   <entry>
233   Positionne l'implantation du fichier de clés du serveur Kerberos.
234   </entry>
235   <entry>
236   Utilisé uniquement pour l'authentification Kerberos des utilisateurs.
237   </entry>
238  </row>
239  <row>
240   <entry>virtual_host</entry>
241   <entry></entry>
242   <entry></entry>
243   <entry>''</entry>
244   <entry>Non</entry>
245   <entry>-h x</entry>
246   <entry>
247   Positionne le nom d'hôte ou l'adresse TCP/IP sur lequel/laquelle le
248   postmaster écoute les connexions des applications clientes. Par défaut,
249   écoute sur toutes les adresses configurées (y compris localhost).
250   </entry>
251   <entry>
252   Essentiel pour les bases sur un réseau sécurisé comprenant une DMZ, ou
253   lorsque le serveur de bases de données possède une adresse TCP/IP publique
254   et une privée.
255   </entry>
256  </row>
257  <row>
258   <entry>db_user_namespace</entry>
259   <entry>true, false</entry>
260   <entry></entry>
261   <entry>false</entry>
262   <entry>Non</entry>
263   <entry></entry>
264   <entry>
265   Permet les noms d'utilisateur par base de données. Désactivé par défaut.
266   </entry>
267   <entry>
268   Par défaut, les utilisateurs peuvent se connecter à
269   n'importe quelle base. Dans certains cas, ce scénario n'est pas acceptable.
270   Dans de tels cas, il est possible d'utiliser cette option. Cette
271   fonctionnalité s'entend comme une mesure intermédiaire en attendant une
272   solution complète. Cette option sera supprimée par la suite.
273   </entry>
274  </row>
275 </tbody>
276 </tgroup>
277 </table>
278
279 </sect2>
280
281 </sect1>
282
283 <sect1>
284 <title>Utilisation des ressources</title>
285
286 <sect2>
287 <title>Mémoire</title>
288
289 <note>
290  <para>
291   L'augmentation de la plupart de ces paramètres impose de règler les options
292   du noyau système à la valeur de la mémoire autorisée par processus ou par
293   utilisateur. La documentation en ligne donne des <ulink url="http://docs.postgresqlfr.org/7.4/kernel-resources.html">informations sur les
294   commandes en fonction des systèmes d'exploitation</ulink>. Sauf indication contraire,
295   toutes les options mémoire s'additionnent pour déterminer la quantité totale
296   de mémoire utilisée par PostgreSQL.
297  </para>
298 </note>
299
300 <table>
301 <tgroup cols="8" align="left" colsep="1" rowsep="1">
302
303 <thead>
304  <row>
305   <entry>Paramètre</entry>
306   <entry>&Eacute;chelle</entry>
307   <entry>Ressources</entry>
308   <entry>Valeur par défaut</entry>
309   <entry>Positionnement</entry>
310   <entry>-o</entry>
311   <entry>Ce que dit la documentation</entry>
312   <entry>Commentaires</entry>
313  </row>
314 </thead>
315
316 <tbody>
317  <row>
318   <entry>shared_buffers</entry>
319   <entry>16 à Int Max</entry>
320   <entry>8K RAM</entry>
321   <entry>64</entry>
322   <entry>Non</entry>
323   <entry>-B x</entry>
324   <entry>
325   Positionne le nombre de tampons de mémoire partagée utilisé par le
326   serveur de bases de données. Le minimum est 2 X max_connections.
327   </entry>
328   <entry>
329   <para>
330   Positionne la taille du tampon mémoire de PostgreSQL où les requêtes sont
331   stockées avant d'être passées au tampon noyau du système. Ce n'est qu'une
332   zone de stockage, et <emphasis>non</emphasis> le total de la taille
333   mémoire disponible pour le serveur. De ce fait, il est fortement
334   déconseillé de positionner ce nombre à une part importante de la RAM, cela
335   ayant des conséquences désastreuses sur les performances avec beaucoup de
336   systèmes d'exploitation. Les membres de la liste de diffusion
337   pgsql-performance ont abouti à une échelle utile se situant entre 1000 et
338   6000, fonction de la RAM, de la taille de la base de données et du nombre de
339   requêtes concurrentes. Pour les serveurs qui disposent d'une grande quantité
340   de RAM (supérieure à 1 Go), l'augmentation de ce paramètre vers 6 à 15% de
341   la RAM disponible a donné de bons résultats dans la plupart des cas.
342   L'analyse réelle du meilleur paramétrage n'est pas exactement comprise,
343   et l'expérience plus que le calcul permet l'ajustement de ce paramètre.
344   </para>
345   <para>
346   Une règle empirique consiste à observer l'utilisation de la mémoire partagée
347   par PostgreSQL à l'aide d'outils tel ipcs pour déterminer la valeur du
348   paramètre. Cela ne représente toutefois que la moitié du paramétrage.
349   Il est également nécessaire de régler effective_cache_size pour que
350   PostgreSQL puisse utiliser efficacement la mémoire disponible.
351   </para>
352   </entry>
353  </row>
354  <row>
355   <entry>
356   sort_mem
357   </entry>
358   <entry>64 à Int Max</entry>
359   <entry>1 KB</entry>
360   <entry>1024</entry>
361   <entry>Oui</entry>
362   <entry>-S #</entry>
363   <entry>
364   <para>
365   Précise la quantité de mémoire utilisable par les opérations de tri interne et
366   les tables de hachage avant d'utiliser des fichiers temporaires. La valeur
367   est indiquée en kilooctets, la valeur par défaut est 1024 Ko (soit 1 Mo).
368   En cas de requête complexe, de nombreuses opérations de tri ou de hachage
369   peuvent s'exécuter en parallèle&nbsp;; chacune peut utiliser la quantité
370   de mémoire indiquée par la valeur de ce paramètre avant de commencer à
371   utiliser des fichiers temporaires. De plus, de nombreuses sessions
372   peuvent effectuer ces opérations en parallèle. La mémoire totale
373   utilisée peut être plusieurs fois la valeur de SORT_MEM. Les opérations
374   de tri sont utilisées par ORDER BY, DISTINCT et les jointures.
375   </para>
376   <para>
377   Les options en ligne de commande nécessitent d'utiliser -o 'option'.
378   </para>
379   </entry>
380   <entry>
381   <para>
382   sort_mem est difficile à ajuster. Une plus grande valeur est utilisée
383   pour&nbsp;: les
384   bases de données volumineuses, les requêtes complexes, une grande quantité de
385   RAM disponible. Une plus petite valeur est recherchée pour&nbsp;: une faible
386   quantité de RAM ou de nombreux accès concurrents. Trouver le bon compromis
387   peut s'avérer délicat.
388   </para>
389   <para>
390   Une autre façon d'ajuster cette valeur consiste à surveiller les fichiers
391   temporaires de PostgreSQL (dans PGDATA/base/OID_BASE/pgsql_tmp) et d'accroître
392   la valeur de sort_mem si de nombreuses requêtes permutent avec ces fichiers.
393   </para>
394   <para>
395   Il ne faut pas oublier que ce paramètre peut être positionné par connexion.
396   Ainsi, dans le cas où seules quelques requêtes très complexes sont à
397   exécuter, la valeur peut être augmentée avant leur exécution, mais conservée
398   basse pour les autres connexions.
399   </para>
400   </entry>
401  </row>
402  <row>
403   <entry>vacuum_mem</entry>
404   <entry>1024 à Int Max</entry>
405   <entry>1 Ko</entry>
406   <entry>8192</entry>
407   <entry>Oui</entry>
408   <entry></entry>
409   <entry>
410   Précise la quantité maximale de mémoire que VACUUM peut utiliser pour
411   conserver une trace des lignes à ré-utiliser. La valeur est précisée en Ko.
412   La valeur par défaut est de 8&nbsp;192&nbsp;ko. Une valeur supérieure peut
413   accélérer le nettoyage de grandes tables dont de nombreuses lignes ont été
414   supprimées.
415   </entry>
416   <entry>
417   <para>
418   Ce paramètre n'utilise de RAM que lors des VACUUM. Il peut donc être augmenté
419   sur les machines disposant de beaucoup de RAM pour accéler les VACUUM (mais pas
420   plus de 20% de la RAM disponible).
421   </para>
422   <para>
423   Ce paramètre peut de plus être positionné à l'exécution. Il peut alors être
424   judicieux de le régler à une valeur basse pour les VACUUM réguliers et de le
425   positionner à une valeur plus élevée pour les VACUUM FULL de
426   nuit/hebdomadaires/périodiques.
427   </para>
428   </entry>
429  </row>
430 </tbody>
431 </tgroup>
432 </table>
433
434 </sect2>
435
436 <sect2>
437 <title>Free Space Map</title>
438
439 <table>
440 <tgroup cols="8" align="left" colsep="1" rowsep="1">
441
442 <thead>
443  <row>
444   <entry>Paramètre</entry>
445   <entry>&Eacute;chelle</entry>
446   <entry>Ressources</entry>
447   <entry>Valeur par défaut</entry>
448   <entry>Positionnement</entry>
449   <entry>-o</entry>
450   <entry>Ce que dit la documentation</entry>
451   <entry>Commentaires</entry>
452  </row>
453 </thead>
454
455 <tbody>
456  <row>
457   <entry>max_fsm_pages</entry>
458   <entry>1000 à Int Max</entry>
459   <entry>6 octets RAM</entry>
460   <entry>10000</entry>
461   <entry>Non</entry>
462   <entry></entry>
463   <entry>
464   Positionne le nombre maximum de pages disque pour lesquels l'espace
465   libre est recherché dans la carte de l'espace libre partagé.
466   La valeur par défaut est 10&nbsp;000. Cette option ne peut être positionnée
467   qu'au démarrage du serveur.
468   </entry>
469   <entry>
470   <para>
471   Un paramétrage correct de la FSM peut éliminer, ou au moins, retarder
472   l'obligation d'exécuter VACUUM FULL et REINDEX. La meilleure façon de le
473   régler est la suivante&nbsp;:
474   <orderedlist>
475     <itemizedlist><para>calculer la fréquence du VACUUM (normal) de la
476   base en fonction des écritures&nbsp;;</para></itemizedlist>
477     <itemizedlist><para>utiliser la base en fonctionnement
478   normal et exécuter VACUUM VERBOSE ANALYZE à la place de VACUUM, en
479   sauvegardant la sortie dans un fichier&nbsp;;</para></itemizedlist>
480     <itemizedlist><para>calculer le nombre de pages maximum
481   réclamé par VACUUM et utiliser ce chiffre.</para></itemizedlist>
482   </orderedlist>
483   </para>
484   <para>
485   Si l'approche précédente n'est pas réalisable, essayer d'estimer le nombre
486   total de lignes qui peuvent être actualisées ou supprimées entre deux VACUUM, et
487   utiliser la moitié de ce nombre, en l'augmentant en fonction de la quantité de
488   travail qu'un VACUUM FULL périodique continue d'effectuer.
489   </para>
490   <para>
491   Pour les base de données qui connaissent des &laquo;&nbsp;pics&nbsp;&raquo;
492   d'activité (rafales d'un million de mises à jour mais pas d'autre
493   activité des minutes ou des heures durant), ce nombre peut être
494   impossible à optimiser. Les lignes insérées n'ont pas d'impact
495   sur la FSM. Enfin, si le serveur est peu fourni en RAM, augmenter
496   cette valeur peut s'avérer contre-productif.
497   </para>
498   </entry>
499  </row>
500  <row>
501   <entry>max_fsm_relations</entry>
502   <entry>10 à Int Max</entry>
503   <entry>40 octets RAM</entry>
504   <entry>100</entry>
505   <entry>Non</entry>
506   <entry></entry>
507   <entry>
508   Positionne le nombre maximum de relations (tables) pour
509   lesquels l'espace libre est recherché dans la carte de l'espace libre
510   partagé.
511   </entry>
512   <entry>
513   Ce paramètre doit être positionné au nombre de tables attendues dans la
514   base... entre 300 et 500. PostgreSQL a un comportement étrange s'il ne possède
515   pas assez de FSM_relations.
516   </entry>
517  </row>
518 </tbody>
519 </tgroup>
520 </table>
521
522 </sect2>
523
524 <sect2>
525 <title>Utilisation des ressources disque</title>
526
527 <table>
528 <tgroup cols="8" align="left" colsep="1" rowsep="1">
529
530 <thead>
531  <row>
532   <entry>Paramètre</entry>
533   <entry>&Eacute;chelle</entry>
534   <entry>Ressources</entry>
535   <entry>Valeur par défaut</entry>
536   <entry>Positionnement</entry>
537   <entry>-o</entry>
538   <entry>Ce que dit la documentation</entry>
539   <entry>Commentaires</entry>
540  </row>
541 </thead>
542
543 <tbody>
544  <row>
545   <entry>max_files_per_process</entry>
546   <entry>25 à Int Max</entry>
547   <entry></entry>
548   <entry>1000</entry>
549   <entry>Non</entry>
550   <entry></entry>
551   <entry>
552   Fixe le nombre maximum de fichiers simultanément ouverts par chaque
553   sous-processus du serveur. La valeur par défaut est 1&nbsp;000.
554   La limite actuellement utilisée par le code est la plus petite valeur du
555   paramètre et le résultat de sysconf(_SC_OPEN_MAX). Toutefois, sur les systèmes
556   pour lesquels sysconf retourne une valeur raisonnable, il n'est pas nécessaire
557   de s'inquiéter de ce paramètre. Mais sur la plupart des plateformes
558   (et notamment BSD), sysconf retourne une valeur
559   beaucoup plus grande que ce que le système peut réellement prendre en charge
560   lorsque de nombreux processus essayent tous d'ouvrir ce nombre de fichiers.
561   Si le message d'erreur &laquo;&nbsp;Trop de fichiers ouverts&nbsp;&raquo;
562   (<foreignphrase>"Too many open files"</foreignphrase>) apparaît,
563   il faut alors essayer de réduire ce paramètre. Il ne peut être
564   fixé qu'au démarrage du serveur ou dans le fichier postgresql.conf. Modifié
565   dans le fichier de configuration, il n'affectera que les sous-processus serveur
566   ouverts après modification.
567   </entry>
568   <entry>
569   D'après la documentation, utilisé essentiellement pour BSD. À considérer
570   uniquement
571   à l'appartion de messages &laquo;&nbsp;Trop de fichiers ouverts&nbsp;&raquo;
572   (<foreignphrase>"Too many open files"</foreignphrase>).
573   </entry>
574  </row>
575  <row>
576   <entry>preload_libraries</entry>
577   <entry>Chemin de fichier</entry>
578   <entry>Voir les notes</entry>
579   <entry>Vide</entry>
580   <entry>Non</entry>
581   <entry></entry>
582   <entry>
583   Indique les bibliothèques à précharger au démarrage du serveur. Une
584   fonction d'initialisation peut optionnellement être
585   appelée pour chaque bibliothèque. Pour cela, il suffit d'ajouter un
586   double-point et le nom de la fonction d'initialisation après le
587   nom de la bibliothèque. '$libdir/mylib:mylib_init' implique, par exemple,
588   le préchargement de mylib et l'exécution de la fonction mylib_init.
589   Si plusieurs bibliothèques doivent être chargées, leurs noms
590   sont séparés par des virgules. Si mylib n'est pas trouvée, le serveur ne
591   démarrera pas. En revanche, si init_mylib n'est pas trouvée, mylib est
592   préchargée sans exécuter la fonction d'initialisation.  </entry>
593   <entry>
594   Le préchargement (et l'initialisation éventuelle) d'une bibliothèque
595   partagée permet d'éviter le temps de chargement de la bibliothèque
596   la première fois qu'elle est utilisée. Cela se traduit par un temps de
597   démarrage du serveur plus long et des temps d'appel des bibliothèques qui ne
598   sont pas chargées en mémoire plus courts.
599   </entry>
600  </row>
601 </tbody>
602 </tgroup>
603 </table>
604
605 </sect2>
606
607 </sect1>
608
609 <sect1>
610 <title>Options WAL</title>
611
612 <sect2>
613 <title>Paramètres</title>
614
615 <table>
616 <tgroup cols="8" align="left" colsep="1" rowsep="1">
617
618 <thead>
619  <row>
620   <entry>Paramètre</entry>
621   <entry>&Eacute;chelle</entry>
622   <entry>Ressources</entry>
623   <entry>Valeur par défaut</entry>
624   <entry>Positionnement</entry>
625   <entry>-o</entry>
626   <entry>Ce que dit la documentation</entry>
627   <entry>Commentaires</entry>
628  </row>
629 </thead>
630
631 <tbody>
632  <row>
633   <entry>fsync</entry>
634   <entry>true, false</entry>
635   <entry>Voir les notes</entry>
636   <entry>true</entry>
637   <entry>Non</entry>
638   <entry>-F (off)</entry>
639   <entry>
640   Lorsque cette option est activée, le serveur PostgreSQL utilise les appels
641   système fsync() pour s'assurer que les mises à jour sont physiquement écrites
642   sur le disque. Cela garantit la récupération d'une bases de données
643   cohérente après une panne matérielle ou système. Ce fonctionnement n'a aucune
644   incidence sur la gestion des pannes du serveur de bases de données.
645   </entry>
646   <entry>
647   <note>
648   <para>
649   Depuis la version 7.2, la désactivation de fsync n'arrête
650   <emphasis>PAS</emphasis> le WAL. Toutefois, il n'y a plus de points de reprise.
651   La journalisation des écritures anticipées (<foreignphrase>Write-Ahead
652   Logging ou WAL</foreignphrase>) ne doit être désactivée (fsync=off) que sur
653   les bases en
654   lecture seule ou celles qu'il est possible de régénérer à l'aide de logiciels
655   externes. Tandis que du RAID associé à un système de haute-disponibilité
656   électrique peuvent aider à la protection des données, la désactivation de
657   fsync <emphasis>impose</emphasis> la restauration des données à partir de
658   sauvegardes en cas de pannes matériel ou électrique.
659   </para>
660   </note>
661   <para>
662   D'un autre côté, le WAL implique une baisse de performances lors des
663   écritures, à
664   plus forte raison sur des systèmes mono-disques. Pour l'essentiel l'activité
665   nécessaire aux opérations de lecture/écriture est doublée à chaque mise à
666   jour. De plus, les fonctionnalités d'amélioration des performances par cache
667   disque matériel ou logiciel sont désactivées.
668   </para>
669   <para>
670    Si le WAL est arrêté, les options qui suivent n'ont pas d'intérêt.
671   </para>
672   </entry>
673  </row>
674  <row>
675   <entry>wal_sync_method</entry>
676   <entry>fsync, fdatasync, open_sync ou open_datasync</entry>
677   <entry></entry>
678   <entry>Dépend de la plateforme</entry>
679   <entry>Non</entry>
680   <entry></entry>
681   <entry>
682   Méthode utilisée pour forcer la mise à jour des WAL sur le disque. Les valeurs
683   possibles sont FSYNC (fsync() est appelé à chaque validation), FDATASYNC
684   (fdatasync() est appelé à chaque validation), OPEN_SYNC (écrit les fichiers
685   WAL avec l'option O_SYNC d'open()) et OPEN_DATASYNC (écrit les fichiers WAL
686   avec l'option O_DSYNC d'open()). Ces choix ne sont pas tous disponibles sur
687   toutes les plateformes.
688   </entry>
689   <entry>
690   Il s'agit de l'appel système utilisé pour synchroniser les WAL sur disque. La
691   valeur par défaut a été réglée pour chaque OS en fonction de la documentation
692   de l'OS. En revanche, aucun test comparatif n'a été mené. Il est possible que
693   le changement de méthode accélère l'écriture sur une plateforme spécifique,
694   mais cela ne doit être tenté que si les ressources nécessaires à des tests
695   comparatifs et de régression sont disponibles. La modification des valeurs par
696   défaut peut altérer la protection par le WAL.
697   </entry>
698  </row>
699  <row>
700   <entry>wal_buffers</entry>
701   <entry>4 à Int Max</entry>
702   <entry>8K RAM</entry>
703   <entry>8</entry>
704   <entry>Non</entry>
705   <entry></entry>
706   <entry>
707   Nombre de tampons de pages disque alloués dans la mémoire partagée
708   pour la journalisation du WAL.
709   </entry>
710   <entry>
711   L'accroissement de ce paramètre peut accélérer les écritures du WAL pour les
712   transactions volumineuses. &Agrave; ce jour, personne n'a rendu compte d'une
713   analyse de l'impact de ce paramètre.
714   </entry>
715  </row>
716 </tbody>
717 </tgroup>
718 </table>
719
720 </sect2>
721
722 <sect2>
723 <title>Checkpoints</title>
724
725 <table>
726 <tgroup cols="8" align="left" colsep="1" rowsep="1">
727
728 <thead>
729  <row>
730   <entry>Paramètre</entry>
731   <entry>&Eacute;chelle</entry>
732   <entry>Ressources</entry>
733   <entry>Valeur par défaut</entry>
734   <entry>Positionnement</entry>
735   <entry>-o</entry>
736   <entry>Ce que dit la documentation</entry>
737   <entry>Commentaires</entry>
738  </row>
739 </thead>
740
741 <tbody>
742  <row>
743   <entry>checkpoint_segments</entry>
744   <entry>1 à Int Max</entry>
745   <entry>16 Mo sur disque</entry>
746   <entry>3</entry>
747   <entry>Non</entry>
748   <entry></entry>
749   <entry>
750   Distance maximale entre deux points de contôle WAL automatiques, en segments
751   de fichier journal (chaque segment représente normalement 16 Mo).
752   </entry>
753   <entry>
754   Ce paramètre est augmenté lorsque la base requiert de nombreuses écritures
755   d'arrière-plan pour diminuer la fréquence des points de reprise (et ainsi
756   diminuer l'activité du disque). Si la place disque manque ou que l'environnement
757   présente un risque de coupures de courant inattendues, ce paramètre peut être
758   diminué. En effet, toute transaction non visée par un point de reprise sera
759   supprimée au redémarrage.
760   </entry>
761  </row>
762  <row>
763   <entry>checkpoint_timeout</entry>
764   <entry>30 à 3600</entry>
765   <entry>Voir les notes</entry>
766   <entry>300</entry>
767   <entry>Non</entry>
768   <entry></entry>
769   <entry>
770   Temps maximal entre deux points de contôle WAL automatiques, en secondes.
771   </entry>
772   <entry></entry>
773  </row>
774  <row>
775   <entry>checkpoint_warning</entry>
776   <entry>0 à Int Max</entry>
777   <entry>Voir les notes</entry>
778   <entry>0</entry>
779   <entry>Non</entry>
780   <entry></entry>
781   <entry>
782   Un message est envoyé dans les journaux du serveur si la fréquence des points
783   de contrôle
784   engendrés par le remplissage des fichiers de segments de points de contrôle
785   est supérieure à ce temps, en secondes. Zéro désactive les alertes.
786   </entry>
787   <entry>
788   Nouvelle option qui peut être utile pour affiner les checkpoint_segments sur
789   les bases à forte activité d'écriture. Des alertes
790   nombreuses dans les journaux incitent à accroitre le paramètre
791   checkpoint_segments.
792   </entry>
793  </row>
794  <row>
795   <entry>commit_delay</entry>
796   <entry>0-100000</entry>
797   <entry>Voir les notes</entry>
798   <entry>0</entry>
799   <entry>Oui</entry>
800   <entry></entry>
801   <entry>
802   Indique le délai, en microsecondes, entre l'écriture d'une validation dans le
803   tampon WAL et la purge du tampon sur disque. Un délai positif peut permettre
804   la validation de plusieurs transactions avec un seul appel système fsync(), si
805   la charge système est suffisamment élevée pour que de nouvelles transactions
806   soient prêtes pendant cet interval. Mais ce délai est perdu dans le cas
807   contraire. Ainsi, le délai n'est exécuté que si au moins commit_siblings
808   autres
809   transactions sont actives au moment où le processus serveur a écrit sa
810   validation.
811   </entry>
812   <entry>
813   Ces deux paramètres sont configurés ensemble pour un environnement à fort
814   volume de petites transactions. Activés, ils permettent de purger en même
815   temps sur disques des transactions sans relation entre elles, qui autrement ne
816   le seraient pas, avec à la clé un potentiel accroissement des performances.
817   En revanche, si l'espace disque est restreint ou que la stabilité électrique
818   de l'environnement ne peut être garantie, il est préférable de ne pas modifier
819   ces paramètres.
820   </entry>
821  </row>
822  <row>
823   <entry>commit_siblings</entry>
824   <entry>1-1000</entry>
825   <entry>Voir les notes</entry>
826   <entry>5</entry>
827   <entry>Oui</entry>
828   <entry></entry>
829   <entry>
830   Indique le nombre minimum de transactions concurrentes ouvertes avant
831   l'éxécution du délai COMMIT_DELAY. Plus la valeur est grande, plus la
832   probabilité de valider une autre transaction pendant cet interval grandit.
833   </entry>
834   <entry>
835   </entry>
836  </row>
837 </tbody>
838 </tgroup>
839 </table>
840
841 </sect2>
842
843 </sect1>
844
845 <sect1>
846 <title>Optimisation des requêtes</title>
847
848 <sect2>
849 <title>Méthodes du planificateur</title>
850
851 <table>
852 <tgroup cols="8" align="left" colsep="1" rowsep="1">
853
854 <thead>
855  <row>
856   <entry>Paramètre</entry>
857   <entry>&Eacute;chelle</entry>
858   <entry>Ressources</entry>
859   <entry>Valeur par défaut</entry>
860   <entry>Positionnement</entry>
861   <entry>-o</entry>
862   <entry>Ce que dit la documentation</entry>
863   <entry>Commentaires</entry>
864  </row>
865 </thead>
866
867 <tbody>
868  <row>
869   <entry>
870   <para>enable_hashagg</para>
871   <para>enable_hashjoin</para>
872   <para>enable_indexscan</para>
873   <para>enable_mergejoin</para>
874   <para>enable_nestloop</para>
875   <para>enable_seqscan</para>
876   <para>enable_sort</para>
877   <para>enable_tidscan</para>
878   </entry>
879   <entry>true, false</entry>
880   <entry></entry>
881   <entry>true</entry>
882   <entry>Oui</entry>
883   <entry>
884   <para></para>
885   <para>-fi</para>
886   <para>-fm</para>
887   <para>-fn</para>
888   <para>-fs</para>
889   <para></para>
890   <para>-ft*</para>
891   <para></para>
892   </entry>
893   <entry>
894   <para>
895   Active ou désactive l'utilisation des types de plan respectifs par le
896   planificateur de requêtes.
897   Activé par défaut, on les utilise pour déboguer le planificateur de requêtes.
898   </para>
899   <para>
900   Les options en ligne de commande requièrent l'utilisation de -o 'option'.
901   </para>
902   </entry>
903   <entry>
904   <para>
905   Ces options ne devraient être utilisées que pour tester les requêtes&nbsp;; il
906   est courant, par exemple, de positionner
907   &laquo;&nbsp;enable_seqscan&nbsp;=&nbsp;false&nbsp;&raquo;
908   pour déterminer si le planificateur n'omet pas inutilement un index. Quoi
909   qu'il en soit, seules des circonstances extraordinaires nécessitent qu'un
910   de ces paramètres soit positionné à <foreignphrase>false</foreignphrase> dans
911   le fichier .conf.
912   </para>
913   </entry>
914  </row>
915 </tbody>
916 </tgroup>
917 </table>
918
919 </sect2>
920
921 <sect2>
922 <title>Constantes de coût du planificateur</title>
923
924 <table>
925 <tgroup cols="8" align="left" colsep="1" rowsep="1">
926
927 <thead>
928  <row>
929   <entry>Paramètre</entry>
930   <entry>&Eacute;chelle</entry>
931   <entry>Ressources</entry>
932   <entry>Valeur par défaut</entry>
933   <entry>Positionnement</entry>
934   <entry>-o</entry>
935   <entry>Ce que dit la documentation</entry>
936   <entry>Commentaires</entry>
937  </row>
938 </thead>
939
940 <tbody>
941  <row>
942   <entry>effective_cache_size</entry>
943   <entry>0 à Int Max</entry>
944   <entry>8 Ko</entry>
945   <entry>1000</entry>
946   <entry>Oui</entry>
947   <entry></entry>
948   <entry>
949   Fournit à l'optimiseur une estimation de la taille efficace du cache
950   disque (c'est-à-dire la partie du cache disque du noyau utilisée pour les
951   fichiers de données PostgreSQL). Elle est mesurée en pages disque, chacune
952   de 8 ko.
953   </entry>
954   <entry>
955   Ce paramètre, bien que souvent négligé, peut, s'il est correctement réglé
956   conduire à une meilleure utilisation de la RAM sur les ordinateurs disposant de
957   beaucoup de mémoire. (NDR&nbsp;: j'utilise 25% de ma &laquo;&nbsp;RAM
958   disponible&nbsp;&raquo; [après Linux et les applications] comme niveau général,
959   mais n'ai pas testé plus avant). Si ce paramètre est optimisé, il n'est pas
960   nécessaire d'augmenter inutilement shared_buffers.
961   </entry>
962  </row>
963  <row>
964   <entry>
965   <para>random_page_cost</para>
966   <para>cpu_tuple_cost</para>
967   <para>cpu_index_tuple_cost</para>
968   <para>cpu_operator_cost</para>
969   </entry>
970   <entry>0 à Double</entry>
971   <entry>
972   <para></para>
973   <para>0.01</para>
974   <para>0.001</para>
975   <para>0.0025</para>
976   </entry>
977   <entry>4</entry>
978   <entry>
979   </entry>
980   <entry>Oui</entry>
981   <entry>
982   Fournit au planificateur une estimation du coût de traitement de chaque
983   consultation de page, tuple, consultation d'index et item de clause where
984   (respectivement) lors d'une requête. Elle est mesurée en multiples du coût de
985   récupération séquentielle d'une page.
986   </entry>
987   <entry>
988   Les coûts par défaut sont fondés entièrement sur l'expérience et ne sont
989   probablement pas optimaux pour tout système. Par exemple, les machines disposant
990   de disques rapides peuvent abaisser le random_page_cost. Lorsque différentes
991   valeurs sont testées pour ces paramètres, il est nécessaire de tester une grande
992   variété de requêtes, car un bon paramétrage pour une requête peut ne pas
993   s'appliquer à une autre. Heureusement, ces paramètres étant tous relatifs au
994   coût d'un parcours séquentiel, le risque qu'ils soient trop élevés dans un
995   système équilibré est assez faible.
996   </entry>
997  </row>
998 </tbody>
999 </tgroup>
1000 </table>
1001
1002 </sect2>
1003
1004 <sect2>
1005 <title>Optimisation génétique de requêtes (<foreignphrase>Genetic Estimate Query
1006 Optimizer, GEQO</foreignphrase>)</title>
1007
1008 <table>
1009 <tgroup cols="8" align="left" colsep="1" rowsep="1">
1010
1011 <thead>
1012  <row>
1013   <entry>Paramètre</entry>
1014   <entry>&Eacute;chelle</entry>
1015   <entry>Ressources</entry>
1016   <entry>Valeur par défaut</entry>
1017   <entry>Positionnement</entry>
1018   <entry>-o</entry>
1019   <entry>Ce que dit la documentation</entry>
1020   <entry>Commentaires</entry>
1021  </row>
1022 </thead>
1023
1024 <tbody>
1025  <row>
1026   <entry>geqo</entry>
1027   <entry>true, false</entry>
1028   <entry></entry>
1029   <entry>true</entry>
1030   <entry></entry>
1031   <entry></entry>
1032   <entry>
1033   Active ou désactive l'optimisation génétique de requêtes. Il s'agit en fait
1034   d'un algorithme génétique de planification de requêtes qui tente d'éviter
1035   les recherches exhaustives. Activé par défaut. Divers paramètres GEQO_
1036   permettent d'en affiner le comportement.
1037   </entry>
1038   <entry>
1039   <para>
1040   GEQO a été introduit dans PostgreSQL 6.5 pour optimiser les requêtes de
1041   jointures qui utilisent trop de tables pour permettre une analyse exhaustive
1042   par le planificateur. C'était assez révolutionnaire, alors, mais n'a jamais
1043   été complètement optimisé. Depuis, sa maintenance est aléatoire. (NDR&nbsp;:
1044   Maintenant que de nouveaux CPU, plus rapides et plus de RAM, plus rapide, sont
1045   devenus accessible, je positionne le seuil GEQO aux environs de 20-25 tables.)
1046   Cela permet de s'assurer que GEQO n'est utilisé que lorsque c'est la seule
1047   solution. Il est évident que si PostgreSQL tourne sur une machine à CPU limité,
1048   le seuil GEQO peut être abaissé.
1049   </para>
1050   <para>
1051   GEQO peut être désactivé si aucune requête de cette complexité n'est jamais
1052   envisagée.
1053   </para>
1054   </entry>
1055  </row>
1056  <row>
1057   <entry>geqo_threshold</entry>
1058   <entry>2 à Int Max</entry>
1059   <entry></entry>
1060   <entry>11</entry>
1061   <entry>Oui</entry>
1062   <entry></entry>
1063   <entry>
1064   L'optimisation génétique de requête est utilisée pour planifier les requêtes
1065   qui contiennent au minimum ce nombre d'éléments dans la clause FROM. Une jointure
1066   compte pour un item FROM. La valeur par défaut est 11. Pour les requêtes plus
1067   simples, il est généralement plus efficace d'utiliser une stratégie de
1068   planification déterministique, exhaustive. Ce paramètre contrôle également la
1069   façon dont l'optimiseur tente de fusionner les sous-requêtes de clause FROM
1070   avec la requête principale.
1071   </entry>
1072   <entry></entry>
1073  </row>
1074  <row>
1075   <entry>
1076   <para>geqo_selection_bias</para>
1077   <para>geqo_pool_size</para>
1078   <para>geqo_effort</para>
1079   <para>geqo_generations</para>
1080   <para>geqo_random_seed</para>
1081   </entry>
1082   <entry>1.5-2.0</entry>
1083   <entry></entry>
1084   <entry>
1085   <para>2.0</para>
1086   <para>0</para>
1087   <para>1</para>
1088   <para>0</para>
1089   <para>-1</para>
1090   </entry>
1091   <entry>Oui</entry>
1092   <entry></entry>
1093   <entry>
1094   Divers paramètres d'affinage de l'algorithme d'optimisation génétique&nbsp;:
1095   la taille du <emphasis>pool</emphasis> correspond au nombre d'individus d'une population.
1096   L'échelle
1097   s'étend de 128 à 1024. Lorsqu'elle est positionnée à 0 (valeur par défaut), la
1098   taille du pool est obtenue par le calcul. Elle vaut alors 2^(QS+1), avec QS le
1099   nombre d'éléments FROM de la requête.
1100   L'<emphasis>effort</emphasis> est utilisé pour calculer une valeur par défaut pour les
1101   générations.
1102   L'échelle s'étend de 1 à 80, 40 étant la valeur par défaut.
1103   <emphasis>generations</emphasis> précise le nombre d'itérations de l'algorithme. Ce nombre
1104   doit être entier et positif. Si une valeur nulle est utilisée,
1105   <emphasis>generations</emphasis> est calculé. Le nombre vaut alors effort * Log2(PoolSize).
1106   Le temps d'exécution de l'algorithme est approximativement proportionnel à la
1107   somme de la taille du <emphasis>pool</emphasis> et de <emphasis>generations</emphasis>.
1108   <foreignphrase>selection bias</foreignphrase> affine la sélectivité au sein
1109   d'une population. Ses valeurs vont de 1.5 à 2.0 (2.0 étant la valeur
1110   par défaut).
1111   <foreignphrase>random seed</foreignphrase> permet d'ajuster l'algorithme pour
1112   obtenir des résultats reproductibles. Positionné à -1, l'algorithme a un
1113   comportement non déterministe.
1114   </entry>
1115   <entry></entry>
1116  </row>
1117 </tbody>
1118 </tgroup>
1119 </table>
1120
1121 </sect2>
1122
1123 <sect2>
1124 <title>Statistiques concernant les requêtes et les index</title>
1125
1126 <table>
1127 <tgroup cols="8" align="left" colsep="1" rowsep="1">
1128
1129 <thead>
1130  <row>
1131   <entry>Paramètre</entry>
1132   <entry>&Eacute;chelle</entry>
1133   <entry>Ressources</entry>
1134   <entry>Valeur par défaut</entry>
1135   <entry>Positionnement</entry>
1136   <entry>-o</entry>
1137   <entry>Ce que dit la documentation</entry>
1138   <entry>Commentaires</entry>
1139  </row>
1140 </thead>
1141
1142 <tbody>
1143  <row>
1144   <entry>
1145   <para>stats_start_collector</para>
1146   <para>stats_reset_on_server_start</para>
1147   <para>stats_command_string</para>
1148   <para>stats_row_level</para>
1149   <para>stats_block_level</para>
1150   </entry>
1151   <entry>true, false</entry>
1152   <entry>
1153   <para>true</para>
1154   <para>true</para>
1155   <para>false</para>
1156   <para>false</para>
1157   <para>false</para>
1158   </entry>
1159   <entry></entry>
1160   <entry>Non</entry>
1161   <entry></entry>
1162   <entry>
1163   Ces drapeaux détermine les informations envoyées par les serveurs au processus
1164   de collecte des statistiques&nbsp;: commande en cours, statistiques d'activité
1165   au niveau bloc ou statistiques d'activité au niveau ligne. Tous sont
1166   désactivés  par défaut. La collecte de statistiques coûte un peu de temps par
1167   requête, mais  est inestimable pour le débogage et l'optimisation des
1168   performances.
1169   </entry>
1170   <entry>
1171   NDR&nbsp;: J'écris un article sur Techdocs qui explique comment utiliser les
1172   statistiques de requête pour optimiser l'utilisation des index. Elles sont
1173   particulièrement utiles pour avoir une approche
1174   &laquo;&nbsp;déductive&nbsp;&raquo; de l'indexation, qui consiste à tout
1175   indexer  et supprimer ensuite les index inutiles.
1176   </entry>
1177  </row>
1178  <row>
1179   <entry>default_statistics_target</entry>
1180   <entry>1 -1000</entry>
1181   <entry></entry>
1182   <entry>10</entry>
1183   <entry>Oui</entry>
1184   <entry></entry>
1185   <entry>
1186   Positionne la cible par défaut des statistiques pour les tables dont la cible
1187   spécifique à la colonne n'a pas été positionnée à l'aide de ALTER TABLE SET
1188   STATISTICS.
1189   Plus la valeur est grande, plus long est le temps nécessaire à l'ANALYZE.