Исходный код вики Уровни изоляции | Isolation levels

Версия 5.2 от Alexandr Fokin на 2023/12/16 14:01

Скрыть последних авторов
Alexandr Fokin 1.13 1 ===== Уровни изоляции =====
2
Alexandr Fokin 2.11 3 |(% style="width:198px" %)**Уровень**|(% style="width:217px" %)**Аномалия**|(% style="width:1077px" %)**Описание аномалии**
4 |(% style="width:198px" %) |(% style="width:217px" %)Потерянные изменения
5 Lost Update|(% style="width:1077px" %)Последовательное обновление строки таким образом, что последнее изменение полностью не учитывает результаты предыдущего и перезаписывает их.
6 |(% style="width:198px" %)READ UNCOMMITTED|(% style="width:217px" %)Грязное чтение
7 Dirty read|(% style="width:1077px" %)(((
Alexandr Fokin 2.3 8 Считывания из БД данных, которые являются промежуточными или отмененными в будущем.
9 Чтение изменений, которые внесены активными транзакциями, и на текущий момент еще не закомичены.
Alexandr Fokin 1.15 10 )))
Alexandr Fokin 2.11 11 |(% style="width:198px" %)READ COMMITTED|(% style="width:217px" %)Неповторяющееся чтение
12 Non-repeatable read|(% style="width:1077px" %)(((
Alexandr Fokin 2.4 13 В рамках транзакции при повторном чтении данных, отобразятся все изменения, выполненные и закомиченные другими транзакциями.
Alexandr Fokin 2.3 14 )))
Alexandr Fokin 2.11 15 |(% colspan="1" rowspan="2" style="width:198px" %)REPEATABLE READ|(% style="width:217px" %)Фантомное чтение
16 Phantom reads|(% style="width:1077px" %)В рамках транзакции при повторном чтении данных, может меняться кол-во строк
Alexandr Fokin 2.9 17 (Может быть связано с добавлением новых строк или изменение существующих таким образом, что они начали попадать в выборку.
Alexandr Fokin 2.11 18 |(% style="width:217px" %)(((
Alexandr Fokin 2.5 19 Аномалия сериализации
20 (% style="background-color:transparent" %)Serialization anomaly
Alexandr Fokin 2.11 21 )))|(% style="width:1077px" %)(((
Alexandr Fokin 3.1 22 В [[PostgreSQL>>doc:Разработка.NET.Работа с БД.EntityFramework | EntityFrameworkCore.EF провайдеры.Provider PostgreSQL.WebHome]] на данном уровне изоляции не возникает аномалии Phantom reads. Но может возникнуть данная аномалия.
Alexandr Fokin 2.6 23
Alexandr Fokin 4.1 24 При использовании теста из документации [[PostgreSQL>>doc:Разработка.NET.Работа с БД.EntityFramework | EntityFrameworkCore.EF провайдеры.Provider PostgreSQL.WebHome]] на текущем уровне изоляции, аномалия также проявилась в [[MSSQL>>doc:Разработка.Базы данных 2.SQL.MSSQL.WebHome]].
Alexandr Fokin 2.6 25 )))
Alexandr Fokin 2.11 26 |(% style="width:198px" %)SERIALIZABLE|(% style="width:217px" %)-|(% style="width:1077px" %)(((
27 Выполнение происходит так, словно транзакции выполняются последовательно одна за другой в некотором порядке (при этом не влияя друг на друга).
28
29 Полное отсутствие перечисленных выше аномалий.
Alexandr Fokin 1.12 30 Повторное прочтение данных всегда возвращает одинаковые результат.
Alexandr Fokin 2.11 31 )))
Alexandr Fokin 1.1 32
33 ----
34
Alexandr Fokin 2.1 35 ===== Подходы к реализации изоляции. =====
Alexandr Fokin 1.1 36
Alexandr Fokin 1.13 37 (% style="width:404px" %)
38 |(% style="width:286px" %) |(% style="width:113px" %)Реализация
39 |(% style="width:286px" %)Изоляции на основе блокировок|(% style="width:113px" %)
40 |(% style="width:286px" %)Протокол изоляции на основе снимков
Alexandr Fokin 2.1 41 Snapshot Isolation|(% style="width:113px" %)[[MVCC>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.Уровни изоляции | Isolation levels.MVCC.WebHome]]
Alexandr Fokin 1.13 42
Alexandr Fokin 1.1 43 ----
44
Alexandr Fokin 1.18 45 ==== Внутренние ссылки: ====
46
47 ====== Дочерние страницы: ======
48
49 {{children/}}
50
51 ====== Обратные ссылки: ======
52
53 {{velocity}}
54 #set ($links = $doc.getBacklinks())
55 #if ($links.size() > 0)
56 #foreach ($docname in $links)
57 #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument())
58 * [[$escapetool.xml($rdoc.fullName)]]
59 #end
60 #else
61 No back links for this page!
62 #end
63 {{/velocity}}
64
65 ----
66
Alexandr Fokin 1.1 67 Уровни изоляции и несогласованность данных
68 [[http:~~/~~/www.t-sql.ru/post/nolock.aspx>>url:http://www.t-sql.ru/post/nolock.aspx]]
69
Alexandr Fokin 5.1 70 [[PostgreSQL>>doc:Разработка.Базы данных 2.SQL.PostgreSQL.WebHome]]: Documentation: 15: 13.2. Transaction Isolation
Alexandr Fokin 1.8 71 [[https:~~/~~/www.postgresql.org/docs/current/transaction-iso.html>>https://www.postgresql.org/docs/current/transaction-iso.html]]
72
Alexandr Fokin 2.10 73 К чему может привести ослабление уровня изоляции транзакций в базах данных
74 [[https:~~/~~/habr.com/ru/company/otus/blog/501294/>>https://habr.com/ru/company/otus/blog/501294/]]
75
Alexandr Fokin 1.10 76 ----
77
78 ept/hermitage
79 Hermitage: Testing transaction isolation levels
80 [[https:~~/~~/github.com/ept/hermitage>>https://github.com/ept/hermitage]]
Alexandr Fokin 1.4 81
82 Consistency Models
83 [[https:~~/~~/jepsen.io/consistency>>https://jepsen.io/consistency]]