Имя: Пароль:
IT
Админ
Плохой запрос вешает SQL
0 Mihenius
 
05.09.13
09:30
Есть БД на SQL 2005, тип совместимости стоит 2000 (80)

Время от времени запускают какой-то отчет, кот. вешает SQL на 100%

С помощью профайлера не видно кто и какой отчет запускает.
Или просто мы не можем дождаться окончания задания.
Лечим пока просто перезапуском SQL, с предварительным выходом из БД.

Стандартные отчеты поиска "узких" мест не работают, т.к. совместимость стоит (80).

Без перевода совместимости БД есть способы запустить стандартные отчеты совместимые с 2000?

ПС: Программа старинная на Foxpro. Прог по SQL обещал первести тип на (90).
Кстати, никто не знает какие могут возникнуть проблемы? Вроде когда-то читал, что часть запросов могут не работать из-за изменения работы индексов.
1 МихаилМ
 
05.09.13
09:35
в мс скл прфайлер запустите сбор событий на длительный срок . установите фильтр по duration. либо создайте событие загрузки процесора 100% в мониторе производительности.

и пожалуйста не создавате в 1 теме 2 несвязанных вопроса,
что бы не было путаницы
2 Sorm
 
05.09.13
09:43
(0) (1)+
Ставьте профайлер в фон, ловите.
3 МихаилМ
 
05.09.13
10:00
4 dmpl
 
05.09.13
10:06
(0) Чаще всего это ЛЕВОЕ/ПРАВОЕ/ПОЛНОЕ соединение с неправильным отбором. Например, условие не =, а < или >. В этом случае при каждом соединении происходит увеличение строк в результате, которое пропорционально результату умножения количества строк в первой таблице на количество строк во второй таблице. Если в каждой таблице по 1 000 000 строк (запустили без отбора, например) - то сервер практически гарантированно уйдет в ступор.
5 dk
 
05.09.13
11:08
выставить MDoP в половину кол-ва процов и забыть про такую проблему
6 dk
 
05.09.13
11:15
либо раз известен запрос, то можно в самом запросе max DoP выставить
7 Mihenius
 
06.09.13
00:37
Нашел наконец я плохой запрос.

Классическая ошибка - куча мелких запросов в цикле.
И в 1 це часто у молодых встречается )

Сервак старый 1 процевый, 4-х ядерный

Какой параметр поставить в запросе?

OPTION (MAXDOP 1)  или надо OPTION (MAXDOP 2) ?

В самой настройке SQL какие параметры настройки Процессора лучше поставить?
Пытался нагуглить, пишут ставить 50% от имеющихся ресурсов.
Как там считается по ядрам или по процессорам?

ПС: А так нужно переписывать запрос почти полностью, беда что там 1.5 строк весь запрос )
8 dk
 
06.09.13
08:26
по ядрам, или точнее по потокам, но 1 поток на ядро
9 Chai Nic
 
06.09.13
08:33
Блин, бесит формулировка "вешает" в смысле "загружает 100%". Зависание - это отказ в обслуживании. А то, что в (0) - нормальное поведение сервера, он РАБОТАЕТ. Что касается "классическая ошибка - куча мелких запросов в цикле", это тоже спорный вопрос - ошибка ли это, или просто задача была поставлена "сделать к вчерашнему вечеру", и программист решил её максимально быстрым способом, не изобретая сложные запросы.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший