Mysql升级到tidb_TiDB升级、TiFlash测试及对比ClickHouse

TiDB升级、TiFlash测试及对比ClickHouse

--2020-05-13 刘春雷

1、汇总

1.1、需求

测试3.0.7 升级至4.0.0-rc

测试部署TiFlash

测试TiFlash性能等

对比ClickHouse

1.2、结果

序列

SQL

表改成TiFlash命令

tikv时间

TiFlash时间

ClickHouse

百分比

12

举例模拟:

CREATE TABLE `test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`create_time` datetime DEFAULT NULL,

`num` int(11) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `idx_create_time` (`create_time`)

) ENGINE=InnoDB ;

表数据:

8324

w

SQL:

select avg(num) from test where create_time >'2020-05-07 17:40:01';

alter table test SET TIFLASH REPLICA 1;

1 row in set (

5.19sec)

1 row in set (

0.80 sec)

1 row in set

0.041 sec

TiFlash比TiKV减少:

84.6%

ClickHouse比TiFlash减少:

74.9%

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

角色

机器

TiFlash/TiKV/ClickHouse

内存:192G

CPU:20*2 Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz

磁盘:3*1.8T SSD

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

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

序列

SQL

表改成TiFlash命令

tikv时间

TiFlash时间

百分比

12

举例模拟:

CREATE TABLE `test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`create_time` datetime DEFAULT NULL,

`num` int(11) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `idx_create_time` (`create_time`)

) ENGINE=InnoDB ;

表数据:

8324

w

SQL:

select avg(num) from test where create_time >'2020-05-07 17:40:01';

alter table test SET TIFLASH REPLICA 1;

1 row in set (

5.19 sec)

1 row in set (

0.80 sec)

减少84.6%

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

1589352491265-201.png?width=1239

【差异原因】:

tiflash 因为需要支持 update,所以需要额外读取三列:handle (int64), version(uint64), del_mark(uint8)

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 ;

4eff44ea48da36521d64687c306166ed.png

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

3a7fcef5dd056a3aa91e006c2bbf3073.png

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

set @@tidb_opt_agg_push_down=1;

set @@tidb_opt_distinct_agg_push_down=1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值