【问题标题】:Mysql takes up to 50% cpu after aborting DELETE queryMysql 在中止 DELETE 查询后最多占用 50% cpu
【发布时间】:2012-02-07 11:25:12
【问题描述】:

我遇到了以前从未遇到过的问题。 我昨天清理了带有访问统计数据的客户数据库和表有 15GB 的数据,所以我决定删除所有早于 2 月 1 日的行,因为我们将所有数据都存储在每日统计数据中,并且没有必要保留那些旧的单一统计数据。

我尝试运行DELETE FROM sv WHERE datetime < ?(日期时间索引)和DELETE FROM sv WHERE id < ?(id 上的主索引),但两个查询都太慢了,耗时超过 15 分钟。所以我刚刚通过 Ctrl+C 中止了这些查询。

然后我认为更好的主意是复制表结构和二月行并删除旧表,但今天 我发现服务器上的 mysql 进程正在运行高达 50% 的 cpu 使用率 正常流量我们的网站。

将 sv 表移出数据库文件夹(myIsam 表)后使用率仍高达 50%

首先我认为该表一定已损坏,但 phpmyadmin 并未将其标记为已崩溃。

如何调试这个?那里发生了什么?

【问题讨论】:

标签: mysql crash cpu-usage sql-delete


【解决方案1】:

由于查询被终止,您的系统可能正在重新索引整个表。如果它在 INNODB 中的事务中,您还需要系统重建表然后重新创建索引。

我会查看 iostat 并查找磁盘争用情况。

【讨论】:

  • 我怎样才能停止这种娱乐?我将该表移动到临时目录,那么如果它们的位置没有文件,那么真正重新创建的是什么?现在我只想复制带有结构的表,因为这个网站现在需要运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
相关资源
最近更新 更多