php - SQL Server 定期固定延迟

标签 php sql-server sql-server-2008 pdo winhttp

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

我们会定期(全天随机 10 次以上)遇到 3 分钟的时间段,其中所有 SQL Select 查询将花费 21.01 秒来运行,无论查询如何。这是从 PHP 中计时的(在数据库查询之前和之后)。

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

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

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

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

有什么建议吗?

最佳答案

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

关于php - SQL Server 定期固定延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16716218/

相关文章:

sql-server - 在 SQL Server 中生成 **bearer** CREATE TABLE 和 CREATE PROC 语句

javascript - React-Native fetch 不将正文内容发送到 $_POST

php - 如何在单个 shell 行中执行多个 PHP 文件?

java - PHP:将分隔的逗号字符串值与多个数组值插入到 MySql 中

sql - 使用表查找一行上的多个 ID

sql - 将分隔字符串拆分为 2 个值。SQL Server 2008。你能帮我吗?

php - 如何将 mysql 放入 php 函数中?

c# - SQL类型和加密大小

sql-server - 如何比较数据库列中的 Null 值

sql - 选择SQL Server的问题