如果我在Postgres数据库中有一个由oid类型列引用的BLOB,它们的大小是否会计入pg_database_size?
答案 0 :(得分:2)
是的,因为它们位于pg_largeobject
系统目录中。该目录不是在DB之间共享的,因此它会计入它所在的数据库。
查找最简单的方法是lo_import
一个文件并查看;在这种情况下,使用dd if=/dev/zero of=bigzero count=10 bs=1M
:
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会压缩这类数据,并且长时间的零压缩效果非常好。