Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Avance rapide | Suivant |
Ce chapitre traite de la mani�re d'effectuer une surveillance sur l'utilisation de l'espace disque par un syst�me de bases de donn�es PostgreSQL. Dans la version actuelle, l'administrateur de la base de donn�es ne dispose pas de beaucoup de moyens de contr�les sur la mani�re dont les donn�es sont stock�es sur les disques. Ce chapitre est donc surtout informatif et peut vous donner une id�e plus pr�cise de la mani�re de g�rer les disques en utilisant plut�t les outils fournis avec le syst�me d'exploitation.
Chaque table poss�de un fichier d'en-t�te principal dans lequel la plupart des donn�es sont stock�es. Afin de stocker les donn�es des grosses colonnes, un fichier TOAST est �galement associ� � la table dont le nom est bas� sur l'OID (en fait il s'agit de pg_class.relfilenode). Pour finir, on lui associe un index dans la table TOAST. Il peut y avoir par ailleurs d'autres index associ�s � la table de base.
Vous pouvez surveiller l'espace disque en utilisant trois m�thodes : depuis psql en utilisant les r�sultats de la commande VACUUM, depuis psql en utilisant l'outil se trouvant dans contrib/dbsize, et depuis la ligne de commande en utilisant l'outil contenu dans contrib/oid2name. En utilisant psql sur une base de donn�es sur laquelle ont �t� lanc�s VACUUM ou ANALYZE, vous pouvez lancer des requ�tes vous permettant d'obtenir des informations sur la place occup�e par n'importe quelle table :
SELECT relfilenode, relpages FROM pg_class WHERE relname = 'customer'; relfilenode | relpages -------------+---------- 16806 | 60 (1 ligne)
Chaque page utilise en g�n�ral 8 Ko de d'espace disque (ne pas oublier que relpage n'est mis � jour que par l'utilisation des commandes VACUUM et ANALYZE.)
Afin de conna�tre l'espace disque utilis� par les tables TOAST, lancez une requ�te similaire � la suivante en rempla�ant le nombre du relfilenode de la table (d�fini par la requ�te ci-dessus) :
SELECT relname, relpages FROM pg_class WHERE relname = 'pg_toast_16806' OR relname = 'pg_toast_16806_index' ORDER BY relname; relname | relpages ----------------------+---------- pg_toast_16806 | 0 pg_toast_16806_index | 1
Vous pouvez afficher �galement la taille des index :
SELECT c2.relname, c2.relpages FROM pg_class c, pg_class c2, pg_index i WHERE c.relname = 'customer' AND c.oid = i.indrelid AND c2.oid = i.indexrelid ORDER BY c2.relname; relname | relpages ----------------------+---------- customer_id_indexdex | 26
Vous pouvez trouver les tables les plus grosses en utilisant la requ�te suivante :
SELECT relname, relpages FROM pg_class ORDER BY relpages DESC; relname | relpages ----------------------+---------- bigtable | 3290 customer | 3144
contrib/dbsize cr�e dans votre base de donn�es des fonctions permettant de trouver la taille des tables ou de la base de donn�es � partir de psql sans avoir besoin d'ex�cuter VACUUM ou ANALYZE pr�alablement.
Vous pouvez aussi utiliser l'utilitaire contrib/oid2name afin d'afficher l'utilisation du disque. Lisez les exemples contenus dans le fichier README.oid2name dans ce m�me r�pertoire. Il inclut un script permettant d'afficher la quantit� de disque utilis�e par chaque base de donn�es.
Pr�c�dent | Sommaire | Suivant |
Visualiser les verrous | Niveau sup�rieur | �chec sur disque plein |