Неоптимальный план запросов

Администрирование - Оптимизация БД (HighLoad)

38
Шпаргалка к экзамену "Эксперт по технологическим вопросам".

-На прошлой неделе учил дочку запоминать цвета радуги: Каждый Охотник Желает Знать, Где Сидит Фазан. Это очень надежный способ. Сам его использую уже около сорока лет. Применим его для подготовки к экзамену по технологическим вопросам. Ниже шпаргалка к популярному вопросу: «Расскажите о признаках неоптимальности в плане запросов». Конечно, мы знаем эти признаки, но быстро назвать их все в условиях стресса может не получиться. Итак, примерный перечень:

  • Table spool, Lazy spool, предупреждения в операторах сортировки о нехватке памяти свидетельствует об использовании подкачки с жесткого диска. Постараемся избегать использование самого медленного устройства в компьютере. Ассоциация: Файл подкачки.
  • Key (RID) lookup  - указывает на поиск по ключу, за ним обычно следует Nested loops. Таким образом данные собираются из разных мест. Как правило, эту пару операторов можно улучшить, используя покрывающий индекс. Ассоциация: поиск по ключу.
  • Filter сравнить количество строк на входе/выходе оператора. Если выход меньше на порядок - неоптимальность. Почему бы не отобрать данные раньше? Ассоциация: Поменять фильтр.
  • Nested loops – неоптимален, если выполняется много раз (с большим количеством строк). Более привлекательным являются операторы соединения таблиц Merge Join и Hash Join. Лучшее – враг хорошего. Ассоциация: соединение таблиц в цикле
  • Table (clustered index) scan, Index seek с предикатом where по низкоселективному условию. Способ доступа scan блокирует всю таблицу (индекс), если запрос применяет блокировку. Условие where нужно проверять на эффективность. Ассоциация: пробежать все страницы данных.

В результате получим ассоциативное стихотворение:

На экзамен чтоб добраться

Нужно сильно постараться

Пресс до кубиков качать,

Ключ от яхты потерять,

Фильтр в машине поменять,

Мотоцикл догонять,

По ступенькам пробежать.

Если Вы представите себя качком на яхте, машина, мотоцикл и как поднимаетесь по лестнице к экзамену – то вспомните все признаки неоптимального плана ))

Дисклаймер: шпаргалка не заменит полноценной подготовки, по ней нельзя изучать операторы плана запросов.

Буду благодарен за положительные отзывы, за конструктивную критику – благодарен вдвойне.

Я знаю, что я ничего не знаю.

38

См. также

Комментарии
Сортировка: Древо
1. harvester_sorrow 6 21.04.18 17:15 Сейчас в теме
Коллеге перешлю,как раз экзамен во вторник у него)
9. vasilev2015 660 23.04.18 08:53 Сейчас в теме
(1) расскажите, если пригодится ))
2. user962133 21.04.18 17:33 Сейчас в теме
Ух ты, как раз во время, спасибо!
3. МихаилМ 21.04.18 18:02 Сейчас в теме
1с8 не поддерживает покрывающие индексы. и морозов и бурмистров избегают разговоры про нештатные оптимизации
4. vasilev2015 660 21.04.18 18:35 Сейчас в теме
(3) Покрывающим (для данного запроса), называется индекс в котором есть все необходимые поля для этого запроса. Источник: http://www.gilev.ru/index/

Покрывающие индексы могут повысить производительность запросов, так как данные, необходимые для удовлетворения требований запроса, присутствуют в самом индексе. Источник https://msdn.microsoft.com/ru-ru/library/jj835095(v=sql.120).aspx

Кластерный индекс таблицы содержит все поля таблицы и является покрывающим для любого запроса.

Вы наверное, имели ввиду одно, но написали другое ?
5. МихаилМ 21.04.18 21:46 Сейчас в теме
(4) да . терминология запутана. я говорил о индексах с включенными

полями. а просто некластерные индексы с дополнительными ключевыми полями создаст излишнюю нагрузку при записи. сомнительная оптимизация.
6. vasilev2015 660 21.04.18 22:19 Сейчас в теме
10. Andrefan 25.04.18 10:14 Сейчас в теме
Отличный подход, спасибо.
Просим другие шпаргалки с ассоциациями (или без них) !!!!
13. vasilev2015 660 25.04.18 10:24 Сейчас в теме
(10) сам тоже собираюсь на экзамен ))
11. Andrefan 25.04.18 10:21 Сейчас в теме
Информация с ИТС тоже крайне полезна, спасибо. Подскажите, вы просто глазами это всё находили или делали какие-то фильтры?
12. vasilev2015 660 25.04.18 10:23 Сейчас в теме
(11) это даже не ИТС, это файл из каталога установки. Открыл в Word, искал интересующие меня слова: транзакция, блокировка, экскалация...
Оставьте свое сообщение