데이터베이스의 양식 결과를 반환하는 쿼리를 찾고 있습니다 (데이터베이스에서 사용하는 총 공간이 40GB라고 가정 할 경우 아래 예제 참조)PostgreSQL 데이터베이스에서 크기 (상대적 및 절대)가있는 스키마 목록
schema | size | relative size
----------+-------------------
foo | 15GB | 37.5%
bar | 20GB | 50%
baz | 5GB | 12.5%
나는 유용했다 스키마, 으로 분류 데이터베이스에 공간을 사용하여 개체의 목록을 섞어서 관리했지만, 이것에서 스키마 당 요약 정보를 얻는 것은 너무 쉽게 보이지 않는다. 아래를 참조하십시오.
SELECT relkind,
relname,
pg_catalog.pg_namespace.nspname,
pg_size_pretty(pg_relation_size(pg_catalog.pg_class.oid))
FROM pg_catalog.pg_class
INNER JOIN pg_catalog.pg_namespace
ON relnamespace = pg_catalog.pg_namespace.oid
ORDER BY pg_catalog.pg_namespace.nspname,
pg_relation_size(pg_catalog.pg_class.oid) DESC;
이는 SUM 같은 집합 연산자, 즉 아니 성공까지 필요할 수있다 이용 같다
relkind | relname | nspname | pg_size_pretty
---------+---------------------------------------+--------------------+----------------
r | geno | btsnp | 11 GB
i | geno_pkey | btsnp | 5838 MB
r | anno | btsnp | 63 MB
i | anno_fid_key | btsnp | 28 MB
i | ix_btsnp_anno_rsid | btsnp | 28 MB
[...]
r | anno | btsnp_shard | 63 MB
r | geno4681 | btsnp_shard | 38 MB
r | geno4595 | btsnp_shard | 38 MB
r | geno4771 | btsnp_shard | 38 MB
r | geno4775 | btsnp_shard | 38 MB
같은 결과를 제공한다.
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
편집 :
Regards, Faheem
죄송합니다, 개조 할 수있는 ' 귀하의 계정을 다른 SE 사이트 계정과 연결하십시오. tex 사이트에서 동일한 정보로 등록하면 자동으로 연결되어야합니다. 그렇지 않다면 메타에 대한 질문을 열고 거기에 도움을 요청하십시오. – Will
@ 위 : 모든 사이트의 정보는 동일해야합니다. 좋아, 나는 그것을 메타에 가져갈 것이다. 감사. –