|
|
Хорошей практикой является ограничение количества разборов курсора - оптимальное значение равно, конечно, единице. Одним из путей в достижении идеала будет предварительный разбор всех курсоров, которые, возможно, будут выполняться вашим приложением. В таком случае при старте приложения все курсоры уже будут ждать его в разделяемом пуле. Однако этот подход связан с большой трудоемкостью при сопровождении больших приложений и при использовании в них не-регламентируемых (ad hoc) запросов. Поэтому лучше понести затраты один раз при первом выполнении курсора и принять меры к тому, чтобы в дальнейшем он при каждой возможности использовался повторно.
В этой главе, если явно не оговорено обратное, параметр CUR-SOR_SHARING во всех примерах установлен в значение EXACT. Сравнение точного и неточного соответствий см. ниже в разделе «Алгоритмы сопоставления».
В следующих разделах мы объясним, как Oracle принимает решение о повторном использовании курсора. Эти знания будут исключительно полезны при планировании повторного использования курсора. К сожалению, многие пишущие на PL/SQL разработчики находятся в блаженном неведении даже о существовании такой концепции, поэтому администраторам вдвойне необходимо понимание принципов повторного использования курсоров и последствий этого использования. Сначала мы рассмотрим некоторые детали алгоритма хеширования Oracle, а затем перейдем к нюансам повторного использования курсоров. Рекомендуем вам прочитать весь раздел, прежде чем встраивать в свое приложение механизмы (реальные или предполагаемые) повторного использования.

