URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 14259
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как посмотреть размер баз и таблиц в PostgreSQL"

Отправлено auto_tips , 05-Апр-06 15:07 
Для сопоставления 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


URL:
Обсуждается: http://www.opennet.dev/tips/info/917.shtml


Содержание

Сообщения в этом обсуждении
"Как посмотреть размер баз и таблиц в PostgreSQL"
Отправлено Den , 05-Апр-06 15:07 
Вот это:
(relpages * 8192 / (1024*1024))

АБСОЛЮТНО!!! неправильно, хотя везде это пример упоминают. Дело в том, что при достаточно большом размере (порядка нескольких гигабайт) происходит переполнение и в результате получается полная чушь.

Арифметику учили?
* 8192 / (1024*1024) == / 128

Итого:

SELECT relname AS name, relfilenode AS oid, (relpages / 128) as size_mb, reltuples  as count FROM pg_class WHERE relname NOT LIKE 'pg%' ORDER BY relpages DESC;


"Как посмотреть размер баз и таблиц в PostgreSQL"
Отправлено cubite , 14-Мрт-07 23:02 
select pg_size_pretty(pg_database_size('database_name'));
select pg_size_pretty(pg_relation_size('table_name'));

"Как посмотреть размер баз и таблиц в PostgreSQL"
Отправлено Константин , 06-Июн-09 22:06 
Условие "WHERE relname NOT LIKE 'pg%'" нужно убрать, т.к. вы не увидите toast-таблиц, где распологаются, например, text-поля пользовательских таблиц, которые соответственно не попадают в размер самой таблицы.

"Как посмотреть размер баз и таблиц в PostgreSQL"
Отправлено AlexGor , 19-Окт-09 10:50 
-- размер таблиц:
SELECT
schemaname||'.'||tablename AS full_tname,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS total_usage,
pg_size_pretty((pg_total_relation_size(schemaname||'.'||tablename) - pg_relation_size(schemaname||'.'||tablename))) AS external_table_usage
FROM pg_catalog.pg_tables
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;

-- размер базы:
SELECT pg_size_pretty(SUM(pg_total_relation_size(schemaname||'.'||tablename))::bigint) AS grand_total
FROM pg_catalog.pg_tables


"Как посмотреть размер баз и таблиц в PostgreSQL"
Отправлено Тимофей , 23-Янв-17 14:16 
Знатоки, подскажите пожалуйста.
Есть таблица:
№ записи - ИД компании - Информация
Как посчитать объем дискового пространства, занимаемого информацией определенной компании?
Спасибо.

"Как посмотреть размер баз и таблиц в PostgreSQL"
Отправлено bammbr , 15-Янв-20 22:57 
..."Для просмотра общего размера баз можно использовать скрипт:"

Спустя 15 лет, в Centos и от root-а работает это

#!/bin/sh
oid2name="sudo -u postgres /usr/pgsql-10/bin/oid2name -q"
pg_data_path="/var/lib/pgsql/10/data/base"

{
   $oid2name| while read oid name space; do
       size=`du -sh $pg_data_path/$oid|cut -f1`
       echo "$size $name"
   done
}|sort -rh| column -t