php - 当数据库与 PHP 代码不在同一台机器上时,为什么 PHP -> MSSQL 非常慢

标签 php sql-server azure

在尝试将我们的网站迁移到 Azure 的过程中,我们发现 PHP 代码与 MSSQL 交互时出现问题。

在当前的专用主机(同时托管 PHP 和 DB)上,访问一个页面通常需要不到 2 秒的时间。我还通过 SSMS 运行了必要的查询,它们花费的时间不到 1 秒。查询返回的数据量非常小 - 10-20 条记录,总共不到 100kb。

对于托管在 Azure 上的网站(连接到 Azure SQL 数据库),加载同一页面大约需要 40 秒。进一步调查表明,这可能是由于数据库与 PHP 不在同一台计算机上造成的 - 当原始网站指向远程数据库(另一台专用计算机或 Azure SQL 实例)时,页面加载时间会增加到40 秒范围。

在 Azure 案例中,网站和数据库位于同一区域(北欧)。使用我们的机器进行测试时,两台机器均位于英国。

当前的虚拟主机正在运行 PHP 5.4 和 Microsoft SQL Server Express Edition。 Azure 网站在 PHP 5.4 上运行。

在这两种情况下,我们都使用 3.0.1 Microsoft SQLSRV 驱动程序

如何提高连接远程 SQL 数据库时的性能?

此问题已交叉发布到服务器故障 https://serverfault.com/questions/496505/why-is-php-mssql-very-slow-when-the-db-is-not-on-the-same-machine-as-the-php

最佳答案

就我而言,DNS 解析速度很慢,在输入 IP 而不是 MSSQL 名称后,一切正常

关于php - 当数据库与 PHP 代码不在同一台机器上时,为什么 PHP -> MSSQL 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835623/

相关文章:

php - MysQL 通过查询获取时间

javascript - 自动保存文本区域花费的时间太长

PHP,删除已知字符串的更好选择是什么?

SQL Server : selecting rows that contain only certain values?

visual-studio - 尝试使用 Azure SDK 2.5 进行发布会导致 null-ref(对象引用未设置为对象的实例)

php - 检查 PHP 中 URL 中是否有特定查询

c# - 执行存储过程时,使用 CommandType.StoredProcedure 与使用 CommandType.Text 相比有什么好处?

sql-server - 超大规模到通用

azure - 推送通知 Azure 移动服务(自托管)

azure - 如何根据 System.PullRequest.TargetBranch 变量将不同参数发送到 Azure 管道模板