0
1
0
1
专栏/.../

TiDB升级、TiFlash测试及对比ClickHouse

 18515065291  发表于  2021-11-09
原创

TiDB升级、TiFlash测试及对比ClickHouse

                                              --2020-05-13 刘春雷

1、汇总

1.1、需求

测试3.0.7 升级至4.0.0-rc

测试部署TiFlash

测试TiFlash性能等

对比ClickHouse

1.2、结果

image

【结论】:

[1]、TiFlash可以提升OLAP的分析速度

[2]、TiFlash与ClickHouse对比,存在一定性能差距。

【差异原因】:

1、tiflash 因为需要支持 update,所以需要额外读取三列:handle (int64), version(uint64), del_mark(uint8); 2、clickHouse的更新存在几点问题:

  • 无法保证一定更新成功,也无法确定啥时候更新成功,因为是后台慢慢做的,两条相同的 key 不一定会merge
  • 正确性无法保证,即有可能同时读到几个数据版本,至于数据库的事务隔离性就更没法做了

3、clickHouse 只需要 scan,但是 tiflash 需要把数据做一次全局排序 + mvcc 过滤,这一步是最耗时的。

2、流程及部署

2.1、流程

1、升级至4.0.0-rc

2、部署TiFlash

3、添加表至tiflash

4、会话级别设置使用tikv及tiflash

5、测试查询

2.2、机器信息 编辑

集群:xxx集群

TiDB&PD 混合部署

TiKV*3

TiFlash *1

image

ClickHouse:为单机部署

2.3、部署集群3.0.7版本

TiDB3.0.7集群部署完成

2.4、升级至4.0.0-rc

【1】、打包4.0.0-rc版本 完成

【2】、执行升级 完成

注:自己开发的工具

tidb_manage --options=upgrade -c xxx -o 3.0.7 -n 4.0.0-rc

2.5、已有集群部署TiFlash

2.5.1、设置

  1. 在 pd-ctl,开启 PD 的 Placement Rules 功能。

     cd  tidb-ansible-4.0.0-rc-xxx/resources/bin
    
     ./pd-ctl -u "http:10.xxx.x.x:xxx" -i 
    
     config set enable-placement-rules true 
    

2.5.2、部署

ssh tidb中控

su - tidb

cd tidb-4.0.0-rc-xxx

【1、配置】

配置 scale-out.yaml

【2、执行扩容】

tiup cluster scale-out TiflashTest scale-out.yaml Scaled cluster TiflashTest out successfully

3、测试

3.2、测试SQL信息

image

4、对比ClickHouse

结果:

ClickHouse比TiFlash减少: 74.9%

SQL:

create database test;

CREATE TABLE test ENGINE = MergeTree order by id AS SELECT * FROM mysql(‘IP:port’, ‘db’, ‘test’, ‘user’, ‘password’);

image

【差异原因】:

1、tiflash 因为需要支持 update,所以需要额外读取三列:handle (int64), version(uint64), del_mark(uint8); 2、clickHouse的更新存在几点问题:

  • 无法保证一定更新成功,也无法确定啥时候更新成功,因为是后台慢慢做的,两条相同的 key 不一定会merge
  • 正确性无法保证,即有可能同时读到几个数据版本,至于数据库的事务隔离性就更没法做了

3、clickHouse 只需要 scan,但是 tiflash 需要把数据做一次全局排序 + mvcc 过滤,这一步是最耗时的。

5、TiFlash使用

45.1、使用步骤

【1、添加表至TiFlash】

alter table xxx SET TIFLASH REPLICA 1;

【2、查看进度,需要available=1 后才可能使用到tiflash】

SELECT * FROM information_schema.tiflash_replica ;

  • AVAILABLE 字段表示该表的 TiFlash 副本是否可用。1 代表可用,0 代表不可用。副本状态为可用之后就不再改变,如果通过 DDL 命令修改副本数则会重新计算同步进度。
  • PROGRESS 字段代表同步进度,在 0.0~1.0 之间,1 代表至少 1 个副本已经完成同步。

【3、设置引擎,会话级别】

set SESSION tidb_isolation_read_engines = “tikv”;

set SESSION tidb_isolation_read_engines = “tikv,tiflash”;

set SESSION tidb_isolation_read_engines = “tiflash”;

【4、执行具体SQL或执行计划】

查看执行计划,如果有cop[tiflash],则说明使用到了tiflash

【5、其他优化参数,会话级,待确认优化程度】

set @@tidb_opt_agg_push_down=1;

set @@tidb_opt_distinct_agg_push_down=1;

0
1
0
1

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论