我在PostgreSQL数据库中有一张表,并且用一些限制条件进行了查询,现在我想知道这个查询占用了多少磁盘空间。我知道PostgreSQL有一个函数pg_total_relation_size
可以给出某个表的大小,但是怎样才能找到“子表”的大小呢?
有什么建议吗?
我使用的是PostgreSQL 9.1。
我在PostgreSQL数据库中有一张表,并且用一些限制条件进行了查询,现在我想知道这个查询占用了多少磁盘空间。我知道PostgreSQL有一个函数pg_total_relation_size
可以给出某个表的大小,但是怎样才能找到“子表”的大小呢?
有什么建议吗?
我使用的是PostgreSQL 9.1。
为了获得数据的大小,考虑到TOAST
压缩等因素:
regress=> SELECT sum(pg_column_size(devices)) FROM devices WHERE country = 'US';
sum
-----
105
(1 row)
为了获取磁盘存储所需的总量,包括块分配开销、头部等:
regress=> CREATE TEMPORARY TABLE query_out AS SELECT * FROM devices WHERE country = 'US';
SELECT 3
regress=> SELECT pg_total_relation_size('query_out');
pg_total_relation_size
------------------------
16384
(1 row)
pg_class
上进行联接,或手动指定多个表名,或使用 VALUES
列表。就像任何其他类型的查询一样。 - Craig Ringer
select sum(octet_length(temp.*::text)) from (select * from lesson) as temp
。它可以正常工作,并以文本表示形式获取表的大小。 - golinko