Непредсказуемый update (MS SQL 2000)

User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Непредсказуемый update (MS SQL 2000)

Post by Nosferatu »

Помогите, господа! Может кто-нибудь на такие грабли натыкался...

Есть update:

UPDATE i
SET Domain='C'
FROM tblFacilityInventory i
JOIN tblFacilityHierarchy h ON h.FaxId=i.FaxId
JOIN rcvSystemInventory s ON h.Position LIKE s.Position+'.%'
WHERE s.Domain='C'

tblFacilityInventory = ~ 2,200,000 rows
tblFacilityHierarchy= ~ 5,600,000 rows
rcvSystemInventory= ~ 19,000 rows

Ни одна таблица не имеет никаких на нее глядящих foreign keys.

На всех машинах отрабатывает за 5-10 секунд.
На одной машине (гораздо более мощной) не работает вообще - отжирает все 4 CPU под 100% и не дышит.
Данные на всех машинах приблизительно одинаковые. +/- 100,000 rows в первых двух таблицах.

Попробовали разбить так:

SELECT h.FaxId
INTO #tempinv
FROM tmpFacilityHierarchy h
JOIN rcvSystemInventory s ON h.Position LIKE s.Position+'.%'
WHERE s.Domain='C'

UPDATE i
SET Domain='C'
FROM tmpFacilityInventory i
JOIN #tempinv t ON t.FaxId=i.FaxId

Выполняется за 8-10 секунд...

Встречаю подобную аномалию уже третий или четвертый раз.
Это я что-то не так делаю или SQL server?

P.S. Когда выполняется UPDATE или вернее пытался выполниться, врубается параллелизм и в основном процессе CXPACKET может висеть минутами и часами.
P.P.S. Размеры всех баз и транзакшн логов более чем достаточные...

Буду благодарен за любые идеи...
All bubble-blowing babies will be beaten senseless...
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Сравнить план выполнения на аномальной и нормальной машине
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Post by Nosferatu »

Strannik223 wrote:Сравнить план выполнения на аномальной и нормальной машине


Estimated Execution Plan - одинаковый. А реальный сравнить не могу, потому что не могу его получить от висящего update'a.
All bubble-blowing babies will be beaten senseless...
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Мое предположение
На мощной машине используется парралелизм
Может используется на всех, Но на одной это происходит неудачно
Hintами отключите парралелизм для этого запроса
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

Вы ничего не написали про индексы, ничего - про статистику, вернее ее актуальность.

Я бы все-таки советовал дождаться завершения выполнения апдейта на медленной машине и посмотренть планы - хотя если запрос "висит часами" первое про что бы я подумал - блокировки, где-то висит незакрытая транзакция.
Удачи@С.Смирнов
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Блокировакой это быть не может
Написал человек что 4 CPU под 100%
Я такое много раз видел при парралелизме
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Post by Nosferatu »

YellowMan wrote:Вы ничего не написали про индексы, ничего - про статистику, вернее ее актуальность.

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


Да, я забыл написать, что индексы на всех табицах на разных машинах одинаковые.
К таблицам кроме этого update вообще никто не обращается - блокировок там быть не может. Да и вообще, машина которая не может выполнить этот update практически не используется - активность на ней минимальная...
All bubble-blowing babies will be beaten senseless...
User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Post by Nosferatu »

Dmitry67 wrote:Мое предположение
На мощной машине используется парралелизм
Может используется на всех, Но на одной это происходит неудачно
Hintами отключите парралелизм для этого запроса


Из-за того что в Процессах на одном процессе стоит часами CXPACKET - я тоже подозреваю, что может быть дело в параллелизме...
All bubble-blowing babies will be beaten senseless...
User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Post by Nosferatu »

Dmitry67 wrote:Мое предположение
На мощной машине используется парралелизм
Может используется на всех, Но на одной это происходит неудачно
Hintами отключите парралелизм для этого запроса


Из-за того что в Процессах на одном процессе стоит часами CXPACKET - я тоже подозреваю, что может быть дело в параллелизме...
All bubble-blowing babies will be beaten senseless...
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Не томите
Проверить без парралелизма это одна минута
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Post by Nosferatu »

Dmitry67 wrote:Не томите
Проверить без парралелизма это одна минута


Обязательно проверю. Сейчас пока не могу, т.к. на машину данные загружаются...
Отключить параллелизм, я так понимаю, надо с помощью (MAXDOP 1) ?
All bubble-blowing babies will be beaten senseless...
Niky
Уже с Приветом
Posts: 550
Joined: 31 Mar 2000 10:01
Location: Moscow --> Baltimore, MD

Post by Niky »

Вот тут похожая ситуация описана.
User avatar
YellowMan
Уже с Приветом
Posts: 1099
Joined: 30 Sep 1999 09:01
Location: Bryansk,RUSSIA >> Dublin, Ireland

Post by YellowMan »

MAXDOP 1 совершенно верно...
Но блокировками все-же не пренебрегайте - я тоже много раз видел как на базах с выставленными auto growth для лога или данных попытка откусить еще места для базы и одновременный insert/update вгоняли базу в кому на неопределенное время...
Удачи@С.Смирнов
User avatar
Nosferatu
Уже с Приветом
Posts: 936
Joined: 04 Jul 2000 09:01
Location: KZN, RU - ATL, GA

Post by Nosferatu »

YellowMan wrote:MAXDOP 1 совершенно верно...
Но блокировками все-же не пренебрегайте - я тоже много раз видел как на базах с выставленными auto growth для лога или данных попытка откусить еще места для базы и одновременный insert/update вгоняли базу в кому на неопределенное время...


Да... Но 100% на всех CPU без особой дисковой активности?
All bubble-blowing babies will be beaten senseless...
alex_127
Уже с Приветом
Posts: 7723
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Post by alex_127 »

Nosferatu wrote:Да... Но 100% на всех CPU без особой дисковой активности?


нехорошо это как-то... а можно схему табличек, план и так далее? Можно PM - попробуем разобраться... На тестовом сервере у вас это тоже случается?

Return to “Вопросы и новости IT”