锁的分类

锁有两种分类方法:从数据库系统角度分类和从程序员的角度分类。


从数据库角度来看,锁可以分为共享锁、独占锁和更新锁


共享锁:共享锁锁定的资源可以被其他用户读取,但不能修改。在select 命令执行时,SQL server通常会对对象进行共享锁锁定。一般情况下,加共享锁的数据页被读取完毕后,共享锁就会立即被释放


独占锁:独占锁锁定的资源只允许进行锁定操作的程序使用,对他的任何操作均不会被接受。执行数据更新命令,即INSERT,UPDATE或DELETE命令时,SQL Sever会自动使用独占锁。但当对象上有其它锁存在时,无法对其加独占锁。更新操作结束,独占锁才能被释放。


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




从程序员的角度来看,锁分为乐观锁和悲观锁




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


悲观锁:悲观锁不采用数据库系统的自动管理,需要程序员直接管理数据或对象上的加锁处理,并负责获取共享和放弃正在使用的数据上的任和锁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值