Учебное пособие Санкт-Петербург «бхв-петербург»


BEGIN; BEGIN DELETE FROM aircrafts_tmp



Pdf көрінісі
бет204/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   200   201   202   203   204   205   206   207   ...   256
sql osnovi yazika

BEGIN;
BEGIN
DELETE FROM aircrafts_tmp
WHERE model ~ '^Boe';
DELETE 3
SELECT * FROM aircrafts_tmp;
aircraft_code |
model
| range
---------------+---------------------+-------
320
| Airbus A320-200
| 5700
321
| Airbus A321-200
| 5600
319
| Airbus A319-100
| 6700
CN1
| Cessna 208 Caravan | 1200
CR2
| Bombardier CRJ-200 | 2700
SU9
| Sukhoi SuperJet-100 | 3300
(6 строк)
Сразу завершим вторую транзакцию:
END;
COMMIT
264


9.4. Уровень изоляции Repeatable Read
Повторим выборку в первой транзакции:
SELECT * FROM aircrafts_tmp;
aircraft_code |
model
| range
---------------+---------------------+-------
320
| Airbus A320-200
| 5700
321
| Airbus A321-200
| 5600
319
| Airbus A319-100
| 6700
CN1
| Cessna 208 Caravan | 1200
CR2
| Bombardier CRJ-200 | 2700
SU9
| Sukhoi SuperJet-100 | 3300
(6 строк)
Видим, что теперь получен другой результат, т. к. вторая транзакция завершилась
в момент времени между двумя запросами. Таким образом, налицо эффект неповто-
ряющегося чтения данных, который является допустимым на уровне изоляции Read
Committed.
Завершим и первую транзакцию:
END;
COMMIT
9.4. Уровень изоляции Repeatable Read
Третий уровень изоляции — Repeatable Read. Само его название говорит о том, что
он не допускает феномен неповторяющегося чтения данных. А в PostgreSQL на этом
уровне не допускается и чтение фантомных строк.
Приложения, использующие этот уровень изоляции, должны быть готовы к тому, что
придется выполнять транзакции повторно. Это объясняется тем, что транзакция, ис-
пользующая этот уровень изоляции, создает снимок данных не перед выполнением
каждого запроса, а только однократно, перед выполнением первого запроса транзак-
ции. Поэтому транзакции с этим уровнем изоляции не могут изменять строки, ко-
торые были изменены другими завершившимися транзакциями уже после создания
снимка. Вследствие этого PostgreSQL не позволит зафиксировать транзакцию, кото-
рая попытается изменить уже измененную строку.
265


Глава 9. Транзакции
Важно помнить, что повторный запуск может потребоваться только для транзакций,
которые вносят изменения в данные. Для транзакций, которые только читают дан-
ные, повторный запуск никогда не требуется.
На первом терминале:


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




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

    Басты бет