|  06.04.2006, 18:01 | #1 | 
| Участник | уровни изоляции 
			
			Привет вопрос навеян топиком: Как посмотреть уровень изоляции , где написано: Цитата: 
		
			Для чтения данных в формах (визуализация средствами ядра) обычно используется SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED Для чтения данных в транзакции (в коде) обычно используется SET TRANSACTION ISOLATION LEVEL READ COMMITTED, если хинта NOLOCK не было. и не "отлавливать", а фильтр поставить... В мониторе... " Экперимент у меня (ах2.5) показал,что так оно и есть получается.. Имеем, что каждый чих надо обертывать в транзакции иначе можно наиметь неприятностей ? | 
|  | 
|  07.04.2006, 10:33 | #2 | 
| Участник | 
			
			Если не ошибаюсь, то вне транзакции Аксапта может послать на сиквел хинт noLock даже если мы явно не прописали его в запросе. Это верно для каких-то типов кеширования таблиц. Для каких именно не помню. Можно просто поэкспериментировать и проверить.
		 | 
|  | 
|  07.04.2006, 10:36 | #3 | 
| Участник | Цитата: 
		
			Сообщение от kitty
			
			 Имеем, что каждый чих надо обертывать в транзакции иначе можно наиметь неприятностей ? Просто большинство запросов идет не на обновление данных а просто на чтение. И хинт NoLock в таком случае очень полезен для MS SQL - меньше блокировок. | 
|  | 
|  07.04.2006, 13:08 | #4 | 
| Moderator | Цитата: 
		
			Имеем, что каждый чих надо обертывать в транзакции иначе можно наиметь неприятностей ?
		
	 | 
|  | 
|  07.04.2006, 14:36 | #5 | 
| Участник | 
			
			Получается, что когда мы используем в классе вызываемом по кнопке с формы (чо-нить вычисляющий) args.record(), то по идее надо каждый раз в этом классе внутри транзакции перевыбирать эту запись, так как попасть иначе в расчеты могут абсолютно непредсказаемые данные .....
		 | 
|  | 
|  07.04.2006, 14:49 | #6 | 
| Moderator | Цитата: 
		
			надо каждый раз
		
	   | 
|  | 
|  07.04.2006, 15:45 | #7 | 
| Участник | 
			
			поразвожу демагогию касательно rollback: как оценить часто они происходят или нет? инструментов таких в sql server я не знаю(ну если не анализировать всей базы  )... Но даже если бы и был , то был бы не показательным. Просто чисто rollback нам ничего не говорит. Даже если его сравнить с общим количеством транзакции за тот же промежуток времени. Чтобы это было показательным, надо было бы смотреть не просто количество rollback-ов , а число таких rollback, что есть/были другие транзакции претендовавшие или использовавшие ресурсы(в первую очередь таблицы), которых касалась та транзакция, в которой произошел rollback...Тогда можно оценить на сколько существенную роль может играть грязное чтение. Но так как это на сколько я понимаю не реально, то могу просто поискать по aot вызовы throw error(хотя, как выбрать только те, что в трензакциях) и ttsabort.Но тут еще роль будет играть то, в каком функционале они прописаны и сколько пользователей обычно пользуются одновременно теми таблицами, что используются в этом куске кода, даже если и из другого функционала. Это мне тоже представляется нереальным. По идее, наверное, вопрос исчерпан... Всем спасибо за разъяснения. Единственное, что хотелось бы уточнить, на больших внедрениях с большим количеством пользователей, часто возникают ошибки, связанные с упомянутым выше "грязным чтением" или все солнечно и приятно работает? | 
|  | 
|  07.04.2006, 15:46 | #8 | 
| Участник | 
			
			"ну если не анализировать всей базы " слдеует читать: "ну если не анализировать логи всей базы"   (в предыдущем посте накосячила ) | 
|  | 
|  07.04.2006, 15:58 | #9 | 
| Участник | Цитата: 
		
			Сообщение от Андре
			
			 Оборачивая наш код в ttsbegin...tts(commit)/(abort) мы говорим SQL Server-у установить еще одну X-блокировку. | 
|  | |
| За это сообщение автора поблагодарили: alex55 (1). | |
|  07.04.2006, 16:04 | #10 | 
| Moderator | Цитата: 
		
			Единственное, что хотелось бы уточнить, на больших внедрениях с большим количеством пользователей, часто возникают ошибки, связанные с упомянутым выше "грязным чтением" или все солнечно и приятно работает?
		
	 Собственно, я к этому и задал свой вопрос: Цитата: 
		
			 И потом, у вас часто rollback в системе происходит?
		
	 В общем, поэтому то я и писал о том, что "применять транзакции на каждый чих" не стоит. | 
|  | 
|  07.04.2006, 16:12 | #11 | 
| Moderator | Цитата: 
		
			По идее X должен быть только при forUpdate а если просто чтение, то S - разве не так?
		
	 | 
|  | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Можно-ли установить уровень изоляции транзакции ? | 12 | |||
| Как посмотреть уровень изоляции | 17 | |||
| OLAP. Как "обновить" уровни? | 1 | |||
| Минимальные уровни запасов помесячно | 11 | |||
| 
 |