本页使用了标题或全文手工转换

封锁 (数据库)

维基百科,自由的百科全书
跳到导航 跳到搜索

封锁是一项用于多用户同时访问数据库的技术,是实现并发控制的一项重要手段,能够防止当多用户改写数据库时造成数据不一致与冲突。当有一个用户对数据库内的数据进行操作时,在读取数据前先锁住数据,这样其他用户就无法访问和修改该数据,直到这一数据修改并写回数据库解除封锁为止。詹姆斯·尼古拉·格雷最早完整描述了数据库锁。

按照粒度可分为:

  • 表锁(文件锁
  • 页锁(page-level lock)
  • 记录锁(行锁,因为SQL标准使用“行”的表述)

按照使用方式分为:

  • 互斥锁(exclusive lock,读锁)
  • 共享锁(sharing lock,写锁)

一般说来,获得锁并不是禁止其他事务对加锁的数据的读/写,而是阻塞了其他事务对这些数据的加锁操作。例如,如果一般的select语句根本不申请加锁,所以能直接读取其他事务已经加了互斥锁的数据。

参考[编辑]

本条目的部分内容翻译自英語維基百科条目Lock (database)並以知识共享-署名-相同方式共享3.0协议授权使用。原文作者列表請參閱其页面历史
  • 王珊 萨师煊. 数据库系统概论 (M) 4. 北京: 高等教育版社. 2006. ISBN 7-04-019583-6.