Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6_7_opt.pdf
Скачиваний:
17
Добавлен:
21.03.2016
Размер:
1.97 Mб
Скачать

cursor_sharing

Значение параметра «… определяет типы SQL запросов, которые могут использовать разделяемые курсоры (to share the same cursors)». Использование разделяемых курсоров исключает «тяжёлую» вычислительную фазу hard parse из выполнения SQL запроса и, таким образом, экономит процессорное время при на этапе подготовки запроса, а также системные ресурсы для управления shared pool

exact

Только абсолютно идентичные (по тексту) запросы могут использовать тот же курсор. Значение параметра по умолчанию

force

< Oracle 11.2: «Позволяет SQL запросам, отличающимся только несколькими текстовыми константами (some literals, например, значениями в условиях запроса), использовать один курсор до тех пор, пока эти отличия не влияют на смысл запроса»

>= Oracle 11.2: «Разрешает создавать новый курсор для SQL запроса [только] если использование существующего или план существующего курсора не оптимальны»

similar

«Позволяет SQL запросам, отличающимся только несколькими текстовыми константами (some literals, например, значениями в условиях запроса), использовать один курсор до тех пор, пока эти отличия не влияют на смысл запроса или уровень оптимизации плана выполнения [не ухудшают план]»

Т.е. в отличие от значения FORCE при использовании SIMILAR при решении о повторном использовании курсора (cursor sharing) оптимизатор учитываются не только совпадение текстов запросов, но и оптимальность повторного использования плана для различных значений текстовых констант (условий) в запросе.

Особенности функционирования: зависимость возможности повторного использования курсора (cursor sharing) от наличия гистограмм на столбцах таблиц, зависимость возможности «cursor sharing» от условий запроса (query predicates) даже при отсутствии гистограмм и принудительном отключении возможности bind peeking (с помощью установки параметра _optim_peek_user_binds = false). Пример: невозможность повторного использования курсора (cursor sharing) при использовании условий > и < для столбцов с большим количеством (близким количеству строк)