共享锁:(读取)操作创建的锁。其他用户可以并发读取数据,但任何事物都不能获取数据上的排它锁,直到已释放所有共享锁。

共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T只能读A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

共享锁的使用

在第一个连接中执行以下语句

begin tran
select * from myuser  WITH(holdlock) --holdlock人为加锁
where UserCode ='admin'
waitfor delay '00:00:30' --等待30秒commit tran

若同时执行上述两个语句,则第二个连接中的select查询可以执行

begin transelect   *  from myuserwhere UserCode='admin'commit tran

而update必须等待第一个事务释放共享锁转为排它锁后才能执行 即要等待30秒

 begin tranupdate myuserset UserName ='测试'where UserCode='admin'commit tran

排它锁:排它锁又称为写锁((exclusive lock,简记为X锁)),若事物T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。它防止任何其它事务获取资源上的锁,直到在事务的末尾将资源上的原始锁释放为止。

排它锁的使用

在第一个连接中执行以下语句

begin tranupdate myuserset UserName ='测试'where UserCode='admin'
waitfor delay '00:00:30' --等待30秒
commit tran

若同时执行上述语句,则select查询必须等待update执行完毕才能执行即要等待30秒

begin transelect   *  from myuserwhere UserCode='admin'commit tran

sqlserver共享锁与排它锁相关推荐

  1. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解

    MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...

  2. C# 乐观锁、悲观锁、共享锁、排它锁、互斥锁

    悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据 ...

  3. 共享锁和排它锁的用法

    共享锁和排它锁 排它锁,又称为独占锁.独享锁 共享锁,又称为读锁,获得共享锁之后,可以查看但无法修改和删除数据,其他线程此时也可以获取到共享锁,也可以查看,但无法修改和删除数据 共享锁和排它锁的典型是 ...

  4. Oracle 共享锁和排它锁、 DML和DDL锁、 for update 锁表的问题

    共享锁和排它锁 oracle有两种模式的锁:排他锁(exclusive lock,即X锁)和共享锁(share lock,即S锁). 共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享 ...

  5. 共享锁和排它锁---C++17 多线程

    共享锁和排它锁-C++17 多线程 读写锁把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作.C++17开始,标准库提供了shared_mutex类(在这 ...

  6. innodb 悲观锁 乐观锁_mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁

    mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表锁 乐观锁 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使 ...

  7. java共享锁排它锁_java 实现共享锁和排它锁

    标签: 一直对多线程有恐惧,在实现共享锁和排它锁之后,感觉好了很多. 共享锁    就是查询的时候,如果没有修改,可以支持多线程查询: 排它锁    就是修改的时候,锁定共享锁,停止查询,同时,锁定排 ...

  8. 共享锁与排它锁区别(转)

    共享锁[S锁] 又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁.这保证了其他事务可以读A,但在T释放A上的S锁之前不 ...

  9. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解...

    2019独角兽企业重金招聘Python工程师标准>>> MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何 ...

最新文章

  1. java包和继承的区别,子类和父类在同一个包中继承性
  2. .net面试题(高级)
  3. poj 1986 Distance Queries
  4. Oracle 9i for RedHat Linux 的安装
  5. iis7.5 php 404.17,部署IISHTTP 404.17无法由静态文件处理程序来处理
  6. VS2010与.NET4系列 10. VS2010代码智能感知增强
  7. DRY(Don't Repeat Yourself )原则
  8. 晶振封装(绝对实用)
  9. 【数学建模】基于matlab银行多机排队论模型【含Matlab源码 1096期】
  10. linux qt qpa linuxfb,Qt 5.4带有Tslib的Linux触摸屏输入在Raspberry Pi上无法使用LinuxFB QPA平台插件...
  11. 【Bandit Algorithms学习笔记】EXP3算法理论证明
  12. 计算机器前传:结绳、算筹、算盘等手动计算发展史(公号回复“手动计算”下载PDF资料,欢迎转发、赞赏、支持科普)
  13. 军用式计算机标准总线,计算机总线技术在军用航空地面检测设备中的应用分析.pdf...
  14. Android SlidingMenu 开源项目使用示例(一)
  15. view设置圆角 android,Android 设置圆角View
  16. 使用nano编辑器进行查找和替换
  17. 新媒体短视频运营哪些内容
  18. HTML5编写的小游戏
  19. 写给那些冷门专业的大学生,敢问出路在何方?
  20. 电信无线网固定ip参数

热门文章

  1. powerbi中python网站数据_Power BI应用实战:批量爬取网页数据
  2. Spark 内存管理详解(下):内存管理
  3. EPICS 在win10 和 linux上的安装与测试
  4. 基于ST MCU( STM32L431RCTx) SPI模块外接SPI FALSH的案例
  5. 王道计算机考研408计算机组成原理汇总(上)
  6. 基于 Alexnet 的服装图像模式识别系统的设计与实现
  7. 动态规划——零钱兑换问题
  8. P2P-torrenttrackermagnetdht原理
  9. es中text和keyword的区别
  10. 基于javaweb+jsp的酒店管理系统(java+SSM+jsp+mysql+maven)