微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL 8:插入、更新、删除和更改架构时的性能非常慢

如何解决MySQL 8:插入、更新、删除和更改架构时的性能非常慢

我遇到了一个问题,我发现自己解决它的唯一方法是将我的机器恢复出厂设置。

我遇到的问题是插入、更新、删除和架构修改需要很多时间。磁盘最高可达 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.cnf 文件如下所示:

[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 之前。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。