[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
Таким же макаром можно посмотреть и размер таблицы (с индексами)
Если нужно без индексов, тогда запрос другой:
Войти в интерактивный терминал:
![]()
Размер всех БД построчно:
Общий размер всех БД одним значением:
![]()
\l+ человекоформатированные данные в 7 колонке будут
![]()
Всё ещё ищете ответ? Посмотрите другие вопросы с метками база-данных 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"