我使用 Hibernate 3.2 和 PostgreSQL 8.4 开发了一个应用程序。其中有一些字段是 byte[]
类型,被映射为 @Basic
(PG bytea),另一些则被映射为 @Lob
(PG Large Object)。为什么会存在这种不一致的情况呢?因为我当时还是一个 Hibernate 新手。
现在,这些字段最大只有 4KB(平均大小为 2-3 KB)。PostgreSQL 的文档提到,当字段很大时使用 LOs 更好,但我没有看到 'big' 的具体含义。
我已经升级到了使用 Hibernate 3.6 和 PostgreSQL 9.0,并将注释更改为 @Type(type="org.hibernate.type.PrimitiveByteArrayBlobType")
。这个 bug 引发了潜在的兼容性问题,我最终发现与普通字段相比,处理大型对象确实很麻烦。
因此,我考虑将所有内容都更改为 bytea
。但我担心 bytea
字段使用十六进制编码,因此在编解码时会有一些开销,可能会影响性能。
关于这两种方法的性能,是否有好的基准测试结果呢?有人切换过来后发现了差异吗?
bytea
更低。 - OrangeDoglo_compat_privileges
可能会解决兼容性问题。 - OrangeDog