0

我必须运行一个查询,它会产生非常大的结果集(20K 结果和每行 5 列)。

我正在对数据进行一些处理并将结果存储在另一个数据库表中。

所有这些处理都是在 cron 进程上完成的。

我的问题是,当我运行查询时,我的数据库服务器的 CPU 利用率达到 100%,直到进程完成。

请帮助我了解此类场景的最佳实践。

4

1 回答 1

1

在这种情况下,您需要开始考虑 MySQL 实例的优化和/或垂直扩展。

  • 尝试找到一种方法来优化您正在使用的 SQL 查询
  • 如果可能,将 cron 作业拆分为几个执行较轻查询的步骤。
  • 如果每次 cron 运行时返回的查询集中的某些数据相同 - 缓存它。
  • 如果脚本执行的频率不是至关重要的,则拆分运行并将查询集限制为较小的数量。您可以在 20 分钟内使用查询集中的 5k 项执行脚本 4 次。
  • 如果可能,请考虑迁移到非关系数据库。
  • 对 MySQL 实例进行一些性能调整。
  • 等等
于 2013-01-02T10:20:48.577 回答