|
![]() |
#1 |
Участник
|
Из приведенного описания можно сделать такие выводы:
Ax3sp3 Внутри открытой транзакции все запросы, по умолчанию, не явно, добавляют хинт forupdate и блокируют считываемую запись Ax4sp2 Либо криво написан метод aTable::find(), либо не работает настройка aTable.selectForUpdate(_update);. |
|
![]() |
#2 |
Участник
|
Сомнительно (автор указал что записи со значением 200 - нет - если блокировка на запись накладывается, то блокироваться нечему). Скорее там блокировка лишняя накладывается где-то, напрмер на страницу или таблицу. А реально надо смотреть на сервак что происходит. К сожалению нет под рукой SQL2005
Последний раз редактировалось Logger; 30.09.2008 в 11:36. |
|
![]() |
#3 |
Участник
|
1. В методах find на таблицах часто используется конструкция:
X++: ... myTable.SelectForUpdate(update); select myTable where myKey = key; ... В Ax3sp3 : при выполнении сразу блокируется запись (страница, таблица) на обновление, т.е. в запросе на SQL сервер присутствует хинт UPDLOCK. В Ax4sp2 : такой блокировки не происходит. 2. В Ax3sp3, при настройках по умолчанию, вне транзакции используется грязное чтение (READ UNCOMMITED), а внутри чистое (READ COMMITED) В Ax4sp2 : используется только чистое чтение (READ COMMITED) |
|
Теги |
производительность, ax3.0, ax4.0 |
|
|