В настоящее время я улучшаю приложение, использующее spring и hibernate. Есть несколько экземпляров, где приложение общается с db (postgres) с помощью подготовленных операторов. Приложение до сих пор, связанное с postgres через dbcp.Отключение подготовленных операторов в dbcp + spring + hibernate + jdbc?
Изменить: Приложение теперь передано postgres через pgbouncer.
т.е .: приложение -> ГСБД -> pgbouncer -> Postgres
Я понимаю, это не было бы самым идеальным решением т.е.: с 2 poolers. Но из-за текущей архитектуры мы требуем их обоих.
Требования: pgbouncer не поддерживает подготовленные заявления в сделке режима & поэтому должен быть устранен.
Изменения, устраняющие подготовленный отчет.
1) PSQL: версия 9.2.6 =
без изменений
2) pgbouncer: в конфигурационном файле установить следующие attribures
ignore_startup_parameters=extra_float_digits
pool_mode=transaction
server_reset_query=
3): JDBC Приготовленный порог установлен соответствующим образом. то есть: jdbc:postgresql://localhost:6541/postgres?prepareThreshold=0
JAVA VERSION = 1.7.0_51
JDBC DRIVER = postgresql-9.3-1102.jdbc41-3.jar
4) ДБХП: poolPreparedStatements = ложные maxOpenPreparedStatements = 0
5) спящий режим: не изменяет
6) пружина: не изменяет
Вопрос:
Несмотря на все эти изменения, я все еще вижу подготовленные заявления, которые пытаются быть созданы. & транзакций, не соответствующих этому.
«ОШИБКА: подготовлено заявление„S_21“не существует, вложенное исключение org.postgresql.util.PSQLException: ОШИБКА: подготовлено заявление„S_21“не существует»
Я удалил все логические изменения который использовал подготовленное заявление.
Как я могу предотвратить создание других подготовленных утверждений? Является ли весна или спящий режим внутренне создавать подготовленные заявления для их использования? Если да, как их отключить?
Это звучит как колоссально плохая идея. – chrylis
Вы решили эту проблему? Можете ли вы отправить сообщение, что вы сделали, чтобы решить эту проблему? – awsome