banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

PostgreSQLのテーブルとインデックスの使用スペースをクエリする

PostgreSQL クエリテーブルとインデックスの使用スペースサイズ

PostgreSQL のテーブルとインデックスの使用スペースサイズ情報は、information_schema.tables に保存されており、SQL を使用して対応する統計データをクエリできます。

-- 単一のテーブルのサイズを取得する
select pg_size_pretty(pg_relation_size('TABLENAME'));

テーブルのサイズとインデックスを含むサイズを取得する

-- テーブルのサイズとインデックスを含むサイズを取得する
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,
SUBSTRING("table_name",1,10) as short_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
where all_tables.table_name like '%TABLENAME%'
ORDER BY total_size DESC
) AS pretty_sizes

パーティションテーブルの場合、パーティションテーブルのプレフィックスを使用して統計を行う必要があります

-- パーティションテーブルの場合、パーティションテーブルのプレフィックスを使用して統計を行う必要があります
SELECT short_name,
pg_size_pretty(sum(table_size)) AS table_size,
pg_size_pretty(sum(indexes_size)) AS indexes_size,
pg_size_pretty(sum(total_size)) AS total_size
FROM
(
SELECT
table_name,
SUBSTRING ("table_name",1,45) as short_name, -- SUBSTRING 方式によるパーティションテーブルのテーブル名のグループ化
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
where all_tables.table_name like '% TABLENAME_PREFIX%' -- TABLENAME_PREFIX はパーティションテーブルのプレフィックス
) as size_table
GROUP BY short_name

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。