Показать сообщение отдельно
Старый 17.05.2006, 16:07   #11  
Torin is offline
Torin
Участник
 
127 / 31 (2) +++
Регистрация: 10.03.2003
Адрес: Odessa, Ukraine
Цитата:
Сообщение от Logger
Torin, мне кажется что вы невнимательно прочитали вопрос. Подобная проблема по идее должна возникать и в SQL2000
Движок базы данных не важен.

Если перебор идет по номерам строк, а товары набивались в разном порядке то
в заказе 1 номенклатуры могут перебираться так
Номенклатура1 затем Номенклатура2

а в заказе 2 :
Номенклатура2 затем Номенклатура1

Очевидно что независимо от базы данных при интенсивной работе вероятность мертвой блокировки высока.

А если при переборе строк сортировать по ItemId то мертвой блокировки возникнуть не может.

Вопрос в том почему в Аксапте стоит сортировка по LineNum. Из соображений оптимизации производительности напрашивается сортировка по ItemId.
Не совсем.
1) Реализация оптимизаторов настолько разная, что лучьше разбираться отдельно, и не держать " в уме"
2) Обход SalesLine по LineNum, кстати, очень логичен ;-) - все транзации движуться в одном направлении.
3) Вопрос в том, каким должен быть обход InventSum - очевидно, совсем другим ;-), как правильно замечено по аналитикам. Тут, конечно, сразу предполагаем, что
а) Блокируються и индексы и страницы данных поразному
б) Какие индексы, собственно, есть, потому что блокируються все (или нет - зависит от базы)
в) Каков план доступа к записи (если неправильный индекс, то дольше транзация и меньше параллелизм)
Например, у меня в InventSum есть индекс
DATAAREAID (ASC), ITEMID (ASC), INVENTDIMID (ASC)
Используется ли он ? Я не знаю. кластерного нет, хинтов нет, значит решает оптимизатор. Какой он выбрал ?. Какие еще индексы заблокируються ? Что именно заблокировано ? Последний, вопрос, кстати, самый важный - на чем дедлок ловиться. Посмотрите - подумаем дальше.