封锁 (数据库)
封锁是一项用于多用户同时访问数据库的技术,是实现并发控制的一项重要手段,能够防止当多用户改写数据库时造成数据不一致与冲突。当有一个用户对数据库内的数据进行操作时,在读取数据前先锁住数据,这样其他用户就无法访问和修改该数据,直到这一数据修改并写回数据库解除封锁为止。詹姆斯·尼古拉·格雷最早完整描述了数据库锁。
按照粒度可分为:
- 表锁(文件锁)
- 页锁(page-level lock)
- 记录锁(行锁,因为SQL标准使用“行”的表述)
按照使用方式分为:
- 互斥锁(exclusive lock,写锁)
- 共享锁(sharing lock,读锁)
一般说来,获得锁并不是禁止其他事务对加锁的数据的读/写,而是阻塞了其他事务对这些数据的加锁操作。例如,如果一般的select语句根本不申请加锁,所以能直接读取其他事务已经加了共享锁的数据。
参考
- 王珊 萨师煊. 数据库系统概论 (M) 4. 北京: 高等教育版社. 2006. ISBN 7-04-019583-6.
这是一篇与数据库软件相关的小作品。您可以通过编辑或修订扩充其内容。 |