SQL Server 2008 Оптимизация
Я узнал сегодня, если вы добавите в свой запрос
OPTION (MAXDOP 0)
Ваш запрос будет выполняться на нескольких процессорах, и, если это огромный запрос, запрос будет выполняться быстрее.
Я знаю общие рекомендации по оптимизации запросов (использование индексов, выбор только необходимых полей и т. Д.), Мой вопрос касается оптимизации SQL Server. Возможно изменение некоторых параметров в конфигурациях или что-то еще.
Какие рекомендации существуют для оптимизации SQL Server?
Спасибо.
PS Я полагаю, это не то место, где можно задавать вопросы, связанные с сервером. Должен ли я удалить его или, возможно, его можно перенести на сервер?
1 ответ
Я узнал сегодня, если
Предложение: ПРОЧИТАЙТЕ РУКОВОДСТВО, хотя бы один раз. Вся эта "опция" хорошо документирована, и вы можете быть удивлены, сколько еще вы можете узнать.
Ваш запрос будет выполняться на нескольких процессорах, и если он будет огромным, запрос будет выполняться быстрее
Нет, это не то, что делает MAXDOP. При нормальных обстоятельствах это абсолютно НИЧЕГО. Получи это - ты узнал фигню;)
Вот так:
Опция MaxDOP определяет МАКСИМАЛЬНУЮ степень параллелизма. Он не говорит "использовать больше процессоров", он говорит "идите на максимальный параллелизм X", и если X = 0, это число процессоров.
Но здесь есть одна загвоздка - для MaxDOP существует общесистемная настройка, которая уже говорит 0, поэтому в нормальных условиях она ничего не делает так, как вы этого хотите.
Для этого полезно ограничить максимальный пералеллизм ДАЛЕЕ для запросов, когда это не имеет смысла (потому что нет, это не приводит к автоматическому ускорению выполнения запроса - на самом деле он может сделать его намного медленнее). В этих случаях конкретным пользователям может потребоваться, чтобы Option (maxdop 1) был ограничен по умолчанию. Вы можете прочитать больше об этом на http://msdn.microsoft.com/en-us/library/ms181007.aspx
При этом MaxDOP сложно освоить - в 99% случаев нет смысла помещать maxdop в запрос.
Какие рекомендации существуют для оптимизации SQL Server?
Там нет ни одного. Применяются стандартные принципы SQL (запрашивайте только то, что вам нужно, имейте правильные индексы и т. Д.). Остальные редко используются варианты - поэтому общие принципы не применяются (поскольку они редки - общие рекомендации: не используйте их).
Руководящие принципы, между прочим, называются документацией.
Как всегда (ваш пост - очень хороший пример), ограниченное знание довольно часто - это одно: совершенно неправильно (поскольку вы даже не знали, что на самом деле делает MaxDop 0).