SQLServer中的锁

本文详细介绍了SQL Server中的锁,包括为何引入锁、锁的分类及其作用。锁是数据库并发控制的重要手段,用于避免数据不一致问题,如丢失更新、脏读和不可重复读。文章分别讨论了共享锁、更新锁、排它锁以及意向锁等类型,并解释了乐观锁和悲观锁的概念。
摘要由CSDN通过智能技术生成

锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写。

死锁:是数据库性能的重量级杀手之一,而死锁却是不同事务之间抢占数据资源造成的。

看完这个定义可以还是不太清楚,举个小例子,当你要进一个房间的时候,你想推门,这个时候刚好有个人想出来,他也想推门出去,于是,两个人就卡在那了,结果,后面排队的人也都动弹不了了,假如这个房间是个数据库,那么,数据库这个时候就卡壳了。锁正是为了避免这种情况产生的。

锁就好像是一个红绿灯,告诉我们什么时候走,什么时候不可以走。

一、为什么要引入锁

  多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:
  丢失更新
  A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统
  脏读
  A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致
  不可重复读
  A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致
  并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致

二、锁的分类

  锁的类别有两种分法:
  1.从数据库系统的角度来看:
  共享锁——共享(S)用于不更改或不更新数据的操作(只读操作),如SELECT语句。(独占锁)
  更新锁——更新(U)用于可更新的资源中。防止

评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值