封锁 (数据库)

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

按照粒度可分为：
 表锁（文件锁）
 页锁（page-level lock）
 记录锁（行锁，因为SQL标准使用“行”的表述）

按照使用方式分为：
 互斥锁（exclusive lock，写锁）
 共享锁（sharing lock，读锁）
一般说来，获得锁并不是禁止其他事务对加锁的数据的读/写，而是阻塞了其他事务对这些数据的加锁操作。例如，如果一般的select语句根本不申请加锁，所以能直接读取其他事务已经加了共享锁的数据。

参考

Category:数据库