Как узнать размер базы данных postgresql
Перейти к содержимому

Как узнать размер базы данных postgresql

[PostgreSQL] Работаем руками

Привет, %username% ! Иногда бывает необходимо поработать ручками с базой данных PostgreSQL, но не для всех бывает очевидно что и как там делать. Поэтому ниже будет список из нескольких полезных примеров команд, которые помогу быстро разобраться и начать. Главное помнить: не тестируйте на production-серверах!

Начнем с простого, а именно коннекта к базе данных PostgreSQL под самым главным пользователем postgres :

После этой команды нас встретит приветствие PostgreSQL. Далее мы вольны делать абсолютно всё (в пределах разумного). Для начала посмотрим список всех баз данных которые у нас крутятся на сервере. Делается это следующим образом:

На вывод нам поступит список всех БД которые созданы на сервере, после чего мы можем подключиться к нужной нам базе и работать с ней — для примера посмотрим все таблицы в ней:

Как можно догадаться из примера — до знака решетки ( # ) у нас будет наименование базы данных с которой мы сейчас работаем. Подключившись к базе testdb мы посмотрели все таблицы в этой БД. Далее мы можем посмотреть самую большую таблицу в БД:

В результате нам будет показана самая большая таблица (размер указывается в страницах):

table_name size_in_pages
testtb1 299211

Следующий вопрос: как посмотреть размер все базы данных. Ответ — легко:

В результате нам покажется размер всей БД:

pg_database_size
27641546936

И снова размер нам представлен в непонятном виде, но мы можем легко это исправить следующим образом:

pg_size_pretty
26 GB

Логичным продолжением будет просмотр всех БД в таком нормально виде:

database_name size
sampledb 45 GB
loremdb_001 21 GB
ipsumdb 3358 MB

Посмотрим размер таблицы в базе данных:

Результатом будет размер таблицы testtable1 , включая индексы. Результат будет отображен сразу в удобном для чтения формате, а не в байтах.

pg_size_pretty
4872 MB

Если вам нужно узнать размер таблицы без индексов, тогда следует выполнить такой запрос:

pg_size_pretty
2338 MB

Как узнать текущую версию сервера PostgreSQL?

Результат будет подобным этому:

version
PostgreSQL 9.3.1 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit

Как выполнить SQL-файл в PostgreSQL?

Для данной цели существует специальная команда в консольной утилите:

Где /path/to/file.sql — это путь к вашему SQL-файлу. Обратите внимание, что он должен лежать в доступной для чтения пользователя postgres директории.

Как показать структуру, индексы и прочие элементы выбранной таблицы в PostgreSQL?
Для данной цели существует специальная команда в консольной утилите:

Где testtb1 — имя таблицы
Результат:

Table “public.testtb1”
Column Type Modifiers
begin_ip ip4 not null
end_ip ip4 not null
begin_num bigint not null
end_num bigint not null
country_code character(2) not null
country_name character varying(255) not null
ip_range ip4r
Indexes:
“testtable1_iprange_index” gist (ip_range) WITH (fillfactor=100)

Как отобразить время выполнения запроса в консольной утилите PostgreSQL?

После чего все запросы станут отображаться в консольной утилите со временем выполнения.
Отключаются эти уведомления точно так же, как и включаются — вызовом:

Как отобразить все команды консольной утилиты PostgreSQL?

Это наверное самый важный пункт, т.к. любой DBA должен знать как вызвать эту справку! Далее будет несколько примеров более сложных запросов, которые так же могу предоставить ту или иную информацию. Например для сопоставления OID номеров и имен баз и таблиц в contrib есть утилита oid2name .

Для просмотра размера таблиц для текущей базы:

Для просмотра общего размера баз можно использовать скрипт:

Если нужно без индексов, тогда запрос другой:

pg_size_pretty
1341 MB

Полный размер таблицы и сопутствующих индексов:

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

Думаю на этом можно пока притормозить. На первое время хватит и этих данных. На этом всё!

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

Есть база PostgreSQL base , пользователь postgres . Как одной командой, не используя скриптов, получить размер базы?

В человеческом виде размер базы покажет обёртка pg_size_pretty

Таким же макаром можно посмотреть и размер таблицы (с индексами)

Если нужно без индексов, тогда запрос другой:

Войти в интерактивный терминал:

user avatar

Размер всех БД построчно:

Общий размер всех БД одним значением:

user avatar

\l+ человекоформатированные данные в 7 колонке будут

user avatar

Всё ещё ищете ответ? Посмотрите другие вопросы с метками база-данных postgresql или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как узнать размер базы данных postgresql

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

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

, cubite ( ? ), 23:02, 14/03/2007 [ответить] + / –
select pg_size_pretty(pg_database_size(‘database_name’));
select pg_size_pretty(pg_relation_size(‘table_name’));
, Константин ( ?? ), 22:06, 06/06/2009 [ответить] + / –
Условие "WHERE relname NOT LIKE ‘pg%’" нужно убрать, т.к. вы не увидите toast-таблиц, где распологаются, например, text-поля пользовательских таблиц, которые соответственно не попадают в размер самой таблицы.
, Тимофей ( ?? ), 14:16, 23/01/2017 [ответить] + / –
Знатоки, подскажите пожалуйста.
Есть таблица:
№ записи — ИД компании — Информация
Как посчитать объем дискового пространства, занимаемого информацией определенной компании?
Спасибо.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *