定时任务优化总结(从半个小时优化到秒级)

💡 原文中文,约11000字,阅读约需27分钟。
📝

内容提要

本文介绍了一个站外广告投放平台在优化定时任务过程中遇到的问题和解决方案,包括按需查询、分批次游标查询、按数据库分片分组更新、精准定位数据等。通过引入定时任务和优化查询方式,减少了数据库交互次数和任务执行时间。同时,通过冗余数据和按时间戳查询的方式,减少了无效数据查询和计算。最后,通过分发任务到不同机器上执行,消除了单台机器CPU不稳定的问题。优化后,CPU利用率和查询次数都有明显改善。

🎯

关键要点

  • 站外广告投放平台在优化定时任务时引入了四个定时任务。
  • 定时任务包括单元时间段更新、计划时间段更新、单元预算撞线恢复和计划预算撞线恢复。
  • 通过按需查询和分批次游标查询,减少了数据库交互次数和任务执行时间。
  • 优化后,CPU利用率和查询次数都有明显改善。
  • 引入冗余数据和按时间戳查询,减少无效数据查询和计算。
  • 通过分发任务到不同机器上执行,消除了单台机器CPU不稳定的问题。
  • 优化过程中,使用游标查询和按数据库分片进行批量更新,提升了效率。
  • 在优化后,任务执行时间从五分钟降至30秒,CPU利用率降至60%。
  • 增加next_time字段以减少无效数据查询,进一步优化查询效率。
  • 最终优化后,CPU利用率仅增加1%,查询数据库次数减少至200次。

延伸问答

定时任务优化的主要目标是什么?

主要目标是减少数据库交互次数和任务执行时间,从而提高CPU利用率和查询效率。

优化过程中使用了哪些查询方式?

使用了按需查询、分批次游标查询和按时间戳查询等方式。

优化后任务执行时间和CPU利用率的变化如何?

任务执行时间从五分钟降至30秒,CPU利用率降至60%。

如何通过冗余数据来优化查询效率?

通过增加next_time字段来存储下次状态变更的时间戳,减少无效数据查询。

分发任务到不同机器上执行的好处是什么?

可以消除单台机器CPU不稳定的问题,提高任务执行效率。

在优化过程中遇到了哪些主要问题?

主要问题包括数据库交互次数过高和任务执行时间过长。

➡️

继续阅读