我有一个托管许多数据库(〜30)的mysql服务器(5.0.58)。几年前,我开始遇到一些 db 的性能问题,我最终通过执行每晚的 cron 作业来使用以下命令检查/优化数据库来解决这个问题:
mysqlcheck --check --auto-repair --analyze --optimize --silent --all-databases
此命令通常在 ~ 20 分钟内执行。这就像一个魅力,直到上个月。现在执行此命令时,机器上的 CPU 会出现峰值,机器几乎没有响应。我唯一能做的就是重新启动 mysqld 服务(等待 10-15 分钟后才能登录)。在查看mysql进程列表时出现这种情况,似乎有些表也可能被锁定,但我仍在研究这个。
任何人都知道为什么这个命令会锁定服务器?我打算尝试将命令限制为特定数据库(而不是 --all-databases),看看这是否有帮助。