root/traduc/trunk/postgresql/diskusage.xml

Revision 1088, 5.9 kB (checked in by sas, 5 months ago)

Back in Business

  • Property svn:keywords set to Date Author Revision
Line 
1 <?xml version="1.0" encoding="ISO-8859-15"?>
2 <!-- Dernière modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6 <!-- SAS : 20060511, PG824 -->
7
8 <chapter id="diskusage">
9  <title>Surveiller l'utilisation des disques</title>
10
11  <para>
12   Ce chapitre explique comment surveiller l'utilisation que fait
13   <productname>PostgreSQL</productname> des disques.
14  
15  </para>
16
17  <sect1 id="disk-usage">
18   <title>Déterminer l'utilisation des disques</title>
19
20   <indexterm zone="disk-usage">
21    <primary>utilisation des disques</primary>
22   </indexterm>
23
24   <para>
25    Chaque table possède un fichier principal dans lequel la majorité
26    des données sont stockées. Si la table contient des colonnes pouvant recevoir
27    des valeurs étendues, il existe aussi un fichier <acronym>TOAST</acronym> associé à la
28    table. Ce fichier permet de stocker les valeurs trop larges pour tenir
29    dans la table principale (voir la <xref linkend="storage-toast"/>).
30    Si la table <acronym>TOAST</acronym> existe, un index lui est associé.
31    Des index peuvent également être associés à la table de base.
32    Chaque table ou index est stocké dans un fichier distinct &mdash;
33    ou plusieurs si la taille du fichier dépasse 1&nbsp;Go.
34    Les conventions de nommage de ces fichiers sont décrites dans la
35    <xref linkend="storage-file-layout"/>.
36   </para>
37
38   <para>
39    L'espace disque peut être surveillé de trois façons différentes&nbsp;:
40    depuis <application>psql</application> en utilisant les informations retournées par
41    <command>VACUUM</command>, depuis <application>psql</application> avec les outils de
42    <filename>contrib/dbsize</filename> et en ligne de commande avec les outils de
43    <filename>contrib/oid2name</filename>.
44    </para>
45    <para>
46    Les fonctions SQL sont les plus faciles à utiliser. Elles rapportent des
47    informations concernant les tables, les tables avec index et stockage de
48    valeurs étendues (TOAST), les bases de données et les
49    <foreignphrase>tablespaces</foreignphrase>.
50   </para>
51
52   <para>
53    L'utilisation de <application>psql</application> sur une base de données
54    récemment &laquo;&nbsp;nettoyée&nbsp;&raquo; (<command>VACUUM</command>) ou
55    &laquo;&nbsp;analysée&nbsp;&raquo; (<command>ANALYZE</command>) permet de lancer des
56    requêtes pour connaître l'occupation disque d'une table&nbsp;:
57 <programlisting>SELECT relfilenode, relpages FROM pg_class WHERE relname = 'customer';
58
59  relfilenode | relpages
60 -------------+----------
61        16806 |       60
62 (1 ligne)</programlisting>
63    Chaque page utilise typiquement 8&nbsp;Ko d'espace disque.
64   </para>
65  
66   <para>
67    <structfield>relpages</structfield> n'est mis à jour que par
68    les commandes <command>VACUUM</command>, <command>ANALYZE</command> et
69    par quelques commandes de définition de données (DDL, Data Definition
70    Language), telles que <command>CREATE INDEX</command>. La valeur de
71    <structfield>relfilenode</structfield> est intéressante pour l'examen direct du fichier
72    de table.
73   </para>
74
75   <para>
76    Pour connaître l'espace disque utilisé par les tables
77    <acronym>TOAST</acronym>, on utilise une requête similaire à la suivante&nbsp;:
78 <programlisting>SELECT relname, relpages
79     FROM pg_class,
80          (SELECT reltoastrelid FROM pg_class
81           WHERE relname = 'customer') ss
82     WHERE oid = ss.reltoastrelid
83        OR oid = (SELECT reltoastidxid FROM pg_class
84                  WHERE oid = ss.reltoastrelid)
85     ORDER BY relname;
86
87        relname        | relpages
88 ----------------------+----------
89  pg_toast_16806       |        0
90  pg_toast_16806_index |        1</programlisting>
91   </para>
92
93   <para>
94    On peut aussi facilement afficher la taille des index&nbsp;:
95 <programlisting>SELECT c2.relname, c2.relpages
96     FROM pg_class c, pg_class c2, pg_index i
97     WHERE c.relname = 'customer'
98         AND c.oid = i.indrelid
99         AND c2.oid = i.indexrelid
100         ORDER BY c2.relname;
101
102        relname        | relpages
103 ----------------------+----------
104  customer_id_indexdex |       26</programlisting>
105   </para>
106
107   <para>
108    Les tables et les index les plus volumineux sont repérés à l'aide de la requête
109    suivante&nbsp;:
110 <programlisting>SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;
111
112        relname        | relpages
113 ----------------------+----------
114  bigtable             |     3290
115  customer             |     3144</programlisting>
116   </para>
117
118   <para>
119    L'utilitaire <filename>contrib/oid2name</filename> permet également de connaître
120    l'utilisation de l'espace disque. Des exemples d'utilisation sont repris dans
121    le fichier <filename>README.oid2name</filename> situé dans le répertoire
122    de l'utilitaire. On y trouve notamment un script permettant de connaître l'utilisation
123    de l'espace disque par base de données.
124   </para>
125  </sect1>
126
127  <sect1 id="disk-full">
128   <title>Panne pour disque saturé</title>
129
130   <para>
131    La tâche la plus importante d'un administrateur de base de données,
132    en ce qui concerne la surveillance des disques, est de s'assurer que les
133    disques n'arrivent pas à saturation. Un disque de données plein ne corrompt pas
134    les données mais peut empêcher toute activité. S'il s'agit
135    du disque contenant les fichier WAL, une alerte
136    PANIC et un arrêt du serveur peuvent survenir.
137   </para>
138
139   <para>
140    S'il n'est pas possible de libérer de la place sur le disque, il faut
141    envisager le déplacement de quelques fichiers vers d'autres systèmes de
142    fichiers à l'aide des <foreignphrase>tablespaces</foreignphrase>. Voir la
143    <xref linkend="manage-ag-tablespaces"/> pour plus d'informations.
144   </para>
145
146   <tip>
147    <para>
148    Certains systèmes de fichiers réagissent mal à proximité des limites de remplissage.
149    Il est donc préférable de ne pas attendre ce moment pour réagir.
150    </para>
151   </tip>
152
153   <para>
154    Si le système supporte les quotas disque par utilisateur, la
155    base de données est alors soumise au quota de
156    l'utilisateur qui exécute le serveur de base de données. Dépasser ce
157    quota a les mêmes conséquences néfastes qu'un disque plein.
158   </para>
159  </sect1>
160 </chapter>
Note: See TracBrowser for help on using the browser.