欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

postgreSQL數據字典簡介3-存儲空間類

程序员文章站 2022-05-24 09:14:35
...

一、空間相關系統函數簡介

名称

返回类型

描述

pg_column_size(any)

int

存储一个特定值(可能压缩过)所需的字节数

pg_database_size(oid)

bigint

指定 OID 的数据库使用的磁盘空间

pg_database_size(name)

bigint

指定名称的数据库使用的磁盘空间

pg_indexes_size(regclass)

bigint

附加到指定表的索引所占的总磁盘空间

pg_relation_size(relation regclass, fork text)

bigint

指定表或索引的指定分叉('main''fsm''vm''init')使用的磁盘空间

pg_relation_size(relation regclass)

bigint

pg_relation_size(..., 'main')的简写

pg_size_bytes(text)

bigint

把人类可读格式的带有单位的尺寸转换成字节数

pg_size_pretty(bigint)

text

将表示成一个 64位整数的字节尺寸转换为带尺寸单位的人类可读格式

pg_size_pretty(numeric)

text

将表示成一个数字值的字节尺寸转换为带尺寸单位的人类可读格式

pg_table_size(regclass)

bigint

被指定表使用的磁盘空间,排除索引(但包括 TOAST、空闲空间映射和可见性映射)

pg_tablespace_size(oid)

bigint

指定 OID 的表空间使用的磁盘空间

pg_tablespace_size(name)

bigint

指定名称的表空间使用的磁盘空间

二、常用查看空間大小示例

1、查看各數據庫佔用空間大小

SELECT d.datname                            AS Db_Name,

       pg_catalog.pg_get_userbyid(d.datdba) AS Owner,

       (CASE

            WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')

                THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))

            ELSE 'No Access'

           END)                             AS SIZE

FROM pg_catalog.pg_database d

ORDER BY (CASE

              WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')

                  THEN pg_catalog.pg_database_size(d.datname)

              ELSE NULL

    END) DESC nulls last

2、查看表及索引佔用空間大小

SELECT table_schema || '.' || table_name                                                         AS full_table_name,

       pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size_total,

       pg_size_pretty(pg_relation_size('"' || table_schema || '"."' || table_name || '"'))       AS size_table,

       pg_size_pretty(pg_indexes_size('"' || table_schema || '"."' || table_name || '"'))        AS size_index

FROM information_schema.tables

ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC