【发布时间】:2017-01-16 13:45:33
【问题描述】:
我正在使用 XAMPP 运行 MySQL (InnoDB) 数据库。我对一个表(约 1,100 万行)进行了许多不同的、昂贵的查询,并多次取消它们,因为这需要很长时间......
如果我现在启动 MySQL,磁盘利用率会立即达到 100%,并且不会降低。之前取消的查询是否有可能在后台排队并立即执行?
show processlist; 显示没有正在运行的进程...
有什么想法吗?提前致谢!
更新: mysql-error.log 的一部分
2016-09-09 10:04:56 2068 [Note] InnoDB: 128 rollback segment(s) are active.
InnoDB: Starting in background the rollback of uncommitted transactions
2016-09-09 10:04:56 2068 [Note] InnoDB: Waiting for purge to start
2016-09-09 10:04:56 3478 InnoDB: Rolling back trx with id 426031, 90941 rows to undo
这可能是问题...但是如何解决呢?
【问题讨论】:
-
你是在真机还是虚拟机上运行这个?分配了多少 RAM,当 MySQL 达到峰值时会用掉多少内存? “磁盘使用率”可能不是您的意思,而是 CPU 使用率。
-
“磁盘使用率”是指卷上的空间,还是磁盘 i/o 使用率?您如何确定“磁盘使用率”为 100%?如果卷是“满的”并且没有更多的磁盘空间,那就是一个问题。你需要弄清楚是什么占用了空间,看看你是否可以恢复其中的任何一个。如果启用了 MySQL 二进制日志记录,要做的一件快速而肮脏的事情是清除旧的日志文件(假设复制或恢复不再需要这些文件),例如
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 2 DAY. -
只有 35MB 的 RAM 使用率,大多数时候 CPU 使用率接近 0%。在我的实际(强大)机器上运行它。就我而言,使用意味着使用。有足够的可用空间;-)
-
添加到日志记录问题,如果启用了长查询日志记录并且您正在运行它们,您可以使用日志本身的字面上千兆字节的磁盘空间。尝试截断 mysql-slow.log、mysql.err 和 mysql.log(当然是在检查它们是否有错误之后)。
-
抱歉表达错误。我的意思是利用而不是使用。 Mysql 并没有在我的磁盘上使用那么多空间;-) 它“只”用许多 I/O 给我的 HDD 带来压力......
标签: mysql disk utilization