Как я могу получить размер каждой БД на моем PostgreSQL сервере - PullRequest
0 голосов
/ 01 августа 2020

Мне нужно получить размер каждой таблицы и каждой базы данных на моем PostgreSQL сервере в моем c# консольном приложении. Я использую npg sql для подключения к серверу, и я нашел скрипт для части таблицы

SELECT table_schema AS \"Database\", 
       SUM(data_length + index_length) / 1024 / 1024 AS \"Size(MB)\" 
FROM information_schema.TABLES 
GROUP BY table_schema

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

1 Ответ

3 голосов
/ 01 августа 2020

Используйте системные информационные функции:

https://www.postgresql.org/docs/current/functions-admin.html

Для размеров базы данных:

select datname, pg_size_pretty(pg_database_size(datname)) from pg_database ;
        datname         | pg_size_pretty 
------------------------+----------------
 my_test_db             | 7865 kB
 production             | 64 MB
 no_public_sch_template | 7857 kB
 test                   | 11 MB
 test_gz                | 9681 kB
 sch_test               | 7857 kB
 template0              | 7713 kB
 task_manager           | 9681 kB
 template1              | 7865 kB
 aquaculture            | 15 MB
 track_stocks           | 9425 kB
 track_stocks_test      | 9529 kB
 postgres               | 8273 kB

Из pg_database вы можете получить имя базы данных (имя данных) для создания сценария для перебора таблиц.

...