封锁 (数据库)

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

按照粒度可分为:

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

按照使用方式分为:

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

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

参考

    本条目的部分内容翻译自英語維基百科条目並以知识共享-署名-相同方式共享3.0协议授权使用。原文作者列表請參閱其页面历史
    • 王珊 萨师煊. (M) 4. 北京: 高等教育版社. 2006. ISBN 7-04-019583-6.
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.