Уровни изоляции транзакций определяют, насколько данные в одной транзакции изолированы от изменений, вносимых другими одновременными транзакциями. Они контролируют, какие типы конфликтов между транзакциями допускаются.
Стандарт SQL определяет четыре уровня изоляции:
- Read Uncommitted: Самый низкий уровень. Транзакция видит изменения, внесенные другими транзакциями, даже если эти изменения еще не зафиксированы (грязное чтение).
- Read Committed: Транзакция видит только те изменения других транзакций, которые были зафиксированы к моменту начала чтения. Предотвращает грязные чтения, но допускает неповторяющиеся чтения.
- Repeatable Read: Гарантирует, что если транзакция несколько раз читает одни и те же строки, то она видит одни и те же данные, если эти строки не были изменены ею самой. Предотвращает грязные чтения и неповторяющиеся чтения, но допускает фантомные чтения.
- Serializable: Самый высокий уровень. Транзакции выполняются таким образом, как если бы они выполнялись последовательно. Полностью исключает все аномалии: грязные чтения, неповторяющиеся чтения и фантомные чтения.
Аномалии, предотвращаемые уровнями изоляции:
| Грязное чтение | Неповторяющее чтение | Фантомное чтение |
---|
Уровни изоляции транзакций определяют, насколько данные в одной транзакции изолированы от изменений, вносимых другими одновременными транзакциями. Они контролируют, какие типы конфликтов между транзакциями допускаются.
Стандарт SQL определяет четыре уровня изоляции:
- Read Uncommitted: Самый низкий уровень. Транзакция видит изменения, внесенные другими транзакциями, даже если эти изменения еще не зафиксированы (грязное чтение).
- Read Committed: Транзакция видит только те изменения других транзакций, которые были зафиксированы к моменту начала чтения. Предотвращает грязные чтения, но допускает неповторяющиеся чтения.
- Repeatable Read: Гарантирует, что если транзакция несколько раз читает одни и те же строки, то она видит одни и те же данные, если эти строки не были изменены ею самой. Предотвращает грязные чтения и неповторяющиеся чтения, но допускает фантомные чтения.
- Serializable: Самый высокий уровень. Транзакции выполняются таким образом, как если бы они выполнялись последовательно. Полностью исключает все аномалии: грязные чтения, неповторяющиеся чтения и фантомные чтения.
Аномалии, предотвращаемые уровнями изоляции:
| Грязное чтение | Неповторяющее чтение | Фантомное чтение |
---|