【发布时间】:2019-10-26 14:15:30
【问题描述】:
我正在使用 gearman 的 udf 从更新后触发器向 gearman 发送后台作业。
文档说明如下:
gman_do* 函数采用可选的第三个参数,即 唯一的作业 ID。这允许您在同一个下提交多个作业 唯一 ID,它们将在队列中“合并”,仅运行一次。 请注意,gearmand 只会合并队列中或正在运行的作业, 作业完成后,它不会跟踪唯一 ID。例如, 以下确保您只为每个主机运行一次作业:
SELECT gman_do_background("reverse", Host, Host) AS test FROM mysql.user;
这使它看起来已经准备好处理大量行更新而不会淹没我的齿轮人的队列。
但是当我一次更新 30k 行时,我的 gearman 守护程序会在一段时间内无法访问,并且“netstat”在 4730 端口上显示了大约 30k 连接,我想这可以解释原因。
知道如何在不减慢更新速度的情况下防止冻结发生吗?我只需要在整个更新查询后触发一次 gearman 作业,但据我所知,mysql/mariadb 不处理语句后触发器。
【问题讨论】: