如果我在 Postgres 数据库中有 BLOB,由 oid 类型列引用,它们的大小是否会计入 pg_database_size?
问问题
637 次
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 回答