什么';s pg_表大小、pg_关系大小和;pg_总尺寸_关系_尺寸?(PostgreSQL)

什么';s pg_表大小、pg_关系大小和;pg_总尺寸_关系_尺寸?(PostgreSQL),postgresql,Postgresql,pg\u table\u size(),pg\u relationship\u size(),pg\u total\u relationship\u size()之间有什么区别 我理解所解释的基本区别,但就我的表实际使用的空间而言,这意味着什么?对于随机表: # select pg_relation_size(20306, 'main') as main, pg_relation_size(20306, 'fsm') as fsm, pg_relation_size(20306, 'vm

pg\u table\u size()
pg\u relationship\u size()
pg\u total\u relationship\u size()之间有什么区别

我理解所解释的基本区别,但就我的表实际使用的空间而言,这意味着什么?

对于随机表:

# select pg_relation_size(20306, 'main') as main,
  pg_relation_size(20306, 'fsm') as fsm,
  pg_relation_size(20306, 'vm') as vm,
  pg_relation_size(20306, 'init') as init,
  pg_table_size(20306), pg_indexes_size(20306) as indexes,
  pg_total_relation_size(20306) as total;
  main  |  fsm  |  vm  | init | pg_table_size | indexes |  total 
--------+-------+------+------+---------------+---------+--------
 253952 | 24576 | 8192 |    0 |        286720 |  196608 | 483328
(1 row)
从中可以看出,
pg\u table\u size
pg\u relation\u size
的所有返回值之和。而
pg\u总关系\u大小
pg\u表\u大小
pg\u索引\u大小
的总和

如果您想知道表使用了多少空间,请使用
pg_table_size
pg_total_relationship_size
来考虑它们——一个数字是表,一个数字是表+索引


检查以获取有关fsm
vm
init
的含义以及它们在磁盘上的存储方式的一些信息。

pg_table_size
:指定表使用的磁盘空间,不包括索引(但包括TOAST、可用空间映射和可见性映射)

pg\u relation\u size
:关系的主数据叉的大小

select
      pg_size_pretty(pg_total_relation_size(relid)) as total_size,
      pg_size_pretty(pg_relation_size(relid, 'main')) as relation_size_main,
      pg_size_pretty(pg_relation_size(relid, 'fsm')) as relation_size_fsm,
      pg_size_pretty(pg_relation_size(relid, 'vm')) as relation_size_vm,
      pg_size_pretty(pg_relation_size(relid, 'init')) as relation_size_init,
      pg_size_pretty(pg_table_size(relid)) as table_size,
      pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as external_size
 from 
      pg_catalog.pg_statio_user_tables
where 
      schemaname = 'XXXX'
  and relname like 'XXXXXX';
因此,pg_table_size不仅是pg_relation_size的所有返回值之和,还必须添加toast size

toast_bytes         | 5748 MB

@我最困惑的是,一个名为“no”的“horse”返回该关系的一个fork的磁盘大小(以字节为单位)。在这个上下文中,什么是关系&fork?(我是PostgreSQL新手)它还列出了一些分叉示例:“主数据分叉”、“自由空间映射”、“可见性映射”和“初始化分叉”。那些是什么?哪一个与我的表正在使用的实际磁盘空间相关?外部大小是什么意思?总大小-总表大小数据大小-表行大小外部大小-外部元素大小,如索引等。
toast_bytes         | 5748 MB