gpt4 book ai didi

sql - SELECT 查询是否会锁定 SQL Server 中的表或页?

转载 作者:行者123 更新时间:2023-12-03 02:16:09 24 4
gpt4 key购买 nike

我们刚刚将生产 SQL 实例从 2012 年升级到 2016 标准版。由于我们一直在努力寻找死锁以防其存在,所以我刚刚遇到了一个死锁,但不太明白到底发生了什么。我不明白这个问题的原因是一个 session 正在阻止另一个 session ,但阻塞 session 是一个选择查询 session 。它阻止另一个 session 插入表。

被阻止的 session 查询是;

INSERT INTO [AUDITHISTORYLOG_BACKUP_2017_1]([TABLE_NAME],[OPERATION_TYPE],[HOST_NAME],[USER_NAME],[PRIMARY_KEY],[FIELD],[OLD_VALUE],[NEW_VALUE],[CREATE_DATE]) values(@1,@2,@3,@4,@5,@6,@7,@8,@9)

阻塞 session 查询是;

SELECT * FROM AuditDB.dbo.AUDITHISTORYLOG_BACKUP_2017_1 WHERE CREATE_DATE>CAST(GETDATE()-30 AS DATE) ORDER BY CREATE_DATE DESC

此选择查询如何阻止插入事务?

等待类型:LCK_M_IX
等待资源:页面:10:1:20598647
事务隔离级别:读已提交

有人可以帮忙吗?

最佳答案

How does this select query block the insert transaction ?

是的,这可能会导致锁的类型不兼容。 SELECT 查询需要 SHARED 锁,而 INSERT 需要 EXCLUSIVE 锁,并且两者不兼容。也就是说,如果请求独占锁的同一资源(在您的情况下为 AUDITHISTORYLOG_BACKUP_2017_1 表)上存在共享锁;在取消共享锁或释放共享锁之前,无法授予独占锁。

关于sql - SELECT 查询是否会锁定 SQL Server 中的表或页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41607034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com