Skip to content

Commit e316899

Browse files
KhArtNJavaenhorse
authored andcommitted
Update db.md
1 parent 2ea948d commit e316899

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

db.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,17 @@ __Долговечность (durability)__. Независимо от проб
261261
+ __Потерянное обновление (lost update)__ — при одновременном изменении одного блока данных разными транзакциями одно из изменений теряется;
262262
+ __«Грязное» чтение (dirty read)__ — чтение данных, добавленных или изменённых транзакцией, которая впоследствии не подтвердится (откатится);
263263
+ __Неповторяющееся чтение (non-repeatable read)__ — при повторном чтении в рамках одной транзакции ранее прочитанные данные оказываются изменёнными;
264-
+ __Фантомное чтение (phantom reads)__ — одна транзакция в ходе своего выполнения несколько раз выбирает множество записей по одним и тем же критериям. Другая транзакция в интервалах между этими выборками добавляет или удаляет записи или изменяет столбцы некоторых записей, используемых в критериях выборки первой транзакции, и успешно заканчивается. В результате получится, что одни и те же выборки в первой транзакции дают разные множества записей.
264+
+ __Фантомное чтение (phantom reads)__ — одна транзакция в ходе своего выполнения несколько раз выбирает множество записей по одним и тем же критериям. Другая транзакция в интервалах между этими выборками добавляет или удаляет записи или изменяет столбцы некоторых записей, используемых в критериях выборки первой транзакции, и успешно заканчивается. В результате получится, что одни и те же выборки в первой транзакции дают разные множества записей.
265+
Предположим, имеется две транзакции, открытые различными приложениями, в которых выполнены следующие SQL-операторы:
266+
267+
| Транзакция 1 | Транзакция 2 |
268+
|--------------|--------------|
269+
| | SELECT SUM(f2) FROM tbl1; |
270+
| INSERT INTO tbl1 (f1,f2) VALUES (15,20); | |
271+
| COMMIT; | |
272+
| | SELECT SUM(f2) FROM tbl1;|
273+
274+
В транзакции 2 выполняется SQL-оператор, использующий все значения поля f2. Затем в транзакции 1 выполняется вставка новой строки, приводящая к тому, что повторное выполнение SQL-оператора в транзакции 2 выдаст другой результат. Такая ситуация называется чтением фантома (фантомным чтением). От неповторяющегося чтения оно отличается тем, что результат повторного обращения к данным изменился не из-за изменения/удаления самих этих данных, а из-за появления новых (фантомных) данных.
265275

266276
[к оглавлению](#Базы-данных)
267277

0 commit comments

Comments
 (0)