我们正在使用PHP5.3和pdo_dblib连接到另一台机器上的SQL Server2008。
周期性地(每天随机地10+一天)我们经历了3分钟的时间段,其中所有SQL Select查询都需要21.01秒才能运行,而不管查询是什么。这是从PHP内部计时的(在DB查询之前和之后)。
SELECT语句的范围从具有优化的复杂连接到具有单个表和显式索引的语句。
如果在PHP请求期间,我们在关闭DB连接之前执行了三个SELECT语句,那么总时间将是63.03秒(21.01 * 3)。这同样适用于2条语句(42.02秒)。
使用SQL Server工具,我们跟踪到这些脚本的实际执行时间在0.01到0.45秒之间,但这些差异似乎没有反映在总体延迟中(它始终固定在21.01,而不是21.46,等等)。
我们似乎确实发现了在这些延迟时段开始时触发WinHTTP代理的一些相关性,但此后我们禁用了WinHTTP代理,但没有解决任何问题。
有什么建议吗?
发布于 2013-05-29 03:28:36
当您查看这些项目的执行计划时,哪些活动占用了最大百分比的资源?我会特别注意索引扫描或键/书签/RID查找。我还会查看连接每个活动的行,并查看应用了多少条记录。最后,使用实际的查询计划而不是估计的查询计划运行查询,然后查看每个操作返回的实际行和估计行。它们应该是相等的。如果不是,这是一个很好的迹象,表明您的统计数据是错误的。
https://stackoverflow.com/questions/16716218
复制相似问题