在数据库中读写锁

时间:2012-11-22 10:50:54

标签: database locking isolation-level

根据有关database isolation级别的wiki文档,4个不同级别匹配不同的锁配置。

但是锁本身是什么?数据库是否提供此读写锁定机制或读写锁只是基于隔离级别和提交的抽象?

如果能够详细描述这种隔离级别如何在db本身中运行,那将会很高兴。  对此有点犹豫。感谢。

1 个答案:

答案 0 :(得分:1)

隔离级别是如何提供在数据库中同时访问和更改数据的透明方式的抽象。如果您的数据库能够隔离,则不同的方案不会导致状态不一致。

示例:想象一下银行账户的数据库。为了简单起见,想象一下有两行的表,一个帐号和总余额。

现在,如果有人将一些资金从账户1转移到账户2 [流程1],而同时有人将账户2的资金转账到账户3 [流程2],会发生什么情况?我们假设[1]是第一个,读取帐户1和2的总数。然后,[2]轮到他并完全执行。 [1]现在正在处理过时的值,因此将帐户2的总数设置为错误值。

对于交易,[2]必须等到[1]完成整个程序。通常这是通过锁实现的,因此数据库会锁定[1]目前使用的所有内容。