Jer*_*ers 7 performance statistics sharepoint sql-server-2008-r2
我在为此创建的博客文章中解释了我遇到的问题(易于参考和管理 1 个位置的响应/解决方案),可在此处找到:http : //schoennie.blogspot.com/ 2013/09/slow-statman-query-issue-with-sp2010.html
简短的总结是,在 SQL 2008R2(同一服务器)之上安装 SharePoint 2010 的单个服务器在特定时间间隔内(似乎是每天早上)在每次第一次上传时都遇到非常缓慢的响应。分析 SQL 活动后,我发现当您开始上传时,此查询会在上传的“插入部分”之前执行:
SELECT StatMan([SC0], [LC0])
FROM (SELECT TOP 100 PERCENT CONVERT(VARBINARY,
SUBSTRING ([Content], 1, 100) +
+SUBSTRING([Content], CASE
WHEN LEN([Content]) <= 200 THEN 101
ELSE LEN([Content]) - 99
END, 100)) AS [SC0],
DATALENGTH([Content]) AS [LC0]
FROM [dbo].[AllDocStreams] WITH (READUNCOMMITTED)
ORDER BY [SC0]) AS _MS_UPDSTATS_TBL
Run Code Online (Sandbox Code Playgroud)
我现在花了几天时间试图获得有关此 StatMan 查询的更多信息,以及为什么它会导致磁盘 i/o 通过屋顶和磁盘队列长度增长到 5 值以上(通常约为 0.01)
请分享您对此的想法,或者为我指明某个方向/资源?我在这个软件领域作为 SharePoint 顾问和 DBA 参与了大约 8 年,但我还没有见过这样的事情!
非常感谢,杰罗恩
这是 SQL Server 更新表上的统计信息。当您的表中大约 20% 的数据发生更改时,它可以自动触发,或者如果您运行更新统计信息的作业,则可以按需触发。
您有几种方法可以减轻疼痛。
您可以启用异步统计信息更新,这让 SQL Server 在幕后更新统计信息而不会阻止其他查询。不过,正如 Kendra Little 在The Secret IO Explosion 中所解释的那样,它仍然会对性能产生影响。
您可以在维护时段内主动手动更新统计信息。这并不能阻止 20% 的数据发生变化的可能性,但只会降低可能性。
您可以完全禁用统计信息的自动更新。这通常是一个非常糟糕的主意,因为您的执行计划可能非常不正确,而且它也不会阻止人们手动更新统计信息。