MySQL 本地和具有大文本列的产品之间的性能差异
MySQL performance difference between local and prod with large text column
我试图弄清楚是什么导致了我的开发环境(5 岁的笔记本电脑)和我们的阶段服务器(天蓝色云)之间的巨大性能差异。有问题的 table 是处理 XML 的服务的 Web 服务请求日志 table。 table 中的一列是传递给网络服务的 XML。
在我的本地计算机上,table 中有多少行基本上无关紧要;性能很棒。在部署的服务器上,如果有超过几百行,那么性能会迅速下降。当其中有 2000 行时,此 table 上的“select count(*)”将在本地花费 0.0017 秒,但在服务器上接近 20 秒。即使是简单地插入一个新行也会花费大量时间;以整秒为单位。
我在研究问题时发现了这篇文章explanation of MySQL block performance。这对我来说很有意义,我很乐意实施 1 对 1 解决方案,但我不想这样做,直到我理解为什么它在本地运行良好并在服务器上运行时出现故障。
是否有一些 MySQL 设置变量可以检查以找出差异?我真的很想让我的本地计算机出现与部署的计算机相同的性能问题,这样我就可以验证修复是否有效。
编辑:
create table 查询是相同的。 MySQL 版本是 5.7.23 和 5.7.22。我确实注意到我本地的缓冲区大了 16 倍。尝试将服务器更新为我本地的设置,看看是否能解决问题。
解决方案是像 Rick 建议的那样更新缓冲池大小。
我试图弄清楚是什么导致了我的开发环境(5 岁的笔记本电脑)和我们的阶段服务器(天蓝色云)之间的巨大性能差异。有问题的 table 是处理 XML 的服务的 Web 服务请求日志 table。 table 中的一列是传递给网络服务的 XML。
在我的本地计算机上,table 中有多少行基本上无关紧要;性能很棒。在部署的服务器上,如果有超过几百行,那么性能会迅速下降。当其中有 2000 行时,此 table 上的“select count(*)”将在本地花费 0.0017 秒,但在服务器上接近 20 秒。即使是简单地插入一个新行也会花费大量时间;以整秒为单位。
我在研究问题时发现了这篇文章explanation of MySQL block performance。这对我来说很有意义,我很乐意实施 1 对 1 解决方案,但我不想这样做,直到我理解为什么它在本地运行良好并在服务器上运行时出现故障。
是否有一些 MySQL 设置变量可以检查以找出差异?我真的很想让我的本地计算机出现与部署的计算机相同的性能问题,这样我就可以验证修复是否有效。
编辑: create table 查询是相同的。 MySQL 版本是 5.7.23 和 5.7.22。我确实注意到我本地的缓冲区大了 16 倍。尝试将服务器更新为我本地的设置,看看是否能解决问题。
解决方案是像 Rick 建议的那样更新缓冲池大小。