У меня есть веб-сервис (JAX-RS / Spring), который генерирует SQL-запросы, которые работают с временной таблицей в Oracle.Затем данные архивируются в другую таблицу (через 3 оператора MERGE).Выполнение каждого «задания» (запрос и слияние) выполняется в фоновом режиме через JMS-брокер (ActiveMQ).Последовательность операций каждого задания выглядит примерно так:
insert/update into table Q (select from table F) -- done between 4 and 20 times
merge into table P (select from table Q) -- twice
merge into table P (select from table F)
merge into table P (select from table F)
create a view V as select from table P
(таблица Q является временной таблицей).
Когда я отправляю два или три задания, подобные этим, это занимает около7 минут для каждой работы.Но когда я отправляю до 15 бегущих одновременно, продолжительность растягивается намного дольше.
происходит ли это потому, что все эти процессы пытаются вставить / обновить в временную таблицу Q?таким образом боретесь за ресурс?Какие методы я должен смотреть, чтобы оптимизировать это?Например, я подумал о создании 5 или 6 дубликатов таблицы Q и «балансировке нагрузки», к которым объект доступа к данным запрашивает их.
Спасибо