DB/tableサイズを取得するSQL

PostgreSQL8.3~8.4にて。7.x、8.0~8.2、9.xは未確認。


全てのデータベースのサイズを取得するSQL

SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;


特定のデータベースのサイズを取得するSQL

SELECT pg_size_pretty(pg_database_size('データベース名'));


接続中のDBの全てのテーブルサイズを取得するSQL

SELECT
  relname AS tableName,
  CASE relkind
    WHEN 'r' THEN 'table'
    WHEN 'S' THEN 'sequence'
    WHEN 'i' THEN 'index'
    WHEN 'v' THEN 'view'
  END AS schemaType,
  to_char(reltuples, '999,999,999') AS rows,
  to_char(pg_relation_size(relname),
  '999,999,999,999') AS bytes
FROM
  pg_class
WHERE
  relnamespace=(SELECT oid FROM pg_namespace WHERE nspname='public')
ORDER BY
  schemaType, tableName;


特定のテーブルサイズを取得するSQL

SELECT pg_size_pretty(pg_relation_size('テーブル名'));