Изменения документа Транзакции и блокировки

Редактировал(а) Alexandr Fokin 2024/06/01 13:29

<
От версии < 18.8 >
отредактировано Alexandr Fokin
на 2022/11/13 18:44
К версии < 18.6 >
отредактировано Alexandr Fokin
на 2022/10/05 18:36
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -7,17 +7,30 @@
7 7  * Блокировки могут иметь разный типы
8 8  Разрешить чтение, но запретить запись
9 9  Запретить любой доступ
10 -* Одиночные операции, выполняемые вне явной транзакции, тоже выполняются транзакционно
10 +* Одиночные операции, выполняемые вне явной транзакции, тоже использую блокировки
11 11  * При разрыве соединения неподтвержденная транзакция будет прервана (rollback)
12 +
13 +* Блокировки задаются автоматически во время запросов и транзакций.
12 12  * На блокировки можно явно влиять, используя табличные указания.
13 13  * Например блокировку можно взять при select запросе до окончания транзакции. Другие транзакции при попытке взять блокировку на этот объект будут ожидать.
14 -* В случае обнаружения deadlock sql сервер среди 2 транзакций выбирает одну.
16 +* В случае обнаружения deadlock sql сервер среди 2 транзакций выбриает одну.
15 15  Одна продолжит выполнение, а вторая прервется с ошибкой, которую должно обработать приложение. (В том числе возможно попытаться повторить транзакцию, рассчитывая, что в этот раз блокировки не будет или хотя бы она завершиться удачно, для этой транзакции)
16 16  
17 17  ----
18 18  
19 -**[[Блокировки>>doc:Архитектура и модели.Блокировки.WebHome]]**
21 +**Понятие оптимистичной и пессимистичной блокировок.**
20 20  
23 +Оптимистичная:
24 +Берем элемент (не блокируя) (фиксируем version/timestamp)
25 +Производим обработку.
26 +Проверяем, что version/timestamp не изменился. (иначе ошибка/повторная обработка/игнорирования, что исходные данные изменились с момента начала обработки)
27 +Сохраняем элемент.
28 +
29 +Пессимистичная:
30 +Берем элемент. (блокируя его некоторым образом) (в момент блокировки другой обработчик не может получить доступ и ожидает)
31 +Производим обработку.
32 +Сохраняем элемент.
33 +
21 21  ----
22 22  
23 23  Руководство по блокировке и управлению версиями строк транзакций
... ... @@ -41,8 +41,13 @@
41 41  Транзакции
42 42  https://www.flenov.info/books/read/transact-sql/32
43 43  
44 -----
45 45  
58 +Optimistic vs. Pessimistic Locking
59 +https://medium.com/@recepinancc/til-9-optimistic-vs-pessimistic-locking-79a349b76dc8
60 +
61 +Optimistic locking and automatic retry
62 +https://enterprisecraftsmanship.com/posts/optimistic-locking-automatic-retry/
63 +
46 46  DotNetRu | Александр Шелёмин «Concurrency в базах данных»
47 47  https://www.youtube.com/watch?v=a6YzdDFzDl8
48 48