首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pg_table_size、pg_relation_size和pg_total_relation_size有什么不同?(PostgreSQL)

pg_table_size、pg_relation_size和pg_total_relation_size有什么不同?(PostgreSQL)
EN

Stack Overflow用户
提问于 2017-02-02 06:56:07
回答 2查看 26.6K关注 0票数 28

pg_table_size()pg_relation_size()pg_total_relation_size()之间的区别是什么

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 07:12:46

对于随机表:

代码语言:javascript
运行
复制
# 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_table_sizepg_relation_size的所有返回值的总和。pg_total_relation_sizepg_table_sizepg_indexes_size的总和。

如果您想知道您的表使用了多少空间,可以使用pg_table_sizepg_total_relation_size来考虑它们--一个数字是仅表,另一个数字是表+索引。

查看storage file layout,了解fsmvminit的含义以及它们在磁盘上的存储方式。

票数 35
EN

Stack Overflow用户

发布于 2020-04-03 17:21:28

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

pg_relation_size:关系的主数据分支的大小

代码语言:javascript
运行
复制
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';
代码语言:javascript
运行
复制
total_size         | 6946 MB
relation_size_main | 953 MB
relation_size_fsm  | 256 kB
relation_size_vm   | 32 kB
relation_size_init | 0 bytes
table_size         | 6701 MB
external_size      | 5994 MB

因此,pg_table_size不仅是pg_relation_size的所有返回值的总和,还必须加上吐司大小

代码语言:javascript
运行
复制
toast_bytes         | 5748 MB
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41991380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档