写点什么

TiDB 5.0 部分新特性试用

  • 2022 年 7 月 11 日
  • 本文字数:2608 字

    阅读完需:约 9 分钟

作者: leeray 原文来源:https://tidb.net/blog/06db0a6e


【是否原创】是


【首发渠道】TiDB 社区

TiDB 5.0 部分新特性试用

一、引言

2021 年 04 月 07 日 TiDB 5.0.0 版本正式发版。每一个大版本的更新都有一个主题。如果说 TiDB 4.0 的关键词是更多新功能与新特性。TiDB 5.0 的关键词可以说是“内功”。根据官方文档(https://docs.pingcap.com/zh/tidb/stable/release-5.0.0#whats-new-in-tidb-50) 可以了解到新增特性。


在发布的核心关键特性中,大部分都是性能提升,还有另外一部分是关于系统稳定性提升的特性。今天就针对部分性能提升的特性做一些简要的测试,通过实验数据对比 TiDB 5.0 与 TiDB 4.0 的差别。

二、特性验证

1、TiDB 5.0 引入聚簇索引功能,提升数据库性能。这方面以 TPC-C tpmC 性能提升 39% 为例。下面的验证性实验将使用 tiup 的 bench 组件进行 TiDB 4.0 和 5.0 的 TPC-C 测试。


TPC-C 是一个对 OLTP(联机交易处理)系统进行测试的规范,使用一个商品销售模型对 OLTP 系统进行测试,其中包含五类事务:


  • NewOrder – 新订单的生成

  • Payment – 订单付款

  • OrderStatus – 最近订单查询

  • Delivery – 配送

  • StockLevel – 库存缺货状态分析


TPC-C 使用 tpmC 值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTH, Max, Qualified Throughput)。其中 Transaction 以 NewOrder Transaction 为准,即最终衡量单位为每分钟处理的新订单数。


下面使用 300 WAREHOUSE 为例进行测试。在相同的资源分配情况下分别对 TiDB 4.0 和 5.0 进行测试。


两次测试均使用以下硬件配置,集群架构则是 1PD、1TiDB、5TiKV。


| IP | 部署节点 | OS | 网卡 | CPU | 内存 | 存储 || ———– | —– | ——- | – | — | — | —- || 10.3.72.145 | PD,监控 | Centos7 | 千兆 | 4 核 | 20G | 120g || 10.3.72.87 | TiDB | Centos7 | 千兆 | 4 核 | 20G | 120g || 10.3.72.83 | TiKV | Centos7 | 千兆 | 4 核 | 20G | 120g || 10.3.72.125 | TiKV | Centos7 | 千兆 | 4 核 | 20G | 120g || 10.3.72.90 | TiKV | Centos7 | 千兆 | 4 核 | 20G | 120g || 10.3.72.86 | TiKV | Centos7 | 千兆 | 4 核 | 20G | 120g || 10.3.72.88 | TiKV | Centos7 | 千兆 | 4 核 | 20G | 120g |


使用 tiup 命令分别测试集群 TPC-C 能力,每一个版本都测试多次取平均值,排除偶然误差。


## 导入数据tiup bench tpcc -H 10.3.72.87 -P 4000 -D tpcc --warehouses 1000 prepare
## 运行测试tiup bench tpcc -H 10.3.72.87 -P 4000 -D tpcc --warehouses 1000 run
## 清理数据tiup bench tpcc -H 10.3.72.87 -P 4000 -D tpcc --warehouses 4 cleanup
复制代码



.png”)


从 tpm 的柱状图中可以看出 v5,0 在 new_order,payment 等事务的 tpm 数值都高于 v4.0。增长幅度在 20% -30% 之间,与官网提供的增长幅度数据 39% 有一定差距。由于实验环境的影响,实验数据的偏差在这个范围内也是可以接受的。


TPC-C 的实验比较耗时,导入数据以及运行实验都会花费较长时间,最好将实验数据保存到文本中,即 run 命令之后再加上 ”>> tpc.log”,以免过程中 ssh 连接工具意外断开丢失实验结果,导致前功尽弃。


2、TiDB 5.0 默认开启异步提交事务功能。数据库的客户端会同步等待数据库系统通过两阶段 (2PC) 完成事务的提交,事务在第一阶段提交成功后就会返回结果给客户端,系统会在后台异步执行第二阶段提交操作,降低事务提交的延迟。据官网文档所述,在一定配置情况下,Sysbench 设置 64 线程测试 Update index 时, 平均延迟由 12.04 ms 降低到 7.01ms ,降低了 41.7%。接下来在我的本地环境下分别对 TiDB 5.0 和 TiDB 4.0 进行 Sysbench 测试,验证一下性能提升效果。


使用 Sysbench 自带 oltp_update_index.lua 脚本分别对 5.0 和 4.0 的 TiDB 集群进行多次测试,取测试结果的平均值作为参考。集群配置与上一点中的表格内容相同


使用如下命令测试集群。测试规模为 20 张表,每张表 100w 行数据,并发线程为 64。


## 初始化库表结构以及数据sysbench oltp_update_index --config-file=tidb-config  --tables=20 --table-size=1000000 --report-interval=10 --threads=64 --time=100 prepare
## 运行只写脚本,触发cdc同步任务。sysbench oltp_update_index --config-file=tidb-config --tables=20 --table-size=1000000 --report-interval=10 --threads=64 --time=100 run
##清理数据sysbench oltp_update_index --config-file=tidb-config --tables=20 --table-size=1000000 --report-interval=10 --threads=64 --time=100 cleanup
复制代码


对比测试结果如下图



v4.0 和 v5.0 平均时延分别是 74.40 ms 和 43.71 ms, 性能提升 41.25%。基本符合官网提供的数据。


3、通过提升优化器的稳定性及限制系统任务对 I/O、网络、CPU、内存等资源的占用,降低系统的抖动。例如:测试 8 小时,TPC-C 测试中 tpmC 抖动标准差的值小于等于 2%。对于系统稳定性提升的感受,从第二点测试中 95% 的时延也可以看出来,v5.0 绝大部分查询都在一个稳定的 QPS 下完成,所以 95% 时延与其平均时延基本持平。而 v4.0 的 95% 时延数值则偏大。说明其系统存在比较明显的抖动情况,造成一部分查询完成时间较长。


官网使用 tpc-c 实验数据计算 tpmC 的抖动标准差来反映 v5.0 稳定性的提升,我们这里就使用 Sysbench 一段时间内的 QPS 来计算标准差来看一下 v4.0 和 v5.0 稳定性的差别。


使用 Sysbench 的 update_index 脚本在相同情况下分别对 v4.0 和 v5.0 进行 1000 秒的测试,计算过程中报告的实时 QPS 计算得出 v4.0 与 v5.0 的实时 QPS 标准差分别是 634.1 和 127.4。通过这种粗略的方式可以看出二者 QPS 的稳定性确实有比较大的差别,由于时间有限,只进行了 1000s 的实验,所得数据可能不太能准确反映二者实际稳定性的表现。只能大致了解一下稳定性的提升效果。

三、总结

总结上面的验证结果,我们可以直观地了解到 TiDB 通过内部代码的优化,实实在在地提高了数据库各方面的性能以及稳定性。通过异步提交事务,引入聚簇索引提升数据库性能,降低写入数据延迟。通过提升优化器的稳定性及限制系统任务对 I/O,网络,内存资源的占用,降低系统抖动。通过这次实验,在一定配置和软件环境下通过实验数据大致了解到 TiDB V5.0.0 所带来的提升。除了这次实验所说的部分特性,还有很多特性有待大家一起探索,比如 TiFlash 引入的 MPP 架构,备份到云存储,TiCDC 等。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB 5.0 部分新特性试用_版本测评_TiDB 社区干货传送门_InfoQ写作社区