我有一个用例在MySQL数据库上创建临时用户,然后在24小时后丢弃它们。我已经做到了这一点,我希望自动化流程并将其与用户创建脚本打包在一起,这样我就不必跟踪流程。
我在互联网上浏览了关于MySQL事件调度的性能影响的文档,问题和流言蜚语,但我还没有发现令人沮丧的事情。我已经看到了关于"成本"的另一个问题。 MySQL预定事件,但讨论主要包括使用cron
调度数据库任务与使用MySQL事件调度进行比较。
我在亚马逊RDS上运行,所以cron
不能为我工作。 MySQL事件调度看起来是正确的解决方案。我安排了一个非常轻量级的事件 - 在创建后24小时一次丢弃一个用户 - 但是我必须全天候启用MySQL的事件调度程序。这有什么性能成本吗?如果没有,为什么默认情况下不启用事件调度程序?
答案 0 :(得分:1)
与调度程序运行的SQL的成本相比,调度程序的成本无关紧要。这本书High Performance MySQL讨论了这个问题:
事件由单独的事件调度程序线程启动,因为它们与连接无关。他们不接受任何输入并且不返回任何值 - 他们没有连接来获取输入或返回值.... 与适用于存储过程的注意事项类似的注意事项适用于事件。首先,您要为服务器提供额外的工作。事件开销本身很小,但它调用的SQL可能会对性能产生严重影响。
我怀疑默认情况下没有启用事件,因为它们有impact on statement-based replication,其中高性能MySQL 也讨论过:
[E]通行证可能会导致其他存储代码可能导致的基于语句的复制出现相同类型的问题。
最终,与任何数据库问题一样,您必须在模式中实现解决方案并测量效果,因为没有两个实例是相似的,并且没有解决方案是通用的。
答案 1 :(得分:0)