【TiDB 4.0 试玩体验】TiDB 性能对比(v3.0.12 VS v4.0.0-rc)
作者: navyaijm2017 原文来源:https://tidb.net/blog/ea34eb91
一、环境说明
1、集群部署以及配置
2、部署情况
a、在一套服务器上同时部署 v3 和 v4 两个版本的两个集群,但是不同时启动,压测哪个版本的时候启动哪个集群,保证两个集群不相互影响,同时也保证了底层的硬件资源环境相同
b、部署集群用的参数都是默认参数,没有做过特殊修改
二、测试
关于使用性能测试工具的测试结果,官方有相关数据,我这里用我们具体的一个业务场景来测试,就是一个统计的 SQL
1、测试结果
2、测试说明
a、这是一个记录对象存储文件记录的表,表里面的数据量大概是 9860 万,下面是表结构
b、下面这个 SQL 是业务方用到的一个统计 SQL,我们就用这个 SQL 对比下 MySQL、TiDB3、TiDB4 的速度
SELECT SUM(file_size) as fileSize,COUNT(id) as fileCount,DATE_FORMAT(create_time,'%Y-%m-%d') as dateTime FROM ois_file_record WHERE identify = 'vehicle' and storage_type = 4 and bucket_type = 2 and is_delete = 0 and create_time > '2019-12-01 00:00:00' and file_key LIKE '%/video_data/%' GROUP BY DATE_FORMAT(create_time,'%Y-%m-%d') \"G
2、测试过程
a、下图是 MySQL 上的结果,这个 SQL 跑出来需要 8 分钟 4 秒
b、下图是 v4.0.0-rc 版本,没有开启 TiFlash 副本的结果,这个 SQL 跑出来需要 25 秒
c、下图是 v4.0.0-rc 版本,开启 1 个 TiFlash 副本的结果,这个 SQL 跑出来需要 7.5 秒
d、下图是 v3.0.12 的版本,这个 SQL 跑出来需要 32 秒
三、总结
1、TiDB 4.0 对于 AP 场景,在不开启 TiFlash 的情况下,相对于 3.0 的版本性能 提升不太明显,但是开启 TiFlash 副本的话,性能提升特别大,我上面的场景提升了 4 倍。
2、我们使用 TiDB 主要是两个场景,一个是大数据量解决 MySQL 分库分表的问题,不需要业务方写业务逻辑,也不依赖中间件,平滑从 MySQL 迁移到 TiDB;另一个场景是 AP 场景,我们把生产环境的多个库通过 DM 汇聚到 TiDB 集群做报表、统计相关业务。
3、TiDB 4.0,最吸引我的就是数据存储同时支持行存(TiKV)+ 列存(TiFlash),并且可以独立分开部署,相互不影响,用户无需关系自己的查询是 AP 还是 TP,TiDB 会自己判断
4、4.0 毕竟刚 RC 了几天,还是有些小问题的,但是官方响应很积极,我觉得这也是为啥 TiDB 能发展这么好很重要的原因吧,我测试过程中遇到几个问题如下:
a、TiUP 部署的时候,Y/N 那块如果输入一个其他字符,程序就直接退出了,我觉得这块应该优化下,判断用户输入的不是 Y 或者 N 的话就一直让用户输入,而不是直接退出
b、TiUP 用普通用户部署的时候不成功,我的这个普通用户从中控机到目标机已经做好了 ssh 免密码登录,并且有 sudo 权限,这块也反馈给官方了。
c、集群停止在启动之后,监控页面 Services Port Status 没数据了,这块也反馈给官方了。
d、4.0 和 3.0 对于 only_full_group_by 的处理应该是不一样了,我 3.0 和 4.0 的 sql_mode 完全一样,但是上面的 SQL 在 4.0 上无法执行,这个也反馈给官方。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/f548b60dc3734e55e0edaad27】。文章转载请联系作者。
评论