我用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