Update db.md
This commit is contained in:
parent
2ea948dca4
commit
e3168994bf
12
db.md
12
db.md
|
@ -261,7 +261,17 @@ __Долговечность (durability)__. Независимо от проб
|
|||
+ __Потерянное обновление (lost update)__ — при одновременном изменении одного блока данных разными транзакциями одно из изменений теряется;
|
||||
+ __«Грязное» чтение (dirty read)__ — чтение данных, добавленных или изменённых транзакцией, которая впоследствии не подтвердится (откатится);
|
||||
+ __Неповторяющееся чтение (non-repeatable read)__ — при повторном чтении в рамках одной транзакции ранее прочитанные данные оказываются изменёнными;
|
||||
+ __Фантомное чтение (phantom reads)__ — одна транзакция в ходе своего выполнения несколько раз выбирает множество записей по одним и тем же критериям. Другая транзакция в интервалах между этими выборками добавляет или удаляет записи или изменяет столбцы некоторых записей, используемых в критериях выборки первой транзакции, и успешно заканчивается. В результате получится, что одни и те же выборки в первой транзакции дают разные множества записей.
|
||||
+ __Фантомное чтение (phantom reads)__ — одна транзакция в ходе своего выполнения несколько раз выбирает множество записей по одним и тем же критериям. Другая транзакция в интервалах между этими выборками добавляет или удаляет записи или изменяет столбцы некоторых записей, используемых в критериях выборки первой транзакции, и успешно заканчивается. В результате получится, что одни и те же выборки в первой транзакции дают разные множества записей.
|
||||
Предположим, имеется две транзакции, открытые различными приложениями, в которых выполнены следующие SQL-операторы:
|
||||
|
||||
| Транзакция 1 | Транзакция 2 |
|
||||
|--------------|--------------|
|
||||
| | SELECT SUM(f2) FROM tbl1; |
|
||||
| INSERT INTO tbl1 (f1,f2) VALUES (15,20); | |
|
||||
| COMMIT; | |
|
||||
| | SELECT SUM(f2) FROM tbl1;|
|
||||
|
||||
В транзакции 2 выполняется SQL-оператор, использующий все значения поля f2. Затем в транзакции 1 выполняется вставка новой строки, приводящая к тому, что повторное выполнение SQL-оператора в транзакции 2 выдаст другой результат. Такая ситуация называется чтением фантома (фантомным чтением). От неповторяющегося чтения оно отличается тем, что результат повторного обращения к данным изменился не из-за изменения/удаления самих этих данных, а из-за появления новых (фантомных) данных.
|
||||
|
||||
[к оглавлению](#Базы-данных)
|
||||
|
||||
|
|
Loading…
Reference in New Issue