テーブルの肥大化を防ぐ!PostgreSQLのテーブルサイズを定期的にチェックする方法
PostgreSQLのテーブルをサイズ順にリストアップと並び替えを行う方法
方法1:pg_size_pretty 関数を使用する
pg_size_pretty
関数は、テーブルのサイズを人間が読みやすい形式で表示する関数です。この関数を使用して、テーブルをサイズ順にリストアップするには、以下のSQLクエリを実行します。
SELECT
schemaname,
tablename,
pg_size_pretty(totalbytes) AS total_size
FROM pg_tables
ORDER BY totalbytes DESC;
このクエリは、pg_tables
システムテーブルから情報を読み取り、以下の列を返します。
schemaname
: テーブルのスキーマ名tablename
: テーブル名total_size
: テーブルの合計サイズ(人間が読みやすい形式で表示)
方法2:pgstattuple ビューを使用する
SELECT
schemaname,
tablename,
pgstattuple.size AS total_size
FROM pgstattuple
ORDER BY total_size DESC;
total_size
: テーブルの合計サイズ
方法3:\d+ コマンドを使用する
\d+
コマンドは、PostgreSQLの対話型シェルであるpsql
で使用できるコマンドです。このコマンドを使用して、テーブルをサイズ順にリストアップするには、以下のコマンドを実行します。
\d+
ORDER BY pg_relation_size(schemaname.tablename) DESC;
上記の方法以外にも、テーブルをサイズ順にリストアップする方法があります。詳細は、PostgreSQLの公式ドキュメントを参照してください。
-- 方法1:pg_size_pretty関数を使用する
SELECT
schemaname,
tablename,
pg_size_pretty(totalbytes) AS total_size
FROM pg_tables
ORDER BY totalbytes DESC;
-- 方法2:pgstattupleビューを使用する
SELECT
schemaname,
tablename,
pgstattuple.size AS total_size
FROM pgstattuple
ORDER BY total_size DESC;
-- 方法3:\d+コマンドを使用する
\d+
ORDER BY pg_relation_size(schemaname.tablename) DESC;
- 上記のサンプルコードは、PostgreSQL 9.3以降で使用できます。
- サンプルコードを実行する前に、PostgreSQLサーバーに接続していることを確認してください。
出力例:
schemaname | tablename | total_size
-----------+-----------+------------
public | テーブル1 | 100 MB
public | テーブル2 | 200 MB
public | テーブル3 | 300 MB
PostgreSQLのテーブルをサイズ順にリストアップと並び替えを行うその他の方法
SELECT
schemaname,
tablename,
pg_size_bytes(totalbytes) AS total_size
FROM pg_tables
ORDER BY totalbytes DESC;
VACUUM
コマンドは、テーブルの不要なデータを削除し、ディスク容量を解放するコマンドです。このコマンドを実行すると、pg_stattuple
ビューの size
列の値が更新されます。
VACUUM table_name;
方法6:外部ツールを使用する
PostgreSQLのテーブルをサイズ順にリストアップと並び替えを行う外部ツールもいくつかあります。以下に、いくつかの例を紹介します。
これらのツールは、GUI を使用してテーブルを操作することができ、初心者にとって使いやすいというメリットがあります。
注意事項
- 上記の方法を使用する前に、PostgreSQLのバージョンと権限を確認してください。
- テーブルのサイズを取得するには、時間がかかる場合があります。
sql postgresql postgresql-9.3