Trouver la taille de disque d'une table PostgreSQL et ses index

Shihab Sikder 30 janvier 2023
  1. Trouver la taille de disque d’une table et d’une base de données PostgreSQL à l’aide de PSQL
  2. Trouver la taille de la plus grande table de la base de données
Trouver la taille de disque d'une table PostgreSQL et ses index

Cet article explique comment nous pouvons trouver la taille du disque d’une table PostgreSQL et de ses index.

Trouver la taille de disque d’une table et d’une base de données PostgreSQL à l’aide de PSQL

Vous pouvez utiliser \l+ pour voir les tailles de la base de données et \d+ pour afficher la taille de la table. Mais avant cela, vous devez vous connecter à la base de données pour effectuer la requête.

Voici la commande et la sortie suivantes pour afficher la taille de la table et de la base de données dans Postgres :

postgres=# \l+

Production:

Taille de la base de données

postgres-# \d+
                                            List of relations
 Schema |       Name       |   Type   |  Owner   | Persistence | Access method |    Size    | Description
--------+------------------+----------+----------+-------------+---------------+------------+-------------
 public | book_lends       | table    | postgres | permanent   | heap          | 16 kB      |
 public | books            | table    | postgres | permanent   | heap          | 16 kB      |
 public | employee         | table    | postgres | permanent   | heap          | 16 kB      |
 public | employee_id_seq  | sequence | postgres | permanent   |               | 8192 bytes |
 public | events           | table    | postgres | permanent   | heap          | 16 kB      |
 public | mock_data        | table    | postgres | permanent   | heap          | 48 kB      |
 public | product          | table    | postgres | permanent   | heap          | 16 kB      |
 public | product_id_seq   | sequence | postgres | permanent   |               | 8192 bytes |
 public | products         | table    | postgres | permanent   | heap          | 16 kB      |
 public | products_id_seq  | sequence | postgres | permanent   |               | 8192 bytes |
 public | prroducts        | table    | postgres | permanent   | heap          | 8192 bytes |
 public | prroducts_id_seq | sequence | postgres | permanent   |               | 8192 bytes |
 public | stores           | table    | postgres | permanent   | heap          | 16 kB      |
 public | stores_id_seq    | sequence | postgres | permanent   |               | 8192 bytes |
 public | users            | table    | postgres | permanent   | heap          | 16 kB      |
(15 rows)

Ici, il montre toutes les tables avec leur nom, type, propriétaire, taille, méthode d’accès, etc., que nous avons dans la base de données Postgres.

Trouver la taille de la plus grande table de la base de données

Voici un extrait de code que le responsable de Postgres a écrit pour afficher les tailles de table par ordre décroissant.

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 10;

Production:

     relation      | total_size
-------------------+------------
 public.mock_data  | 48 kB
 public.product    | 32 kB
 public.products   | 32 kB
 public.books      | 32 kB
 public.book_lends | 32 kB
 public.employee   | 32 kB
 public.stores     | 32 kB
 public.users      | 32 kB
 public.events     | 16 kB
 public.prroducts  | 16 kB
(10 rows)

Nous avons recherché les 10 plus grandes tables sous postgres dans la base de données.

Vous pouvez cliquer sur le lien suivant pour en savoir plus sur la taille du disque dans Postgres. Vous trouverez la requête SQL pour trouver le plus grand cluster, les plus grandes relations, les tables partitionnées, etc.

Ici est plus sur les fonctions concernant la taille de la base de données.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website