学艺不精,玩不转mariadb---order by排序好慢
学艺不精,玩不转mariadb
一、背景
由于开发的项目较多,多个数据库版本又不同。虽然使用docker处理起来很方便,但是考虑到mysql和mariadb都没多大区别,就打算将手头上的使用mysql的数据库都迁移到mariadb上。正所谓“青出于蓝而胜于蓝”,mysql搞收费后,mariadb在不断地发展壮大,仅管用的不多,但是印象中==mariadb==还是不错的。
正好jumpServer用docker一键部署后就内置了mariadb,于是就把手上的项目数据库迁移到mariadb里,迁移过程很顺利。
- 首先用navicat里先建一个xxx数据库
再Execute sql file,选择对应的备份数据
也可以用命令
time gunzip < xxx_20231023170623.sql.gz | mysql -h 192.168.10.3 -P 33361 -u root xxx -p
来还原。
还原后以为就完事了,可以愉快的玩耍了。怎料故事才刚刚开始,测试查询竟然比原来的mysql还慢一倍(都是在docker容器里跑,都在同一服务器上跑)。
二、分析测试
首先检查了配置文件,两个数据库的配置文件都没啥好看的,都是默认配置。会不会是mariadb版本的问题或者jumpServer自带==降速==光环?于是拉了一个最新的mariadb镜像,直接按默认配置docker run,然后把数据库还原。经测试没任何改善,有点失望。
- 最新mariadb版本
SAS万转硬盘,Raid5
- jms V3上的maraiadb版本
Intel SSD硬盘
mySql 5.7版本
SAS万转硬盘 Raid5
由上面图片可知,mariadb真没传说中的快,加上order by还更慢了。网上有说没加索引造成的,可是mysql里我也没加索引呢。而且索引不是万能的,像我这样select 10万条数据,有可能索引就失效了。实际测试,mariadb里加索引后,explain解析看到索引也没生效,select 1万条左右倒是还可以走索引。
这个问题对项目影响很大,差两倍的查询时间,肯定接受不了。后来又查了各种资料,花了很多时间都解决不了,mysql里能轻松处理的事情,到mariadb里就拉了。
虽然加上order by排序后查询慢,但是如果不加排序的话,速度还是非常快的,如果能解决排序效率问题,用mariadb就很完美了!
三、总结
既然解决不了,又想把mysql数据库整合,那怎么办呢?唉,没办法,学艺不精,只能日后有时间再慢慢分析了。计划换回==正版的mysql==,直接在jumpServer里将mariadb替换成mysql!因为所以,另一个故事《jumpServer用mysql代替默认的mariadb数据库》来了。
评论已关闭