|
![]() |
#1 |
Участник
|
А, ну вот я и пашел себе своей дорогой, раз Оракл ;-)
Сори, тут я некомпетентен. Просто советую к специалистам "заходить" с планом выполнения запроса и статистикой по индексам. Иначе такой народ просто не будет помогать, термины "подозреваю" потусторонни в данном случае. Это из моего опыта тюнинга под Сиквел. Бывают очень даже неожиданные варианты. |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Torin
А, ну вот я и пашел себе своей дорогой, раз Оракл ;-)
Сори, тут я некомпетентен. Просто советую к специалистам "заходить" с планом выполнения запроса и статистикой по индексам. Иначе такой народ просто не будет помогать, термины "подозреваю" потусторонни в данном случае. Это из моего опыта тюнинга под Сиквел. Бывают очень даже неожиданные варианты. Torin, мне кажется что вы невнимательно прочитали вопрос. Подобная проблема по идее должна возникать и в SQL2000 Движок базы данных не важен. Если перебор идет по номерам строк, а товары набивались в разном порядке то в заказе 1 номенклатуры могут перебираться так Номенклатура1 затем Номенклатура2 а в заказе 2 : Номенклатура2 затем Номенклатура1 Очевидно что независимо от базы данных при интенсивной работе вероятность мертвой блокировки высока. А если при переборе строк сортировать по ItemId то мертвой блокировки возникнуть не может. Вопрос в том почему в Аксапте стоит сортировка по LineNum. Из соображений оптимизации производительности напрашивается сортировка по ItemId. Последний раз редактировалось Logger; 17.05.2006 в 15:32. |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от Logger
Вопрос в том почему в Аксапте стоит сортировка по LineNum. Из соображений оптимизации производительности напрашивается сортировка по ItemId.
|
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от ALES
Из соображений пользовательского интерфейса стоит lineNum, а о производительности "Damgaard" местами совсем не думал..
Для пользователя можно в SalesTable на датасорсе указать индекс SalesLineIdx и она будет строчки по порядку показывать - да так по моему и сделали. А при обработке можно использовать другой индекс. Так что тут программисты не ограничены ничем и исправление делается в два счета. Кроме того я бы не сказал что разработчики аксапты забили на производительность. Судя по коду на это не похоже. Мне кажется что сортировка по LineNum имеет какой то смысл. Ну либо проглючили проггеры. С кем не бывает. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Logger
Почему вы так решили ?
|
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от 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) Используется ли он ? Я не знаю. кластерного нет, хинтов нет, значит решает оптимизатор. Какой он выбрал ?. Какие еще индексы заблокируються ? Что именно заблокировано ? Последний, вопрос, кстати, самый важный - на чем дедлок ловиться. Посмотрите - подумаем дальше. |
|