Augmentation de taille incontrôlée d'une base

From: Francois Suter <fsuter(at)cobweb(dot)ch>
To: Listes Advocacy <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Augmentation de taille incontrôlée d'une base
Date: 2008-04-22 10:14:16
Message-ID: EE8CF0B2-6831-49D8-9DF2-5DE4BFFAB196@cobweb.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour à tous,

J'ai un souci avec une base de données qui explose régulièrement en
taille et je ne comprends pas bien pourquoi. La base tourne en
PostgreSQL 7.4.7. Certaines tables sont relativement grosses
(quelques centaines de milliers d'enregistrement), mais pas de quoi
fouetter un chat non plus. La vaste majorité de ces données sont
mises à jour tous les soirs à partir de données exportées d'un ERP.

Pour donner un exemple, voici une table assez typique:

Table "public.tariff_table"
Column | Type |
Modifiers
----------------------------------+--------------------
+--------------------
tariff_table_id | integer | not null
tariff_table_price | numeric(16,2) | not null
default 0
tariff_table_tariff_id | integer | not null
tariff_table_from_quantity | numeric(15,4) | not null default 0
tariff_table_to_quantity | numeric(15,4) | not null default 0
tariff_table_control | integer | not null
default 0

Indexes:
"tariff_table_pkey" primary key, btree (tariff_table_id)
"tariff_table_control_index" btree (tariff_table_control)
"tariff_table_index" btree (tariff_table_id)

Foreign-key constraints:
"tariff_table_tariff_id_key" FOREIGN KEY
(tariff_table_tariff_id) REFERENCES tariff(tariff_id) ON UPDATE
CASCADE ON DELETE CASCADE

Elle contient 59'446 enregistrements. En faisant un VACUUM FULL
VERBOSE dessus (et partant du principe que cette opération n'avait
pas été effectuée depuis plusieurs jours), j'ai obtenu (outre un gain
de place certain), les informations suivantes:

INFO: ?tariff_table?: 2908726 versions de ligne supprimables, 59446
non supprimables parmi 26161 pages
DETAIL: 0 versions de lignes mortes ne peuvent pas encore être
supprimées.
Les versions non supprimables de ligne vont de 64 to 72 octets.
Il existait 6880 pointeurs d'éléments inutilisés.Espace libre total
(incluant les versions supprimables de ligne) est de 197857540 octets.
25634 pages sont ou deviendront vides, ceci incluant 0 à la fin de la
table.
25650 pages contenant 197839900 octets libres sont des destinations
de d?placement disponibles.
CPU 0.80s/0.32u sec elapsed 5.48 sec.
INFO: L'index ?tariff_table_pkey? contient maintenant 59446 versions
de ligne dans 9602 pages
DETAIL: 2908726 versions de ligne d'index ont été supprimées.
3501 pages d'index ont été supprim?es, 3501 sont actuellement
réutilisables.
CPU 1.29s/7.34u sec elapsed 61.27 sec.
INFO: L'index ?tariff_table_index? contient maintenant 59446
versions de ligne dans 9607 pages
DETAIL: 2908726 versions de ligne d'index ont été supprimées.
3499 pages d'index ont été supprimées, 3499 sont actuellement
réutilisables.
CPU 1.50s/7.20u sec elapsed 56.45 sec.
INFO: L'index ?tariff_table_control_index? contient maintenant 59446
versions de ligne dans 8518 pages
DETAIL: 2908726 versions de ligne d'index ont été supprimées.
8310 pages d'index ont été supprimées, 8310 sont actuellement
réutilisables.
CPU 1.24s/6.25u sec elapsed 30.92 sec.
INFO: ?tariff_table?: moved 59446 row versions, truncated 26161 to
525 pages
DETAIL: CPU 3.29s/6.08u sec elapsed 83.63 sec.
INFO: L'index ?tariff_table_pkey? contient maintenant 59446 versions
de ligne dans 9602 pages
DETAIL: 59446 versions de ligne d'index ont été supprimées.3501
pages d'index ont été supprimées, 3501 sont actuellement réutilisables.
CPU 0.84s/0.59u sec elapsed 18.95 sec.
INFO: L'index ?tariff_table_index? contient maintenant 59446
versions de ligne dans 9607 pages
DETAIL: 59446 versions de ligne d'index ont été supprimées.3499
pages d'index ont été supprimées, 3499 sont actuellement r?utilisables.
CPU 0.84s/0.70u sec elapsed 21.93 sec.
INFO: L'index ?tariff_table_control_index? contient maintenant 59446
versions de ligne dans 8518 pages
DETAIL: 59446 versions de ligne d'index ont été supprimées.
8342 pages d'index ont été supprimées, 8342 sont actuellement
réutilisables.
CPU 0.16s/0.13u sec elapsed 0.82 sec.

Vous paraît-il normal qu'il y ait tant de choses à nettoyer? Par
exemple 2'908'726 pour une table qui ne compte que 59'446
enregistrements?

Merci d'avance pour vos lumières.

François Suter

--
Cobweb Development Sàrl
www.cobweb.ch

Rue Eugène-Marziano 15, CH-1227 Les Acacias (Geneva - Switzerland)
T: +41 22 880 00 93, F: +41 22 880 00 94, E: support(at)cobweb(dot)ch
web solutions for professionnal requirements

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Francois Suter 2008-04-22 10:41:19 Re: Augmentation de taille incontrôlée d'une base
Previous Message Guillaume Lelarge 2008-04-21 10:57:58 Re: date dernière modif dans la base