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


 Уровень изоляции SERIALIZABLE



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

9.4 Уровень изоляции SERIALIZABLE
Самый высший уровень изоляции транзакций — SERIALIZABLE. Транзакции могут
работать параллельно точно так же, как если бы они выполнялись последовательно
одна за другой. Однако, как и при использовании уровня REPEATABLE READ, при-
ложение должно быть готово к тому, что придется перезапускать транзакцию, кото-
рая была прервана системой из-за обнаружения зависимостей чтения/записи между
транзакциями. Группа транзакций может быть параллельно выполнена и успешно
зафиксирована в том случае, когда результат их параллельного выполнения был бы
эквивалентен результату выполнения этих транзакций при выборе
одного из возмож-
ных вариантов
их упорядочения, если бы они выполнялись последовательно, одна за
другой.
Для проведения эксперимента создадим специальную таблицу, в которой будет все-
го два столбца: один — числовой, а второй — текстовый. Назовем эту таблицу —
modes.
CREATE TABLE modes ( num integer, mode text );
CREATE TABLE
Добавим в таблицу две строки.
INSERT INTO modes VALUES ( 1, 'LOW' ), ( 2, 'HIGH' );
INSERT 0 2
Итак, содержимое таблицы имеет вид:
SELECT * FROM modes;
num | mode
-----+------
1 | LOW
2 | HIGH
(2 строки)
На первом терминале начнем транзакцию и обновим одну строку из тех двух строк,
которые были показаны в предыдущем запросе.
210


BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
В команде обновления строки будем использовать предложение RETURNING. По-
скольку значение поля num не изменяется, то будет видно, какая строка была обнов-
лена. Это особенно пригодится во второй транзакции.
UPDATE modes
SET mode = 'HIGH'
WHERE mode = 'LOW'
RETURNING *;
num | mode
-----+------
1 | HIGH
(1 строка)
UPDATE 1
На втором терминале тоже начнем транзакцию и обновим другую строку из тех двух
строк, которые были показаны выше.


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




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

    Басты бет