背景:客户要求统计当前postgresql 的表的数据量
写好提示词扔给ai 以下为文心一言的回答
提示词:
查询postgresql 数据库中 每个表的数据量大小及总量 |
回答:
在PostgreSQL中,你可以通过查询系统表来获取数据库中每个表的数据量大小(包括索引),并计算这些大小的总和。以下是一个示例SQL查询,该查询将帮助你获取每个表的大小(以MB为单位),并计算所有表的总大小。
SELECT
table_schema || '.' || table_name AS "full_table_name",
pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS "size",
pg_size_pretty(pg_relation_size('"' || table_schema || '"."' || table_name || '"')) AS "table_size",
pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') - pg_relation_size('"' || table_schema || '"."' || table_name || '"')) AS "index_size"
FROM
information_schema.tables
WHERE
table_schema = 'public' -- 你可以根据需要修改这个值来查询不同的schema
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;
-- 计算所有表的总大小
SELECT pg_size_pretty(SUM(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"'))) AS total_size
FROM
information_schema.tables
WHERE
table_schema = 'public'; -- 你可以根据需要修改这个值来查询不同的schema
说明
- 查询每个表的大小:
pg_total_relation_size
函数返回指定表(包括索引和TOAST表)的总大小。pg_relation_size
函数仅返回表本身的大小,不包括索引。pg_size_pretty
函数将大小转换为易读的格式(如MB、GB)。information_schema.tables
是PostgreSQL的系统视图,包含了数据库中所有表的信息。
- 计算所有表的总大小:
- 这个查询通过聚合
pg_total_relation_size
的结果来计算指定schema(例如public
)中所有表的总大小。
- 这个查询通过聚合
注意
- 替换
table_schema = 'public'
以查询不同schema中的表。 - 如果你有权限问题,可能需要超级用户权限来查看某些表的信息。
- 这些查询在大多数情况下应该工作良好,但总是好的做法在特定环境中进行测试。
- PostgreSQL版本之间的系统函数和表结构可能有所不同,请根据你使用的PostgreSQL版本进行调整。
在Navicat中执行结果如下: