【大数据实战】聊聊clickhouse的性能问题-高性能分析

聊聊ck的性能问题

在OLAP的查询场景中,同样的数据量,ClickHouse表现出了比同类可比较产品更优的性能。
查看Yandex的内部测试结果:结果

可以看到CK在OLAP场景下的性能还是非常强的,那么是不是它在每个指标上表现都很好呢?
事实上,并不是这样的,它也有自己的缺点,接下来我们可以大致来看看ClickHouse的性能指标。

单个大查询的吞吐量

吞吐量可以使用每秒处理的行数或每秒处理的字节数来衡量。

如果数据被放置在page cache中,则一个不太复杂的查询在单个服务器上大约能够以2-10GB/s(未压缩)的速度进行处理(对于简单的查询,速度可以达到30GB/s)。
如果数据没有在page cache中的话,那么速度将取决于你的磁盘系统和数据的压缩率。例如,如果一个磁盘允许以400MB/s的速度读取数据,并且数据压缩率是3,则数据的处理速度为1.2GB/s。这意味着,如果你是在提取一个10字节的列,那么它的处理速度大约是1-2亿行每秒。

对于分布式处理,处理速度几乎是线性扩展的,但这受限于聚合或排序的结果不是那么大的情况下。

所以影响ck单个查询吞吐量的因素大概有这些:

  • 查询复杂性:复杂的查询通常需要更多的计算和资源,可能会对查询吞吐量产生负面影响。复杂的查询包括多个聚合函数、子查询、连接等。简单的查询通常比复杂的查询具有更高的吞吐量。

  • 硬件配置:ClickHouse 的性能与底层硬件配置密切相关。例如,处理器的性能、内存的容量和带宽、磁盘的类型和速度等都会对查询吞吐量产生影响。优化硬件配置可以提高 ClickHouse 的性能。

  • 数据模型和表设计:合理的数据模型和表设计可以提高查询性能。例如,使用合适的数据类型、分区表、合理的表结构等都可以减少查询的数据量和提高查询性能。

  • 数据分布和复制:ClickHouse 支持数据分布和复制来实现数据的高可用性和负载均衡。合理的数据分布和复制策略可以提高查询性能。如果数据分布不均匀或者复制策略不合理,可能导致查询吞吐量下降。

  • 并发查询:ClickHouse 支持并发查询,可以同时处理多个查询请求。如果系统中存在大量并发查询,可能会降低单个查询的吞吐量。合理的并发配置可以平衡吞吐量和响应时间。

  • 查询优化:ClickHouse 提供了一些查询优化的技术,例如预先计算、索引、采样等。合理使用这些优化技术可以提高查询性能和吞吐量。

处理短查询的延迟时间

如果一个查询使用主键并且没有太多行(几十万)进行处理,并且没有查询太多的列,那么在数据被page cache缓存的情况下,它的延迟应该小于50毫秒(在最佳的情况下应该小于10毫秒)。
否则,延迟取决于数据的查找次数。如果你当前使用的是HDD,在数据没有加载的情况下,查询所需要的延迟可以通过以下公式计算得知: 查找时间(10 ms) * 查询的列的数量 * 查询的数据块的数量。

什么是短查询?
短查询是指执行时间非常短的查询操作。通常情况下,短查询的执行时间在几毫秒甚至更短的时间范围内完成。这些查询通常是简单的、针对少量数据进行的操作,例如基于某个条件的快速过滤、获取少量列的数据等。

短查询通常具有以下特点:

简单:短查询通常只涉及一两个条件和少量的列,并且不包含复杂的聚合操作或连接操作。

快速:由于短查询操作的数据量较小,执行时间通常非常短,一般在几毫秒的时间范围内完成。

高并发:由于短查询的执行时间短,可以在单位时间内处理大量的查询请求,适合于高并发的场景。

短查询在实际应用中非常常见,尤其是在交互式应用、实时分析和监控等场景下。这些查询通常用于快速获取实时数据、实时监控系统的状态或指标,并对结果进行实时展示或响应。

为什么查询公式是:查找时间(10 ms) * 查询的列的数量 * 查询的数据块的数量

查找时间(10 ms):假设每个查找操作的平均时间为 10 毫秒。这是一个经验值,可以根据实际情况进行调整。

查询的列的数量:假设查询涉及的列的数量是一个固定值。这个值可以根据具体的查询语句确定。

查询的数据块的数量:假设查询需要扫描的数据块数量也是一个固定值。数据块是 ClickHouse 中数据的存储单元,查询的吞吐量可以受到扫描的数据块数量的影响。

处理大量短查询的吞吐量

在相同的情况下,ClickHouse可以在单个服务器上每秒处理数百个查询(在最佳的情况下最多可以处理数千个)。但是由于这不适用于分析型场景。因此建议每秒最多查询100次。

数据的写入性能

建议每次写入不少于1000行的批量写入,或每秒不超过一个写入请求。
当使用tab-separated格式将一份数据写入到MergeTree表中时,写入速度大约为50到200MB/s。如果您写入的数据每行为1Kb,那么写入的速度为50,000到200,000行每秒。如果行更小,那么写入速度将更高。为了提高写入性能,可以使用多个INSERT进行并行写入,这将带来线性的性能提升。

为什么clickhouse的写入性能高?

1.列存
2.数据压缩:能够有效地减少数据的存储空间,从而提高写入性能
3.分布式架构
4.多线程写入:ClickHouse采用多线程写入机制,能够同时处理多个写入请求,从而提高写入性能。

磁盘顺序读写和随机读写的性能差距大概是1千到5千倍之间
连续 I/O 顺序读写,磁头几乎不用换道,或者换道的时间很短,性能很高,比如0.03 * 2000 MB /s
随机 I/O 随机读写,会导致磁头不停地换道,造成效率的极大降低,0.03MB/s

ClickHouse中的MergeTree也是LSM-Tree存储结构的思想(日志结构合并树,但不是树),而是利用磁盘顺序读写能力,实现一个多层读写的存储结构 是一种分层,有序,面向磁盘的数据结构,核心思想是利用了磁盘批量的顺序写要远比随机写性能高出很多 大大提升了数据的写入能力。
充分利用了磁盘顺序写的特性,实现高吞吐写能力,数据写入后定期在后台Compaction。在数据导入时全部是顺序append写,在后台合并时也是多个段merge sort后顺序写回磁盘。官方公开benchmark测试显示能够达到50MB-200MB/s的写入吞吐能力,按照每行100Byte估算,大约相当于50W-200W条/s的写入速度。

它的缺点

1,不支持事务,不支持真正的删除/更新;
2,不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;
3,SQL满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似SQL的join,但性能不好;
4,尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;
5,Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用CPU核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

八大算法排序@选择排序(C语言版本)

目录 选择排序概念算法思想示例步骤1步骤2步骤...n最后一步 代码实现时间复杂度空间复杂度特性总结 选择排序 概念 选择排序(Selection Sort)是一种简单直观的排序算法。基本思想是在未排序的序列中找到最小(或最大)元素&#xf…

RS485数据采集模块,如何一次采集多个modbus设备数据?

在工业数据采集中,RS485是一种常见的数据通信协议,而Modbus则是其上的常用设备协议。那么,如何用一个模块高效采集多个Modbus设备的数据呢?这就是我们今天要探讨的话题! 什么是RS485数据采集模块? 首先&a…

ALSA学习(5)——设备中的alsa

参考博客: https://blog.csdn.net/DroidPhone/article/details/7165482 (一下内容基本是原博主的博客转载) 文章目录 一、ASOC的由来二、硬件架构三、软件架构四、数据结构五、内核对ASoC的改进 一、ASOC的由来 ASoC–ALSA System on Chip …

CMake入门教程【基础篇】在Windows、Linux上安装CMake

文章目录 1.windows平台第1步:下载CMake第2步:安装CMake第3步:验证安装第4步:初次使用第5步:构建和运行 2.Linux平台2.1 使用包管理器安装2.2 使用预编译的二进制文件2.3 从源代码编译2.4注意事项 1.windows平台 第1步…

数据库中二进制数据图片的读取并存储为文件C++

插入二进制数据https://blog.csdn.net/wjl990316fddwjl/article/details/135334950我们需要将插入的数据进行读取,本文主要介绍如何C如何将数据库中二进制数据图片进行读取和存储 1、查询数据 sql"select * from t_data"; 2、获得查询结果 MYSQL_RES …

IF;10.0+,中科院1区TOP,Elsevier出版社,发文量大!毕业首选!

【SciencePub学术】本期,小编给大家推荐的是一本Elsevier旗下、工程技术领域、影响因子为10.0的中科院1区TOP。其详情如下: 期刊简介 ENERGY CONVERSION AND MANAGEMENT ISSN:0196-8904 E-ISSN:1879-2227 IF(2…

软件测试行业最核心的竞争力是什么?

在当今数字化时代,软件测试行业已成为科技领域不可或缺的一环。软件测试人员扮演着保障产品质量和用户满意度的重要角色。然而,随着行业的竞争日益激烈,如何保持竞争力成为软件测试人员必须思考的问题。 为了弄清楚这个问题,我和…

AMEYA360:思瑞浦汽车级LIN收发器全家族产品TPT1021Q、TPT1022Q、TPT1024Q

聚焦高性能模拟芯片和嵌入式处理器的半导体公司--思瑞浦,发布汽车级LIN收发器——TPT102xQ系列产品(TPT1021Q、TPT1022Q、TPT1024Q)。 TPT102xQ系列满足ISO/DIS 17987-4、SAE J2602和LIN2.x物理层标准,可广泛应用在车身控制、灯光照明、底盘控制、信息娱…

数据库进阶教学——主从复制(Ubuntu22.04主+Win10从)

目录 一、概述 二、原理 三、搭建 1、备份数据 2、主库配置Ubuntu22.04 2.1、设置阿里云服务器安全组 2.2、修改配置文件 /etc/my.cnf 2.3、重启MySQL服务 2.4、登录mysql,创建远程连接的账号,并授予主从复制权限 2.5、通过指令,查…

mysql 条件位运算实现多值存储

一、多值存储 mysql 条件位运算位运算实现多值存储,方法适合数据范围有限,且不会变更在业务上往往会出现多选的情况,例:选择 周一 至 周日 随意组合; 数据在设计时就会如何去储存? 一种是一般是在储存是以…

阶段五-JavaWeb综合练习-学生管理系统

一.项目说明 1.前台 (用户使用) 前端,后端 2.后台 (管理员使用) 前端,后端 3.该项目为后台管理系统 项目开发流程: 1.需求分析 1.1 登录功能 用户访问登录页面输入用户名和密码,并且输入验证码。全部输入正确后点击登录,登录成功跳转主页面;登录…

清风数学建模笔记-因子分析

内容:因子分析 概念: 通过分析研究变量间的相关系数矩阵,把这些变量间错综复杂的关系归结成少数几个综合因子,由于归结出的因子个数少于原始变量的个数,但是又包含原始变量的信息,所以这一过程也称之为降…

清风数学建模-数学规划模型

内容:数学规划模型(cab aeqbeq lbub) 一.题型类型 1.线性规划linprog 2.非线性规划 fmincon 3.整数规划 intlinprog 4.(0-1规划)(特殊的线性整数规划)intlinprog 5.多目标规划 linprog 标…

STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片,采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集,MQ-7一氧化碳传感器检测CO浓度,GP2Y101…

python拆分句子、去除句子符号等并分词

import redef split_text_into_batches(text, max_tokens_per_batch):# 定义一个正则表达式&#xff0c;在中文标点符号处拆分句子sentence_splitter re.compile(r(?<[。&#xff01;&#xff1f;]))# 将文本拆分为句子sentences [sentence.strip() for sentence in sent…

设计模式:简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式、工厂方法模式、抽象工厂模式 1. 为什么需要工厂模式&#xff1f;2. 简单工厂模式2.1. 定义2.2. 代码实现2.3. 优点2.4. 缺点2.5. 适用场景 3. 工厂方法模式3.1. 有了简单工厂模式为什么还需要有工厂方法模式&#xff1f;3.2. 定义3.3. 代码实现3.4. 主要优点3.5.…

深入数组扩展应用

一、字符串反转 例如&#xff1a;‘123abc’----->‘cba321’ 字符串方法实现: var str 123abcvar reversFn function(str) {var newStr for (var i str.length - 1; i > 0; i--) {newStr str[i]}return newStr }console.log(reversFn(str));数组方法实现&#xf…

Elasticsearch:如何使用 Elasticsearch 进行排序

虽然你在唱这首歌时可能会想象圣诞老人&#xff0c;但欧洲民间传说&#xff0c;尤其是阿尔卑斯地区的民间传说&#xff0c;有两个传奇人物圣尼古拉斯和坎普斯。 象征着慷慨和善良的圣尼古拉斯&#xff0c;在 12 月 6 日 为乖巧的孩子们带来礼物和欢乐&#xff01; 相比之下&…

【C语言】作用域 和 生命周期

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

MR混合现实情景实训教学系统在法律专业课堂上的应用

MR混合现实情景实训教学系统是一种将虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;相结合的先进技术。在法律教学课堂上&#xff0c;MR教学系统为学生模拟模拟法庭、案例分析等多种形式&#xff0c;让学生在实践中掌握法律知识&#xff0c;提高法律…