Как поставщики баз данных реализуют транзакции?
При работе с базой данных часто важно использовать транзакции. Скажем, например, что я хочу перевести определенную сумму денег со счета А на счет Б. Это включает два запроса:
- уменьшить деньги на счете А
- увеличить его на счет Б.
Теоретически я могу делать запросы отдельно, но ошибки случаются. Итак, чтобы быть уверенным, я могу упаковать два запроса в транзакцию и быть уверенным, что либо обе операции завершаются регулярно, либо ничего не изменилось вообще. Деньги не исчезают и не создаются.
Проблема в том, что мне кажется, что это только перекладывает ответственность с меня на поставщика базы данных. Теперь дело за базой данных, чтобы выполнить обе операции и быть уверенным, что либо выполнены оба, либо ничего не изменилось. И разработчики баз данных сталкиваются с теми же проблемами, что и ошибки.
Какие методы используют поставщики баз данных для обеспечения безопасности транзакций?
Ответы
Ответ 1
Страница ACID - Реализации в wikipedia поможет вам начать запись на запись, теневой пейджинг и управление несколькими версиями concurrency. Следуйте ссылкам, чтобы найти больше.
Каждый поставщик СУБД реализует свои собственные алгоритмы, часто несколько разных в зависимости от контекста, полной ACID или ослабленных требований, распределенных требований к согласованности транзакций и т.д.
Ответ 2
записать вперед журналы.