程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁( 五 )

共享锁

共享所被称为读锁或者S锁 , 就像以上所述 , 共享锁在新请求访问一个数据的时候 , 如果是读请求则允许 , 如果是写(删改)请求 , 则不允许 。 由于共享锁允许其他的读操作 , 所以通常情况下共享锁只应用于select操作 , 如果一个update或者delete操作应用共享锁会发生很严重的数据不一致情况 。

独占锁

独占锁也被称为排它锁或者X锁 , 相对于共享锁 , 独占锁采用的态度比较坚决 , 一旦数据被独占锁锁定 , 其他任何请求(包括读操作)都必须等待独占锁的释放才可以继续 , 只有当前锁定数据的请求才可以修改读取数据 。

更新锁

当数据库准备更新数据时 , 它首先对数据对象作更新锁锁定 , 这样数据将不能被修改 , 但可以读取 。 等到确定要进行更新数据操作时 , 他会自动将更新锁换为独占锁 , 当对象上有其他锁存在时 , 无法对其加更新锁 。

意向锁

推荐阅读