故障分析: SQL Server tempdb性能问题导致的业务故障
故障现象:SQL Server 数据库服务器内存使用率高接近100%;数据库主机出现ping丢包现象,业务反馈有异常。
分析过程:
通过SSMS数据库资源活动监视器,发现内存已经占用约30G,其中超过25G的进程为sqlserver,确定生产数据库主机内存资源消耗过大与数据库有直接关系;
观察数据库连接,未存在长时间阻塞的情况,但是数据库存在大量LOCK,锁数量达到2000+。,在数据库资源活动监视器中直接根据会话进程可查看所有会话对应的信息。
定位到相关的锁定进程是由以下SQL产生,该会话数非常高:
Declare @tabTaskID Table
(
TaskID NVARCHAR(32)
)
insert into @tabTaskID (TaskID) select top 10 TaskID from [tblCPPrintTask]
where [Status] = 2 and SwingCardStatus = 'True' and IsDoubleSidePrint = 'True'
and DoubleSidePrintSign =DoubleSidePrintSign and IsScan = 'False' order by CreateTime,DoubleSidePrintSign
update [tblCPPrintTask] Set IsScan = 'True' where TaskID in (select TaskID from @