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

时间:2024-01-14 01:53:11 

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

标签:Sql,server,乐观锁,悲观锁
0
投稿

猜你喜欢

  • Python 3 判断2个字典相同

    2021-05-19 23:58:50
  • 在ASP.NET 2.0中操作数据之五十二:使用FileUpload上传文件

    2023-07-07 04:19:18
  • Python操作Redis之设置key的过期时间实例代码

    2022-02-11 06:13:05
  • SQL Server 2012 sa用户登录错误18456的解决方法

    2024-01-21 03:51:29
  • Javascript的动态增加类的实现方法

    2023-10-15 03:03:25
  • 完美解决Pycharm中matplotlib画图中文乱码问题

    2021-11-01 00:25:35
  • 使用Python操作MySQL的小技巧

    2024-01-23 16:13:49
  • Tesserocr库的正确安装方式

    2023-12-26 17:19:34
  • PyCharm 常用快捷键和设置方法

    2022-04-09 01:40:59
  • Python文本终端GUI框架示例详细讲解

    2021-05-19 22:47:12
  • pycharm 批量修改变量名称的方法

    2021-09-07 22:48:29
  • Python实现使用dir获取类的方法列表

    2023-01-04 12:18:44
  • DW MX 2004新功能:加密FTP

    2009-09-13 18:42:00
  • Python通过调用mysql存储过程实现更新数据功能示例

    2024-01-25 11:28:51
  • PyQt5+Pycharm安装和配置图文教程详解

    2022-12-20 08:50:26
  • python文件操作的简单方法总结

    2023-11-20 06:31:02
  • MySQL的命令行提示符及其表达的意思

    2008-03-17 13:34:00
  • python使用webbrowser浏览指定url的方法

    2023-10-24 03:33:31
  • python实现简易名片管理系统

    2022-12-23 13:14:53
  • .NET 6中为record类型自定义Equals方法

    2023-07-15 21:29:29
  • asp之家 网络编程 m.aspxhome.com