SqlServer查询语句中用到的锁
前段时间**公司DBA来我们这培训。讲了一大堆MYSQL的优化。 QA环节一程序员问“SQL语句中的 with nolock 除了不锁表外,是否能读其他锁住的数据"。
讲课的人嘟嘟了半天没解释清楚(有可能是MYSQL里没有这个机制),公司的另一程序员给出了一个很简洁明了的回答:
WITH NOLOCK 除了本身不锁表(不加任何锁) 也不会受其他的已存在的锁影响,锁住的行数据也照样读,个人认为这句话说得很清楚明了,一句话就能说明白的事,不过好奇怪的是程序员经常用这个语句竟然也不去试一下。这里顺便总结一下 其他的 SQLSERVER 中的with锁级别:
WITH NOLOCK:无锁
WITH HOLDLOCK:挂一个保持锁
WITH UPDLOCK:挂一个更新锁
WITH XLOCK:挂一个排他锁
需要注意的是 with nolock 是不能用于update,delete insert 这种更新语句的,说绕了。简单的说 with nolock 只能用于select。
例如:update dbo.test with(NOLOCK) set username='wokofo' --这样的语句是错误的
弹回:INSERT、UPDATE、DELETE 或 MERGE 语句的目标表不允许使用 NOLOCK 和 READUNCOMMITTED 锁提示。
实际使用:
selecttop10*from dbo.test with(NOLOCK)
selecttop10*from dbo.test with(HOLDLOCK)
selecttop10*from dbo.test with(XLOCK)
selecttop10*from dbo.test with(UPDLOCK)
update dbo.test with(HOLDLOCK) set username='wokofo'
update dbo.test with(XLOCK) set username='wokofo'
update dbo.test with(UPDLOCK) set username='wokofo'
SqlServer查询语句中用到的锁的更多相关文章
- SQLServer查询语句收集
常用的SQLServer查询语句,有空可以多练习一下,增加记忆,可以提高工作效率! 1.数据操作 Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据 ...
- SQLServer查询语句收集(非常实用)
============================= SQLServer语句收集1 =========================== 1.数据操作 Select --从 ...
- SQLServer 查询使用键查找时锁申请及释放顺序
最近看了高兄的一篇文章,Sql Server 高频,高并发访问中的键查找死锁解析,很有收获,里面讲到了键查找引起的死锁问题. 当然看的过程中,其实自己有个疑问: 对于键查找这类查询,会申请哪些锁,锁申 ...
- 小觑数据库(SqlServer)查询语句执行过程
近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:“你看哥是多么的快,你们关型型数据库真是战五渣阿”.是的,高性能的场景下NoSql真的很出彩.而我们关系型数据库只能在墙角哭泣&quo ...
- Hibernate HQL查询语句总结
Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";L ...
- SqlServer 一个查询语句以致tempdb增大55G (转载)
SqlServer 一个查询语句导致tempdb增大55G 今天操作着服务器,突然右下角提示“C盘空间不足”! 吓一跳!~ 看看C盘,还有7M!!!这么大的C盘空间怎么会没了呢?搞不好等下服务器会动不 ...
- sqlserver查询所有表的行数的sql语句
原文:sqlserver查询所有表的行数的sql语句 select object_name(id),rowcnt from sysindexes where indid<2 and object ...
- SQLServer 查询数据死锁语句
SQLServer 查询数据死锁语句 我们可以通过以下SQL 语句用来查询,当前数据中存在的死锁语句,定位数据库出现死锁的根本原因. --每秒死锁数量 SELECT * FROM sys.dm ...
- SqlServer 一个查询语句导致tempdb增大55G(转载)
SqlServer 一个查询语句导致tempdb增大55G 今天操作着服务器,突然右下角提示“C盘空间不足”! 吓一跳!~ 看看C盘,还有7M!!!这么大的C盘空间怎么会没了呢?搞不好等下服务器会动不 ...
随机推荐
- failed to allocate for range 0: no IP addresses available in range set: 172.20.xx.1-172.20.xx.254
今天遇到一个机器上的Pod 在创建以后一直处于Init 0/1的状态,进到这个节点查看其kubelet的状态,发现果然有问题 systemctl status kubelet .go:] Contai ...
- -bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory 错误解决方案
问题描述:sh文件中,在win环境下,用WinSCP编辑,出现如下错误: -bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or ...
- [codevs2185]最长公共上升子序列
[codevs2185]最长公共上升子序列 试题描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序 ...
- BZOJ4259 残缺的字符串 【fft】
题目 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度为m,B串长度为n.可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同程度的残缺. 你想 ...
- Unity 过度光照贴图
背景:开关窗帘过程,让环境在亮和暗之间过度 事先烘培出亮.暗两张Lighting map.然后代码实现,窗帘开关由动作实现,而代码中通过动作执行进度来过度两张Lighting map void OnA ...
- 超爽的Windows终端Cmder
我们常常看到科研.军事.编程上用的计算机系统是"黑洞洞"的,没有桌面.相对我们现在使用的Windows系统,既方便又美观,那么他们怎么不用Windows一样的图形化界面呢? 告诉你 ...
- 我要好offer之 排序算法大总结
1. 插入排序 (1) 直接插入排序 void StraightInsertionSort(std::vector<int>& num) { || num.size() == ) ...
- 【CF675C】Money Transfers(离散化,贪心)
http://www.cnblogs.com/chengsheng/p/5535316.html 题目大意:给你n个银行中的存款(负值表示借贷),是成环的,1跟n相接,这n个数的和为0.可以从i向i的 ...
- ubuntu 安装自启动管理
#sudo apt-get update #sudo apt-get install sysv-rc-conf 运行:#sudo sysv-rc-conf 也可以直接加入启动程序,例如把 /etc/i ...
- 二、 java中的变量与数据类型及类型转换
标识符:凡是可以自己命名的地方都叫标识符,如:类名.方法名.接口名... 1.标识符命名的规则: 由26个英文字母大小写,0-9,_或$组成,不遵守会报错. 不可以用数字开头. 不能使用关键字和保留字 ...