Топ 10 самих популярных команд для управления сервером PostgreSQL для настоящих администраторов баз данных (DBA).
Большинство команд подходят как для консольной утилиты psql
, так и для запуска через ваш клиент.
1. Как найти самую большую таблицу в базе данных PostgreSQL?
# SELECT
relname AS "table_name",
relpages AS "size_in_pages"
FROM
pg_class
ORDER BY
relpages DESC
LIMIT
1;
Результатом будет самая большая таблица (в примере testtable1
) в страницах. Размер одной страницы равен 8KB
(т.е. размер таблицы в примере — 2,3GB)
table_name | size_in_pages
----------------+---------------
testtable1 | 299211
2. Как узнать размер всей базы данных PostgreSQL?
# SELECT pg_database_size( 'sampledb' );
Результатом будет размер базы данных в байтах:
pg_database_size
------------------
27641546936
Если вы хотите получить размер в более читаемом («человеческом») формате — «оберните» результат в функцию pg_size_pretty()
:
# SELECT pg_size_pretty( pg_database_size( 'sampledb' ) );
Результат:
pg_size_pretty
----------------
26 GB
Ну и сразу логичным будет показать все базы данных в читаемом («человеческом») виде, отсортированные от более больших к меньшим
# SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) as size FROM pg_database ORDER by pg_database_size(pg_database.datname) DESC;
Результат:
database_name | size
----------------------+---------
sampledb | 45 GB
loremdb_001 | 21 GB
ipsumdb | 3358 MB
3. Как узнать размер таблицы в базе данных PostgreSQL?
# SELECT pg_size_pretty( pg_total_relation_size( 'testtable1' ) );
Результатом будет размер таблицы testtable1, включая индексы. Результат будет отображен сразу в удобном для чтения формате, а не в байтах.
pg_size_pretty
----------------
4872 MB
Если вам нужно узнать размер таблицы без индексов, тогда следует выполнить такой запрос:
# SELECT pg_size_pretty( pg_relation_size( 'testtable1' ) );
Результат:
pg_size_pretty
----------------
2338 MB
4. Как узнать текущую версию сервера PostgreSQL?
# SELECT version();
Результат будет подобным этому:
version
----------------------------------------------------------------------------------------------
PostgreSQL 9.3.1 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
5. Как выполнить SQL-файл в PostgreSQL?
Для данной цели существует специальная команда в консольной утилите:
# \i /path/to/file.sql
Где /path/to/file.sql
— это путь к вашему SQL-файлу. Обратите внимание, что он должен лежать в доступной для чтения пользователя postgres
директории.
6. Как отобразить список всех баз данных сервера PostgreSQL?
Для данной цели существует специальная команда в консольной утилите:
# \l
Результат:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+------------+-----------+-------------+-------------+---------------------------
sampledb | sampleuser | UTF8 | uk_UA.UTF-8 | uk_UA.UTF-8 | =Tc/sampleuser
| | | | | sampleuser=CTc/sampleuser
postgres | postgres | UTF8 | uk_UA.UTF-8 | uk_UA.UTF-8 |
template0 | postgres | UTF8 | uk_UA.UTF-8 | uk_UA.UTF-8 | =c/postgres
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | uk_UA.UTF-8 | uk_UA.UTF-8 | postgres=CTc/postgres
| | | | | pgsql=CTc/postgres
| | | | | =c/postgres
7. Как отобразить список всех таблиц в базе данных PostgreSQL?
Для данной цели существует специальная команда в консольной утилите что покажет список таблиц в текущей БД.
# \dt
Результат:
List of relations
Schema | Name | Type | Owner
--------+-------------------------------+-------+--------
public | testtable1 | table | sampleuser
public | testtable2 | table | sampleuser
public | testtable3 | table | sampleuser
public | testtable4 | table | sampleuser
...
8. Как показать структуру, индексы и прочие элементы выбранной таблицы в PostgreSQL?
Для данной цели существует специальная команда в консольной утилите:
# \d testtable1
Где testtable1
— имя таблицы
Результат:
Table "public.testtable1"
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)
9. Как отобразить время выполнения запроса в консольной утилите PostgreSQL?
# \timing
После чего все запросы станут отображаться в консольной утилите со временем выполнения.
Отключаются эти уведомления точно так же, как и включаются — вызовом:
# \timing
10. Как отобразить все команды консольной утилиты PostgreSQL?
# \?
Это наверное самый важный пункт, т.к. любой DBA должен знать как вызвать эту справку