0

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

4

1 回答 1

2

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

找出最简单的方法是lo_import查看文件并查看;在这种情况下,创建一个 10MB 的零文件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)

您会注意到数据库确实在增长。它只增长了 500kb。这样做的原因是 PostgreSQL 会压缩这种数据,而长时间运行的零压缩得非常好。

于 2013-09-05T12:52:51.650 回答