11.10.2005, 08:47 | #1 |
Участник
|
Аналог NOLOCK в аксаптовском Query
Вкратце.
В Аксапте написан некоторый класс, который выполняет "быструю" разноску заказа. В классе выполняется запрос который "тормозит" (профайлер показывает, что тормоза идут в query.next()). Такой же запрос "протормаживает" при выполнении его из Квери Аналайзера от MSSQL во время разноски. Модификация запроса и подстановка вместо FROM INVENTSUM A,INVENTDIM B FROM INVENTSUM A(NOLOCK),INVENTDIM B(NOLOCK) приводит к ускорению в примерно в 10 раз Вопрос: есть ли в Аксапте аналог директивы NOLOCK при работе с Query? |
|
11.10.2005, 08:56 | #2 |
NavAx
|
грхм... намекну:
а не будет ли МУЧИТЕЛЬНО БОЛЬНО потом? Подумайте. Хинт: "Do not issue shared locks and do not honor exclusive locks. When this option is in effect, it is possible to read an uncommitted transaction or a set of pages that are rolled back in the middle of a read. Dirty reads are possible."
__________________
И все они создания природы... |
|
11.10.2005, 09:23 | #3 |
Участник
|
Хм.
Странно, но запрос, выполняемый ч-з QueryRun вызывается как NOLOCK
__________________
Axapta v.3.0 sp5 kr2 |
|
11.10.2005, 09:39 | #4 |
Участник
|
Понял!
NOLOCK зависит от параметра CashLookup первой таблицы (в данном случае InventSum). Если в CashLookup стоит None или NotInTTS, то запрос идет без NOLOCK. Если Found и выше, то с NOLOCK
__________________
Axapta v.3.0 sp5 kr2 |
|
11.10.2005, 09:52 | #5 |
Модератор
|
Re: Аналог NOLOCK в аксаптовском Query
Цитата:
Изначально опубликовано Maksim
В Аксапте написан некоторый класс, который выполняет "быструю" разноску заказа. В классе выполняется запрос который "тормозит" (профайлер показывает, что тормоза идут в query.next()). Такой же запрос "протормаживает" при выполнении его из Квери Аналайзера от MSSQL во время разноски. Модификация запроса и подстановка вместо FROM INVENTSUM A,INVENTDIM B FROM INVENTSUM A(NOLOCK),INVENTDIM B(NOLOCK) |
|
11.10.2005, 11:49 | #6 |
Участник
|
Для явного указания хинта (nolock) в Query используется следующий синтаксис
PHP код:
Хотя, согласен с тем, что использование этого хинта оправдано только и исключительно при формировании отчетов. Если речь идет о модификации данных, то этого следует избегать. Может привести к серьезным ошибкам. Ускорение выполнения запросов - это вопрос существования нужных индексов, грамотного формирования связи между таблицами, задания условий отбора и т.д. и т.п. Использование хинтов, в общем случае, приводит к замедлению, а не к ускорению получения выборки. |
|
Теги |
nolock, query, selectlocked |
|
|