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