加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSql数据库计算表字段,表,数据库等占用磁盘大小的方法

发布时间:2020-12-13 17:23:29 所属栏目:百科 来源:网络整理
导读:在PostgreSql中如何计算表字段,表,数据库,以及索引等的大小? 需要介绍PostgreSql的内置函数,在文档中就有,如下: pg_column_size( any ) int Number of bytes used to store a particular value (possibly compressed) pg_database_size( oid ) bigint

在PostgreSql中如何计算表字段,表,数据库,以及索引等的大小?

需要介绍PostgreSql的内置函数,在文档中就有,如下:

pg_column_size(any) int Number of bytes used to store a particular value (possibly compressed)
pg_database_size(oid) bigint Disk space used by the database with the specified OID
pg_database_size(name) bigint Disk space used by the database with the specified name
pg_indexes_size(regclass) bigint Total disk space used by indexes attached to the specified table
pg_relation_size(relation regclass,fork text) bigint Disk space used by the specified fork ('main', 'fsm' or 'vm') of the specified table or index
pg_relation_size(relation regclass) bigint Shorthand for pg_relation_size(...,'main')
pg_size_pretty(bigint) text Converts a size in bytes expressed as a 64-bit integer into a human-readable format with size units
pg_size_pretty(numeric) text Converts a size in bytes expressed as a numeric value into a human-readable format with size units
pg_table_size(regclass) bigint Disk space used by the specified table,excluding indexes (but including TOAST,free space map,and visibility map)
pg_tablespace_size(oid) bigint Disk space used by the tablespace with the specified OID
pg_tablespace_size(name) bigint Disk space used by the tablespace with the specified name
pg_total_relation_size(regclass) bigint Total disk space used by the specified table,including all indexes and TOAST data
以上的函数直接用就可以,比较简单,着重介绍下函数 pg_relation_size。

第一个函数的参数是relation和fork,relation是一个对象应该是一个表(以我目前的对pg的了解),fork指的是这个表在磁盘中存储的三个文件,文档说明也提到了,特指main,fsm,vm,那么这三种参数值表示说明意思呢?

这里涉及到PostgreSql的存储方式,每一个数据库以其OID值会在磁盘中创建名称为OID的文件夹,文件夹里面存储的是这个数据库下的表的文件,也已OID为名称存储,其中就存在以fsm,vm为后缀的文件。fsm代表的是空闲空间映射表文件,vm表示可见性映射表文件main应该是没有后缀的那个文件(这个暂时是猜的),如我有一个表emp,其oid=19467

并且其在oid=12029的database下。使用sql:select pg_relation_size('emp'::regclass,'vm') 结果为8kb,查看文件夹下的此表的vm文件也是8kb,emp表总共是40kb,正好是

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读