首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg_database_size获得的数据库大小中包含什么内容?

pg_database_size获得的数据库大小中包含什么内容?
EN

Stack Overflow用户
提问于 2020-05-12 10:07:46
回答 1查看 81关注 0票数 0

通过以下系统管理功能获得的数据库大小中包含哪些内容?

代码语言:javascript
复制
select pg_database_size('DBNAME');

即使您使用下面的SQL将表的大小和索引的大小相加,并将它们加在一起,它也比pg_database_size获得的大小要小得多。

代码语言:javascript
复制
select sum(relpages * 8192) from pg_stat_user_tables LEFT JOIN pg_class ON pg_stat_user_tables.relname=pg_class.relname

select sum(relpages * 8192) from pg_stat_user_indexes LEFT JOIN pg_class ON pg_stat_user_indexes.relname=pg_class.relname

在pg_database_size获得的数据库总大小中,还有哪些其他因素?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-12 10:50:00

这是除pg_global之外的所有表空间中的数据库大小。这包括目录(包括注释和统计信息)、空闲空间映射、可见性映射、视图、函数等,但最重要的是,这包括pg_toast表,这是表文件外部存储大型列的位置。

您只是在检查用户表和索引,其中不包括编目、函数、视图或toast表。

此外,最好通过oid连接而不是relname连接,因为relname可以在不同的表空间中重复。但在任何情况下,重新页面只是一个规划者的估计,不会那么可靠。

你可以运行:

代码语言:javascript
复制
SELECT sum(relpages) * 8192 FROM pg_class;

因为它将应用于数据库中的所有对象,但这仍然不是真正的值。pg_database_size将检查数据库文件使用的实际空间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61742554

复制
相关文章

相似问题

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