| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Аналог NOLOCK в аксаптовском Query
			 
			
			Вкратце. 
		
		
		
		
		
		
		
	В Аксапте написан некоторый класс, который выполняет "быструю" разноску заказа. В классе выполняется запрос который "тормозит" (профайлер показывает, что тормоза идут в query.next()). Такой же запрос "протормаживает" при выполнении его из Квери Аналайзера от MSSQL во время разноски. Модификация запроса и подстановка вместо FROM INVENTSUM A,INVENTDIM B FROM INVENTSUM A(NOLOCK),INVENTDIM B(NOLOCK) приводит к ускорению в примерно в 10 раз Вопрос: есть ли в Аксапте аналог директивы NOLOCK при работе с Query?  | 
| 
	
 | 
| 
			
			 | 
		#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." 
				__________________ 
		
		
		
		
	И все они создания природы...  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хм. 
		
		
		
		
		
		
			Странно, но запрос, выполняемый ч-з QueryRun вызывается как NOLOCK 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Понял! 
		
		
		
		
		
		
			NOLOCK зависит от параметра CashLookup первой таблицы (в данном случае InventSum). Если в CashLookup стоит None или NotInTTS, то запрос идет без NOLOCK. Если Found и выше, то с NOLOCK 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
			
			
			Re: Аналог NOLOCK в аксаптовском Query
			 Цитата: 
	
		
			Изначально опубликовано Maksim  
В Аксапте написан некоторый класс, который выполняет "быструю" разноску заказа. В классе выполняется запрос который "тормозит" (профайлер показывает, что тормоза идут в query.next()). Такой же запрос "протормаживает" при выполнении его из Квери Аналайзера от MSSQL во время разноски. Модификация запроса и подстановка вместо FROM INVENTSUM A,INVENTDIM B FROM INVENTSUM A(NOLOCK),INVENTDIM B(NOLOCK)  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для явного указания хинта (nolock) в Query используется следующий синтаксис 
		
		
		
		
		
		
		
	PHP код: 
	
			
	Хотя, согласен с тем, что использование этого хинта оправдано только и исключительно при формировании отчетов. Если речь идет о модификации данных, то этого следует избегать. Может привести к серьезным ошибкам. Ускорение выполнения запросов - это вопрос существования нужных индексов, грамотного формирования связи между таблицами, задания условий отбора и т.д. и т.п. Использование хинтов, в общем случае, приводит к замедлению, а не к ускорению получения выборки.  | 
| 
	
 | 
| Теги | 
| nolock, query, selectlocked | 
| 
	
	 | 
	
		
  |