Похоже, что на некоторых из серверов, которые у нас есть, стоимость хеш-соединений, группировка и порядок слишком малы по сравнению с действительная цена. То есть часто планы выполнения с индексами диапазона индексов превосходят прежние, но по плану объяснения стоимость отображается выше.Как увеличить оценку стоимости CBO для Oracle для хеш-соединений, по группам и по заказам без подсказок
Некоторые дополнительные примечания:
- Я уже установлен optimizer_index_cost_adj до 20 и это все еще не достаточно хорошо. Я НЕ хочу увеличивать стоимость чистых полных сканирований таблицы, на самом деле я бы не прочь оптимизатор, уменьшающий стоимость.
- Я заметил, что pga_aggregate_target оказывает влияние на оценки стоимости CBO, но я определенно НЕ хочу понижать этот параметр, так как у нас много ОЗУ.
- В отличие от использования подсказок оптимизатора в отдельных запросах, я хочу, чтобы настройки были глобальными.
Edit 1: Я думаю о экспериментировать с динамической выборкой, но не имеет достаточно глубоких знаний, чтобы предсказать, как это может повлиять на общую производительность, то есть, как часто планы выполнения могут измениться. Я определенно предпочел бы что-то, что очень стабильно, ведь для некоторых наших крупнейших клиентов у нас есть политика блокировки всех статистических данных (что изменится с помощью Oracle 11g SQL Plan Management).
Можете ли вы привести пример плана объяснения? – FerranB
Вы можете поэкспериментировать с различными настройками (например, с помощью динамической выборки), но как вы узнаете, эффективны ли ваши изменения или нет? Вместо этого выработайте ПОЧЕМУ планы, как правило, плохие, и тогда вы окажетесь на полпути к поиску наилучшего решения. –
Я знаю, почему - из-за неуместной оценки стоимости хеш-соединений, групповых и порядковых байтов (но не FTS). И это то, что я пытаюсь настроить. –