2011-03-19 22 views
11

使用数据库时,使用事务通常是非常重要的。举例说,我想将一定数量的钱从account A转移到account B。这涉及两个查询:数据库供应商如何实现交易?

  • 减少货币在账户A
  • 增加它在账户B.

理论上我可以单独进行查询,但错误发生。所以,可以肯定的是,我可以将这两个查询包含在一个事务中,并确保两个操作都能定期结束或根本没有任何变化。没有钱消失或被创造。

问题是,在我看来,这只会将责任从我转移到数据库供应商。现在由数据库来做这两个操作,并确保两者都做或没有改变。数据库开发人员面临着错误发生的相同问题。

数据库供应商使用什么技术来确保交易安全?

回答

8

wikipedia上的ACID - Implementations页面将帮助您开始预写式日志记录,影子分页和多版本并发控制。按照链接查找更多。

每个DBMS供应商都实现自己的算法,通常根据上下文,完整的ACID或宽松的要求,分布式事务一致性要求等实现它们自己的算法...