Размер базы данных PostgreSQL
Эта информация будет правильной если Вы уверены, что внутри директории /var/lib/pgsql находятся все файлы и табличные пространства, проще определить размер БД при помощи SQL.
Просмотр размера базы по имени БД или ее OID.
SELECT pg_database_size('имя базы'); SELECT pg_database_size('oid'); # psql -U postgres -A -c "select pg_database_size('имя базы')" SELECT pg_database_size(current_database());
Вывести размер текущей базы данных в байтах и гигабайтах. Результат будет выведен в байтах, для конвертирования в удобочитаемый формат можно использовать функцию pg_size_pretty().
mbillcz5054=# SELECT pg_database_size(current_database()) AS size_Bytes, pg_database_size(current_database())/1024.0/1024/1024 AS size_GBytes, pg_size_pretty(pg_database_size(current_database())) AS size_pretty; size_bytes | size_gbytes | size_pretty --------------+----------------------+------------- 189442111248 | 176.4317147880792617 | 176 GB
Вывести суммарный размер всех баз данных.
SELECT sum(pg_database_size(datname)) FROM pg_database;
Каков размер таблицы (только данные)? pg_relation_size
SELECT pg_relation_size('имя таблицы'); # psql -U postgres имя базы -c "SELECT pg_relation_size('имя таблицы')" SELECT pg_relation_size('prices') AS size_Bytes, pg_relation_size('prices')/1024.0/1024/1024 AS size_GBytes, pg_size_pretty(pg_relation_size('prices')) AS size_pretty; size_bytes | size_gbytes | size_pretty ------------+--------------------+------------- 3834396672 | 3.5710601806640625 | 3657 MB
Каков полный размер таблицы (включая индексы и другие связанные с нею пространства)? pg_total_relation_size или \dt+
SELECT pg_total_relation_size('имя таблицы'); SELECT pg_total_relation_size('prices') AS size_Bytes, pg_relation_size('prices')/1024.0/1024/1024 AS size_GBytes, pg_size_pretty(pg_relation_size('prices')) AS size_pretty; # \dt+ prices List of relations Schema | Name | Type | Owner | Size | Description --------+--------+-------+----------+---------+------------- public | prices | table | postgres | 3657 MB |
Размер столбца
select pg_column_size('имя столбца') from 'имя таблицы';
PostgreSQL. Как узнать размер базы данных и таблиц?
Узнать размер всех таблиц Запрос выведет размер всех таблиц в базе.
SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_relation_size(C.oid)) AS "size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') ORDER BY pg_relation_size(C.oid) DESC;
Узнать общий размер таблиц Этот запрос показывает общий размер таблиц, включая все индексы в текущей базе данных:
SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND C.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size(C.oid) DESC LIMIT 20;
Размер базы данных
SELECT pg_size_pretty( pg_database_size( 'sample_db' ) );
SELECT pg_size_pretty( pg_total_relation_size( 'table' ) );
Размер всех баз данных на сервере
select datname, pg_size_pretty(pg_database_size(datname)) from pg_database;
Количество записей в таблице
SELECT count(*) FROM my_table;
Совпадений по запросу » «
Размеры баз и таблиц Postgre
Определение размеров таблиц в базе данных PostgreSQL
SELECT tableName, pg_size_pretty(pg_total_relation_size(CAST(tablename as text))) as size
from pg_tables
where tableName not like ‘sql_%’
order by size;
или
SELECT
table_name,
pg_size_pretty(table_size) AS table_size,
pg_size_pretty(indexes_size) AS indexes_size,
pg_size_pretty(total_size) AS total_size
FROM (
SELECT
table_name,
pg_table_size(table_name) AS table_size,
pg_indexes_size(table_name) AS indexes_size,
pg_total_relation_size(table_name) AS total_size
FROM (
SELECT (‘»‘ || table_schema || ‘».»‘ || table_name || ‘»‘) AS table_name
FROM information_schema.tables
) AS all_tables
ORDER BY total_size DESC
) AS pretty_sizes
Размер таблиц и индексов
SELECT
t.tablename,
indexname,
c.reltuples::integer AS num_rows,
pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
CASE WHEN x.is_unique = 1 THEN ‘Y’
ELSE ‘N’
END AS UNIQUE,
idx_scan AS number_of_scans,
idx_tup_read AS tuples_read,
idx_tup_fetch AS tuples_fetched
FROM pg_tables t
LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
LEFT OUTER JOIN
(SELECT indrelid,
max(CAST(indisunique AS integer)) AS is_unique
FROM pg_index
GROUP BY indrelid) x
ON c.oid = x.indrelid
LEFT OUTER JOIN
( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns,
idx_scan, idx_tup_read, idx_tup_fetch,indexrelname FROM pg_index x
JOIN pg_class c ON c.oid = x.indrelid
JOIN pg_class ipg ON ipg.oid = x.indexrelid
JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
AS foo
ON t.tablename = foo.ctablename
WHERE t.schemaname=’public’
ORDER BY pg_relation_size(quote_ident(indexrelname)::text) desc;
SELECT
tablename AS table_name,
pg_class.reltuples as rows,
pg_total_relation_size(schemaname||’.’||tablename) / 1024 AS reservedKB,
pg_table_size(schemaname||’.’||tablename) / 1024 AS dataKB,
pg_indexes_size(schemaname||’.’||tablename) / 1024 as index_sizeKB,
pg_total_relation_size(schemaname||’.’||tablename)
— pg_table_size(schemaname||’.’||tablename)
— pg_indexes_size(schemaname||’.’||tablename) as unusedKB
FROM pg_catalog.pg_tables, pg_catalog.pg_class
where pg_tables.tablename = pg_class.relname
and schemaname = ‘public’
ORDER BY pg_total_relation_size(schemaname||’.’||tablename) DESC
Вывести все таблицы, размером больше 10 Мб
SELECT tableName, pg_size_pretty(pg_total_relation_size(CAST(tablename as text))) as size
from pg_tables
where tableName not like ‘sql_%’ and pg_size_pretty(pg_total_relation_size(CAST(tablename as text))) like ‘%MB%’;
Таблицы с максимальным пустым местом Postgres
— установка расширения
create extension pg_freespacemap;
select
result.table_name,
result.freespace as fororder,
pg_size_pretty(result.size) as size,
pg_size_pretty(result.freespace) as freespace,
result.freespace * 100 / result.size as percent_free
from
(select
t.table_name,
pg_total_relation_size(t.table_name) as size,
sum(s.avail) as freespace
from
(select table_name from information_schema.tables where table_schema = ‘public’) as t,
LATERAL pg_freespace(t.table_name) as s
group by
t.table_name) as result
order by
fororder desc
limit 20;
Запись опубликована автором admin в рубрике postgresql. Добавьте в закладки постоянную ссылку.
| Продажи | slava@gilev.ru | gilev_slava | @uskorim1c | |||
| Платежи, документы | andrey@gilev.ru | andrey.gilev | @andrey_gilev | |||
| Техническая поддержка | support@gilev.ru | nukewin |
| Мы любим электронный документооборот (ЭДО). ЭДО сокращает время и ускоряет решение задач. У нас используется система ”Диадок”. |
Postgresql как узнать размер базы данных

В сегодняшней короткой статье я вам покажу пару запросов которые показывают размер всех баз данных или какой-то одной базы данных в Postgresql.
Первый запрос показывает размер каждой базы данных.
psql> SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;

Второй запрос показывает размер базы данных название которое мы указываем.
psql> SELECT pg_size_pretty(pg_database_size(‘demo’));

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.