|
07.10.2019, 12:03 | #1 |
Участник
|
Цитата:
Сообщение от Logger
Да.
Про RR не совсем понял вопрос. Платформа (exe-ник) ведет счетчик вложенности транзакций. И обеспечивает запуск системных X++ методов при открытии транзакции и при закрытии (т.е. когда счетчик скачет между 0 и 1). А программист решения уже использовал эту особенность и вставил X++ код чтобы выполнить все конкурентные действия перед последним коммитом. На этом пожалуй все. Дальше все было написано в самом решении на X++. Но тут еще нужно помнить, что Аксапта не продается никогда как голая платформа и всегда в поставке идет код библиотек на X++ - т.е. для покупателей аксапты для создания своих решений системный код на X++ как бы тоже является платформой. Про платформу и решение я понимаю. Меня интересует именно на каком уровне сама платформа, если я захочу что-то доработать / разработать. |
|
07.10.2019, 12:28 | #2 |
Участник
|
Цитата:
Но программист может в X++ выставлять флажки и влиять на некоторые параметры (хинт NoLock, ReadPast) Можно-ли установить уровень изоляции транзакции ? уровни изоляции Чтение только завершенных транзакций. |
|
07.10.2019, 12:36 | #3 |
Участник
|
Цитата:
Сообщение от Logger
В транзакции всегда используется Read committed. Уровень изоляции выставляет ядро.
Но программист может в X++ выставлять флажки и влиять на некоторые параметры (хинт NoLock, ReadPast) Можно-ли установить уровень изоляции транзакции ? уровни изоляции Чтение только завершенных транзакций. |
|
07.10.2019, 13:33 | #4 |
Участник
|
Цитата:
Есть еще много частных случаев - например в случае остатков, они не меняются при обработке документа, вместо этого создается лог изменений и по событию окончания транзакции этот лог записывается в основную таблицу. Вот еще несколько частных случаев - https://denistrunin.com/understanding-sql-blocking Последний раз редактировалось trud; 07.10.2019 в 13:36. |
|
07.10.2019, 14:29 | #5 |
Участник
|
Цитата:
Сообщение от trud
В READ COMMITED SNAPSHOT блокировок вообще нет. т.е. в общем случае предполагается что если у вас 2 сессии меняют одно и тоже, то у вас что-то не в порядке с бизнес процессами и одна из сессий при попытке сохранения записи получит сообщение о ошибке - "Запись изменена другим пользователем, обновите форму".
Есть еще много частных случаев - например в случае остатков, они не меняются при обработке документа, вместо этого создается лог изменений и по событию окончания транзакции этот лог записывается в основную таблицу. Вот еще несколько частных случаев - https://denistrunin.com/understanding-sql-blocking |
|