gpt4 book ai didi

mysql - 当没有事件查询时如何避免高 CPU 使用率

转载 作者:行者123 更新时间:2023-11-29 11:50:34 24 4
gpt4 key购买 nike

今天早上我在我的 Linux 服务器上遇到了问题。我意识到,当我杀死整个晚上生成约 200k 数据库条目(大小为 1GB)的所有后台任务后,我的 CPU 使用率仍然为 80%,这只是 MySQL 的原因。重新启动或重新启动 MySQL 或 nginx 都不起作用。

“InnoDB 将数据保存在正在更改的行中,并且针对仍在回滚的更改的查询应该使用仍在撤消日志中的数据来透明地应答。”

我对这个话题不太熟悉,但似乎这就是为什么即使没有查询,CPU 使用率也很高的答案。当我SHOW PROCESSLIST时,它显示三个连接,并在“状态”列中显示“正在复制到临时表”。

我想现在我只需要等待所有这些回滚过程完成,但为什么它们首先出现,我怎样才能避免这种情况再次发生?

最佳答案

  • 写入和索引更新被“延迟”。即使所有查询都完成后,这也可能导致 I/O 和 CPU 事件。

  • PROCESSLIST 中的“复制到 tmp 表”意味着某些内容仍在运行。追查该查询。它可以通过更好的索引或重写来改进。现在和/或重新启动 mysqld 时,终止 mysqld 将导致代价高昂的回滚。

  • 在事务中终止进程会导致立即ROLLBACK。更改应用程序以拦截“kill”并优雅地等待,直到一切准备好关闭。

  • 更新单个语句中的一百​​万行需要很长的时间。也许你杀了那个(或类似的东西)?考虑使用 PRIMARY KEY 上的 1000 行范围将其分解为 block 。

关于mysql - 当没有事件查询时如何避免高 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34145769/

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