如何获取数据库中所有表的FreeSpace总和
How to get the sum of FreeSpace of all the tables in a database
获取数据库中的所有用户 Table 名称使用:
select relname from pg_stat_user_tables;
relname
-------
Table1
Table2
Table3
要获得一个 table 真空标记的免费 space 使用:
SELECT sum(avail) FROM pg_freespace('Table1');
sum
-----
1728
我想在单个查询中获得所有 table 的总免费 space。
比如说,
Table1 has 1728 freespace
Table2 has 100 freespace
Table3 has 100 freespace
如何将 1928 作为查询的答案?
我建议你先通过一个table list all table in database 比如pg_table
来查询,然后再求和。比如下面的 2 个查询:
1. 列出所有 table 及其可用空间:
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
希望这个回答能让您满意
我使用以下查询来解决我的问题(获取我架构的所有 table 的可用空间总和)
SELECT sum(avail) as freespace
FROM (
SELECT (pg_freespace(concat(schemaname,'."',tablename,'"'))).*
FROM pg_tables where schemaname = 'mySchema'
) t
;
我调整了 Mabu 的 sql 为所有表提供了一个总可用空间值
SELECT sum(freespace) as TotalFreeSpace
FROM (
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) f
获取数据库中的所有用户 Table 名称使用:
select relname from pg_stat_user_tables;
relname
-------
Table1
Table2
Table3
要获得一个 table 真空标记的免费 space 使用:
SELECT sum(avail) FROM pg_freespace('Table1');
sum
-----
1728
我想在单个查询中获得所有 table 的总免费 space。
比如说,
Table1 has 1728 freespace
Table2 has 100 freespace
Table3 has 100 freespace
如何将 1928 作为查询的答案?
我建议你先通过一个table list all table in database 比如pg_table
来查询,然后再求和。比如下面的 2 个查询:
1. 列出所有 table 及其可用空间:
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
希望这个回答能让您满意
我使用以下查询来解决我的问题(获取我架构的所有 table 的可用空间总和)
SELECT sum(avail) as freespace
FROM (
SELECT (pg_freespace(concat(schemaname,'."',tablename,'"'))).*
FROM pg_tables where schemaname = 'mySchema'
) t
;
我调整了 Mabu 的 sql 为所有表提供了一个总可用空间值
SELECT sum(freespace) as TotalFreeSpace
FROM (
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) f