4

如果你有 lob 类型

@Column(name = "xml")
@Lob
private String xml;

然后在 PostgreSQL 中你会得到文本类型的列

 \d tablename
 Column     |            Type             | Modifiers 
 ----------------+-----------------------------+-----------
 xml            | text                        | 

当您在此列中插入一些文本时,将创建大对象并且列包含指向此对象的链接

# select * from  tablename
xml
+------------
 242781
(1 row)

在这篇文章中,建议使用 Vacuumlo 实用程序来清理与已删除行相对应的大型对象。但是根据这个文档

然后它扫描数据库中所有类型为 oid 或 lo 的列,并从临时表中删除匹配的条目。(注意:只考虑具有这些名称的类型;特别是,不考虑它们之上的域。)

因此,如果您在包含文本列的数据库上运行 Vacuumlo,则所有大对象都将被删除,因为它们是从文本列而不是 oid 引用的。所以质疑我如何在休眠中映射 LOB 对象以允许清理未使用的空间

我检查了 Postgresql 9.3.4 和休眠 4.3.5

4

0 回答 0