tg-me.com/oracle_dbd/914
Last Update:
Хинтовать или не хинтовать? Пусть решает команда
Я встречался с разными подходами и мнениями.
1️⃣ Например, в некоторых командах Qiwi было принято "не хинтовать". Поддерживай статистику в актуальном состоянии - тогда Oracle сам будет рулить с использованием CBO (cost based optimizer), и будет тебе счастье.
Вплоть до минуса на код-ревью. Система — OLTP.
К слову сказать, я не сильно полагаюсь на CBO, и если ты понимаешь логику работы запроса - то почему бы его не стабилизировать?
И в нашей команде хинтование я поощрял.
2️⃣ Например, в "IT Магнит" мы хинтовали почти все запросы. Это была специфика Big Data в DWH: параллельные запросы, временные таблицы… Очень часто CBO ошибался. Там без хинтов никак не обойтись.
3️⃣ Ещё один пример — из моей же практики. Пилили коммерческое ПО для банков. Сколько тогда поели г...на из-за CBO у заказчиков.
К слову сказать, пилить ПО на заказ и поставлять его в разные организации — это задачка на порядок сложнее, чем когда система твоя, до которой ты можешь легко дотянуться.
Например, у тебя 10 заказчиков, и у всех у них есть какие-нибудь свои прикольчики.
Допустим, админы в банке решили не собирать статистику. Да, такое бывает. Ну и какой, на фиг, CBO поможет с запросами при такой постановке?
Поев немало... проблем, мы коллегиально решили хинтовать максимум запросов.
Если стоит выбор между «срочно решаем проблему на ПРОДе у заказчика» и «заранее хинтануть запрос и не иметь геморроя» — я выбираю второе 😊
Подводя итог
Универсального ответа нет. Каждый случай индивидуален по-своему. Решайте командой.
Каким принципом руководствуетесь вы? Что думаете? Обсудить в чатике 💬
Кстати, это видео — с практики пятого потока курса «Оптимизация Oracle SQL» ❤️
#Denis_Kivillev #оптимизация #hints
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
BY Oracle Developer👨🏻💻
Share with your friend now:
tg-me.com/oracle_dbd/914