原创 NewSQL 作者:o烟雨潇潇o 时间:2020-05-13 11:53:16  4418  0

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、设置

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

【差异原因】:

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 ;

  • 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;

[转帖]TiDB升级、TiFlash测试及对比ClickHouse的更多相关文章

  1. 前端测试框架对比(js单元测试框架对比)

    前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...

  2. TiDB单机安装测试

    TiDB单机安装测试 CentOS7.3安装MySQL5.6 1:下载TiDB安装包# cd /opt/source# wget http://download.pingcap.org/tidb-la ...

  3. c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比

    c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比对比 在6.22 号发布了 c# sqlsugar,his ...

  4. Haproxy和Nginx负载均衡测试效果对比记录

    为了对比Hproxy和Nginx负载均衡的效果,分别在测试机上(以下实验都是在单机上测试的,即负载机器和后端机器都在一台机器上)做了这两个负载均衡环境,并各自抓包分析.下面说下这两种负载均衡环境下抓包 ...

  5. tidb 升级步骤

    1.检查ansible版本,正常情况下,2.1 rc3需要兼容ansible 2.5以上的版本 $ ansible --version 2.检查python两个模块jinja2需要升级到2.9.6或以 ...

  6. cs5642-v3各配置文件测试图片对比

    寄存器功能强大,可以配置很多参数,每个参数出来的图像都不同 我们以cs5642-v3的两个配置进行了对比测试 测试准备 配置文件:ov5642_960p_RAW和OV5642_YUV_VGA 测试摄像 ...

  7. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

      测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计,框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求 ...

  8. Python测试框架对比

    如有任何学习问题,可以添加作者微信:lockingfree 更多学习资料请加QQ群: 822601020获取 unittest, pytest, nose, robot framework对比 什么是 ...

  9. 产品升级前后MD5码对比

    在做产品测试的时候,经常会需要对比升级前后的MD5码,这时可以通过终端登录设备,具体步骤如下: 1.在升级前时,将MD5码写入log1.info文件: check_md5 -d / -w log1.i ...

  10. SpringBoot2 集成测试组件,七种测试手段对比

    一.背景描述 在版本开发中,时间段大致的划分为:需求,开发,测试: 需求阶段:理解需求做好接口设计: 开发阶段:完成功能开发和对接: 测试上线:自测,提测,修复,上线: 实际上开发阶段两个核心的工作, ...

随机推荐

  1. 关于 x^n + 1 形式因式分解的讨论

    昨晚一个同学问我立方和分解,突发奇想想到了这个问题.看到网上关于这个问题的许多解答都不是很准确.在此修正一下. 引理一:立方和公式 对于形如 \(a^3 + b^3\) 的式子,有因式分解: \(a^ ...

  2. MyBatis 批量更新的处理

    一般来讲,在使用 MyBatis 进行数据库的访问时,通常会遇到需要更新数据的相关业务,在某些业务场景下,如果需要进行一批次的数据更新,可能性能不是特别理想.本文将简要介绍几种能够高效地处理批量更新数 ...

  3. fstab 简介

    简介 在一般的 Unix 或者 类Unix 中,为了更好地管理磁盘资源,有时不得不挂载一个外部的磁盘,使用 mount 命令可以快速地挂载一个外部磁盘,具体用法为: # 将磁盘分区 sda2 挂载在 ...

  4. MongoDB 安装、配置及详细使用教程

    环境:win10 下载地址 :https://pan.baidu.com/s/1a0SwRv9er3HTewzcI8nWgQ      提取码:dyyx   下载后,将该文件夹放在C盘的根目录下,然后 ...

  5. Skywalking(8.7)安装以及docker镜像打包

    Skywalking安装以及docker镜像打包 Skywalking版本:apache-skywalking-apm-es7-8.7.0 ES版本:7.17.2 一.下载Skywalking的安装包 ...

  6. CodeForces 1453D 概率 期望

    CodeForces 1453D Checkpoints 概率 期望 原题链接 题意 现在我们可以设计n个擂台,有的是激活点,有的不是.从第一个开始挑战,每次都有1/2的概率成功,如果该点成功,则跳到 ...

  7. 神经网络入门篇:直观理解反向传播(Backpropagation intuition)

    详细推导反向传播 下图是逻辑回归的推导: 回想一下逻辑回归的公式(参考公式1.2.公式1.5.公式1.6.公式1.15) 公式1.38: \[\left. \begin{array}{l} {x }\ ...

  8. 如何用华为云ModelArts平台玩转Llama2

    本文分享自华为云社区<如何用华为云ModelArts平台玩转Llama2>,作者:码上开花_Lancer. 天哪~~ Llama2模型开源了拉!! Llama2不仅开源了预训练模型,而且还 ...

  9. 中秋佳节,程序员教你AI三步成诗,秒变“李白”

    摘要:举杯邀明月,用技术来附庸风雅. 中秋佳节来临之际,你是否开始思念远方的亲朋好友,想为他们送上祝福?又或是与家人团圆赏月之时,希望借一段风雅诗词抒情达意? 华为云的开发者们教你一招,来个技术风的A ...

  10. GaussDB(DWS)集群中寻找节点CPU占用高的语句

    摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh 脚本寻找CPU占用高语句. 本文分享自华为云社区<GaussDB(DWS) gs_cpuwatcher.sh 脚本如何寻找CP ...