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


ROLLBACK; ROLLBACK На втором терминале сделаем так же: ROLLBACK



Pdf көрінісі
бет196/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   192   193   194   195   196   197   198   199   ...   243
Байланысты:
Язык SQL. Базовый курс

ROLLBACK;
ROLLBACK
На втором терминале сделаем так же:
ROLLBACK;
ROLLBACK
203


9.2 Уровень изоляции READ COMMITTED
Теперь обратимся к уровню изоляции READ COMMITTED. Именно этот уровень уста-
новлен в PostgreSQL по умолчанию. Мы уже показали, что на этом уровне изоляции
не допускается чтение незафиксированных данных. А сейчас покажем, что на этом
уровне изоляции также гарантируется отсутствие потерянных обновлений, но воз-
можно неповторяющееся чтение данных.
Опять будем работать на двух терминалах. В первой транзакции увеличим значение
атрибута range для самолета Sukhoi SuperJet-100 на 100 км, а во второй транзакции —
на 200 км. Проверим, какое из этих двух изменений будет записано в базу данных.
На первом терминале выполним следующие команды:
BEGIN ISOLATION LEVEL READ COMMITTED;
BEGIN
SHOW transaction_isolation;
transaction_isolation
-----------------------
read committed
(1 строка)
UPDATE aircrafts_tmp
SET range = range + 100
WHERE aircraft_code = 'SU9';
UPDATE 1
SELECT * FROM aircrafts_tmp WHERE aircraft_code = 'SU9';
aircraft_code |
model
| range
---------------+---------------------+-------
SU9
| Sukhoi SuperJet-100 | 3100
(1 строка)
Мы видим, что в первой транзакции значение атрибута range было успешно измене-
но, хотя пока и не зафиксировано. Но транзакция видит изменения, выполненные в
ней самой.
Обратите внимание, что вместо использования команды SET TRANSACTION мы про-
сто включили указание уровня изоляции непосредственно в команду BEGIN. Эти два
подхода равносильны. Конечно, когда речь идет об использовании уровня изоляции
READ COMMITTED, принимаемого по умолчанию, можно вообще ограничиться толь-
ко командой BEGIN без дополнительных ключевых слов.
На втором терминале так и сделаем. Во второй транзакции попытаемся обновить эту
же строку таблицы airctafts_tmp, но для того, чтобы впоследствии разобраться, какое
из изменений прошло успешно и было зафиксировано, добавим к значению атрибута
range не 100, а 200.


Достарыңызбен бөлісу:
1   ...   192   193   194   195   196   197   198   199   ...   243




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

    Басты бет