【问题标题】:MSSQL/PHP: mssql_select_db() takes 2 seconds on certain databaseMSSQL/PHP:mssql_select_db() 在某些数据库上需要 2 秒
【发布时间】:2011-07-07 07:39:50
【问题描述】:

我刚刚注意到我的一个 MSSQL 数据库的速度急剧下降。奇怪的是,它是所有数据库中最小的,但打开时间最长。

使用 mssql_select_db() 打开数据库后,它可以正常查询,但初始 mssql_select_db() 需要 2 秒。这可能是什么原因造成的?

数据库 1 比数据库 2 大得多,并且有更多的表/行,它们都在同一个 MSSQL 服务器上,所以这不是网络问题。

Database 1
Connection/Selecting DB Time: 0.00554800033569
Query Time: 0.035463809967

Database 2 (Slow One)
Connection/Selecting DB Time: 2.40434789658
Query Time: 0.144586801529

更新:当我在 Server Management Studio 中打开“数据库 2”时。 mssql_select_db() 似乎运行正常,连接速度快见下文

Database 1
Connection/Selecting DB Time: 0.00480604171753
Query Time: 0.0346729755402

Database 2 (Slow One)
Connection/Selecting DB Time: 0.00085186958313
Query Time: 0.0340950489044

这不是活动连接太多造成的,我已经排除了。有什么想法吗?

更新 2: 我正在使用 MSSQL FreeTDS 库运行 PHP 版本 5.2.6-1+lenny13。我是通过 IP 直接连接而不使用主机名,所以这不是一个解决问题。

【问题讨论】:

  • 这些数据库与网络服务器在同一台机器上吗?请提供有关基础架构的更多信息。
  • Raffael,这两个数据库都在同一台 Windows 机器上,我正在使用 Linux 服务器通过 PHP 连接它们。数据库 1 加载速度如此之快,这就是为什么我认为这不是网络问题,因为它们都在同一台机器/IP 上。
  • 您使用的 PHP 版本是什么?
  • PHP 版本 5.2.6-1+lenny13 使用 MSSQL FreeTDS 库。
  • 你是用DNS解析主机名还是直接连接IP地址?

标签: php sql sql-server


【解决方案1】:

会不会是其他进程与该数据库有打开的连接,而没有其他可用的可用连接?

【讨论】:

  • Tudor,感谢您的建议,但这似乎不是问题所在。我注意到,如果我打开 SQL Management Studio 编辑慢速“数据库 2”,mssql_select_db() 只需要 0.008 秒。我猜这是因为数据库已经预加载?你以前听说过这样的事吗?
  • 我从未使用过 MSSQL - 无论如何,这是一个连接问题 - 所以数据库有多大并不重要。尝试在这里查看stackoverflow.com/questions/216007/… 并在您有长时间延迟时检查活动连接数
  • Tudor,只有 2 个活动连接,所以我认为这不会导致问题。无论如何,感谢您的所有帮助。
【解决方案2】:

我已经重建了数据库并重新导入了所有数据,这似乎解决了问题。它可能一直都是数据库碎片。

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 2021-07-29
    • 2017-07-01
    • 2017-07-05
    • 2021-06-01
    • 2020-05-29
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多