TiDB 升级、TiFlash 测试及对比 ClickHouse
作者: 18515065291 原文来源:https://tidb.net/blog/dc8e840d
TiDB 升级、TiFlash 测试及对比 ClickHouse
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、设置
在 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;
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/e34afd1e1241dcaf2a74e39db】。文章转载请联系作者。
评论