资讯专栏INFORMATION COLUMN

MySQL5.7执行count(*)比MySQL5.6执行更慢

社区管理员 / 436人阅读

最近遇到一个比较有意思的问题,用户MySQL5.6升级MySQL5.7后,出现MySQL5.7执行count(*)统计类SQL,比MySQL5.6慢很多,并且可以100%复现。初始我们怀疑和Cardinality(基数)采样有关。(详情参考文章:MySQL优化器之Cardinality(Analyze table)但是经过验证发现Cardinality采样指标并无不妥之处。

所以我们就在google一顿检索,直至我们发现了MySQL官网的这个BUG描述: 

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

image.png

根据官网介绍,count(*) much slower on 5.7 than 5.6,影响MySQL5.7小版本序列为:5.7.2、5.7.10、5.7.11。目前修复于5.7.18和MySQL8.0.1。具体异常原因是:SELECT COUNT(*) 在某些情况下,由于 MySQL5.7.2中引入的修改导致InnoDB计算行数时通过遍历聚集索引而不是代价更小的二级索引,所以性能会更差。5.7.18修复后,COUNT(*)操作可以正常走二级索引,性能得以大大提升。

image.png


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128146.html

相关文章

  • CentOS6.5系统下RPM包安装MySQL5.6

    摘要:新开的云服务器,需要检测系统是否自带安装如果发现有系统自带,果断这么干随便在你存放文件的目录下执行,这里解释一下,由于这个的源服务器在国外,所以下载速度会比较慢,还好只有大,而就有了,所以这是我不想安装的原因接着执行这句解释一下,这个 1.新开的云服务器,需要检测系统是否自带安装mysql yum list installed | grep mysql 2.如果发现有系统自带mysql...

    bladefury 评论0 收藏0
  • CentOS7下源码安装MySQL5.7.6+

    摘要:初始化数据库不同初始化之后存在四个数据库,初始化之后存在四个数据库。初始化用户不同初始化之后存在五个用户,初始化之后存在用户初始化密码初始化之后用户密码为空,初始化之后会为用户生成随机密码。 源文Github地址 Linux版本:Centos7 MySQL版本:MySQL5.7.16 该文档适用于MySQL版本>=5.7.6 卸载CentOS7默认携带的mariadb包 # 检查...

    姘存按 评论0 收藏0
  • CentOS7下源码安装MySQL5.7.6+

    摘要:初始化数据库不同初始化之后存在四个数据库,初始化之后存在四个数据库。初始化用户不同初始化之后存在五个用户,初始化之后存在用户初始化密码初始化之后用户密码为空,初始化之后会为用户生成随机密码。 源文Github地址 Linux版本:Centos7 MySQL版本:MySQL5.7.16 该文档适用于MySQL版本>=5.7.6 卸载CentOS7默认携带的mariadb包 # 检查...

    marser 评论0 收藏0
  • Centos7.4安装Mysql5.6

    摘要:查看有没有安装如果有,卸载卸载已有卸载旧版本的查看有没有安装如果有,卸载旧版本删除服务查看服务删除服务删除分散的文件夹查出相应的文件夹,也可以用删除安装依赖注意先装好依赖,再装。 环境 Centos7.4 工具 Xshell(远程终端模拟) FileZilla(给linux传输文件) 准备工作 1、 卸载MariaDB 注意:一定要将mariaDB包和自带mysql包卸载干净,否则...

    xi4oh4o 评论0 收藏0
  • Centos7.4安装Mysql5.6

    摘要:查看有没有安装如果有,卸载卸载已有卸载旧版本的查看有没有安装如果有,卸载旧版本删除服务查看服务删除服务删除分散的文件夹查出相应的文件夹,也可以用删除安装依赖注意先装好依赖,再装。 环境 Centos7.4 工具 Xshell(远程终端模拟) FileZilla(给linux传输文件) 准备工作 1、 卸载MariaDB 注意:一定要将mariaDB包和自带mysql包卸载干净,否则...

    Ku_Andrew 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<