如何在Hibernate和Postgresql中映射LOB来清理未使用的空间

时间:2014-05-08 13:09:20

标签: hibernate postgresql lob

如果你有吊球类型

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

然后在PostgreSQL中你会得到类型为text

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

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

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

在这个post中,建议使用vacuumlo实用程序清理对应于已删除行的大对象。但根据这个documentation

  

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

因此,如果您在包含text列的数据库上运行vacuumlo,那么所有大对象都将被删除,因为它们是来自text列而不是oid的referencef。 因此,请问我如何在hibernate中映射LOB对象以允许清理未使用的空间

我查看了Postgresql 9.3.4和hibernate 4.3.5

0 个答案:

没有答案