SqlServer中的更新锁(UPDLOCK)

转载 2016年11月17日 17:03:35

SqlServer中的更新锁(UPDLOCK)

2013-01-24 10:49 by 假面Wilson, 3503 阅读, 1 评论, 收藏编辑

UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改.

示例:

测试:

在另一个查询里:

BEGIN TRANSACTION

SELECT * FROM myTable WITH (UPDLOCK) WHERE Id in (1,2,3)

waitfor delay '00:00:10' 


update myTable set [Name]='ZZ' where Id in (1,2,3)
commit TRANSACTION

在另一个查询里:
SELECT * FROM myTable WHERE Id in (1,2,3)

可以马上查询到数据。

但如果要更新数据,必须等其他更新锁释放后才能执行。

update myTable set [Name]='ZZ' where Id in (1,2,3)


这就说明,有时候需要控制某条记录在我读取后就不许再进行更新,那么我就可以将所有要处理当前记录的查询都加上更新锁,以防止查询后被其它事务修改.将事务的影响降低到最小

我认为写的最好的关于SQL Server更新锁和排它锁了

转载至:http://blog.csdn.net/zjcxc/article/details/27351779 一直没有认真了解UPDATE操作的锁,最近在MSDN论坛上看到一个问题,询问堆表更...

SQL秘笈 : NOLOCK、ROWLOCK、UPDLOCK的使用!

NOLOCK的使用   NOLOCK可以忽略锁,直接从数据库读取数据。这意味着可以避开锁,从而提高性能和扩展性。但同时也意味着代码出错的可能性存在。你可能会读取到运行事务正在处理的无须验证的未递交数...
  • ufocode
  • ufocode
  • 2015年11月17日 20:40
  • 2694

SQLServer事务与锁的基础概念总结

1.1   基本概念 并发控制:主要是考虑到多个用户同时存取数据库 中的同一数据的情况。sqlserver设计有两种并发访问的控制机制:锁、行版本控制。锁:主要用于多用户环境下保证数据库完整性和一致...
  • jqrsdsy
  • jqrsdsy
  • 2011年04月20日 09:09
  • 256

sqlserver中select造成死锁

项目上线,准备验收前出现了一个严重的问题:很多select语句作为死锁的牺牲,大部分报表无法打开。这个问题影响范围很大所有的报表都无法访问,而我们的报表是放在电视上面轮播的,电视放在工厂里面,所以出现...

sqlserver锁表、解锁、查看锁表

http://www.cnblogs.com/zfanlong1314/p/3698566.html

v利用sys.sysprocesses检查SqlServer的阻塞和死锁 .

视图中主要的字段:  1. Spid:Sql Servr 会话ID  2. Kpid:Windows 线程ID  3. Blocked:正在阻塞求情的会话 ID。如果此列为 Null,则标识请求...
  • tearsmo
  • tearsmo
  • 2014年11月14日 16:21
  • 1414

SQLServer 大容量导入导致死锁和系统变慢问题

今天测试同事反馈系统变得比较慢,看看什么原因。 按常理,用几个日常排除语句: --当前正在执行的语句 SELECT der.[session_id],der.[blocking_session_i...

SqlServer 查看当前锁请求脚本

--当前锁请求情况 exec sp_lock select req_spid ,case req_status when 1 then '已授予' when 2 then '正在转换' when 3...

Sqlserver 死锁日志 常见字段说明

转自: SQL Server死锁日志分析(打开1204标记) 使用跟踪标记 1204 --打开跟踪标记 DBCC TRACEON (1204,-1) --关闭跟踪标记 DBCC TRACEOF...

SqlServer 并发事务(三):闩锁

/* 闩锁: 当数据页从磁盘读取前,数据库引擎会先在内存中预留适当是内存页,给这些内存加闩锁,数据才能顺利地读到内存。(如果一个线程没法立即获得闩锁,线程则等待,让CPU给其他线程使用)   自旋锁:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SqlServer中的更新锁(UPDLOCK)
举报原因:
原因补充:

(最多只允许输入30个字)