要使用以下命令获取数据库中的所有用户表名:
select relname from pg_stat_user_tables;
relname
-------
Table1
Table2
Table3
要获得一张桌子的真空标记的可用空间,请使用:
SELECT sum(avail) FROM pg_freespace('Table1');
sum
-----
1728
我想在一个查询中得到所有表的总可用空间。
比如说,
Table1 has 1728 freespace
Table2 has 100 freespace
Table3 has 100 freespace
如何得到1928年的答案?
最佳答案
我建议您可以首先通过数据库中的一个表列表all table(如pg_table
)来查询它,然后对其进行求和。如下面的2个查询:
一。列出所有表及其空闲空间:
SELECT fulltablename, sum(avail) as freespace
FROM (
SELECT concat(schemaname,'.',tablename) as fulltablename, (pg_freespace(concat(schemaname,'.',tablename))).*
FROM pg_tables
) t
GROUP BY fulltablename
对数据库中的所有可用空间求和:
SELECT sum(avail) as freespace
FROM (
SELECT concat(schemaname,'.',tablename) as fulltablename, (pg_freespace(concat(schemaname,'.',tablename))).*
FROM pg_tables
) t
我希望这个答案能使你满意。
关于postgresql - 如何获取数据库中所有表的FreeSpace之和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48353386/