Как поставщики баз данных осуществляют транзакции? - PullRequest
13 голосов
/ 20 марта 2011

При работе с базой данных часто важно использовать транзакции. Скажем, например, что я хочу перевести определенную сумму денег со счета А на счет Б. Это включает два запроса:

  • уменьшить деньги на счете A
  • увеличить его на счете B.

Теоретически я могу делать запросы отдельно, но ошибки случаются. Поэтому, чтобы быть уверенным, я могу упаковать два запроса в транзакцию и быть уверенным, что либо обе операции завершаются регулярно, либо ничего не изменилось. Деньги не исчезают и не создаются.

Проблема в том, что мне кажется, что это только перекладывает ответственность с меня на поставщика базы данных. Теперь дело за базой данных, чтобы выполнить обе операции и быть уверенным, что либо выполнены оба, либо ничего не изменилось. И разработчики баз данных сталкиваются с теми же проблемами, что и ошибки.

Какие методы используются поставщиками баз данных для обеспечения безопасности транзакций?

Ответы [ 2 ]

9 голосов
/ 20 марта 2011

Страница ACID - Реализации в Википедии поможет вам начать ведение журнала с предварительной записью, теневое разбиение по страницам и управление несколькими версиями параллелизма. Перейдите по ссылкам, чтобы узнать больше.

Каждый поставщик СУБД реализует свои собственные алгоритмы, часто несколько различных, в зависимости от контекста, полного ACID или смягченных требований, требований согласованности распределенных транзакций и т. Д.

2 голосов
/ 20 марта 2011
...