46 lines
2.7 KiB
Markdown
46 lines
2.7 KiB
Markdown
---
|
||
aliases:
|
||
- транзакция
|
||
- транзакции
|
||
tags:
|
||
- зрелость/🌱
|
||
date:
|
||
- - 2024-05-28
|
||
zero-link:
|
||
- "[[00 Базы Данных]]"
|
||
parents:
|
||
linked:
|
||
---
|
||
Транзакция - способ группировки приложением нескольких операций в одну логическую единицу, которая либо выполняется вся, либо не выполняется вовсе (прерывание и откат).
|
||
|
||
Для реализации обычно используется [Журнал БД](Журнал%20БД.md). Обычно у транзакции есть идентификатор.
|
||
|
||
Обычно работает с использованием [блокировок](Блокировки.md).
|
||
|
||
**Почему не используют транзакции:**
|
||
- Снижение скорости работы приложения
|
||
- Риски [Deadlock](Deadlock.md)
|
||
- Нет поддержки на уровне СУБД
|
||
- Не знают механизм / не понимают принципы работы
|
||
|
||
**Как происходит commit транзакции:**
|
||
- Подготовка транзакции в движке БД
|
||
- Запись транзакции в лог
|
||
- Завершение транзакции в движке БД
|
||
- Возврат результата клиенту
|
||
|
||
**Свойства транзакций БД:**
|
||
![Свойства транзакции БД (ACID)](Свойства%20транзакции%20БД%20(ACID).md)
|
||
|
||
**Проблемы при параллельном выполнении нескольких транзакций:**
|
||
![Проблемы при параллельном выполнении нескольких транзакций](Проблемы%20при%20параллельном%20выполнении%20нескольких%20транзакций.md)
|
||
|
||
**Уровни изоляций транзакций БД:**
|
||
![Уровни изоляций транзакций БД](Уровни%20изоляций%20транзакций%20БД.md)
|
||
|
||
Дополнительные советы:
|
||
- Разделить потоки чтения и записи: [CQRS](CQRS.md)
|
||
-
|
||
|
||
## Дополнительные материалы
|
||
- [Транзакции. Восстановление. Классический алгоритм — Викиконспекты](https://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D0%B8._%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5._%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC) |