我用Hibernate 3.2和PostgreSQL 8.4开始了一个应用程序。我有一些byte[]
字段被映射为@Basic
(= PG bytea)和映射为@Lob
(= PG大对象)的其他字段。为什么不一致?因为我是一个Hibernate noob。PostgreSQL:BYTEA vs OID +大对象?
现在,这些字段最大为4 Kb(但平均值为2-3 kb)。 PostgreSQL文档提到,当字段很大时,LO是好的,但我没有看到“大”意味着什么。
我已经使用Hibernate 3.6升级到PostgreSQL 9.0,并且我坚持要将注释更改为@Type(type="org.hibernate.type.PrimitiveByteArrayBlobType")
。这个bug带来了一个潜在的兼容性问题,并且我最终发现大型对象与一个普通的字段相比是一个很难处理的问题。
所以我想把它全部改为bytea
。但我担心bytea
字段是以十六进制编码的,所以在编码和解码时会有一些开销,这会损害性能。
是否有良好的基准关于这两方面的表现? 有人做了开关,看到了一个区别?
此外它不是以十六进制存储的,我认为libpq(甚至可能是协议)有一个二进制传输接口。 – 2013-11-16 04:09:40