Учебно-практическое пособие москва 2017 ббк


BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE



Pdf көрінісі
бет204/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   200   201   202   203   204   205   206   207   ...   243
Байланысты:
Язык SQL. Базовый курс

BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
UPDATE modes
SET mode = 'HIGH'
WHERE mode = 'LOW'
RETURNING *;
num | mode
-----+------
1 | HIGH
(1 строка)
UPDATE 1
END;
COMMIT
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
UPDATE modes
SET mode = 'LOW'
WHERE mode = 'HIGH'
RETURNING *;
num | mode
-----+------
2 | LOW
1 | LOW
(2 строки)
UPDATE 2
END;
COMMIT
Проверим, что получилось:
SELECT * FROM modes;
num | mode
-----+------
2 | LOW
1 | LOW
(2 строки)
Во втором варианте упорядочения поменяем транзакции местами. Конечно, предва-
рительно нужно привести таблицу в исходное состояние.
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
213


UPDATE modes
SET mode = 'LOW'
WHERE mode = 'HIGH'
RETURNING *;
num | mode
-----+------
2 | LOW
(1 строка)
UPDATE 1
END;
COMMIT
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
UPDATE modes
SET mode = 'HIGH'
WHERE mode = 'LOW'
RETURNING *;
num | mode
-----+------
1 | HIGH
2 | HIGH
(2 строки)
UPDATE 2
END;
COMMIT
SELECT * FROM modes;
Теперь результат отличается от того, который был получен при реализации первого
варианта упорядочения транзакций.
num | mode
-----+------
1 | HIGH
2 | HIGH
(2 строки)
Изменение порядка выполнения транзакций приводит к разным результатам. Одна-
ко если бы при параллельном выполнении транзакций была зафиксирована и вторая
из них, то полученный результат не соответствовал бы
ни одному
из продемонстриро-
ванных возможных результатов последовательного выполнения транзакций. Таким
образом, выполнить сериализацию этих транзакций невозможно. Обратите внима-
ние, что вторая команда UPDATE в обоих случаях обновляет не одну строку, а две.
214




Достарыңызбен бөлісу:
1   ...   200   201   202   203   204   205   206   207   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет