【问题标题】:why MySql 8.0.17 Select query performance is slower than Mysql 5.7.26?为什么 MySql 8.0.17 Select 查询性能比 Mysql 5.7.26 慢?
【发布时间】:2020-01-28 16:51:02
【问题描述】:

我们有非常基本的查询,比如

select * from Some_Table

过去在 Mysql 5.7 中运行良好。 Mysql 8. 0 中的相同数据花费了两倍的时间(大约 200 万条数据)。我们已经从 5.7 升级到 8.x 并且看到性能下降。我们还尝试更改 my.cnf 文件中以下系统变量的值,但问题仍然存在。

sort_buffer_size 
read_buffer_size 
read_rnd_buffer_size
myisam_sort_buffer_size
max_allowed_packet 
wait_timeout
interactive_timeout
connect_timeout

任何帮助都会很棒,如何使 8.x 快于或等于 5.7x

【问题讨论】:

  • 升级后是否在同一硬件上运行?相同的操作系统?使用相同的设置?相同的引擎?
  • 只有os不同,os现在是sles 12 sp4,从sles 11 sp4升级而来。
  • 如果操作系统不同,您是否恢复了 sysctl 设置?其中有很多会影响磁盘和网络性能,并且默认值对于数据库通常是不够的。
  • 我不认为它会像我们尝试过的相同操作系统那样影响,Mysql 5.7 性能优于 8.X
  • 我们有同样的问题 MySQL 8 对我们来说性能下降了 50% :-/ ...我们记录了一天的所有查询,并在相同的操作系统、相同的硬件上重新导入了这个转储,相同的引擎,...但一个使用 MySQL 5.5,另一个使用 MySQL 8。

标签: mysql database-administration


【解决方案1】:

似乎是一个未解决的错误!

我想确认我的 Windows 开发人员机器(64 GB RAM、Ryzen 3900、NVE SSD)上的 MySQL 8.0.21 有同样的问题,其中包含约 70.000 个数据集的简单表的计数需要 22秒。如上所述添加 WHERE id > 0 可将查询时间减少到 0.2 秒。因此,MySQL 8 中肯定存在错误。在速度慢得多的 Windows 机器(Surface Pro 3)上使用 Maria 10 DB 或使用 MySQL 5.7 的任何在线主机测试同一张表也可以立即得到结果。

https://bugs.mysql.com/bug.php?id=97709

这里有潜在的补丁:https://bugs.mysql.com/bug.php?id=100966

不过,我的Mysql 8.0.23还是有速度慢的问题。


针对该错误的建议临时“修复”是将您的 MySQL 查询(如果适用)更改为使用 id > 0

SELECT COUNT(*) FROM yourtable 
WHERE id > 0

mysql bug thread 中的最后一条评论是:

我们也遇到过同样的问题,经过一些广泛的测试,我们发现将变量innodb_flush_method 设置为 FSYNC。性能显着提高。

我使用SHOW VARIABLES 检查了我的数据库,发现innodb_flush_method 的值为fsync,所以这绝对不是修复该错误的方法。

innodb_flush_log_at_timeout 1
innodb_flush_log_at_trx_commit 1
innodb_flush_method fsync
innodb_flush_neighbors 0
innodb_flush_sync ON
innodb_flushing_avg_loops 30

【讨论】:

    猜你喜欢
    • 2016-06-02
    • 2012-07-18
    • 2018-09-07
    • 2011-09-02
    • 2021-07-06
    • 2016-01-10
    • 1970-01-01
    • 2023-03-24
    • 2016-03-09
    相关资源
    最近更新 更多