Я пытаюсь убедиться, что у меня есть хорошее представление о взаимосвязи между CURSOR_SHARING, связыванием переменных, просмотром переменных связывания и гистограммами, поскольку большинство источников освещают эти темы в разных разделах.
Хорошо, вот то, что я собрал до сих пор, не стесняйтесь исправлять меня, если я ошибаюсь:
CURSOR_SHARING
1. = EXACT (по умолчанию)
2. = FORCE
3. = ПОДОБНОЕ
Вопросы:
Насколько я понимаю, использование CUSOR_SHARING = EXACT + запись SQL-статов с переменными связывания (1.2) не приводит к тому же результату, что и установка CURSOR_SHARING = FORCE (2.1)? В обоих случаях оптимизатор будет только просматривать переменную привязки при первом запуске, чтобы сгенерировать план выполнения, а затем повторно использовать этот план, независимо от того, какие значения переменных привязки при последующих запусках? Если да, то почему большинство источников рекомендуют использовать переменные связывания? похоже, что это может существенно повлиять на производительность.
Используется ли гистограмма в начальном просмотре переменной связывания для 1.2 и 2.1? Как и в случае, когда в первый раз запускается состояние SQL и оптимизатор просматривает переменную связывания, использует ли он гистограмму (если она есть) для определения того, используется ли сканирование полной таблицы или сканирование индекса? «Oracle Database 11g, Performance Tuning Recipes», кажется, указывает на то, что гистограммы актуальны только тогда, когда CURSOR_SHARING = SIMILAR, но некоторые другие источники указывают, что гистограмма также используется во всех других настройках CURSOR_SHARING.
В случае 1.1, будет ли оптимизатор использовать гистограмму для определения наилучшего плана выполнения? В основном я просто хочу знать, когда используется гистограмма. Только если CURSOR_SHARING = SIMILAR или другие настройки CURSOR_SHARING хороши?
Adpative Cursor Sharing - эта функция будет иметь место только при наличии переменных связывания (либо из пользовательского запроса, либо генерируемых системой (путем буквальных замен)). Следовательно, это имеет место только в 1.2, 2.1, 3.1 и 3.2? но поскольку SIMILAR устарел,Означает ли это, что ACS появляется только в 1.2 и 2.1?
Надеюсь, сейчас я не слишком далеко от базы, но если я сделал какие-то ошибки, пожалуйста, исправьте меня
Спасибо!
Отредактировал: BYS2, 20 декабря 2011 г., 12:11