2016-09-26 4 views
0

У нас есть приложение JAVA, которое подключается к DB2 через openJPA для извлечения данных. Предшествующий почти каждый SQL вызова, мы получаем довольно бесполезный вызов, который поставляется в качестве отдельной сделки: «Выбрать текущий SQLID ОТ SYSIBM.SYSDUMMY1»Выполняя почти каждый вызов, мы получаем довольно бесполезный вызов, который приходит как отдельная транзакция. SELECT CURRENT SQLID FROM SYSIBM.SYSDUMMY1

DBA говорит, что он не имеет ни малейшего представления, почему это выше бесполезный SQL оператор вызывается перед почти каждым вызовом.

Любая идея, почему этот запрос вызван? Есть ли что-нибудь, что я могу сделать, чтобы пропустить это?

Прошло некоторое время. Я застрял в этой проблеме, когда администратор базы данных жаловался на резкое увеличение количества транзакций, поражающих DB2.

Любая помощь будет оценена по достоинству. Спасибо

+0

Вероятно, запрос проверки соединения, выполненный реализацией пула соединений, чтобы убедиться, что соединение не прошло, прежде чем передать код приложения. См. «[Как проверить подключение к базе данных db2] (http://stackoverflow.com/questions/4733356/how-to-test-the-connection-to-a-db2-database)». – Andreas

+0

См. Также «[DBCP - validationQuery для разных баз данных] (http://stackoverflow.com/q/10684244/5221149)» и «[Что такое validationQuery в отношении баз данных и JNDI?] (Http: // stackoverflow. com/q/15393954/5221149) « – Andreas

+0

Итак, он говорит, что запрос проверки выполняется источником данных, чтобы проверить, что соединение все еще открыто, прежде чем возвращать его. Посредством источника данных по умолчанию выполняется этот запрос каждый раз? В любом случае я могу ограничить этот запрос, поскольку он создает накладные расходы на DB2. Это происходит из-за наводнения DB2, и это является главной задачей. – user3262365

ответ

0

Если у вас есть источник данных, сконфигурированный в WAS, убедитесь, что на Data sources > YOUR_DATASOURCE > WebSphere Application Server data source properties странице у вас есть непроверенных как Validate connections.. варианты.

+0

Большое спасибо за газ. – user3262365

0

Запрос идет от менеджера пула соединений, проверяя его перед передачей его в приложение. Я думаю, что ваша реализация пула соединений в худшем случае сломана, в лучшем случае неправильно сконфигурирована.

Начнем с того,

Запрос, представленный водителем для проверки соединения должны быть выполнены в контексте текущей транзакции.

http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#isValid(int)

Таким образом, если запрос проверка идет за пределами вашей сделки, это несоответствующим.

Во-вторых, с JDBC4 реализация пула соединений не требуется для запуска запроса проверки, он может использовать другие средства проверки соединения, не закрытые или устаревшие. Проверьте конфигурацию HikariCP для обсуждения на эту тему. Я не могу дать вам гарантии того, что менеджер пула, который вы используете, может быть настроен по-разному, но, конечно, проверьте его и, возможно, проверьте его с помощью альтернативных менеджеров пулов.

 Смежные вопросы

  • Нет связанных вопросов^_^