为什么MySQL查询在dev和live环境中的运行方式不同?

为什么MySQL查询在dev和live环境中的运行方式不同?,mysql,database,optimization,innodb,Mysql,Database,Optimization,Innodb,我有一个特定的查询,在我们的实时环境中运行超过20秒,但在我的开发环境中只需要0.062秒。您会首先寻找什么来解决此类问题?我没有那么多的DB性能故障排除的经验,所以一个小的方向将是一个很大的帮助。该表正在使用InnoDB引擎 我注意到了生活环境的一些变化。INNODB_缓冲区_池_大小超过10GB,但服务器只有4GB的RAM。我无法想象这是好事 提前感谢。考虑到另一个事实,如表模式,索引保持原样,统计数据在这两种环境中都是最新的 首先要检查的是,两个环境中的数据量是否相同?原因在10K记录上运

我有一个特定的查询,在我们的实时环境中运行超过20秒,但在我的开发环境中只需要0.062秒。您会首先寻找什么来解决此类问题?我没有那么多的DB性能故障排除的经验,所以一个小的方向将是一个很大的帮助。该表正在使用InnoDB引擎

我注意到了生活环境的一些变化。INNODB_缓冲区_池_大小超过10GB,但服务器只有4GB的RAM。我无法想象这是好事


提前感谢。

考虑到另一个事实,如
表模式
索引
保持原样,
统计数据
在这两种环境中都是最新的

首先要检查的是,两个环境中的数据量是否相同?原因在10K记录上运行的查询如果在100K记录集上运行,将不会具有相同的运行时间


您再次指出,
INNODB\u BUFFER\u POOL\u SIZE
在实时环境中很高,但在另一个环境中使用4GB时,您无法控制它。可能您可以在另一个环境中进行相应的比较和设置。例如,与RAM大小进行比较,并在另一个环境中将其设置为最佳值。

True。这将导致交换,这比使用更小的缓冲池要糟糕得多。建议4GB计算机上的内存不超过1500M。如果在修复缓冲区池大小后仍然存在问题,可能是缓存造成的。请提供更多详情。