【发布时间】:2013-02-27 20:52:38
【问题描述】:
根据关于database isolation级别的wiki文档,4个不同的级别匹配不同的锁配置。
但是锁本身是什么?数据库是否提供了这种读写锁定机制,或者读写锁只是基于隔离级别和提交的抽象?
如果能获得有关此隔离级别如何在 db 本身中工作的详细说明,那就太好了。 对此有点犹豫。谢谢。
【问题讨论】:
标签: database locking isolation-level
根据关于database isolation级别的wiki文档,4个不同的级别匹配不同的锁配置。
但是锁本身是什么?数据库是否提供了这种读写锁定机制,或者读写锁只是基于隔离级别和提交的抽象?
如果能获得有关此隔离级别如何在 db 本身中工作的详细说明,那就太好了。 对此有点犹豫。谢谢。
【问题讨论】:
标签: database locking isolation-level
隔离级别是对如何提供一种同时访问和更改数据库中数据的透明方式的抽象。如果您的数据库能够隔离,则不同的场景不会导致状态不一致。
示例:想象一下银行帐户的数据库。为了简单起见,想象一个有两行、一个帐号和总余额的表格。
现在,如果有人将一些钱从账户 1 转移到账户 2 [流程 1],而同时其他人将钱从账户 2 转移到账户 3 [流程 2],会发生什么情况?假设 [1] 首先读取账户 1 和 2 的总数。然后,[2] 轮到他并被完全执行。 [1] 现在正在使用过时的值,因此将帐户 2 的总数设置为错误的值。
对于事务,[2] 必须等到 [1] 完成整个过程。通常这是用锁实现的,因此数据库会锁定 [1] 迄今为止使用的所有内容。
【讨论】: