关于sqlserver存储过程事务锁的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sqlserver存储过程事务锁的问题相关的知识,希望对你有一定的参考价值。
sql server在一个事务的执行过程中,锁是不是一直存在,比如一个过程中
begin try
begin tran
select ....from table1
update table1 set ...
commit tran
end try
中间有两个操作,锁是不是一直存在的 ,如果是多线程并发调用这个过程,会不会有影响
而update所用到的U锁及其进一步的X锁则需要持续到事务的结束
如果是多线程的程序的话,在select与update处都可能会出现锁等待,这要根据实际操作中数据是否冲突来看追问
就是说在select的操作结束后,锁就会释放,然后UPDATE的时候会重新加锁是吧。那如果正好select执行结束释放锁,另一个线程也开始调用这个过程,那这张表是否还是处于被锁状态
追答select是共享锁,顾名思义,通常情况下,任何查询任何事务中的select是都不会冲突的
与共享锁冲突的是更新时的X锁,X锁与其他全部锁都冲突
例如:select * from tabname(nolock)
以上是关于关于sqlserver存储过程事务锁的问题的主要内容,如果未能解决你的问题,请参考以下文章