- •Текст вопроса
- •Текст вопроса
- •cursor_sharing
- •exact
- •force
- •similar
- •_disable_cursor_sharing
- •db_file_multiblock_read_count
- •optimizer_dynamic_sampling
- •Текст вопроса
- •Сбор статистики
- •Oracle не работает планировщик заданий
- •How does AUTO_SAMPLE_SIZE work in Oracle Database 11g?
- •By Hong Su on Apr 08, 2013
- •Effect of auto sample size on histogram gathering
- •Effect of auto sample size on index stats gathering
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) при использовании условий > и < для столбцов с большим количеством (близким количеству строк)
