当前位置: 移动技术网 > IT编程>数据库>MSSQL > 浅析Sql server锁,独占锁,共享锁,更新锁,乐观锁,悲观锁

浅析Sql server锁,独占锁,共享锁,更新锁,乐观锁,悲观锁

2017年12月12日  | 移动技术网IT编程  | 我要评论

山海关区号,clanquire,王妃戏龙颜

锁有两种分类方法。
(1) 从数据库系统的角度来看
锁分为以下三种类型:

•独占锁(exclusive lock)
独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。执行数据更新命令,即insert、 update 或delete 命令时,sql server 会自动使用独占锁。但当对象上有其它锁存在时,无法对其加独占锁。独占锁一直到事务结束才能被释放。

•共享锁(shared lock)
共享锁锁定的资源可以被其它用户读取,但其它用户不能修改它。在select 命令执行时,sql server 通常会对对象进行共享锁锁定。通常加共享锁的数据页被读取完毕后,共享锁就会立即被释放。

•更新锁(update lock)
更新锁是为了防止死锁而设立的。当sql server 准备更新数据时,它首先对数据对象作更新锁锁定,这样数据将不能被修改,但可以读取。等到sql server 确定要进行更新数据操作时,它会自动将更新锁换为独占锁。但当对象上有其它锁存在时,无法对其作更新锁锁定。

(2)从程序员的角度看
锁分为以下两种类型:

•乐观锁(optimistic lock)
乐观锁假定在处理数据时,不需要在应用程序的代码中做任何事情就可以直接在记录上加锁、即完全依靠数据库来管理锁的工作。一般情况下,当执行事务处理时sql server会自动对事务处理范围内更新到的表做锁定。

•悲观锁(pessimistic lock)
悲观锁对数据库系统的自动管理不感冒,需要程序员直接管理数据或对象上的加锁处理,并负责获取、共享和放弃正在使用的数据上的任何锁。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网