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