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

#1 11/12/2012 18:17:37

gom
Membre

Estimer la fragmentation (en pourcentage) de tous mes index ?

Bonjour,

Savez-vous si c'est possible via une requête SQL ?

Je sais le faire en SQL Server mais pas en PostgreSQL. sad

J'ai bien lu ça : http://www.dalibo.org/glmf109_operation … postgresql, puis ça : http://blog.guillaume.lelarge.info/inde … gstattuple mais ça ne répond pas à mon besoin.


Gôm

Hors ligne

#2 11/12/2012 19:33:06

Marc Cousin
Membre

Re : Estimer la fragmentation (en pourcentage) de tous mes index ?

Ça dépend… en pourcentage de quoi ? smile

Plus sérieusement, on obtient pour les index les informations les plus fiables avec l'extension pgstattuple (en particulier la fonction pg_statindex). C'est à un CREATE EXTENSION de distance, en 9.1 ou plus. Dans les versions antérieures, il faut exécuter un script pour créer les objets associés. http://www.postgresql.org/docs/9.1/stat … tuple.html

Avec, il y a le nombre de pages (leaf_pages), leur pourcentage de remplissage (avg_leaf_density), et leur fragmentation (leaf_fragmentation), c'est à dire le nombre de feuilles non-contigues physiquement dans l'index.

On pourrait donc définir deux pourcentages: le pourcentage de remplissage (ça pourrait être le avg_leaf_density) et le pourcentage de fragmentation (leaf_fragmentation/leaf_pages*100).


Marc.

Hors ligne

#3 11/12/2012 19:34:16

Marc Cousin
Membre

Re : Estimer la fragmentation (en pourcentage) de tous mes index ?

J'ai oublié de préciser… pgstatindex  (il n'y a pas d'underscore en fait) fait un scan complet de l'index. Ce n'est donc pas à exécuter toutes les 10 secondes sur tous les index de l'instance smile


Marc.

Hors ligne

#4 12/12/2012 01:05:53

gom
Membre

Re : Estimer la fragmentation (en pourcentage) de tous mes index ?

Merci.


Etant en version 8.4 "basique" je dois commencer par installer cette extension. C'est bien cela ?


http://www.postgresql.org/docs/8.4/static/contrib.html



Gôm

Hors ligne

#5 12/12/2012 10:11:36

Marc Cousin
Membre

Re : Estimer la fragmentation (en pourcentage) de tous mes index ?

Il faut installer l'extension, oui. Par contre, ça dépend vraiment du système d'exploitation. Si le serveur est sous Windows, le module est déjà compilé. Si c'est un Linux, il faut vérifier que le package postgresql-xxxx-contrib est installé. Dans ce cas, il n'y a plus qu'à faire la commande :

<code>
psql -d dbname -f SHAREDIR/contrib/module.sql
</code>

Si sous Linux et que le package n'est pas installé, il faut l'installer avant. Si sous Linux et que c'est une version compilée à la main (pas un package), alors là, oui, il faut compiler les contrib.


Marc.

Hors ligne

Pied de page des forums