问题描述
我遇到了一个问题,我发现自己解决它的唯一方法是将我的机器恢复出厂设置。
我遇到的问题是插入、更新、删除和架构修改需要很多时间。磁盘最高可达 100%,但执行速度非常慢。通过以下方式进行修改时会发生这种情况:
- 从 Workbench 恢复备份(速度高达 5MB/s)
- 从 NodeJS 进程应用迁移和播种新数据库(速度高达 1MB/s):这个过程过去需要 2 分钟完成,但现在大约需要 30/40 分钟。
我认为当我开始尝试恢复大备份(如 14GB 数据)时,这种情况就开始发生了。我相信这不是巧合。
计算机运行良好。复制和粘贴大文件使磁盘速度高达 400MB/s,这是一个很棒的性能。我用它玩游戏,从来没有发现任何相关问题,所以这个问题似乎只发生在 MysqL 上。
我的环境是:
- Razer Blade 15、16GB RAM、512GB SSD NvME (CA5-8D512)、I7 10TH 处理器
- Windows 10
- WSL 2 (Ubuntu 20.04)
- MysqL 8.0(在 WSL 上运行)
- MysqL Workbench(在 Windows 上运行)
[MysqLd_safe]
socket = /var/run/MysqLd/MysqLd.sock
nice = 0
[MysqLd]
user = MysqL
pid-file = /var/run/MysqLd/MysqLd.pid
socket = /var/run/MysqLd/MysqLd.sock
port = 3308
basedir = /usr
datadir = /var/lib/MysqL
tmpdir = /tmp
lc-messages-dir = /usr/share/MysqL
skip-external-locking
skip-log-bin
bind-address = 127.0.0.1
MysqLx-bind-address = 127.0.0.1
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover-options = BACKUP
log_error = /var/log/MysqL/error.log
max_binlog_size = 100M
expire_logs_days = 10
sql_mode=''
default-time-zone=+00:00
附加信息:我也尝试使用 Ubuntu 操作系统,但发生了同样的问题。
解决方法
架构更改应该罕见。你似乎做了很多事情。
8.0 比以前的版本慢得多的原因是架构更改现在是 ACID,并且可以回滚。这需要挂起删除的表、列更改等。这会消耗大量 I/O。
同时,我建议插入、更新和删除不会比以前的版本慢。
如果您很少加载数据集的副本,请考虑 LVM 技术。它们比任何“恢复”都要快几个数量级——甚至在 8.0 之前。