SQL Server ARITHABORT - PullRequest
       44

SQL Server ARITHABORT

11 голосов
/ 13 сентября 2009

Я работаю с клиентом, который только что обновился с SQL 2000 до SQL 2008, и время его запросов на просмотр значительно возросло.

Я взглянул на взгляды и не увидел в них ничего плохого. Когда я запускал представление непосредственно на сервере, времена были в порядке. Когда я запускал через Management Studio удаленно, время переходило от 2 секунд до 30 секунд.

Итак, я попытался провести эксперимент с тестовой копией, установив для параметра ARITHABORT значение ON (на основе некоторых статей), и время также сокращается дистанционно.

Итак, установка ARITHABORT, кажется, ответ, но прежде чем обратиться к работающей БД, я бы хотел понять почему. Я понимаю, что это связано с уровнем серьезности нулевого деления, но почему это должно помочь с просмотром времени запроса?

Ответы [ 6 ]

6 голосов
/ 13 сентября 2009

Тим

Я думаю, что в SQL Server 2000, если вы установили ARITHABORT OFF, оптимизатор запросов не будет учитывать индексы индексированного представления при разработке плана выполнения запроса. Так что, если лучший план использует индекс представления, это будет иметь значение. Я не знаю, так ли это до сих пор, но когда вы смотрите на планы запросов, вы можете конкретно посмотреть, упоминает ли более быстрый план индекс представления.

Я не знаю конкретной причины, по которой ARITHABORT имеет отношение к индексированным представлениям, но параметры SET влияют на ряд вещей, и ситуация с ARITHABORT вряд ли была стабильной. Вы можете проверить эту ссылку .

Также не исключено, что некоторые из этих характеристик зависят от уровня совместимости. Если какая-либо из обновленных баз данных была установлена ​​на уровне 80 или 90, вы можете увидеть, действительно ли это нужно.

3 голосов
/ 13 апреля 2011

Пожалуйста, прочитайте этот пост http://www.sommarskog.se/query-plan-mysteries.html

2 голосов
/ 13 сентября 2009

Я склонен думать, что настройка ARITHABORT - красная сельдь. Различаются ли ваши планы запросов между тестовой и производственной системами? Являются ли ваши таблицы ИДЕНТИЧНЫМИ в данных, которые они содержат, и актуальна ли ваша статистика на обоих серверах с одинаковыми индексами? Я бы проверил это первым.

1 голос
/ 16 декабря 2012

Вы всегда должны включать ArithAbort в сеанс входа в систему из соображений производительности. Я только что столкнулся с этой проблемой при работе с несколькими процессорами в базе данных 2008 R2 и обнаружил, что Microsoft обновила документацию по SQL-серверу за 2012 год, указав ее так.

http://msdn.microsoft.com/en-us/library/ms190306.aspx

Всегда устанавливайте ARITHABORT на ON во время сеансов входа. Установка ARITHABORT в положение OFF может отрицательно повлиять на оптимизацию запросов, что приведет к проблемам с производительностью.

⚠️ Внимание

Параметр ARITHABORT по умолчанию для SQL Server Management Studio включен. Клиентские приложения, для которых ARITHABORT имеет значение OFF, могут получать разные планы запросов, что затрудняет поиск и устранение неполадок, связанных с неэффективными запросами. То есть тот же запрос может выполняться быстро в студии управления, но медленно в приложении. При устранении неполадок, связанных с запросами в Management Studio, всегда выполняйте настройку клиента ARITHABORT.

0 голосов
/ 15 декабря 2014

Когда ARITHABORT равно OFF, индексы (сохраняемые) вычисляемых столбцов не используются . В общем, Microsoft рекомендует всегда включать ON. Единственная причина, по которой он OFF по умолчанию (в некоторых случаях) - обратная совместимость.

0 голосов
/ 02 ноября 2009

[Это не очень хороший ответ.] Я тоже только что натолкнулся на это, но еще более странно то, что теперь я не могу воспроизвести ранее плохую производительность! Даже после возврата этой опции в OFF соответствующий SQL теперь работает так же быстро, как и раньше. [Я подозреваю, что кеширование теперь устраняет любые различия, которые присваивают настройки.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...