Масштабируемость приложений Java и Oracle (Sp против множественных запросов) - PullRequest
0 голосов
/ 01 декабря 2018

Приложение, которое я тестирую, представляет собой OLTP-систему Spring-Tomcat-HikariCP-OracleDB.База данных разделена и имеет базовый объем транзакции 2 миллиона строк.Архитектура приложения такова, что она использует хранимую процедуру и JDBCTemplate для обработки транзакций.

Я недавно выполнял нагрузочное тестирование приложения, и я вижу, что одна процедура занимает 2 с для выполнениятранзакция, запросы после выполнения процедуры хранилища ожидают соединения (1-2 минуты для завершения простого обновления).Благодаря чему отклик при высокой нагрузке высокий.

В пуле соединений Hikari доступно 100 соединений.(Увеличение пула не помогает.)

В процедуре выполняется 8-9 запросов.

Итак, я предполагаю, что все соединения, используемые для процедуры, находятся в тупике.в течение 2 с, из-за которых соединения недоступны для последнего и, следовательно, они ожидают доступного соединения.

Таким образом, с точки зрения масштабируемости, было бы лучше выполнить эти 8-9 запросов индивидуально в приложении, чемиспользование SP, которое немного увеличило бы выполнение 8-9 запросов (скажем, 1 с, то есть 3 с 2), но эффективно использовало бы соединения в пуле и не переводило его в режим удержания на 2 с.

Правильно ли мое предположение?

PS Мне известно о преимуществах SP по сравнению с запросами, выполняемыми из приложения.

...