Как я могу перечислить все таблицы базы данных PostgreSQL и отсортировать их по размеру ?
sql
postgresql
postgresql-9.3
ничего особенного здесь
источник
источник
\d+
покажет вам эту информацию, хотя и несортированную.Ответы:
Это показывает размер всех таблиц в схеме,
public
если у вас несколько схем, вы можете использовать:Пример SQLFiddle: http://sqlfiddle.com/#!15/13157/3
Список всех функций размера объекта в руководстве .
источник
select table_schema, table_name, pg_relation_size(table_schema||'.'||table_name) from information_schema.tables order by 3;
спасибо за помощь!select * from information_schema.tables where table_schema = 'public';
дает ноль строк, даже если\dn
показывает общедоступную схему. Может быть, это вызвано изменением в 9.5?Это покажет вам имя схемы, имя таблицы, размер и размер (необходимый для сортировки).
Я строю это на основе решений из списка схем с размерами (относительными и абсолютными) в базе данных PostgreSQL.
источник
Это будет более понятно.
pg_size_pretty(<numeric_value>)
- конвертирует количество байтов в удобочитаемый формат.pg_database_size(<db_name>)
- получает размер базы данных в байтах .pg_total_relation_size(<relation_name>)
- получает общий размер таблицы и ее индекс в байтах .pg_relation_size(<relation_name>)
- получает размер отношения (таблицы / индекса) в байтах .pg_index_size(<relation_name>)
- получает размер индекса отношения в байтах .current_database()
- получает текущую используемую базу данных, по которой выполняется этот запрос.Запрос:
Результат:
Гуманизированное формат представления в
bytes
,kB
,MB
,GB
, иTB
.bytes
tokB
- начинается с10240 bytes
bytes
toMB
- начинается с10485248 bytes
=10239.5 kB
~10 MB
bytes
toGB
- начинается с10736893952 bytes
=10239.5 MB
~10 BG
bytes
toTB
- начинается с10994579406848 bytes
=10239.5 GB
~10 TB
Все единицы преобразования начинаются с
10 + <unit>
.Для справки - Официальная документация Postgres
источник
взято отсюда https://wiki-bsse.ethz.ch/display/ITDOC/Check+size+of+tables+and+objects+in+PostgreSQL+database
источник
Другая альтернатива
источник
Мне нужно было найти, какие таблицы занимают больше всего места.
Основываясь на других ответах, я использовал этот запрос:
Получаю такой результат:
Надо было купить SSD побольше.
источник
источник