sqlserver共享锁与排它锁
共享锁:(读取)操作创建的锁。其他用户可以并发读取数据,但任何事物都不能获取数据上的排它锁,直到已释放所有共享锁。
共享锁(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共享锁与排它锁相关推荐
- MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解
MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...
- C# 乐观锁、悲观锁、共享锁、排它锁、互斥锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据 ...
- 共享锁和排它锁的用法
共享锁和排它锁 排它锁,又称为独占锁.独享锁 共享锁,又称为读锁,获得共享锁之后,可以查看但无法修改和删除数据,其他线程此时也可以获取到共享锁,也可以查看,但无法修改和删除数据 共享锁和排它锁的典型是 ...
- Oracle 共享锁和排它锁、 DML和DDL锁、 for update 锁表的问题
共享锁和排它锁 oracle有两种模式的锁:排他锁(exclusive lock,即X锁)和共享锁(share lock,即S锁). 共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享 ...
- 共享锁和排它锁---C++17 多线程
共享锁和排它锁-C++17 多线程 读写锁把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作.C++17开始,标准库提供了shared_mutex类(在这 ...
- innodb 悲观锁 乐观锁_mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁
mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表锁 乐观锁 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使 ...
- java共享锁排它锁_java 实现共享锁和排它锁
标签: 一直对多线程有恐惧,在实现共享锁和排它锁之后,感觉好了很多. 共享锁 就是查询的时候,如果没有修改,可以支持多线程查询: 排它锁 就是修改的时候,锁定共享锁,停止查询,同时,锁定排 ...
- 共享锁与排它锁区别(转)
共享锁[S锁] 又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁.这保证了其他事务可以读A,但在T释放A上的S锁之前不 ...
- MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解...
2019独角兽企业重金招聘Python工程师标准>>> MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何 ...
最新文章
- java包和继承的区别,子类和父类在同一个包中继承性
- .net面试题(高级)
- poj 1986 Distance Queries
- Oracle 9i for RedHat Linux 的安装
- iis7.5 php 404.17,部署IISHTTP 404.17无法由静态文件处理程序来处理
- VS2010与.NET4系列 10. VS2010代码智能感知增强
- DRY(Don't Repeat Yourself )原则
- 晶振封装(绝对实用)
- 【数学建模】基于matlab银行多机排队论模型【含Matlab源码 1096期】
- linux qt qpa linuxfb,Qt 5.4带有Tslib的Linux触摸屏输入在Raspberry Pi上无法使用LinuxFB QPA平台插件...
- 【Bandit Algorithms学习笔记】EXP3算法理论证明
- 计算机器前传:结绳、算筹、算盘等手动计算发展史(公号回复“手动计算”下载PDF资料,欢迎转发、赞赏、支持科普)
- 军用式计算机标准总线,计算机总线技术在军用航空地面检测设备中的应用分析.pdf...
- Android SlidingMenu 开源项目使用示例(一)
- view设置圆角 android,Android 设置圆角View
- 使用nano编辑器进行查找和替换
- 新媒体短视频运营哪些内容
- HTML5编写的小游戏
- 写给那些冷门专业的大学生,敢问出路在何方?
- 电信无线网固定ip参数
热门文章
- powerbi中python网站数据_Power BI应用实战:批量爬取网页数据
- Spark 内存管理详解(下):内存管理
- EPICS 在win10 和 linux上的安装与测试
- 基于ST MCU( STM32L431RCTx) SPI模块外接SPI FALSH的案例
- 王道计算机考研408计算机组成原理汇总(上)
- 基于 Alexnet 的服装图像模式识别系统的设计与实现
- 动态规划——零钱兑换问题
- P2P-torrenttrackermagnetdht原理
- es中text和keyword的区别
- 基于javaweb+jsp的酒店管理系统(java+SSM+jsp+mysql+maven)