sql的几种常用锁简述
比较全的文章地址保存下:http://www.cnblogs.com/knowledgesea/p/3714417.html
SELECT * FROM dbo.AA
SELECT * FROM dbo.B
--1.排它锁
--增删改查都不行
--这个是数据库自己,为了出现数据错乱、脏数据自己加的处理机制
--连接1
begin tran
update dbo.B
set name='bb'
where id=1
waitfor delay '00:00:30' --等待30秒
commit tran
--在第二个连接中执行以下语句
begin tran
select * from B
commit tran
--若同时执行上述两个语句,则select查询必须等待update执行完毕才能执行即要等待30秒
--2)共享锁
--holdlock:可以查询但不能增删改
--在第一个连接中执行以下语句
begin tran
select * from dbo.B (HOLDLOCK) --holdlock人为加锁
waitfor delay '00:00:30' --等待30秒
commit tran
--在第二个连接中执行以下语句
begin tran
select * from dbo.B
update dbo.B
set name='ff'
where id='1'
commit tran
--若同时执行上述两个语句,则第二个连接中的select查询可以执行
--而update必须等待第一个事务释放共享锁转为排它锁后才能执行 即要等待30秒
--3)TABLOCKX(独占锁)
--TABLOCKX:其他事务增删改查都不行
--在第一个连接中执行以下语句
begin tran
select * from dbo.B (TABLOCKX) --holdlock人为加锁
waitfor delay '00:00:30' --等待30秒
commit tran
--在第二个连接中执行以下语句
begin tran
select * from dbo.B
commit tran
--若同时执行上述两个语句,则第二个连接中的select查询要等待30秒
--3)死锁
--在第一个连接中执行以下语句
begin tran
update dbo.A
set name='aa'
where id='1'
waitfor delay '00:00:30'
update dbo.B
set name='aa'
where id='1'
commit tran
--在第二个连接中执行以下语句
begin tran
update dbo.b
set name='aa'
where id='1'
waitfor delay '00:00:10'
update dbo.A
set name='aa'
where id='1'
commit tran
--同时执行,系统会检测出死锁,并中止进程
--查看死锁
select
request_session_id spid,
OBJECT_NAME(resource_associated_entity_id) tableName
from
sys.dm_tran_locks
where
resource_type='OBJECT'
--杀死死锁进程
kill spid
sql的几种常用锁简述的更多相关文章
- SQL Server 几种锁的区别
NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回 ...
- MS SQL 日常维护管理常用脚本(二)
监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息 Code Snippet SELEC ...
- 浅析十三种常用的数据挖掘的技术&五个免费开源的数据挖掘软件
一.前 沿 数据挖掘就是从大量的.不完全的.有噪声的.模糊的.随机的数据中,提取隐含在其中的.人们事先不知道的但又是潜在有用的信息和知识的过程.数据挖掘的任务是从数据集中发现模式,可以发现的模式有很多 ...
- SQL知识整理二:锁、游标、索引
锁 锁的模式 锁模式 描述 共享(S) 用于不更改或不更新数据(只读操作),如SELECT语句 更新(U) 用于可更新的资源中.防止当多个会话在读取.锁定以及随后可能进行的资源更新时发生常见形式的死锁 ...
- 《BI那点儿事》浅析十三种常用的数据挖掘的技术
一.前沿 数据挖掘就是从大量的.不完全的.有噪声的.模糊的.随机的数据中,提取隐含在其中的.人们事先不知道的但又是潜在有用的信息和知识的过程.数据挖掘的任务是从数据集中发现模式,可以发现的模式有很多种 ...
- (转)SQL Server 的事务和锁(一)
SQL Server 的事务和锁(一) 最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁: 1 2 3 4 5 6 7 8 9 1 ...
- sql语言不经常用,复习
sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) ...
- 四种常用的access连接方式
整理出四种常用的access连接方式,当然,第1种这是最常用的(推荐使用).1. set dbconnection=Server.CreateOBJECT("ADODB.CONNECTION ...
- Redis5种常用的数据结构
一.数据结构 五种常用的数据结构:string.hash.list.set.zse,以及三种不常用的:hyperloglog.geospatial.streams. 二.常用数据结构的使用 1.Str ...
随机推荐
- .NET回归 HTML----超文本标记语言(暂时无图)
HTML用来做网页,文件拓展名改为html可以形成网页 超文本标记语言==超越了文字的范畴,除了文字还可以有图片.视频.音频.动画特效等其它内容,由标记符号<>组成的一门计算机编程语言 H ...
- spark sql的应用场景
最近一直在银行做历史数据平台的项目,目前整个项目处于收尾的阶段,也好有时间整理下在项目中的一些收获. 该历史数据平台使用spark+Nosql架构了,Nosql提供了海量数据的实时查询,而spark提 ...
- [学习笔记]fork写实复制
#include<stdio.h> #include<stdlib.h> #include<string.h> #include <unistd.h> ...
- C语言结构体--位域
有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可.比如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位.正是基于这种考虑,C语言又提供了一种叫做位域 ...
- 设置datalist指定行的背景色
前台: <div class="table-responsive" > <table class="table table-bordered table ...
- 校对双层PDF中的隐藏文本
作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.06.11 目录一.背景二.能够校对的PDF需要满足的条件三.校对工具的选择四.校对过程五.延伸讨论 事先声明:本文 ...
- android studio中退出时弹出对话框
在app中总是不小心点击了退出怎么办?当然是加个弹出的提示框了,本人新手,就加在主界面上了 @Override public boolean onKeyDown(int keyCode, KeyEve ...
- 利用excel制作二维码
1 将想要通过扫描二维码访问的目标网址放入A1单位格 2 在excel 编辑区右击选择“自定义功能区” 3 然后将“开发者工具”选上 4 点击菜单栏的“开发者工具---插入--->其他控件” 5 ...
- linux内核中的##__VA_ARGS__有什么作用?
答: 1.__VA_ARGS__是一个可变参数宏: 2. 当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错: 3. 示例 3.1 #defin ...
- 从100PV到1亿级PV网站架构演变(转)
http://www.linuxde.net/2013/05/13581.html 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原 ...