【发布时间】:2012-11-15 17:26:18
【问题描述】:
我有两台服务器,一台测试一台生产。
- 测试 - Win7 上的 WAMP(Intel i7 4GB Ram)
- 生产 - Windows Server 2008 上的 IIS + FastCGI + MYSQL(Intel Xeon 2.4GHZ 12GB Ram)
我们在两者上都有一个 innodb 数据库设置,在部署 PHP 源文件之后,从数据库中查询/显示数据的特定函数组似乎在生产服务器上花费了 100% 的时间。
在我的测试环境中,我看到大约 3 秒后返回结果。 在生产环境中,使用完全相同的源文件和相同的 dbase 镜像执行完全相同的查询大约需要 10 秒。
如果有的话,我预计时间会被逆转,即生产速度比 wamp 快 100%。我检查了两侧的 my.ini 文件,虽然它们显然不一样,但其中没有什么明显的错误会导致这种情况。我在生产环境中测试了几个不同的 my.ini 配置,但这并没有减少处理时间。
用于此测试的查询是一个复杂的多重循环,它询问数据库(发送一个查询,然后循环遍历结果并对每一行的 mysql 服务器进行进一步查询)所有结果都使用多维数组保存和修改在内存中。
我只计时实际的脚本执行时间(mysql + php 数据检索和处理),而不是将此数据发送到浏览器所需的时间:)
接下来我应该看哪里?
【问题讨论】:
-
尝试并解释查询。然后您可以查看正在检查多少数据行,服务器决定在每个服务器上使用哪些键,并首先比较 EXPLAIN 查询的两个输出
-
对于您的描述,听起来您应该使用连接。 90% 的情况下,如果您使用一个查询来获取数据集,然后遍历它以查询您做错的附加信息 :-)
-
我认为“解释”没有任何用处——测试和生产都拥有完全相同的数据库、相同的结构、相同的数据、相同的一切。唯一的区别是 wamp 是 MYSQL 5.5.20 而生产是 MYSQL 5.5.14。我知道使用连接会使一切运行得更快,但这不是问题,但是我想知道为什么我的 wamp 服务器比生产服务器快。对我来说,它在生产中配置错误,或者可能是因为它全部在 Windows 上运行?根据过去的经验,我在 wamp 上运行的任何东西通常比在生产服务器上慢 50%
标签: php mysql wamp production-environment