Команда Postgres DB Size

183

Есть ли какая-либо команда, чтобы найти все размеры баз данных в Postgres?

Я могу найти размер конкретной базы данных, используя следующую команду:

select pg_database_size('databaseName');
Теги:
postgresql-9.2

8 ответов

218

И... Если в случае, если вы не хотите вводить весь запрос... вы также можете ввести...

\l+ <database_name>

и вы получите подробную информацию о базе данных, включая размер базы данных.

И... Чтобы получить размеры всех баз данных.

вы можете просто ввести...

\l+

Вам может потребоваться перейти в командную строку postgresql для запроса с этими командами помощника postgresql.

Проверьте другие команды помощника postgresql, набрав

\?

в командной строке postgresql.

115

Вы можете получить имена всех баз данных, к которым вы можете подключиться, из системной таблицы "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().

  • 0
    Иногда база данных также содержит индексы. Это имеет некоторую ценность хранения. Я ищу одну команду, которая обеспечит размер всей базы данных.
  • 9
    @ user2151087: pg_database_size() включает размеры для индексов
98
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
  • 5
    Чем этот ответ отличается от ответа Майка?
  • 1
    В будущем, когда я и другие окажемся здесь, я избавлю вас от хлопот: этот короче и для именованной базы данных / таблицы, где Майк предназначен для всех баз данных на сервере, последний лучше отвечает на исходный вопрос.
43

Основываясь на ответе здесь на @Hendy Irawan

Показать размеры базы данных:

\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.

  • 1
    Для меня работала только \d+ * , вернулась обычная \d+ Did not find any relations.
  • 1
    @philpirozhkov Сначала подключитесь к базе данных ( \c dbname ), затем выполните \d+ .
8

Из PostgreSQL wiki.


Базы данных, к которым пользователь не может подключиться, сортируются так, как если бы они были бесконечного размера.

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

На странице также есть фрагменты для поиска размера ваших самых больших отношений и больших таблиц.

3

SELECT pg_size_pretty (pg_database_size ('имя базы данных'));

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

Однако вы могли бы сделать это...

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;
$$
2

Запустите pgAdmin, подключитесь к серверу, щелкните по имени базы данных и выберите вкладку статистики. В нижней части списка вы увидите размер базы данных.

Затем, если вы нажмете на другую базу данных, она останется на вкладке статистики, чтобы вы могли легко увидеть множество размеров базы данных без особых усилий. Если вы откроете список таблиц, он отобразит все таблицы и их размеры.

  • 1
    И если вы щелкнете по узлу дерева Databases (подключенному к соединению с БД) и выберете вкладку Statistics вам будет представлена хорошая сводка по всем базам данных и их размерам (третий столбец).
1

Вы можете использовать нижеприведенный запрос, чтобы найти размер всех баз данных 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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню