【clickhouse】clickhouse基础总结

目录


1 #概念

1.1 clickhouse 介绍 #OLAP

1.1.1 特点

1.1.2 使用场景

1.1.3 #列式存储,按列存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9oA4oH1-1658656927613)(https://clickhouse.com/docs/assets/images/column-oriented-b992c529fa4085b63b57452fbbeb27ba.gif#)]

1.1.4 #引擎 #engine

2 #部署

2.1 单机部署

2.1.1 通过yum源安装clickhouse服务器和客户端

2.1.2 启动服务器,连接客户端

clickhouse的端口9000

3 目录结构

3.1 #配置文件 #config.xml

3.1.1 重启服务器 #restart

设置完配置文件后,需要重启服务器

3.2 #工作目录

3.2.1 表数据目录 #data

数据库的数据目录中存放的是非Memory引擎所创建的表数据

Memory引擎创建的表数据在内存中,不会被持久化到本地的数据目录,但表的元数据是持久化到本地的元数据目录,需要手动维护

3.2.2 #元数据目录 #metadata

元数据目录可以理解成建表语句、表结构

3.2.2.1 人为维护Memory引擎创建的表的元数据,销毁Memory表

重启服务器后,并不会销毁Memory引擎创建的表,但由于表数据不会被持久化到data目录,因此重启后,Memory表数据丢失

如果人为删除Memory表的元数据文件,再重启服务器,此时才会销毁掉Memory引擎创建的表(无法查询到表)

3.2.3 人为删除表数据

删除表数据分为两步:删除data目录的表数据删除metadata目录的表的元数据

3.3 #日志文件

4 操作客户端 #客户端 #client

4.1 客户端连接参数

4.2 允许换行执行sql命令 -m

4.3 指定要连接客户端的主机 -h

4.4 不进入客户端执行sql语句 -q -n

4.5 退出客户端 #quit

4.6 客户端命令补全

5 操作数据库 #database

clickhouse自己定义的关键字严格区分大小写,比如存储引擎名、函数名

对于sql的关键字,不会区分大小写

登录客户端后,默认使用的数据库是default

6 操作表 #table

由于clickhouse针对的是OLAP业务,update、delete操作在clickhouse中很少使用

只有MergeTree引擎和其家族系列*MergeTree引擎才支持修改alter关键字的使用,对表进行修改操作

6.1 创建表 #create

6.2 #复制表 #as

复制表数据的前提是表结构相同

6.3 删除表 #drop

6.4 #rename

6.4.1 #重命名表

6.4.2 #移动表

6.5 导入csv格式文本数据到表中 #csv #导入

6.5.1 csv文件

数据用","分隔的是csv文件,用tab制表符分隔的是tsv文件

输入/输出格式

6.6 #分区表 #partition #MergeTree

6.6.1 创建分区表

6.6.1.1 通过系统表system.parts查看分区状态

6.6.1.2 持久化后的分区文件位置

6.6.1.3 例子

6.6.2 分区目录名的含义 #名字

6.6.2.1 分区创建、合并过程的分区目录名变化

6.6.3 #合并分区 #optimize

optimize把相同的分区块进行合并

按块进行插入数据后,不会自动进行分区合并,只有调用了optimize后,才会对相同的分区的块进行合并
合并完成后,过8min后会删除掉旧分区,最后只保留合并后的分区

6.6.3.1 对分区表的处理:合并相同分区

6.6.3.2 对不分区的表的处理:合并数据块
6.6.3.3 分区合并的过程

6.6.3.4 强制一次合并多个相同分区

6.6.4 删除分区数据 #drop

drop会把分区数据删掉,而detach不会删掉分区数据

6.6.5 卸载、装载分区 #detach #attach

6.6.5.1 卸载分区前后对比

6.6.6 #复制分区表

复制分区表数据的前提是分区表结构相同

6.7 #修改表 #alter #MergeTree

只有MergeTree引擎和其家族系列*MergeTree引擎才支持修改alter关键字的使用,对表进行修改操作

6.7.1 修改表结构

6.7.2 #mutation 操作,记录更新和删除 #更新 #删除

6.7.2.1 修改记录的字段值 #update

6.7.2.2 删除记录 #delete

6.8 #with 定义查询变量 #变量

6.8.1.1 定义变量

6.8.1.2 变量值调用函数

6.8.1.3 变量值是子查询结果 #元组 #tuple #子查询

6.9 #from 读取数据 #函数

6.9.1 例子:file函数

6.9.2 例子: #numbers 函数

6.9.3 例子:mysql函数,远程连接mysql数据

6.9.4 例子:hdfs函数,远程连接hdfs数据

6.10 #limit

6.11 #分组查询 #group by

6.11.1 统计每组的记录数 #count

6.11.2 #with 分组查询模型

6.11.2.1 #with total

6.11.2.2 #with rollup

6.11.2.3 #with cube,分组查询立方体 #cube

6.12 #join 关联查询,不推荐

7 #视图 #view

7.1 #普通视图 ,本质是查表

普通视图即查询映射,本质还是查表实体,没有视图的数据文件

7.2 #物化视图 #materialized view,同步新写入数据

7.2.1 不使用populate创建物化视图,推荐

7.2.2 使用populate创建物化视图,不推荐 #populate

7.2.2.1 例子:AggregatingMergeTree物化视图,对MergeTree表使用聚合函数

8 数据类型 #类型

8.1.1 mysql类型和clickhouse类型的对应关系 #mysql#

8.2 查看字段类型

8.3 #数值类型

8.3.1 #整型 #Int #UInt

Int+二进制位数

默认int等价于Int32

8.3.1.1 #布尔值

8.3.2 #浮点型

8.3.2.1 #Float

8.3.2.2 特殊浮点数值 #inf #nan

8.3.2.3 #Decimal

8.3.2.3.1 运算精度变化 #精度


8.3.2.3.2 运算溢出问题 #溢出

8.4 #字串

8.4.1 #String,变长字串

8.4.2 #FixedString,定长字串

8.4.2.1 #UUID

8.5 #时间 #日期

时间类型均支持使用字符串插入数据

8.5.1 #Date,精确到日期

8.5.2 #DateTime,精确到秒

8.5.3 #DateTime64,精确到毫秒

8.6 #枚举 #Enum

8.7 #数组 #array,变长数组

只能存储同一种类型的元素,变长数组,不用定义数组size

8.7.1 #Nested #嵌套表 ,多维变长数组

8.7.2 #array join,展开数组 #left array join

8.7.2.1 展开嵌套表Nested #Nested

8.7.2.2 array join无法使用with定义的变量

8.7.2.3 例子:展开数组

8.7.2.4 展开数组的下标列表 #arrayEnumerate #下标

8.7.3 #groupArray 函数,把分组后的字段值转成数组

8.8 #元组 #tuple

8.9 #Map

8.9.1 元组转成map #tuple #cast

8.10 #ipv4 #ipv6

8.11 #Nullable,允许列值为空 #默认值

如果不赋值,列类型默认值通常为0或空字串,而不是NULL

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ClickHouse是一个开源的列式数据库管理系统,具有以下特点: 1. 列式存储:ClickHouse以列的方式存储数据,这样可以提高查询性能和数据压缩比率。 2. 支持多种引擎:ClickHouse提供了多种引擎,包括TinyLog、Memory和MergeTree等,可以根据不同的需求选择适合的引擎。 3. 分区功能:MergeTree引擎支持按照特定字段进行分区,可以提高查询性能和数据管理的灵活性。 安装ClickHouse可以通过多种方式进行,包括源码编译、预编译压缩包、Docker镜像和RPM等。单节点部署可以通过使用yum命令进行安装和启动服务。在安装完成后,可以修改数据和日志文件目录来满足实际需求。 总结来说,ClickHouse是一个高性能的列式数据库管理系统,具有灵活的引擎和分区功能,可以通过多种方式进行安装和部署。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【ClickHouse基础篇】](https://blog.csdn.net/liuhehe123/article/details/124082391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ClickHouse基础](https://blog.csdn.net/weixin_52189442/article/details/120490299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值