POWERED BY RBSOFT

PostgreSQL. Как узнать размер базы данных и таблиц?

> SQL > PostrgeSQL
Дата обновления: 23 мая 2024 г. Дата публикации: 23 мая 2024 г. Автор: Стрекаловский Александр

Для начала подключаемся к postgresql

psql -U postgres

Выбираем нужную базу

\c DatabaseName

Узнать размер 20-м самых больших таблиц
Запрос выводит 20 самых больших таблиц

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_relation_size(C.oid)) AS "size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
  ORDER BY pg_relation_size(C.oid) DESC
  LIMIT 20;

Узнать размер всех таблиц
Запрос выведет размер всех таблиц в базе.

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_relation_size(C.oid)) AS "size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
  ORDER BY pg_relation_size(C.oid) DESC;

Узнать общий размер таблиц
Этот запрос показывает общий размер таблиц, включая все индексы в текущей базе данных:

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 20;

Размер базы данных

SELECT pg_size_pretty( pg_database_size( 'sample_db' ) );

Размер таблицы

SELECT pg_size_pretty( pg_total_relation_size( 'table' ) );

Размер всех баз данных на сервере

select datname, pg_size_pretty(pg_database_size(datname)) 
from pg_database;

Количество записей в таблице

SELECT count(*) FROM my_table;