Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Наверняка многие в плане выполнения запроса,(есть еще отдельно системные вьюхи) обращали внимание на возможные подсказки. Ну типа того что рекомендуется добавить такой то такой индекс на такую то таблицу. Честно говоря я и сам знаю что и куда добавить, как то эту информацию пропускал мимо ушей. Интересует мнение, насколько эта информация бывает полезной? Возникла следующая мысль. В нашей компании реализовали продукт который может один в один воспроизводить трафик через MSSQL. То есть можно сделав бэкап с рабочей БД и записав трафик(например 30 мин.) затем все один в один воспроизводить на отдельном сервере. Появилась идея что можно было бы используя подсказки оптимизатора запросов последовательно добавлять(затем разумеется убирать) индексы. После чего выполняя запрос смотреть насколько уменьшилось время(ЦПУ,ридсы и т.п.) запроса. Можно увидетть насколько тяжелым стал индекс и самое главное все это можно делать автоматом. На выходе получаем список индексов и список запросов с информацией что насколько ускорилось. (разумеется там есть вопросы с комбинацией индексов). На основании этой информации можно уже принимать решение. Своего рода автоматизация оптимизации. Самый главный вопрос, насколько эти подсказки существенны? (разумеется все точно покажет практика)
10 дек 15, 13:03    [18540032]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
МуМу,

как обычно - очевидные/простые подсказки, полезны - если ты новичок и сам до этого не домдумался. а тонкий тюнинг/сложные запросы - самому надо думать
10 дек 15, 13:15    [18540110]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
МуМу,

Под подсказками вы имеете ввиду Hints (Joint Hints, Query Hints, etc...) или Warnings (Missing Index, Plan Affecting COnversion, No Statistics, No Join Predicates, etc)?

+ ОТ
Я заходил на сайт вашей компании, когда вы обсуждали тему про Resource Governor, мне показалось, довольно специфичное позиционирование продуктов.
Поскольку я ни с одним из ваших продуктов не знаком, то просто спрошу, ради интереса.

Например, у вас написано "RESOURCE MANAGER Гибкое распределение ресурсов серверов" - я так понял это вы просто настройку Resource Governor так завуалировали?

Или сейчас. Ведь есть уже Profiler(trace)/Extended Events и Database Engine Tuning Advisor, где можно также формировать файлы трейса и прогонять их через анализатор, получая рекомендации. При этом, это решение от тех кто, собственно, разрабатывает сервер и может знать много того, чего мы, пользователи, не знаем и использовать это. Поэтому, мне, например, не понятно, зачем использовать сторонний продукт...
10 дек 15, 14:27    [18540644]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
o-o
Guest
они имеють в виду Missing Index зеленым цветом, когда в студии план смотришь.
а формулировки у них зашкаливают, да.
мне вот до сих пор они не ответили, где вот здесь эскалация.
10 дек 15, 14:50    [18540806]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
Crimean
Member

Откуда:
Сообщений: 13147
полезны. как любая другая подсказка. ибо всегда есть шанс что-то провтыкать и/или тупо забыть.
10 дек 15, 14:52    [18540823]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Иногда - полезны. А иногда - нет.
Иногда даже вредны,- например, когда для разовой выборки предлагается построить замысловатый индекс по таблице, цель которой либо тупой сбор информации, либо которая сама по себе живёт до выборки.. Ну, как-то так...
10 дек 15, 14:56    [18540852]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
o-o
они имеють в виду Missing Index зеленым цветом, когда в студии план смотришь.
а формулировки у них зашкаливают, да.
Ну никто же до сих пор не запетентовал эти названия. Так что называют как хотят. "Чтобы никто не догадался" (с)

o-o
мне вот до сих пор они не ответили, где вот здесь эскалация.

Да, загадочный продукт. Мне например не понятно как оно умеет
МуМу
может определять на лету нужное количество MAXDOP для запросов.
10 дек 15, 23:41    [18543591]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
МуМу
Наверняка многие в плане выполнения запроса,(есть еще отдельно системные вьюхи) обращали внимание на возможные подсказки. Ну типа того что рекомендуется добавить такой то такой индекс на такую то таблицу. Честно говоря я и сам знаю что и куда добавить, как то эту информацию пропускал мимо ушей. Интересует мнение, насколько эта информация бывает полезной? Возникла следующая мысль. В нашей компании реализовали продукт который может один в один воспроизводить трафик через MSSQL. То есть можно сделав бэкап с рабочей БД и записав трафик(например 30 мин.) затем все один в один воспроизводить на отдельном сервере. Появилась идея что можно было бы используя подсказки оптимизатора запросов последовательно добавлять(затем разумеется убирать) индексы. После чего выполняя запрос смотреть насколько уменьшилось время(ЦПУ,ридсы и т.п.) запроса. Можно увидетть насколько тяжелым стал индекс и самое главное все это можно делать автоматом. На выходе получаем список индексов и список запросов с информацией что насколько ускорилось. (разумеется там есть вопросы с комбинацией индексов). На основании этой информации можно уже принимать решение. Своего рода автоматизация оптимизации. Самый главный вопрос, насколько эти подсказки существенны? (разумеется все точно покажет практика)



подсказки полезны процентов на 30.
это типа вдруг забыл создать какой то индекс.
твой метод уж слишком подход на "метод тыка ", этакий научно-роботизированный вариант.
мне кажется, чем пробовать так вслепую лучше сесть и подумать.

индексы не бывают тяжелым и.
11 дек 15, 06:17    [18543952]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Для того что бы получить отчет об "подсказках"(введите термин, честно не знаю как называть) оптимизатора можно написать простой запрос к системной вьюхе. Я как то сам решил провести эксперимент и рассмотрел большинство операций. Мне многие показались крайне сомнительными. Ответ про 30 %(про статистику "полезности":)) соответствует моим ожиданиям. Но, если при даже не такой высокой точности если бы были другие важные цифры - было бы совсем другое кино. Например было бы видно конкретные запросы и их ускорение. Причем не один конкретный запрос - а выборка параметризованных запросов. То есть понимание что эти запросы съедают львиную долю ресурсов. Если кому интересно то решили подойти следующим методом. При воспроизведении запросов генерим уникальный идентификатор, который добавляем в запрос в виде комментария /*GUID*/ . На функциональность он не влияет но искать по нему уже можно. Таким образом появляется связь между ИДЗапроса-Запрос-GUID-ПодсказкиОптимизатора(если они были). Ну а дальше дело техники.
11 дек 15, 12:13    [18545467]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
МуМу
Member

Откуда:
Сообщений: 1134
То Mind. Простите, английским на вашем уровне не владею. Поэтому называю как хочу, надеюсь в суд на защиту чести и достоинства никто подавать не будет.:)
Насчет загадочного продукта - так было бы желание!(есть демо стенды к которым можно подключится по vpn и т.п.) Есть предложение - Помочь мне собрать статистику "полезности". В качестве профита можно получить подсказки по может быть неожиданным запросам системы. Для простоты эксперимента и снятие рисков из организационных процессов нужно лишь попросить пользователей пощелкать на тестовой базе какие то операции и записать этот трафик.(хотя с нашими клиентами при подписанных всех документах мы снимаем трафик с продуктивной СУБД) "Загадочный продукт" я разумеется выдам.
11 дек 15, 12:23    [18545558]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Вообщем, в чем суть. На рабочей системе наугад применять подсказки опасно. Не на рабочей - сложно оценивать эффект. При данном подходе добавляется очень важная информация об эффекте воздействия(при применении конкретных рекомендаций) на систему. При возможности неспешного проигрывания трафика с продуктивной системы появляется возможность строить индексы и оценивать эффект(время,цпу,логические чтения).
11 дек 15, 12:28    [18545600]     Ответить | Цитировать Сообщить модератору
 Re: Насколько можно считать полезными типовые подсказки оптимизатора запросов  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
МуМу
Вообщем, в чем суть. На рабочей системе наугад применять подсказки опасно.
Для этого, те компании у которых есть деньги, нанимают профессионалов, которые делают это не наугад.

А с Missing Index основную проблему я вижу в том, что оптимизатор дает эти советы на основании статистик, не всегда актуальных, а иногда и очень кривых, а также опираясь на значения параметров или же их отсутствие. Я к тому, что я бы не стал это автоматизировать, потому как на эту информацию сначала должен посмотреть человек и решить нужен реально этот индекс или же оптимизатор ошибся конкретно в своих оценках.
Представьте например, есть запрос, с условной ценой выполнения в 100 единиц, оптимизатор предложит индекс, и мы его автоматом создадим, тесты покажут уменьшение цены запроса до 85. А на самом деле, если поправить статистику/переписать запрос/воткнуть хинт/пофиксать parameter sniffing, то можно уменьшить стоимость до 5 единиц. Ну и смысл тогда от такой автоматизации?

Для меня Missing Index это больше как индикатор - оптимизатор считает что с этим запросом что то не так.

Что возможно было бы полезно, так это связь между "подсказками" и запросами, которые должны выиграть от создания этого индекса.
11 дек 15, 20:13    [18548685]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить