Привет, у меня Oracle 12c db с общим SGA 12 ГБ и целевой областью общего пула, установленной на 4 ГБ.
Приложение имеет сохраненный процесс, который, как отмечалось, периодически вызывает проблемы с производительностью.
путь выполнения, который использует хранимая процедура, был идентифицирован, и для одного запроса по этому пути предусмотрен план с низкими затратами.
Я запускаю сохраненный процесс в цикле 100 и вижу, что он начинается со времени выполнения 74 мс, а в конце 100-го цикла время выполнения процедуры составляет около 5000 мс.
Ищите указатели на то, почему это может быть?
запрос в процедуре похож на
SELECT a, b
FROM ( SELECT a, b
FROM tab
ORDER BY c)
WHERE ROWNUM = 1;
Oracle, как было отмечено в этом случае, не создала несколько планов для одного и того же выполнения запроса.
Я установил режим оптимизатора first_rows, а также проверил индексы в предложении where без особого эффекта.