作者:刘春雷​



TiFlash5.x与4.x对比测试

                   2021-04-15 刘春雷



1、汇总

TiDB5.0版本GA啦~通过 TiFlash 节点引入了 MPP 架构。下面进行简单的性能测试~

  • 性能提升
  • 4.0TiFlash,双节点比单节点:SQL1-SQL6 SQL执行时间分别降低:46.9%,20%,4%,15.25%,33.33%,31.67%,平均降低:25.19%
  • 5.0TiFlash,双节点比单节点:SQL1-SQL6 SQL执行时间分别降低:77.27%,28.31%,21.95%,29.39%,10.66%,28.82%,平均降低:32.73%
  • 5.0Tiflash双节点 比 4.0Tiflash双节点:SQL1-SQL6 SQL执行时间分别降低:56.52%,-15.21%,55.55%,12.18%,80.29%,92.17%,平均降低:46.91%
  • 结论:
  • 4.0TiFlash多节点比单节点有性能提升
  • 5.0TiFlash多节点比单节点有性能提升
  • 5.0TiFlash多节点 比 4.0TiFlash多节点 有性能提升
  • 问题:
  • 测试过程中,发现<=4.0.11 版本的TiFlash 存在内存吃满oom的问题,已经反馈官方,待4.0.13版本左右进行修复
  • 计划:
  • 当前是5.0.0版本测试的DBA自己的监控业务集群,后续会使用5.0.1 版本,使用其他报表、数仓业务进行线上升级与观察,线上的SQL更复杂,对Tiflash是个挑战~,后续会有文章分享滴~


2、信息

TiFlash 5.x 与 4.x 对比测试_执行时间



3、测试



3.1、测试汇总

TiFlash 5.x 与 4.x 对比测试_执行计划_02

\

TiFlash 5.x 与 4.x 对比测试_sql_03



3.2、测试情况

【信息】:

SELECT * FROM information_schema.tiflash_replica ;

TiFlash 5.x 与 4.x 对比测试_执行时间_04

【确认开启MPP】:

show variables like “tidb_allow_mpp”;

TiFlash 5.x 与 4.x 对比测试_执行计划_05

【情况】:

当前已有Tiflash 集群,1个TiFlash节点,监控数据表已经添加至TiFlash

【测试流程】:

  • 测试SQL
  • 扩容至2个Tiflash节点,均衡后,测试SQL
  • 升级至5.0.0
  • 测试SQL
  • 添加TiFlash节点
  • 等待均衡
  • 测试SQL对比

【均衡数据】:

PD-Statistics-balance - Store-used

TiFlash 5.x 与 4.x 对比测试_执行计划_06



3.3、SQL1

4.0 单个TiFlash执行计划

TiFlash 5.x 与 4.x 对比测试_执行时间_07

【4.0 单个TiFlash执行时间】:

1 row in set (1.30 sec)

4.0 两个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行时间_08

【4.0 两个TiFlash执行时间】:

1 row in set (0.69 sec)

【5.0 单个TiFlash执行计划】:

explain select max(Com_select),avg(Com_select),sum(Com_select) from mysql_globalstatus where monitorDay >=‘2021-03-01’ and monitorDay <=‘2021-03-31’;

TiFlash 5.x 与 4.x 对比测试_执行时间_09

【5.0 单个TiFlash执行时间】:

1 row in set (1.32 sec)

【5.0 2个TiFlash执行计划】:

TiFlash 5.x 与 4.x 对比测试_执行时间_10

【5.0 2个TiFlash执行时间】:

1 row in set (0.30 sec)



3.4、SQL2

4.0 单个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行时间_11

【4.0 单个TiFlash执行时间】:

1 row in set (2.30 sec)

4.0 两个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行计划_12

【4.0 两个TiFlash执行时间】:

1 row in set (1.84 sec)

【5.0 单个TiFlash执行计划】:

explain select igid,sum(Com_select) from mysql_globalstatus where monitorDay =‘2021-04-14’ group by igid order by sum(Com_select) desc limit 5;

TiFlash 5.x 与 4.x 对比测试_执行时间_13

【5.0 单个TiFlash执行时间】:

1 row in set (3.78 sec)

【5.0 2个TiFlash执行计划】:

TiFlash 5.x 与 4.x 对比测试_执行时间_14

【5.0 2个TiFlash执行时间】:

1 row in set (2.12 sec)



3.5、SQL3

4.0 单个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行时间_15

【4.0 单个TiFlash执行时间】:

5 rows in set (0.75 sec)

4.0 两个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行计划_16

【4.0 两个TiFlash执行时间】:

5 rows in set (0.72 sec)

【5.0 单个TiFlash执行计划】:

explain select igid,sum(Com_select) from mysql_globalstatus where monitorDay >=‘2021-03-01’ and monitorDay <=‘2021-03-31’ group by igid order by sum(Com_select) desc limit 5;

TiFlash 5.x 与 4.x 对比测试_执行时间_17

【5.0 单个TiFlash执行时间】:

5 rows in set (0.41 sec)

【5.0 2个TiFlash执行计划】:

TiFlash 5.x 与 4.x 对比测试_执行时间_18

【5.0 2个TiFlash执行时间】:

5 rows in set (0.32 sec)



3.6、SQL4

4.0 单个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行时间_19

【4.0 单个TiFlash执行时间】:

5 rows in set (4.26 sec)

4.0 两个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行时间_20

【4.0 两个TiFlash执行时间】:

5 rows in set (3.61 sec)

【5.0 1个TiFlash执行时间】:
5 rows in set (4.49 sec)

【5.0 2个TiFlash执行计划】:

TiFlash 5.x 与 4.x 对比测试_执行计划_21

【5.0 2个TiFlash执行时间】:

5 rows in set (3.17 sec)



3.7、SQL5

4.0 单个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_sql_22

【4.0 单个TiFlash执行时间】:

5 rows in set (5.10 sec)

4.0 两个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行计划_23

【4.0 两个TiFlash执行时间】:

5 rows in set (3.40 sec)

【5.0 表mysql_bussname 没有添加至Tiflash 】:

mysql_bussname 没有添加至Tiflash

explain select aa.igid,bb.buss_name,sum(Com_select)
-> from mysql_globalstatus aa inner join mysql_bussname bb
-> on aa.igid=bb.igid and
-> aa.monitorDay =‘2021-04-14’
-> group by aa.igid order by sum(Com_select) desc limit 5;

TiFlash 5.x 与 4.x 对比测试_执行计划_24

【5.0 表mysql_bussname 没有添加至Tiflash的执行时间 】:

5 rows in set (10.82 sec)

【5.0 表mysql_bussname 添加至Tiflash】:

alter table mysql_bussname SET TIFLASH REPLICA 1;

【5.0 单个TiFlash执行计划】:

explain select aa.igid,bb.buss_name,sum(Com_select) from mysql_globalstatus aa inner join mysql_bussname bb on aa.igid=bb.igid and aa.monitorDay =‘2021-04-14’ group by aa.igid order by sum(Com_select) desc limit 5;

TiFlash 5.x 与 4.x 对比测试_sql_25

【5.0 单个TiFlash执行时间】:

5 rows in set (0.75 sec)

【5.0 2个TiFlash执行计划】:

TiFlash 5.x 与 4.x 对比测试_sql_26

【5.0 2个TiFlash执行时间】:

5 rows in set (0.67 sec)



3.8、SQL6

4.0 单个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行计划_27

【4.0 单个TiFlash执行时间】:

5 rows in set (1 min 54.16 sec)

4.0 两个TiFlash执行计划 】:

TiFlash 5.x 与 4.x 对比测试_执行计划_28

【4.0 两个TiFlash执行时间】:

5 rows in set (1 min 18.00 sec)

【5.0 单个TiFlash执行计划】:

explain select SQL_NO_CACHE aa.igid,bb.buss_name,sum(Com_select)
-> from mysql_globalstatus aa inner join mysql_bussname bb
-> on aa.igid=bb.igid and
-> aa.monitorDay >=‘2021-03-01’ and aa.monitorDay <=‘2021-03-31’
-> group by aa.igid order by sum(Com_select) desc limit 5;

TiFlash 5.x 与 4.x 对比测试_执行计划_29

【5.0 单个TiFlash执行时间】:

5 rows in set (8.57 sec)

【5.0 2个TiFlash执行计划】:

TiFlash 5.x 与 4.x 对比测试_执行时间_30

【5.0 2个TiFlash执行时间】:

5 rows in set (6.10 sec)