ClickHouse使用(一)

ClickHouse使用(一)

安装和部署



一、目录结构

(1)/etc/clickhouse-server 服务端的配置文件目录
(2)/var/lib/clickhouse 默认数据存储目录
(3)/var/log/clickhouse-server 默认保存日志的目录
(4)配置文件部分

(1)/etc/security/limits.d/clickhouse.conf 文件句柄数量配置 
	clickhouse soft nofile 262144
	clickhouse hard nofile 262144						
(2)corn 定时任务配置,恢复因异常情况中断的ClickHouse服务进程
(每隔10分钟启动一次服务进程,如果正在运行则跳过)
	(1)clickhouse:主程序的可执行文件
	(2)clickhouse-client:软连接,供客户端连接使用
	(3)clickhouse-server:软连接,供服务端启动使用
	(4)clickhouse-compressor:内置提供的压缩工具

二、启动服务

(2)修改默认的存储路径,所以需要将目录的Owner设置为clickhouse用户
chown clickhouse.clickhouse /chbase/data/ -R
clickhouse用户由安装程序自动创建,启动脚本会基于子用户启动服务
(3)启动
激活用户
usermod -s /bin/bash clickhouse

切换用户
su clickhouse
service clickhouse-server --config-file=/etc/click-house-server/config-cd5.xml

(1)config.xml 配置文件修改数据默认的保存目录

<path></path>
<tem_path></tem_path>
<user_files_path></user_files_path>

(2)修改默认的存储路径,所以需要将目录的Owner设置为clickhouse用户

chown clickhouse.clickhouse /chbase/data/ -R
clickhouse用户由安装程序自动创建,启动脚本会基于子用户启动服务

(3)启动

激活用户
usermod -s /bin/bash clickhouse

切换用户
su clickhouse
service clickhouse-server --config-file=/etc/click-house-server/config-cd5.xml

三、客户端的访问接口

CLI 默认 9000 ,协议TCP

1.交互式执行

利用
clickhouse-client进行连接,使用sql进行查询

2.非交互式执行

批处理场景
利用clickhouse-client --query=“sql” 可以接收标准的操作系统文件输入和输出:例如
cat /chbase/test_fetch.tsv | clickhouse-client --query=“insert into test_fetch format tsv”
clickhouse-client --query=“select * from test_fetch”>/chbase/test_fetch.tsv

多条语句执行
clickhouse-client -h 10.37.8.11 --multiquery --query=“sql1;sql2”

四、JDBC 默认 8123 ,协议HTTP

1.标准形式

2.高可用模式,允许多个host,每次随机选择一个进行连接

3.实用小工具

clickhouse-local
单机版微型内核,只能使用File 表引擎
clickhouse-benchmark
运行指标报告

五、数据定义

1.支持完整的DML,insert,select,update,delete; update 和 delete 存在性能问题(借助alter来实现的)

2.ClickHouse 在基础数据类型方面,相比其他的常规数据库更加精炼,但是也提供了实用的复合数据类型

六、数据类型

1.基础类型:

数值(Int Float Decimal),字符串(String FixedString UUID),时间(DateTime DateTime64 Date)

2.符合类型 :

Array (array(String)拥有类型推断的能力,实用最小存储代价的类型),
Tuple(tuple(String,Int8)),
Enum(Enum8(String:Int8) Enum16(String:Int16),不能重复,不能为空,性能比String更好)
Nested(1-》n关系,但每个嵌套只支持一级,访问时 用 .来访问嵌套内的字段)

3.特殊类型

1.Nullable(表示某个字段可以是Null值 1.只能和基础类型搭配使用 2.会影响查询和写入性能)
2.Domain(IPv4基于Int32封装 IPv6基于FixString(16)封装))

七、如何定义数据表

1.数据库

数据库引擎:
1.Ordinary 默认引擎 ,此数据库下可以使用任何的表引擎
2.Dictionary 字典引擎,
3.Memory 内存引擎,此数据库中的表只停留在内存中,会随着服务器的重启而丢失
4.lazy 日志引擎,此数据库表中只能使用Log系列的表引擎
5.MySQL MySQL引擎,自动拉取远程MySQL数据,并自动创建MySQL表引擎的数据表

2.数据表

复制表结构,
修改表引擎,
导入表数据,
删除表
默认值,可以 指定默认值,或者同时指定默认值和默认类型

临时表:
1.生命周期与会话同步,会话结束表销毁,只支持Memory表引擎
2.临时表不属于任何数据库
3.临时表和普通表重名,会优先读取临时表的数据

分区表:
分区针对本地数据而言,数据可以按照分区进行删除,替换和重置。只有表引擎为 MergeTree时,才可以使用数据分区
视图
普通视图 不存储数据 只是为了使得查询语句更加易懂,对性能无任何帮助
物化视图 支持表引擎 原表写入新数据,物化视图会同步更新 ,populate 参数存在 会在创建视图时同步数据,不存在 会同步创建之后新增的数据

3.数据表的基本操作

1.只有MergeTree Merge Distributed表引擎支持 Alter 查询
2.追加新字段
3.修改数据类型
4.修改备注
5.删除字段
6.移动数据表
rename table default.testcol_v1 to dbtest.testcol_v2 将数据库表 testcol_v1 从defautl数据库 移动到 dbtest数据库的 testcol_v2 (用一个库可以实现重命名,移动的两个数据库实例必须为同一个服务器节点)
7.清空数据表

4.数据分区操作

1.只有 MergeTree 系列表引擎 支持分区
2.查询分区信息
3.删除指定分区
4.复制分区数据(表结构相同,分区键相同)
5.重置分区数据 (alter table partition2 clear colum url in partition 2021)清空对应分区的对应字段数据
6.卸载和装在分区(alter table p_2 detach partiotion 2021)卸载分区2021 将分区文件放到 detached的子目录下,alter table p_2 attach partition 2021

4.分布式ddl

CREATE TABLE heaven_eye_apm_log.users [on cluster ch_cluster] (
id Int64,
first_id String,
second_id String
) ENGINE = MergeTree()
partition by time
order by id

5.数据写入

1.insert into table values(v1,v2,v3),(v1,v2,v3)
2.insert into table format csv
v1,v2,v3
v1,v2,v3
3.insert into table select …

6.数据删除和修改

ClickHouse提供了Delete和Update的能力,这类操作被称为 Mutation
虽然能最终实现修改和删除,但是适用于批量操作,不支持事务,异步后台过程,语句被提交后会立即返回,并不代表逻辑执行完成
alter table p_2 delete where id =‘111’;

建立后台执行任务,异步执行,建立新目录,重写数据时过滤掉删除的数据,保存执行命令文件,保存旧的数据文件,执行MergeTree操作,删除旧数据文件

八、数据字典

1.内置字典

默认关闭
可以通过配置打开
没有内置数据需要导入初始化数据,提供了取数规则
select regionToName(tiUInt32(2009))

2.外部扩展字典(7中类型的内存布局,4类数据来源)

flat,hashed,catche,complex_key_hashed,complex_key_catche
range_hashed
ip_trie

配置文件元素:
name:字典名称,唯一标识
structure:数据结构
layout:字典类型
source:字典的数据源
lifetime:字典更新时间

3.扩展字典的数据结构 1.key, 2.attribute

//id 或者是 key 数值型 //id 或者是 key,复合型

4.扩展字典数据源

1.文件(本地文件,可执行文件,远程文件)
2.数据库(mysql,clickhouse,mongodb)
3.其他(odbc)

5.在线更新

字典的作用:能够有效的帮助我们消除不必要的join操作(如:根据id查询名称),优化sql查询提高查询性能

九、MergeTree 原理解析

1.支持 主键索引,数据分区,数据副本,数据采样,alter相关操作

2.内存合并,片段写入

3.语法

语法:
(1)Partition By 分区键 (单个字段或者,元组形式使用多个字段)
(2)Order By 排序键 默认与主键相同(可以重复)(ReplacingMergeTree)
(3)Primary key 默认情况下与排序字段相同
(4) sample by 抽样 例如 sample by intHash32(UserID) 配合 sample子句使用
(5)settings:index_granularity 索引粒度 默认 8192
(6)settings:index_granularity_byte 索引粒度按照写入数据大小自适应 默认 10M 设置为0表示不开启
(7)settings:index_mixed_granularity_parts设置是否开启自适应
(8)settings:index_with_ttl_timeout ttl(Time of live 存活时间) 相关功能
(9)settings:storage_policy 多路径存储策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值