# Pour aller plus loin

<p class="callout info">Les éléments précédemment présentés vous donnent les principaux aspects à connaitre et à maîtriser afin d'appréhender convenablement une mise à jour ou une restauration de base de données. Il est possible d'aller encore plus loin dans l'analyse afin d'identifier plus précisément les composants les plus volumineux d'un environnement.</p>

#### 1. Répertoire de stockage des bases de données

PostgreSQL stocke ses bases de données sur un répertoire que l’on peut explorer/quantifier. Cette information peut être retrouvée sur la clé « data\_directory » présente dans le fichier postgresql.conf et peut être trouvé via un simple `<strong>grep</strong>` (ou via SQL, voir plus bas). Exécuter la commande : `<strong>grep data_directory /etc/postgresql/10/main/postgresql.conf</strong>`

![](https://docs.myfab.fr/uploads/images/gallery/2023-03/embedded-image-gkxpday2.png)

En effet, dans le répertoire /var/lib/postgresql/10/main/base ("10" représentant ici la version de l’instance PostgreSQL et "main" son nom), l’utilisateur pourra trouver ses bases de données.

<p class="callout warning">**Cette documentation étant réalisée avec une version 18 d’Ubuntu, il faut l’adapter pour les autre versions (PostgreSQL 12 pour Ubuntu 20, PostgreSQL14 pour Ubuntu 22, etc…) ou pour les autres nom d’instance (main) !** </p>

Considérer que dans la plupart des cas, vos fichiers de configuration PostgreSQL seront sous :  
**/etc/postgresql/&lt;version\_instance&gt;/&lt;nom\_instance&gt;**

Et vos fichiers data sous :   
**/var/lib/postgresql/&lt;version\_instance&gt;/&lt;nom\_instance&gt;**

Une commande SQL vous donne la localisation des fichiers de votre instance :   
<span style="background-color: rgb(194, 224, 244);">**SHOW data\_directo<span style="background-color: rgb(194, 224, 244);">ry</span>;**</span>

Une commande SQL vous permet de déterminer le répertoire de stockage de votre base :  
<span style="background-color: rgb(194, 224, 244);">**SELECT oid from pg\_database where datname = 'BDD';**</span>

<p class="callout warning">Cet espace est protégé et seul l’utilisateur « root » peut l’explorer…</p>

Il faut donc s'authentifier comme l'utilisateur root comme ci-dessous :

![](https://docs.myfab.fr/uploads/images/gallery/2023-03/embedded-image-iss1hz7x.png)

<p class="callout info">Détail des commandes lancées :  
$ `<strong>sudo su root</strong>` --&gt; permet de passer sur l’utilisateur root.  
\# `<strong>cd main</strong>` --&gt; change de répertoire et va dans le répertoire « main ».  
\# `<strong>cd base</strong>` --&gt; Change de réperoire et va dans le répertoire « base ».  
\# `<strong>ls -l</strong>` --&gt;Affiche le contenu du répertoire en mode liste.  
</p>

Contrairement à SQL Server, la base de données sous PostgreSQL n’est pas composée d’un seul fichier (.dat) mais d’un ensemble de fichier, chaque fichier constituant une table.

![](https://docs.myfab.fr/uploads/images/gallery/2023-03/embedded-image-k3ggxhk1.png)

Comme nous l’avons vu plus haut, le fait de regarder la taille de ce répertoire nous indique la taille de la base de données. Bien que le moteur de base de données exécute ses propres « plans de maintenance » automatiquement, ces derniers ne seront réalisés que si certains seuils sont atteints par les tables. Il peut être souhaitable de déclencher manuellement certaines opérations de maintenance.

<p class="callout danger">**Ce sont des opérations d’administration importantes et une sauvegarde est impérative avant le déclenchement de ces traitements.**</p>

Via pgadmin, sélectionner la base (clique-droit) puis « Maintenance ».

![](https://docs.myfab.fr/uploads/images/gallery/2023-03/embedded-image-rtvk7mof.png) [![download.png](https://docs.myfab.fr/uploads/images/gallery/2023-03/scaled-1680-/download.png)](https://docs.myfab.fr/uploads/images/gallery/2023-03/download.png)

Mais aussi sur les fichiers eux-mêmes :

![](https://docs.myfab.fr/uploads/images/gallery/2023-03/embedded-image-vepabf0z.png)

#### 2. Analyse de la volumétrie individuelle des fichiers

Autre point, il est possible de déterminer l’espace qu’occupe chaque fichier individuellement. Pour ce faire, il faut se connecter sur la base souhaitée et exécuter la requête suivante :

<span style="background-color: rgb(194, 224, 244);">**SELECT table\_name,** </span>  
<span style="background-color: rgb(194, 224, 244);">**pg\_relation\_size(table\_schema || '.' || table\_name) As Taille\_donnees,**</span>  
<span style="background-color: rgb(194, 224, 244);">**pg\_total\_relation\_size(table\_schema || '.' || table\_name) As Taille\_totale**</span>  
<span style="background-color: rgb(194, 224, 244);">**FROM information\_schema.tables**</span>  
<span style="background-color: rgb(194, 224, 244);">**ORDER BY Taille\_totale DESC;**</span>

Vous obtiendrez ainsi la taille des fichiers les plus volumineux de votre base de données :

![](https://docs.myfab.fr/uploads/images/gallery/2023-03/embedded-image-u8ajmvcm.png)

Enfin, on peut aussi compter le nombre d’enregistrements présents dans un fichier à l'aide de la requête suivante :  
<span style="background-color: rgb(194, 224, 244);">**SELECT count(id) from mrp\_rl\_cost\_history;** </span>