我在PostgreSQL DB中有一个表,并从这个表中选择一些约束,而不是我想知道这个选择有多少磁盘空间 . 我知道有一个postgres函数 pg_total_relation_size 给了我DB中某些表的大小,但是如何才能找到'subtable'大小?
pg_total_relation_size
有任何想法吗?
我使用PostgreSQL 9.1
要获取数据大小,允许 TOAST 压缩等:
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)
为什么结果如此不同?因为后一个查询报告主表的8k块的大小,以及TOAST表的8k块 . 它并不关心这些块大多是空的 .
1 回答
要获取数据大小,允许
TOAST
压缩等:要获得所需的磁盘存储,包括块分配开销,标头等等:
为什么结果如此不同?因为后一个查询报告主表的8k块的大小,以及TOAST表的8k块 . 它并不关心这些块大多是空的 .