Чи є якась команда знайти всі розміри баз даних у Postgres?
Я можу знайти розмір конкретної бази даних за допомогою наступної команди:
select pg_database_size('databaseName');
Чи є якась команда знайти всі розміри баз даних у Postgres?
Я можу знайти розмір конкретної бази даних за допомогою наступної команди:
select pg_database_size('databaseName');
Відповіді:
І ... Якщо ви, можливо, не хочете вводити цілий запит ... ви також можете ввести ...
\l+ <database_name>
і ви отримаєте детальну інформацію про базу даних, включаючи розмір бази даних.
І ... Щоб отримати розміри всіх баз даних.
ви можете просто ввести ...
\l+
Вам може знадобитися зайти в командний рядок postgresql для запиту за допомогою цих допоміжних команд postgresql.
Перевірте інші команди помічників postgresql, ввівши
\?
у командному рядку postgresql.
Ви можете отримати імена всіх баз даних, до яких можна підключитися, із системної таблиці "pg_datbase". Просто застосуйте функцію до імен, як показано нижче.
select t1.datname AS db_name,
pg_size_pretty(pg_database_size(t1.datname)) as db_size
from pg_database t1
order by pg_database_size(t1.datname) desc;
Якщо ви плануєте, щоб результат використовувався машиною замість людини, ви можете вирізати функцію pg_size_pretty ().
pg_database_size()
включає розміри для індексів
\l+
. Формат виводу легше читати, хоча (менше стовпців). Компроміс між записуваністю та
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
На підставі відповіді тут по @Hendy Іраван
Показати розміри бази даних:
\l+
напр
=> \l+
berbatik_prd_commerce | berbatik_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 19 MB | pg_default |
berbatik_stg_commerce | berbatik_stg | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 8633 kB | pg_default |
bursasajadah_prd | bursasajadah_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1122 MB | pg_default |
Показати розміри таблиці:
\d+
напр
=> \d+
public | tuneeca_prd | table | tomcat | 8192 bytes |
public | tuneeca_stg | table | tomcat | 1464 kB |
Працює лише в psql
.
\d+ *
працював, \d+
повертався звичайнийDid not find any relations.
\c dbname
), потім зробіть \d+
.
Так, є команда пошуку розміру бази даних у Postgres. Це наступне:
SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;
SELECT database_name, pg_size_pretty(size) from (SELECT pg_database.datname as "database_name", pg_database_size(pg_database.datname) AS size FROM pg_database ORDER by size DESC) as ordered;
SELECT pg_database.datname AS "DB Name", pg_size_pretty(pg_database_size(pg_database.datname)) AS "Size" FROM pg_database ORDER BY (pg_database_size(pg_database.datname)) DESC;
.
SELECT pg_size_pretty(pg_database_size('name of database'));
Дасть вам загальний розмір конкретної бази даних, проте я не думаю, що ви можете робити всі бази даних на сервері.
Однак ви могли це зробити ...
DO
$$
DECLARE
r RECORD;
db_size TEXT;
BEGIN
FOR r in
SELECT datname FROM pg_database
WHERE datistemplate = false
LOOP
db_size:= (SELECT pg_size_pretty(pg_database_size(r.datname)));
RAISE NOTICE 'Database:% , Size:%', r.datname , db_size;
END LOOP;
END;
$$
pg_database
а не цей огидний pl / pgsql?
З вікі PostgreSQL .
ПРИМІТКА: Бази даних, до яких користувач не може підключитися, сортуються так, як ніби вони мали нескінченний розмір.
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS Size
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
На сторінці також є фрагменти для пошуку розміру ваших найбільших стосунків та найбільших таблиць.
Ви можете використовувати нижче запит, щоб знайти розмір усіх баз даних PostgreSQL.
SELECT
datname AS DatabaseName
,pg_catalog.pg_get_userbyid(datdba) AS OwnerName
,CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(datname))
ELSE 'No Access For You'
END AS DatabaseSize
FROM pg_catalog.pg_database
ORDER BY
CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_database_size(datname)
ELSE NULL
END DESC;
Запустіть pgAdmin, підключіться до сервера, натисніть на ім'я бази даних та виберіть вкладку статистики. Розмір бази даних ви побачите внизу списку.
Потім, якщо ви натиснете іншу базу даних, вона залишається на вкладці статистики, щоб ви могли легко бачити безліч розмірів бази даних без особливих зусиль. Якщо ви відкриєте список таблиць, він показує всі таблиці та їх розміри.
Databases
вузол дерева (приєднаний до з'єднання з БД) і виберіть Statistics
вкладку, вам буде представлено приємний підсумок всіх баз даних та їх розмірів (третя колонка).
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail