gpt4 book ai didi

mysql - 终止 MySQL 中长时间运行的进程

转载 作者:行者123 更新时间:2023-11-29 10:14:53 25 4
gpt4 key购买 nike

场景 - 您有数百个报告在从属计算机上运行。这些报告要么由 MySQL 的事件调度程序调度,要么通过 Python/R 或 Shell 脚本调用。除此之外,还有五十多个用户正在连接到 MySQL Slave 运行随机查询。这些人并不真正知道如何编写好的查询,这是公平的。他们不应该这样做。因此,时不时地(每天阅读),您会看到一些查询由于读/写锁而被卡住。你如何解决这个问题。

你所做的是,你不会杀死正在写的任何东西。相反,您会终止所有读取查询。现在,这也很棘手,因为如果你终止所有读取查询,你也会放弃 OUTFILE 查询,这些查询实际上是写入查询(它们只是不写入 MySQL,而是写入磁盘)。

为什么需要杀掉(我只是针对MySQL来说,不要断章取义)

我有两个词要告诉你 - 从属滞后。我们不希望这种情况发生,因为如果发生这种情况,所有用户、报告、消费者都会受到影响。

基于三个问题,我写了以下内容来杀死 MySQL 中的进程

  • 查询运行了多长时间?
  • 谁在运行查询?
  • 您也想终止写入/修改查询吗?

我故意没有做的是,我没有维护已被终止的进程的历史记录。人们应该这样做,以便分析并找出谁在运行所有错误查询。但还有其他方法可以找到答案。

我已经为此创建了一个程序。没有花太多时间在这上面。因此,请建议这是否是一个好方法。

GitHub Gist

最佳答案

切换到 MariaDB。版本 10.0 和 10.1 实现了多项限制和超时:https://mariadb.com/kb/en/library/query-limits-and-timeouts/

然后在用户编写的内容和实际访问数据库之间编写一个 API。在这一层中,添加适当的限制。

关于mysql - 终止 MySQL 中长时间运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50265401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com