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

Откуда: Магадан
Сообщений: 205
Добрый день.

Сервер
Microsoft SQL Server  2000 - 8.00.2039 (Intel X86) 
	May  3 2005 23:18:38 
	Copyright (c) 1988-2003 Microsoft Corporation
	Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Не так давно началось, что вдруг, в случайные моменты времени, резко подскакивает счётчик Disk Read, при этом все остальные остаются на нормальных средних значениях. Avg Disk Queue Length уходит в облака, SQL сервер начинает жутко тормозить, запросы выполняются по минуте. Вот select @@version выполнялся 3,5 секунды например.

Не удалось установить никакой связи между этим явлением и нагрузкой на сервер. В самый разгар работы всё может быть прекрасно, и наоборот, в самое спокойное время может начаться.

Джобов новых не добавляли, ничего не переделывали. Вот не было, и началось непонятно почему.
Куда смотреть?
9 июн 09, 13:56    [7280778]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Crimean
Member

Откуда:
Сообщений: 13148
1) нет ли приложения кроме SQL Server, которому нужны диски
2) если на (1) ответ "нет" - профайлер вам в руки
9 июн 09, 14:16    [7280942]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Скорее всего нет.

Во всяком случае мне так кажется и мне неизвестно о таких приложениях, установленных на сервере.
Вот в task manager столбцы I/O Reads и I/O Read Bytes, там у SQL Server миллионы и миллиарды соответственно, у ближайшего преследователя десяток тысяч.

Профайлер мне наверное в руки, да. Но что им отслеживать, я, например, не представляю совершенно. (DBA у нас нет и не предвидится.) Т.е. я просмотрел список доступных для отслеживания показателей в профайлере, и чисто по логике ничего не нашёл связанного с этой проблемой. Поэтому и хотелось бы спросить, куда именно смотреть в профайлере.
9 июн 09, 14:27    [7281032]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Crimean
Member

Откуда:
Сообщений: 13148
GSerg
Скорее всего нет.

Во всяком случае мне так кажется и мне неизвестно о таких приложениях, установленных на сервере.
Вот в task manager столбцы I/O Reads и I/O Read Bytes, там у SQL Server миллионы и миллиарды соответственно, у ближайшего преследователя десяток тысяч.

Профайлер мне наверное в руки, да. Но что им отслеживать, я, например, не представляю совершенно. (DBA у нас нет и не предвидится.) Т.е. я просмотрел список доступных для отслеживания показателей в профайлере, и чисто по логике ничего не нашёл связанного с этой проблемой. Поэтому и хотелось бы спросить, куда именно смотреть в профайлере.


оставлять события только батч комплит и рпц комплит
данные по умолчанию
давать работать заранее до и слегка после проблемного времени
результат сливать в таблицу
данные группировать по времени, смотреть на суммы reads ессно
если пик совпадет с аппаратным - смотреть какие запросы его формируют
9 июн 09, 14:29    [7281049]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 501
GSerg
резко подскакивает счётчик Disk Read
% Disk Read Time
Disk Read Bytes/sec
Disk Reads/sec
Который из них подскакивает ?
9 июн 09, 14:31    [7281063]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Gerros
% Disk Read Time
Disk Read Bytes/sec
Disk Reads/sec
Который из них подскакивает ?

Синхронно все (эти плюс Avg Disk Queue).

Crimean
...

Спасибо, попытаюсь попробовать.
9 июн 09, 14:36    [7281124]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 501
Если контора небольшая: когда в следующий раз начнёт тормозить - пойти к бухам\аналитикам\продажникам и посмотреть что у них на мониторах - небось отчёт какой-то строят (за год, например).
9 июн 09, 15:14    [7281408]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Gerros
Если контора небольшая: когда в следующий раз начнёт тормозить - пойти к бухам\аналитикам\продажникам и посмотреть что у них на мониторах - небось отчёт какой-то строят (за год, например).

А тут все навиду.
Ход работы не меняется в течение дня, никаких особенных отчётов, запускаемых иногда, в общем нет. Проблема возникает словно сама по себе. Вот в 10 утра как начнётся и минут 40 продлится. На следующий день, там, в 11:15 и на полчаса.

Два самых жестких наших запроса, которые вызывают скан по 800000 записей, на графике IO отражаются маленькими локальными пиками до 30 где-то. С чего прыгает до границы графика и держится там, я не понимаю.
9 июн 09, 15:20    [7281461]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 887
Может у тебя индексы перестраиваются, или обновление статистики. Джобы свои есть? посмотри что они делают и как выполняются?
9 июн 09, 20:19    [7283115]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 501
GSerg,
реально был случай - главбух в генераторе отчётов в контроле "начало периода" вместо текущего года по ошибке поставил прошлый. И все отчёты генерил не за месяц, а за год... :)
Если двухзвенка - в момент тормозов сделай sp_lock и sp_who.
10 июн 09, 01:21    [7283617]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Slava_Nik
Может у тебя индексы перестраиваются, или обновление статистики. Джобы свои есть? посмотри что они делают и как выполняются?

Джобы свои есть.
Но я уже писал, что их содержимое и расписание не менялись с тех пор, как всё было хорошо. Да и не работает из них ни один в период проблемы.

Gerros
sp_lock и sp_who

Дык картина одинаковая в каждый момент времени, список работающих не меняется весь день. Также, проблема не во взаимных блокировках. Поэтому неинформативно получается sp_lock и sp_who.


Такой вопрос по профайлеру.
Что считать большими, а что нормальными показателями Reads?
Вот, например, регулярно вижу запросы с Reads около 70000. При их выполнении график Reads в Performance Monitor немного поднимается от плинтуса, если сервер ведёт себя нормально.
Вот запрос с Reads около 5000. Выполнялся 40 секунд. Но это же потому, что сервер тормозит в данный момент, а не потому, что запрос злостный. Запрос закончился, а сервер продолжил тормозить и занимался этим ещё пару минут.
В общем, непонятно, как найти причину при этом всём, т.к. неясно, что, собственно, причина, а что следствие.
10 июн 09, 13:29    [7285505]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Посмотрите на дисковую активность процессов в Perfmone - возможно это не sql диск грузит.
10 июн 09, 13:47    [7285620]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
DeColo®es
Посмотрите на дисковую активность процессов в Perfmone - возможно это не sql диск грузит.

Думаю, всё же SQL Server. За проблемные полчаса процесс sqlservr.exe вычитал 40 ГБ (до этого было 3 ГБ).
10 июн 09, 13:54    [7285660]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Crimean
Member

Откуда:
Сообщений: 13148
просто постройте график reads по времени и сравните с данными мониторинга
10 июн 09, 14:08    [7285733]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Кажется находится.
Во всяком случае, других вариантов я не вижу.
Либо сервер с ума сходит по утрам, либо один известный нам товарищ воткнул в один аппликейшн местного разлива дополнительный запрос, про который я не знал и который наверняка полезен, но вызывает распараллеленный скан 2.5 млн строк (и используется по утрам). В приципе запустил его в свободное время, вроде бы это он.
10 июн 09, 14:15    [7285774]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
И теперь последний по этой теме вопрос.

Запрос, который вызывает тормоза:
SELECT ...
FROM SL_PL_NL_DETAIL
WHERE DET_TYPE='CRN' AND DET_STOCK_CODE='84387'
ORDER BY DET_DATE DESC
Индексов по DET_TYPE и DET_STOCK_CODE нет и создать их нельзя.

План выполнения этого запроса -- распараллеленный скан всего кластерного индекса, 2.5 млн. записей.


Была выдвинута мысль фильтровать по дате, благо по полю DET_DATE индекс есть, а глубоко в прошлое данные не нужны:
SELECT ...
FROM SL_PL_NL_DETAIL
WHERE DET_TYPE='CRN' AND DET_STOCK_CODE='84387' and DET_DATE >= dateadd(ww,-4,getdate())
ORDER BY DET_DATE DESC
План выполнения такого запроса -- ровно тот же скан. Допускаю, с учётом того, что под условие даты подпадают примерно 90000 записей.


Вводим в запрос принудительный индекс -- with (index(DET_DATE)).
Теперь план выполнения -- распараллеленный seak по индексу с последующим распараллеленным bookmark lookup (на который приходится 100% стоимости запроса) и filter по остальным полям.


Сравниванием оба варианта (с принудительным индексом и без).
Сервер заявляет, что полный скан -- это 5% of the batch, а индекс, соответственно, 95%. Действительно, абсолютное значение IO Cost у варианта с принудительным индексом примерно 2300, в то время как у скана примерно 150.

Но эмпирически очевидно, что принудительный индекс выдаёт результат за 1-4 секунды (против 40 секунд скана), причём при использовании индекса графики Performance Monitor остаются в нормальных значениях, а при скане взлетают вверх. Опять же, остальные пользователи базы не замечают, когда запускается "принудительный" запрос, а когда запускаются скан, приходят интересоваться, не играемся ли мы тут с базой опять.

Поэтому вопрос -- игнорировать мнение сервера по поводу стоимости запроса?
Или есть какие-то хитрые штрафы, которые мне не очевидны?
11 июн 09, 13:11    [7289946]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5181
GSerg,

попробуйте прогнать с OPTION (MAXDOP 1)
11 июн 09, 13:13    [7289969]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
komrad
OPTION (MAXDOP 1)

Абсолютно ничего не меняется.
То есть параллельность исчезает, но картина остаётся той же.
11 июн 09, 13:16    [7289994]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Crimean
Member

Откуда:
Сообщений: 13148
> Индексов по DET_TYPE и DET_STOCK_CODE нет и создать их нельзя

если сиквел EE то делаете представление и индекс вешаете на него :)
оптимизатор умный, смекнет
но ессно модификация основной таблицы просядет на немного
11 июн 09, 13:35    [7290117]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
Crimean
если сиквел EE то делаете представление и индекс вешаете на него :)

Нет, стандартный он.
И придётся делать cross-DB тогда (нельзя менять всю ту базу, только читать).


Я это. Про стоимость. Почему эффект такой? Стоит ли игнорировать заявленную сервером высокую стоимость запроса, если реально он в 10 раз быстрее и не грузит ничего?
11 июн 09, 13:42    [7290165]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5181
GSerg

Я это. Про стоимость. Почему эффект такой? Стоит ли игнорировать заявленную сервером высокую стоимость запроса, если реально он в 10 раз быстрее и не грузит ничего?

поддерживайте актуальную статистику, индексы
и используйте ваш принудительный индекс

имхо
11 июн 09, 14:09    [7290355]     Ответить | Цитировать Сообщить модератору
 Re: Disk Read неожиданно вырастает  [new]
Crimean
Member

Откуда:
Сообщений: 13148
тот запрос без указанных индексов будет сканить всю таблицу
если все совсем так плохо - киньте реплику и пускайте такие запросы на копию базы, где делайте любые индексы
или вообще ОЛАП начинайте прикручивать
потому как задачи получения отчетов без индексов не решаются никада
11 июн 09, 15:09    [7290843]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить