3

我们正在使用 PHP 5.3 和 pdo_dblib 连接到另一个机器上的 SQL Server 2008。

定期(一天中随机 10 次以上)我们会经历 3 分钟的时间段,所有 SQL Select 查询将需要 21.01 秒才能运行,无论查询如何。这是从 PHP 中计时的(在 DB 查询之前和之后)。

SELECT 语句的范围从具有优化的复杂连接到具有单个表和显式索引的语句。

如果在 PHP 请求期间,我们在关闭数据库连接之前执行三个 SELECT 语句,总时间将是 63.03 秒 (21.01 * 3)。这同样适用于 2 个语句(42.02 秒)。

使用 SQL Server 工具,我们跟踪这些脚本的实际执行时间在 0.01 到 0.45 秒之间,但这些差异似乎并未反映在整体延迟上(它始终固定在 21.01,而不是 21.46 等) .

我们似乎确实在这些延迟期开始时发现了 WinHTTP 代理触发的一些相关性,但我们已经禁用了 WinHTTP 代理,但没有任何解决方案。

有什么建议吗?

4

1 回答 1

0

当您查看这些执行计划时,哪些活动占用了最大比例的资源?我会特别注意索引扫描或键/书签/RID 查找。我还会查看连接每个活动的线路,看看有多少记录被应用。最后,使用实际查询计划而不是估计计划运行查询,然后查看为每个操作返回的实际与估计行。他们应该是平等的。如果不是,则表明您的统计信息已关闭。

于 2013-05-28T19:28:35.790 回答