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 |
|