pg_database_size是否在pg_largeobject中包含BLOB?

时间:2013-09-05 12:50:57

标签: postgresql

如果我在Postgres数据库中有一个由oid类型列引用的BLOB,它们的大小是否会计入pg_database_size?

1 个答案:

答案 0 :(得分:2)

是的,因为它们位于pg_largeobject系统目录中。该目录不是在DB之间共享的,因此它会计入它所在的数据库。

查找最简单的方法是lo_import一个文件并查看;在这种情况下,使用dd if=/dev/zero of=bigzero count=10 bs=1M

创建一个10MB的零文件
regress=> SELECT pg_database_size(current_database());
 pg_database_size 
------------------
        730961016
(1 row)

regress=> \lo_import bigzero
lo_import 383810
regress=> SELECT pg_database_size(current_database());
 pg_database_size 
------------------
        731518072
(1 row)

你会注意到DB确实在增长。它虽然增长了500kb。原因是PostgreSQL会压缩这类数据,并且长时间的零压缩效果非常好。