Skip to main content
 Web开发网 » 数据库教程

一文看懂mysql、mariadb与percona server在谓词推入的性能差异

2021年08月11日10910百度已收录

概述前面介绍一键部署脚本其实就是为这个实验做一个铺垫,最近有个项目在用mysql5.7时发现由于不支持谓词推入功能,部分操作都很慢,经常发生阻塞现象,因为该项目用了很多视图来支持业务的一些操作,所以就打算换数据库来看一下性能有没提升,故有了以下针对mysql5.7、mysql8.0、percona server mysql8、mariadb10.4对谓词推入的性能比较。

一、基础参数配置因为我都写在一键部署脚本了,所以该参数都是按以下标准事先设置好~

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第1张

二、环境准备1、分别部署mysql5.7、mysql8.0、percona server mysql8、mariadb10.4四个版本的数据库

略,参考一键部署脚本

2、建库并导入单表数据

单表数据量大约在80万。

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第2张

3、建立视图

这里先统一建立视图,后面直接调用做比较。

create view t as SELECT unit_no, origin, dest, load_user, load_time, unload_user, unload_time, MAX(CASE WHEN unload = TRUE THEN unload_time ELSE load_time END)FROM fsl_order_movement_unitWHERE `load` = TRUEGROUP BY unit_no一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第3张

三、mysql5.7测试谓词推入1、测试查询视图耗时

第一次查询在11s,后面多次查询稳定在8s

 select * from t where unit_no = '1810336177913';一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第4张

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第5张

2、查看执行计划

未实现谓词推入,实际上先走了全表扫描,然后再去filter

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第6张

四、mysql8.0测试谓词推入1、测试查询视图耗时

查询稳定在11s

 select * from t where unit_no = '1810336177913';一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第7张

2、查看执行计划

执行计划无明显变化,先做全表扫描,在filter

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第8张

五、Percona Server for MySQL 8.0测试谓词推入1、测试查询视图耗时

第一次查询在6s,后面多次查询稳定在5s

 select * from t where unit_no = '1810336177913';一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第9张

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第10张

2、查看执行计划

执行计划没变,先做全表扫描,在filter

 explain select * from t where unit_no = '1810336177913';一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第11张

六、mariadb10.4测试谓词推入1、测试查询视图耗时

第一次查询在6s,后面多次查询稳定在5s

 select * from t where unit_no = '1810336177913';一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第12张

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第13张

2、查看执行计划

可以发现执行计划发生了改变,这里已经用到了索引,并不做全表扫描。

 explain select * from t where unit_no = '1810336177913';一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第14张

七、结论结论如下:

由于只有mariadb才支持这个特性,所以先用mariadb数据库去替换目前的5.7版本,下一步进行整体的功能测试,看一下效果。

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第15张

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

一文看懂mysql、mariadb与percona server在谓词推入的性能差异  一文 谓词 推入 差异 性能 第16张

评论列表暂无评论
发表评论
微信