【问题标题】:Slow select queries when cron update tables in the databasecron 更新数据库中的表时选择查询速度慢
【发布时间】:2018-04-10 13:13:38
【问题描述】:

我对基于 woocommerce 的商店有疑问。 Shop 在后台 (Cron) 每小时更新他的库存和价格(每分钟大约 500 种产品),在此更新过程中,选择查询速度变慢(TTFB 从 300 毫秒增加到 1900 毫秒)。

我在专用服务器(4 核至强 + 16GB 内存)上使用带有 InnoDB 引擎的 MySQL。

我的问题是,如何在更新期间提高选择查询速度?

也许我应该为每个产品使用一个大的更新查询而不是大量的单个查询?或者在这种情况下还有其他解决方案来调整 mysql 服务器?

谢谢帮助, 马辛

【问题讨论】:

  • 您是否检查过您的SELECT 查询是否可以通过索引进行优化?还是网络服务器本身处于高负载状态,而 MySQL 服务器不是瓶颈?您可以尝试将更新过程卸载到另一台服务器上(例如让客户使用网络服务器,并让“维护服务器”完成所有后台工作)
  • @Nico Haase,是的,我优化了指示并且商店在后台不更新任何内容时效果很好。我会考虑仅用于更新的临时表。谢谢

标签: php mysql wordpress woocommerce


【解决方案1】:

如果您的表大小足以在更新进行时阻塞 MySql,则这是预期的。在 MySql 中更新大量记录时,会重新索引更新的元组。
通过 InnoDb 获取行级锁,但如果选择需要使用任何正在重建过程中的索引。可能会带来一些麻烦。

如果您的查询允许,您可以做的一件事是在单行上执行 SELECT。并大批量更新,而不是连续更新。


开启SLOW_QUERY_LOGGING,观察你的慢查询是因为锁等待或索引没有被使用。这将帮助您缩小问题范围

【讨论】:

  • 感谢您的精彩回答,我会尝试大批量更新产品,也许这样可以解决问题。再次感谢。
猜你喜欢
  • 2021-08-12
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多