root/traduc/branches/bv747/manuel/diskusage.sgml

Revision 114, 6.9 kB (checked in by gleu, 3 years ago)

Relecture d'Hervé Dumont.

Line 
1 <!--
2 $Header: /var/lib/cvs/pgsql-fr/sgml/diskusage.sgml,v 1.6.2.1 2005/03/14 06:02:59 guillaume Exp $
3 -->
4
5 <chapter id="diskusage">
6  <title>Surveillance de l'utilisation de l'espace disque</title>
7
8  <para>
9   Ce chapitre traite de la manière d'effectuer une surveillance sur
10   l'utilisation de l'espace disque par un système de bases de données
11   <productname>PostgreSQL</productname>. Dans la version actuelle,
12   l'administrateur de la base de données ne dispose pas de beaucoup
13   de moyens de contrôles sur la manière dont les données sont stockées
14   sur les disques. Ce chapitre est donc surtout informatif et peut vous
15   donner une idée plus précise de la manière de gérer les disques
16   en utilisant plutôt les outils fournis avec le système d'exploitation.
17  
18  </para>
19
20  <sect1 id="disk-usage">
21   <title>Déterminer l'utilisation de l'espace disque</Title>
22
23   <indexterm zone="disk-usage">
24    <primary>utilisation de l'espace disque</primary>
25   </indexterm>
26
27   <para>
28    Chaque table possède un fichier d'en-tête principal dans lequel la plupart
29    des données sont stockées. Afin de stocker les données des grosses colonnes,
30    un fichier <acronym>TOAST</acronym> est également associé à la table dont le
31    nom est basé sur l'OID (en fait il s'agit de
32    <literal>pg_class.relfilenode</literal>).
33    Pour finir, on lui associe un index dans la table <acronym>TOAST</acronym>.
34    Il peut y avoir par ailleurs d'autres index associés à la table de base.
35   </para>
36
37   <para>
38   Vous pouvez surveiller l'espace disque en utilisant trois méthodes&nbsp;:
39   depuis <application>psql</application> en utilisant les résultats de
40   la commande <command>VACUUM</command>, depuis <application>psql</application>
41   en utilisant l'outil se trouvant dans <filename>contrib/dbsize</filename>,
42   et depuis la ligne de commande en utilisant l'outil contenu dans
43   <filename>contrib/oid2name</filename>. En utilisant
44   <application>psql</application> sur une base de données sur laquelle ont
45   été lancés <command>VACUUM</command> ou <command>ANALYZE</command>,
46   vous pouvez lancer des requêtes vous permettant d'obtenir des informations
47   sur la place occupée par n'importe quelle table&nbsp;:
48 <programlisting>
49 SELECT relfilenode, relpages FROM pg_class WHERE relname = 'customer';
50
51  relfilenode | relpages
52 -------------+----------
53        16806 |       60
54 (1 ligne)
55 </programlisting>
56    Chaque page utilise en général 8&nbsp;Ko de d'espace disque (ne pas oublier
57    que <literal>relpage</literal> n'est mis à jour que par l'utilisation des
58    commandes <command>VACUUM</command> et <command>ANALYZE</command>.)
59   </para>
60
61   <para>
62    Afin de connaître l'espace disque utilisé par les tables
63    <acronym>TOAST</acronym>, lancez une requête similaire à la suivante en
64    remplaçant le nombre du <literal>relfilenode</literal> de la table (défini
65    par la requête ci-dessus)&nbsp;:
66 <programlisting>
67 SELECT relname, relpages
68     FROM pg_class
69     WHERE relname = 'pg_toast_16806' OR relname = 'pg_toast_16806_index'
70     ORDER BY relname;
71
72        relname        | relpages
73 ----------------------+----------
74  pg_toast_16806       |        0
75  pg_toast_16806_index |        1
76 </programlisting>
77   </para>
78
79   <para>
80    Vous pouvez afficher également la taille des index&nbsp;:
81 <programlisting>
82 SELECT c2.relname, c2.relpages
83     FROM pg_class c, pg_class c2, pg_index i
84     WHERE c.relname = 'customer'
85         AND c.oid = i.indrelid
86         AND c2.oid = i.indexrelid
87         ORDER BY c2.relname;
88
89        relname        | relpages
90 ----------------------+----------
91  customer_id_indexdex |       26
92 </programlisting>
93   </para>
94
95   <para>
96    Vous pouvez trouver les tables les plus grosses en utilisant la requête
97    suivante&nbsp;:
98 <programlisting>
99 SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;
100
101        relname        | relpages
102 ----------------------+----------
103  bigtable             |     3290
104  customer             |     3144
105 </programlisting>
106   </para>
107
108   <para>
109    <filename>contrib/dbsize</filename> crée dans votre base de données
110    des fonctions permettant de trouver la taille des tables ou de la
111    base de données à partir de <application>psql</application> sans avoir
112    besoin d'exécuter <command>VACUUM</command> ou <command>ANALYZE</command>
113    préalablement.
114   </para>
115
116   <para>
117    Vous pouvez aussi utiliser l'utilitaire <filename>contrib/oid2name</filename>
118    afin d'afficher l'utilisation du disque. Lisez les exemples contenus dans
119    le fichier <filename>README.oid2name</filename> dans ce même répertoire.
120    Il inclut un script permettant d'afficher la quantité de disque utilisée par
121    chaque base de données.
122   </para>
123  </sect1>
124
125  <sect1 id="disk-full">
126   <title>Échec sur disque plein</title>
127
128   <para>
129    La tâche la plus important de l'administrateur de base de données
130    dans la surveillance de l'utilisation de disque est de s'assurer que l'espace
131    disque ne viendra pas à manquer. Un disque plein a de fortes chances de mener
132    à des index de base de données corrompus. Mais cet état du disque ne comporte
133    pas que des risques au niveau base de données. Si les fichiers de WAL se
134    trouvent sur le même disque que la base (comme cela doit être le cas avec
135    une configuration par défaut) et que le disque est complètement rempli lors
136    de l'initialisation de la base de données, les fichiers de WAL risquent d'être
137    soit incomplets, soit corrompus. Ce cas d'échec est détecté par le système de
138    base de données qui refusera alors de démarrer.
139   </para>
140
141   <para>
142    Si vous êtes dans l'incapacité d'ajouter de l'espace disque en supprimant
143    des données annexes à la base de données, vous pouvez déplacer des fichiers
144    de la base de données sur d'autres systèmes de fichiers et créer un lien
145    symbolique à partir de l'emplacement d'origine. Notez cependant que
146    l'utilitaire <application>pg_dump</application> ne pourra sauvegarder
147    l'agencement entre les liens symboliques et les fichiers réels
148    que vous aurez choisi&nbsp;; ainsi une restauration ne pourra rétablir cet
149    agencement, se contentant de remettre tous les fichiers dans le même
150    répertoire. Afin d'éviter de se retrouver dans la situation de saturation
151    d'espace disque, vous pouvez placer les fichiers WAL ou les base de données
152    individuelles à différents endroits lors de leur création. Pour cela, lisez
153    la documentation de la commande <command>initdb</command> ainsi que la
154    <xref linkend="manage-ag-alternate-locs"> pour plus d'informations à ce sujet.
155   </para>
156
157   <tip>
158    <para>
159    Certains systèmes de fichiers réagissent mal lorsqu'ils sont presque pleins.
160    À toutes fins utiles, n'attendez pas que le disque soit plein pour agir.
161    </para>
162   </tip>
163  </sect1>
164 </chapter>
165
166 <!-- Keep this comment at the end of the file
167 Local variables:
168 mode:sgml
169 sgml-omittag:nil
170 sgml-shorttag:t
171 sgml-minimize-attributes:nil
172 sgml-always-quote-attributes:t
173 sgml-indent-step:1
174 sgml-indent-data:t
175 sgml-parent-document:nil
176 sgml-default-dtd-file:"./reference.ced"
177 sgml-exposed-tags:nil
178 sgml-local-catalogs:("/usr/lib/sgml/catalog")
179 sgml-local-ecat-files:nil
180 End:
181 -->
182
183
184
185
186
Note: See TracBrowser for help on using the browser.