TiDB v2.0 与v3.0 性能对比

Easter79
• 阅读 850

上个月底,期待已外的TiDB 3.0GA 终于发布了,根据官方介绍,在稳定性,性能都有显著改善,特别是在性能上与2.1相比Sysbench 性能提升有 1.5 倍,为了查验这一说法,新搭建了一套测试环境进行了验证,同时与去年引入tidb时做的测试进行了对比。

  1. 原材料

主机配置情况:

主机

cpu(core)

mem(G)

disk

PC1

24

376

SSD

PC2

24

376

SSD

PC3

24

376

SSD

TiDB 版本:v3.0GA版本

TiDB组件分布:

组件

节点数

容量

tidb

3

100G/节点

pd

3

100G/节点

kv

3

800G/节点

测试工具:Systench 版本:1.0.12 (using bundled LuaJIT 2.1.0-beta2)

测试场景:

  1. 测试脚本为oltp_read_write,oltp_read_only,oltp_point_select ,oltp_update_index ,oltp_update_non_index ,oltp_insert oltp_delete 6个场景
  2. 数据初始化1千万(主要是为了与之前测试的2.0版本对比)
  3. 并发数最小为10,最大为1200,每次并发数增加20

测试架构:

TiDB v2.0 与v3.0 性能对比

1.各场景测试对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

通过以上对数据数据可以看出,在每个测试用例下v3.0的性能都要优于v2.0,特别是在在read write场景下性能高出了4倍,而其他的场景下也翻了一倍,性能提升幅度很大。
我们知道 tikv副本间是由于raft日志同步实现的,完成这一功能的主要是进程 Raftstore与Apply,而在2.0时代都是单线程,在3.0版本则升级成了多线程。由此看,3.0版本性能提升就见怪不怪了,那么在稳定性又如何呢,可以接着继续看下面的数据。

各场景延迟

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

TiDB v2.0 与v3.0 性能对比

从以上各个测试用户的对比数据看,在3.0版本下,
1. 延迟随着并发数的增加平稳的增加而在2.0版本中,除了在delete场景下稍平移稳些,其他延迟抖动很大
2. 3.0版本延迟与2.0相比少20%~50%
4 小结
Tidb 3.0与v2.0版本相比,对于节点内可扩展性,内并发处理能力都有很大的提升,各节点延时下降明显,资源利用率大增加,同等压力情况下性能与稳定性都提升显著。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
MYSQL与TiDB的执行计划
前言这里采用了tpch一个数据库的数据量来进行查询计划的对比。并借助tpch中的22条查询语句进行执行计划分析。mysql采用的是标准安装,TiDB采用的是单机测试版,这里的性能结果不能说明其性能差异本文章主要目的是对比Mysql与TiDB在执行sql查询时的差异。mysql版本5.7  TiDB版本v2.0.0rc.4准备
ClickHouse技术研究及语法简介 | 京东云技术团队
本文对Clickhouse架构原理、语法、性能特点做一定研究,同时将其与mysql、elasticsearch、tidb做横向对比,并重点分析与mysql的语法差异,为有mysql迁移clickhouse场景需求的技术预研及参考。
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k