AnalyticDB for PostgreSQL では、PostgreSQL のシステム関数を用いて、テーブル、スキーマ、データベース単位のストレージサイズを照会できます。測定対象に応じて、以下のクエリをご利用ください。
関数リファレンス
各関数は、異なる範囲のサイズを測定します。
| 関数 | 測定対象 |
|---|---|
pg_relation_size() | インデックスを除くテーブルのデータサイズ |
pg_total_relation_size() | データおよびインデックスを含むテーブルの合計サイズ |
pg_database_size() | データベース全体の合計サイズ |
テーブルの合計サイズの照会
データおよびインデックスを含むテーブルのサイズを返します。
<schemaname> および <tablename> を、ご利用の実際のスキーマ名およびテーブル名に置き換えてください。
select pg_size_pretty(pg_total_relation_size('<schemaname>.<tablename>'));実行例の出力:
pg_size_pretty
----------------
42 MB
(1 行)テーブルのデータサイズの照会
インデックスを除くテーブルのデータサイズを返します。
select pg_size_pretty(pg_relation_size('<schemaname>.<tablename>'));実行例の出力:
pg_size_pretty
----------------
38 MB
(1 行)パーティションテーブルの全パーティションの合計サイズの照会
パーティションテーブルに含まれるすべてのパーティションの合計サイズ(インデックスを含む)を返します。
select schemaname,tablename,round(sum(pg_total_relation_size(schemaname || '.' || partitiontablename))/1024/1024) "MB" from pg_partitions where schemaname='<schemaname>' and tablename='<tablename>' group by 1,2;実行例の出力:
schemaname | tablename | MB
------------+-----------+-----
public | orders | 210
(1 行)スキーマ内の全テーブルの合計サイズの照会
指定したスキーマ内にあるすべてのテーブルの合計サイズ(インデックスを含む)を返します。
select schemaname ,round(sum(pg_total_relation_size(schemaname||'.'||tablename))/1024/1024) "Size_MB" from pg_tables where schemaname='<schemaname>' group by 1;実行例の出力:
schemaname | Size_MB
------------+---------
public | 1024
(1 行)各データベースのサイズの照会
インスタンス内のすべてのデータベースのサイズを返します。
select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;実行例の出力:
datname | pg_size_pretty
-----------+----------------
mydb | 8537 MB
postgres | 7665 kB
(2 行)