Приложение, которое я тестирую, представляет собой 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 по сравнению с запросами, выполняемыми из приложения.