博客 SqlServe查看锁表和解锁

SqlServe查看锁表和解锁

   数栈君   发表于 2023-09-21 10:52  690  0

SQL SERVER 数据库中经常会出现锁表得情况
出现该情况得原因一般是:
1,字段不加索引:在执行事务的时候,如果表中没有索引,会执行全表扫描,如果这时候有其他的事务过来,就会发生锁表!
2,事务处理时间长:事务处理时间较长,当越来越多事务堆积的时候,会发生锁表!
3,关联操作太多:涉及到很多张表的修改等,在并发量大的时候,会造成大量表数据被锁!
解决该问题的方法有:

通过相关的sql语句可以查出是否被锁定,和被锁定的数据
为加锁进行时间限定,防止无限死锁
加索引,避免全表扫描
尽量顺序操作数据
根据引擎选择合理的锁粒度
事务中的处理时间尽量短
出现锁表后就需要相应的解锁操作

1.查询锁表的进程;
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type=‘OBJECT’

2.解锁语句,需要将锁表进程 @spid换成查询出来的锁表进程;
declare @spid int
Set @spid = 65 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e3c3affbb2e77f7105009d85ba999c3d..png
 






免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群