Архив / DBMSlide07транзакции-блокировки
.pdfБазы данных
Щеголева Л. В.
ПетрГУ
Щеголева Л. В. (ПетрГУ) |
Базы данных |
1 / 12 |
Потерянное обновление
Время |
Транзакция 1 |
Транзакция 2 |
1 |
SELECT f2 FROM tbl1 |
SELECT f2 FROM tbl1 |
|
WHERE f1=1 |
WHERE f1=1 |
2 |
UPDATE tbl1 SET f2=20 |
|
|
WHERE f1=1 |
|
3 |
|
UPDATE tbl1 SET f2=25 |
|
|
WHERE f1=1 |
|
|
|
Щеголева Л. В. (ПетрГУ) |
Базы данных |
2 / 12 |
Незафиксированное чтение
Время Транзакция 1 |
Транзакция 2 |
1SELECT f2 FROM tbl1 WHERE f1=1
2UPDATE tbl1 SET f2=f2+1 WHERE f1=1
3 |
SELECT f2 FROM tbl1 |
|
WHERE f1=1 |
4ROLLBACK
Щеголева Л. В. (ПетрГУ) |
Базы данных |
3 / 12 |
Незафиксированное чтение
Время Транзакция 1 |
Транзакция 2 |
1SELECT f2 FROM tbl1 WHERE f1=1
2UPDATE tbl1 SET f2=f2+1 WHERE f1=1
3 |
SELECT f2 FROM tbl1 |
|
WHERE f1=1 |
4 |
UPDATE tbl1 SET f2=f2+1 |
|
WHERE f1=1 |
5ROLLBACK
Щеголева Л. В. (ПетрГУ) |
Базы данных |
4 / 12 |
Неповторяющееся чтение
Время |
Транзакция 1 |
Транзакция 2 |
1 |
SELECT f2 FROM tbl1 |
SELECT f2 FROM tbl1 |
|
WHERE f1=1 |
WHERE f1=1 |
2UPDATE tbl1 SET f2=f2+1 WHERE f1=1
3COMMIT
4 |
SELECT f2 FROM tbl1 |
|
WHERE f1=1 |
Щеголева Л. В. (ПетрГУ) |
Базы данных |
5 / 12 |
Фантомная вставка
Время |
Транзакция 1 |
Транзакция 2 |
1 |
|
SELECT SUM(f2) FROM tbl1 |
2 |
INSERT INTO tbl1 (f1,f2) |
|
|
VALUES (15,20) |
|
3 |
|
SELECT SUM(f2) FROM tbl1 |
|
|
|
Щеголева Л. В. (ПетрГУ) |
Базы данных |
6 / 12 |
Блокировки
Транзакция А Таблица 1 Таблица 2 Таблица 3 Транзакция В
Щеголева Л. В. (ПетрГУ) |
Базы данных |
7 / 12 |
Блокировки
Транзакция А Таблица 1 Таблица 2 Таблица 3 Транзакция В
Update t1
Щеголева Л. В. (ПетрГУ) |
Базы данных |
7 / 12 |
Блокировки
Транзакция А |
Таблица 1 |
Таблица 2 |
Таблица 3 |
Транзакция В |
Update t1 |
Locked A |
|
|
|
|
|
|
|
|
Щеголева Л. В. (ПетрГУ) |
Базы данных |
7 / 12 |
Блокировки
Транзакция А |
Таблица 1 |
Таблица 2 |
Таблица 3 |
Транзакция В |
Update t1 |
Locked A |
|
|
|
|
|
|
|
Update t3 |
|
|
|
|
|
Щеголева Л. В. (ПетрГУ) |
Базы данных |
7 / 12 |