четверг, 8 сентября 2011 г.

Как посмотреть размер баз и таблиц в PostgreSQL

ак посмотреть размер баз и таблиц в PostgreSQL [исправить]
Для сопоставления OID номеров и имен баз и таблиц в contrib есть утилита oid2name.

Для просмотра размера таблиц для текущей базы:
SELECT relname AS name, relfilenode AS oid, (relpages * 8192 / (1024*1024))::int as size_mb, reltuples as count
FROM pg_class
WHERE relname NOT LIKE 'pg%'
ORDER BY relpages DESC;

Для просмотра общего размера баз можно использовать скрипт:
#!/bin/sh
oid2name=/usr/local/pgsql/bin/oid2name
pg_data_path=/usr/local/pgsql/data/base

{
$oid2name| grep '='| while read oid delim name; do
size=`du -s $pg_data_path/$oid|cut -f1`
echo "$size $name"
done
}|sort -rn


Другой вариант просмотра размера базы:
select pg_database_size('имя базы');

Размер таблицы:
select select pg_relation_size('имя таблицы');

Полный размер таблицы с сопутствующих индексов.
select pg_total_relation_size('имя таблицы');

Размер столбцов
select pg_column_size('имя стобца') from 'имя таблицы';

Состояние всех настроек можно посмотреть через функцию pg_show_all_settings().