博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库锁
阅读量:5131 次
发布时间:2019-06-13

本文共 756 字,大约阅读时间需要 2 分钟。

锁有两种分类方法。
(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)
    悲观锁对数据库系统的自动管理不感冒,需要程序员直接管理数据或对象上的加锁处理,并负责获取、共享和放弃正在使用的数据上的任何锁。

转载于:https://www.cnblogs.com/baixingfa/archive/2009/04/02/1428149.html

你可能感兴趣的文章
重识linux-SSH中的SFTP
查看>>
看了一分钟了解负载均衡的文章说说自己的理解
查看>>
jquery获取复选框的值
查看>>
win7虚拟机MAC系统
查看>>
C#新添加的控件被旧的遮挡
查看>>
烧饼(nyoj779)
查看>>
链表相减
查看>>
dede调用多级导航的方法
查看>>
继上一个三级联动的补充--使用jQuery编写各种浏览器兼容简易项目
查看>>
Python---基础---水仙花数和三色球
查看>>
Python---Tkinter---计算器
查看>>
webstrom 10 注册码
查看>>
猜数游戏、随机数、time函数与循环
查看>>
【优化】前端优化的几种常用方法(持续更新)
查看>>
测试用例-手势密码
查看>>
POJ 3013 Big Christmas Tree(单源最短路径)
查看>>
ZOJ3195 Design the city [2017年6月计划 树上问题04]
查看>>
Android之Json的学习
查看>>
复合过去式
查看>>
Delphi制作DLL
查看>>