PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 11/01/2016 13:02:34

chris
Membre

espace disque consommé par reindex

Bonjour.
Version de PG : 9.1
Y-a-t-un moyen de savoir quel quantité d'espace disque un reindexdb --all va consommer (en fonction peut-être de la taille des index avant le reindex ?)
J'ai vu qu'en fonction du paramètre maintenance_work_mem, je pouvais diminuer les fichiers temporaire de pgsql_tmp, et j'ai fait en sorte de maximiser ce paramètre. Mais cela n'est pas suffisant.
Exemple, j'ai une base qui fait 42 Go, sur un filesystem (Linux) qui est taillé à 62 Go, dont 13 Go de disponibles. reindexdb --all consomme entièrement ces 13 Go sans aller au bout.
L'idée, serait de mettre en place un check Nagios permettant de détecter à l'avance que l'espace disque restant est insuffisant pour le prochain reindex.

Merci

Hors ligne

#2 11/01/2016 22:53:14

gleu
Administrateur

Re : espace disque consommé par reindex

Il va consommer de la place pour les index et pour les fichiers temporaires (à cause des tris nécessaires). Il est peut-être possible de l'estimer mais ce serait vraiment complexe.

Hors ligne

#3 12/01/2016 11:17:47

chris
Membre

Re : espace disque consommé par reindex

A priori, les nouveaux index auront sensiblement la même taille que les anciens, donc on doit pouvoir avoir une bonne approximation en calculant la taille totale des index actuels en faisant :

select pg_size_pretty ((select sum(T.size)::bigint from (select pg_total_relation_size(oid) as size from pg_class where relkind='i')T)) as total_index_size;

En rajoutant une marge de 20% pour prendre en compte les tris et autres, on doit pas être loin.

Hors ligne

#4 13/01/2016 09:16:18

gleu
Administrateur

Re : espace disque consommé par reindex

Si les nouveaux index ont sensiblement la même taille que les anciens, je ne vois pas l'intérêt de les réindexer smile (par contre, votre calcul peut servir de limite haute, dans le pire des cas)

Hors ligne

#5 13/01/2016 11:24:25

chris
Membre

Re : espace disque consommé par reindex

C'est vrai :-) . Pour l'instant on reindexe nos bases 1 fois par semaine (le dimanche car faible activité) sans trop se poser de questions sur les bons conseils de la doc (http://docs.postgresql.fr/9.1/routine-reindex.html) On pourrait certainement amélioré ce process en ne reindexant que les tables qui en ont besoin. Le tout est de savoir quand elles en ont besoin : taux de fragmentation et/ou nombre de pages gaspillées et/ou espace disque gaspillée.

Hors ligne

#6 15/01/2016 23:54:11

gleu
Administrateur

Re : espace disque consommé par reindex

La fonction pgstatindex du module pgstattuple peut vous fournir ce type d'informations. Ou alors l'action btree_bloat de l'outil check_pgactivity.

Hors ligne

Pied de page des forums