Размеры объектов БД PostgreSQL

Написал admin . Опубликовано в Databases просмотров 2 562

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

Все объекты БД в PostgreSQL хранятся в каталоге data/base в виде OID (таблицы, индексы…).
Для сопоставления 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/bin/oid2name pg_data_path=/var/db/pgsql/base $oid2name| grep 'pg_default'| while read oid name tablespace; do size=`du -h -s $pg_data_path/$oid|cut -f1` echo "$size $name" done 

Размеры объектов БД можно узнать с помощью системных SP.

К примеру:

Размер БД:
select pg_database_size('имя базы');
Размер таблицы БД:
select pg_relation_size('имя таблицы');
Полный размер таблицы с индексами:
select pg_total_relation_size('имя таблицы');
Размер столбца:
select pg_column_size('имя стобца') from 'имя таблицы'; 
Состояние всех настроек:
select pg_show_all_settings(); 

Похожие статьи:

Метки: , , , , , ,

Trackback from your site.

Comments (4)

  • Илья

    |

    Вот неплохой запрос для отображения размера всех таблиц одного овнера
    select tablename, pg_size_pretty(pg_relation_size (tablename)) from pg_catalog.pg_tables where tableowner='merlin';

    Reply

  • Михаил

    |

    Для своего проекта решил попробовать заюзать PostgreSQL — спасибо за эту статью и особенно за "похожие", ссылка откуда на pgFouine открыла целый пласт новой интереснейшей инфы 🙂
    Еще бы про TOAST где-нибудь по-русски прочитать доходчиво…

    Reply

  • Сергей

    |

    Два раза select написано
    select select pg_relation_size(‘имя таблицы’);

    Reply

    • admin

      |

      Спасибо. Поправил.

      Reply

Leave a comment