2.9 KiB
2.9 KiB
aliases | tags | date | zero-link | parents | linked | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
Транзакция - способ группировки приложением нескольких операций в одну логическую единицу, которая либо выполняется вся, либо не выполняется вовсе (прерывание и откат).
Для реализации обычно используется Журнал БД. Обычно у транзакции есть идентификатор.
Обычно работает с использованием блокировок.
Когда не стоит использовать транзакции:
- При работе репликации в режиме master-master
- Ваша система не использует логику UPDATE after SELECT
- Вы допускаете незначительные отклонения в результатах простых запросов
Почему не используют транзакции:
- Риски Deadlock
- Нет поддержки на уровне СУБД
- Не знают механизм / не понимают принципы работы
Как происходит commit транзакции:
- Подготовка транзакции в движке БД
- Запись транзакции в лог
- Завершение транзакции в движке БД
- Возврат результата клиенту
Проблемы при параллельном выполнении нескольких транзакций:
Уровни изоляций транзакций БД: