PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

списък на схемата с размери (относителни и абсолютни) в база данни на PostgreSQL

Опитайте това:

SELECT schema_name, 
       sum(table_size),
       (sum(table_size) / database_size) * 100
FROM (
  SELECT pg_catalog.pg_namespace.nspname as schema_name,
         pg_relation_size(pg_catalog.pg_class.oid) as table_size,
         sum(pg_relation_size(pg_catalog.pg_class.oid)) over () as database_size
  FROM   pg_catalog.pg_class
     JOIN pg_catalog.pg_namespace ON relnamespace = pg_catalog.pg_namespace.oid
) t
GROUP BY schema_name, database_size


Редактиране:току-що забелязах, че заобикалянето с сумиране на всички таблици за получаване на размера на базата данни не е необходимо:

SELECT schema_name, 
       pg_size_pretty(sum(table_size)::bigint),
       (sum(table_size) / pg_database_size(current_database())) * 100
FROM (
  SELECT pg_catalog.pg_namespace.nspname as schema_name,
         pg_relation_size(pg_catalog.pg_class.oid) as table_size
  FROM   pg_catalog.pg_class
     JOIN pg_catalog.pg_namespace ON relnamespace = pg_catalog.pg_namespace.oid
) t
GROUP BY schema_name
ORDER BY schema_name


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявката на Postgres за проверка на низ е число

  2. ГРЕШКА:разрешението е отказано за схемата user1_gmail_com на знак 46

  3. Естествен сорт, поддържащ големи числа

  4. Как да репликирате PostgreSQL данни на отдалечени сайтове

  5. Връщане на setof запис (виртуална таблица) от функцията