电信运营商性能windowsMySQL

mysql在windows操作系统上磁盘读io很差?

硬件信息: CPU:i7-10875H   内存:32G  硬盘:1TSSD。操作系统:Windows 11 家庭中文版及windows10mysql版本:8.0.21测试方式:建一张200M的表,bufferpool默认128M,对表求count,在windows任务管理器下查看磁盘性能,磁盘读io一直在4-7M/S,求count需要50+S。同一台机器上的centos虚...显示全部

硬件信息: CPU:i7-10875H   内存:32G  硬盘:1TSSD。
操作系统:Windows 11 家庭中文版及windows10
mysql版本:8.0.21
测试方式:建一张200M的表,bufferpool默认128M,对表求count,在windows任务管理器下查看磁盘性能,磁盘读io一直在4-7M/S,求count需要50+S。

同一台机器上的centos虚拟机,同样的mysql版本,同样的数据测试,磁盘读io一直在100-200M/S,求count第一次需要2S。
同一台机器上windows环境的oracle11可以到2G/S。

对比了windows和centos环境的mysql配置,只有innodb_flush_method这一项确实是不同操作系统参数不一致,其他参数都一样,不知道这个io差异到底是怎么产生的?

收起
参与11

查看其它 2 个回答青衣老刀的回答

青衣老刀青衣老刀系统分析师亿阳信通

经过查证这个是mysql8在windows下的bug,主要是存在于8.0.17到8.0.23这几个版本
https://bugs.mysql.com/bug.php?id=103213
不过看了mysql8.0.17版本和8.0.24版本的更新文档,好像没有明确的指出做了什么优化,只能看出8.0.17版本对count(*)做了优化,然后8.0.24版本针对windows下有这么一个优化:

  • InnoDB: On Windows, stalls were caused by concurrent queries where the number of parallel read threads exceeded the number of machine cores. (Bug #32224707, Bug #101789)SELECT COUNT(*)
    这里虽然对应bug不是同一个,但是确实在这个版本以后看到这个问题明显得到了改善。
    同时验证了5.7版本和mariadb,都不存在这个问题。
电信运营商 · 2022-10-13
浏览943

回答者

青衣老刀
系统分析师亿阳信通
擅长领域: 数据库服务器信创中间件

青衣老刀 最近回答过的问题

回答状态

  • 发布时间:2022-10-13
  • 关注会员:3 人
  • 回答浏览:943
  • X社区推广