暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiDB升级、TiFlash测试及对比 ClickHouse

PingCAP 2023-06-27
126

作者:刘春雷

1、汇总

1.1、需求

测试3.0.7 升级至4.0.0-rc

测试部署TiFlash

测试TiFlash性能等

对比ClickHouse

1.2、结果

img

【结论】:

[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

img

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

img

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

img

【差异原因】:

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 ;

img

  • 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

img

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

set @@tidb_opt_agg_push_down=1;

set @@tidb_opt_distinct_agg_push_down=1;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论