digital-garden/_inbox/Транзакция БД.md

46 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)