2
我們剛剛將我們的生產sql實例從2012年升級到2016年標準版。由於我們一直在努力尋找存在僵局的情況,因此我剛剛面對一個並且不太瞭解究竟發生了什麼。我不明白這個問題的原因是一個會話阻塞了另一個會話,但阻塞會話是一個選擇查詢會話。它會阻止另一個會話插入表。SELECT查詢是否鎖定SQL Server中的表或頁面?
被阻止的會話查詢是;
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)
阻塞會話查詢是;
SELECT * FROM AuditDB.dbo.AUDITHISTORYLOG_BACKUP_2017_1 WHERE CREATE_DATE>CAST(GETDATE()-30 AS DATE) ORDER BY CREATE_DATE DESC
這個select查詢如何阻止插入事務?
Wait_Type:LCK_M_IX
Wait_Resource:PAGE:10:1:20598647
事務隔離級別:讀已提交
誰能幫助?
我不知道排他鎖需要共享鎖被釋放。而且,在升級之前,我從來沒有遇到過這種類型的問題。這就是爲什麼我要深入探討問題的原因。 –
https://technet.microsoft.com/zh-cn/library/ms186396(v=sql.105).aspx –
感謝您的答案。 –