Я запустил приложение с Hibernate 3.2 и PostgreSQL 8.4. У меня есть некоторые поля byte[]
, которые были сопоставлены как @Basic
(= PG bytea), а другие — как @Lob
(=большой объект PG). Почему несоответствие? Потому что я был новичком в Hibernate.
Теперь эти поля имеют максимальный размер 4 КБ (но в среднем 2-3 КБ). В документации PostgreSQL упоминается, что LO хороши, когда поля большие, но я не понял, что означает «большой».
Я обновился до PostgreSQL 9.0 с Hibernate 3.6 и застрял, чтобы изменить аннотацию на @Type(type="org.hibernate.type.PrimitiveByteArrayBlobType")
. Эта ошибка привела к потенциальной проблеме совместимости, и в конце концов я обнаружил, что с большими объектами сложнее иметь дело по сравнению с обычным полем.
Так что я думаю о том, чтобы изменить все это на bytea
. Но меня беспокоит, что поля bytea
закодированы в шестнадцатеричном формате, поэтому при кодировании и декодировании возникают некоторые накладные расходы, и это может снизить производительность.
Есть ли хорошие тесты производительности обоих из них? Кто-нибудь менял и увидел разницу?
bytea
. - person OrangeDog   schedule 05.03.2019lo_compat_privileges
может решить проблемы совместимости. - person OrangeDog   schedule 05.03.2019