我有一个客户端应用程序正在向 SQL Server 2005 提交以下命令。在一天中的特定时间,我们遇到了性能问题,当标准低于 300 毫秒时,一些请求需要 2 到 8 秒才能运行。我们正在研究 SQL Server 选项以及可能影响服务器的所有外部变量。
我的问题是一个请求如何/为什么需要 8 秒,在此期间,许多其他相同的请求在这 8 秒的窗口中开始和完成?什么可以阻止 8 秒通话完成,但不能阻止或减慢其他通话?
在此期间运行服务器分析器,读取次数约为 20 次,并且所有(长时间和短期)调用的写入次数少于 5。
插入的表有大约 22M 条记录。我们保留了大约 30 天的数据。我们可能会改变每天归档这些数据的方法,并保持每日插入表小且无索引,但真的想了解这里发生了什么。
- 此表上没有触发器。
- GUID、Time 和 WebServerName 有 3 个索引(没有一个是集群的)
这是正在提交的命令:
exec sp_executesql N'Insert Into WebSvcLog_Duration (guid,time,webservername,systemidentity,useridentity,metricname,details,duration,eventtype)values(@guid,@time,@webservername,@systemidentity,@useridentity,@metricname,@details,@duration,@eventtype)',N'@guid nvarchar(36),@time datetime,@webservername nvarchar(10),@systemidentity nvarchar(10),@useridentity nvarchar(8),@metricname nvarchar(5),@details nvarchar(101),@duration float,@eventtype int',@guid=N'...',@time='...',@webservername=N'...',@systemidentity=N'...',@useridentity=N'...',@metricname=N'...',@details=N'...',@duration=0.0,@eventtype=1