写点什么

TiDB 升级、TiFlash 测试及对比 ClickHouse

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

    阅读完需:约 5 分钟

作者: 18515065291 原文来源:https://tidb.net/blog/dc8e840d


TiDB 升级、TiFlash 测试及对比 ClickHouse


                                              --2020-05-13 刘春雷
复制代码

1、汇总

1.1、需求

测试 3.0.7 升级至 4.0.0-rc


测试部署 TiFlash


测试 TiFlash 性能等


对比 ClickHouse

1.2、结果


【结论】:


[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



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 功能。

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 信息

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’);



【差异原因】:


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;


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

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

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

评论

发布
暂无评论
TiDB升级、TiFlash测试及对比ClickHouse_TiDB 社区干货传送门_InfoQ写作社区