![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ClickHouse数据库
文章平均质量分 76
ClickHouse数据库
爱上口袋的天空
一步一流年,止不住的脚步,挽不回的青春!
展开
-
大数据OLAP系统概念
1.什么是OLAP?OLAP(OnLine Analytical Processing),即联机分析处理。OLAP对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力。它主要用于支持企业决策管理分析,是许多商务智能(BI)应用程序背后的技术。OLAP使最终用户可以对多个维度的数据进行即席分析,从而获取他们所需知识,以便更好地制定决策。OLAP技术已被定义为实现“快速访问共享的多维信息”的能力。2.为什么要多维分析?业务其实是一个多维活动。企业通过考虑许多变量来跟踪其业务活动转载 2021-04-11 10:50:56 · 2796 阅读 · 0 评论 -
数据库之 列式与行式数据库区别
定义列式存储(Column-based)是相对于传统关系型数据库的行式存储(Row-based)来说的。简单来说两者的区别就是如何组织表。将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的。行存储法是将各行放入连续的物理位置,这很像传统的记录和文件系统。列存储法是将数据按照列存储到数据库中,与行存储类似,下图是两种存储方法的图形化解释。应用行式存储的数据库系统称为行式数据库,同理应用列式存储的数据库系统称为列式数据库。随着列式数据库的发展,传统的行式数据库加入了列式存储的支持,形成具转载 2021-04-11 11:15:15 · 2291 阅读 · 0 评论 -
TabSeparated系列格式
1.TabSeparated格式,简称TSV 默认格式,缩写:TSV,换行\n、制表符\t等符号依然显示为\n、\t 列之间使用tab制表符分隔,数据按行写入,每行结尾必须有换行符 可用于查询和插入例如:1)数据导入: 1.1)新建一张测试表CREATE TABLE tsv_demo(srcip String, destip String, time String) ENGINE = TinyLog; 1.2)准备一个tab.txt...原创 2021-04-05 18:07:23 · 2131 阅读 · 0 评论 -
Merge引擎,File引擎,External Data引擎,External Data引擎,Null Engine,URL引擎,Memory、Set、Buffer
1.Merge引擎根据匹配表名的正则表达式,从任意数量的表中同时读取数据。 Merge引擎的表本身不存储数据。 读取是自动并行化的。 读取时按需使用索引。指定表引擎:ENGINE = Merge(dbname, table_reg_expression)参数: 数据库名称、匹配表名的正则表达式示例: Merge(hits,’^WatchLog’)从虚拟列_table获取读取数据的表名称。案例创建表 DROP TABLE WatchLog_old;CREATE TAB转载 2021-04-16 21:47:27 · 162 阅读 · 0 评论 -
clickhouse输入输出格式之Parquet
Parquet输入输出格式支持Parquet格式的导出和导入。Parquet和ClickHouse类型的匹配关系不支持的Parquet数据类型:DATE32, TIME32, FIXED_SIZE_BINARY, JSON, UUID, ENUM。注意:ClickHouse表的列名必须与Parquet表的列名一致。 ClickHouse表的列数据类型可以不同于插入的Parquet数据类型。 在插入数据时, ClickHouse根据上表解释数据类型, 然后将数据类型转换为Cli原创 2021-04-11 17:18:45 · 2322 阅读 · 0 评论 -
Clickhouse 字典表使用场景
一.字典创建和查询1.创建表和数据:drop table t_region;create table t_region(region_id UInt64, parent_region UInt64, region_name String) ENGINE=TinyLog;insert into t_region values(1, 0, 'jiangsu'),(2, 1, 'suzhou'),(3, 2, 'huqiu'),(4, 0, 'anhui'),(5, 4, 'hefei');转载 2021-04-28 22:56:02 · 1512 阅读 · 0 评论 -
自定义分区及底层存储合并机制
1.自定义分区键分区是在建表时使用PARTITION BY expr子句指定 分区键可以是表列中的任何表达式 例如,按月指定分区:PARTITION BY toYYYYMM(date_column)。 使用元组指定分区:PARTITION BY (toMonday(StartDate),EventType) 在将新数据插入表中时,每个分区的数据存储为单独的数据片段(每个数据片段的数 据是按主键排序的),在插入后的10-15分钟内,同一个分区的数据片段将合并为一个整 体的数据片段2.分区目转载 2021-04-12 21:00:30 · 248 阅读 · 0 评论 -
SummingMergeTree,AggregatingMergeTree(基于表,物化视图的使用)
1.SummingMergeTree根据排序键对数值类型的列进行汇总求和。 相同排序键的行合并为一行。 如果一个排序键对应大量的行,则该引擎能显著减少存储空间并加快数据查询的速度 建议该引擎与MergeTree引擎结合。完整的数据存储在MergeTree表中,使用SummingMergeTree存储聚合数据,可以防止排序键的组合不正确而丢失有价值的数据。指定表引擎:ENGINE = SummingMergeTree([columns]) 参数:columns,具有列名称的元组,其中的值将转载 2021-04-13 22:04:14 · 1166 阅读 · 0 评论 -
clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例
1.分布式表与集群配置分布式表基于Distributed引擎创建,在多个分片上运行分布式查询。 读取是自动并行化的,可使用远程服务器上的索引(如果有)。 数据在请求的本地服务器上尽可能地被部分处理。例如,对于GROUP BY查询,数据将在远程服务器 上聚合,聚合函数的中间状态将发送到请求服务器,然后数据将进一步聚合。创建分布式表:ENGINE = Distributed(cluster_name, db_name, table_name[, sharding_key[, policy_na转载 2021-04-24 16:02:46 · 1166 阅读 · 0 评论 -
Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎)
1.Log Engine Family这些引擎适用于快速写入许多小数据量(少于100万行)的表,在后续使用时整体读取表数据。Log Engine Family:StripLog Log TinyLog通用属性:1.数据存储在磁盘上2.写入时将数据追加到文件末尾3.支持并发数据访问的锁(写阻塞读/写,读不影响)4.不支持mutation(更新和删除)操作5.不支持索引6.不支持原子地写入数据2.磁盘文件存储:Log引擎: # ll /var/lib/clic转载 2021-04-15 21:25:55 · 385 阅读 · 0 评论 -
clickhouse输入输出格式之CSV系列【CSV、CSVWithNames】
CSVCSV默认的分隔符为逗号,format_csv_delimiter设置自定义的分隔符。 CSV中的双引号使用两个双引号转义。 支持数据的查询和数据导入的。案例演示clickhouse中建表create table csv_demo(create_date Date, update_time DateTime, desc String) ENGINE=TinyLog;数据准备# 创建csv_demo.csv文件vim csv_demo.csv# 填入以下数据2014原创 2021-04-11 12:45:51 · 1904 阅读 · 0 评论 -
ClickHouse数据查询
1.查询语法[WITH expr_list|(subquery)]SELECT [DISTINCT] expr_list[FROM [db.]table | (subquery) | table_function] [FINAL][SAMPLE sample_coeff][ARRAY JOIN ...][GLOBAL] [ANY|ALL|ASOF] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI] JOIN (subquery)|table (转载 2021-04-28 21:47:53 · 3618 阅读 · 0 评论 -
clickhouse分布式集群部署
1.节点规划主机名 IP地址 分片 副本 docker01-node 192.168.56.10 shard1 副本1 docker02-node 192.168.56.11 shard1 副本2 docker03-node 192.168.56.12 shard2 副本1 docker04-node 192.168.56.13 shard2 副本2 规划4个节点, 2个分原创 2021-04-24 13:35:46 · 1054 阅读 · 0 评论 -
CollapsingMergeTree,(State行和Cancel行匹配示例),聚合查询,Cancel状态行取反的聚合查询
1.CollapsingMergeTree在排序键(ORDER BY)的所有字段都相同的条件下,如果特定的字段具有1和-1的值,CollapsingMergeTree将异步删除(折叠)成对的行。没有配对的行将保留。 能显著降低存储空间并提升SELECT查询的效率。 变相的实现了数据的更新和删除逻辑。指定表引擎:CollapsingMergeTree(sign)参数:sign,标识行类型的列名称,1是状态行,-1是取消行。列的数据类型是Int8。使用特定的列Sign,如果Sign=1,则转载 2021-04-14 21:44:05 · 389 阅读 · 0 评论 -
clickhouse之表和列的TTL规则与实践
1.表和列的TTL定义值的生命周期可以为整个表设置,也可以为每个单独的列设置。表级的TTL也可以指定在磁盘和卷之间自动移动数据的逻辑。设置TTL的表,必须包含Date或DateTime类型的字段。定义数据的生命周期,需要在这个日期字段使用操作符:TTL time_columnTTL time_column + interval示例:TTL date_time + INTERVAL 1 MONTHTTL date_time + INTERVAL 15 HOUR转载 2021-04-11 20:40:44 · 1570 阅读 · 0 评论 -
VersionedCollapsingMergeTree原理与实践
1.VersionedCollapsingMergeTree算法:当ClickHouse合并数据片段时,它会删除满足如下条件的行:排序键相同,version相同,Sign不同。行的顺序无关紧要。当CLickHouse插入数据时,它按排序键对数据进行排序:如果Version列不在排序键中,则ClickHouse会将其隐式地作为最后一个字段添加到排序键中,并将其用于排序。2.案例示例数据:┌──────────────UserID─┬─PageViews─┬─Duration─.转载 2021-04-14 21:50:17 · 1858 阅读 · 0 评论 -
clickhouse输入输出格式之JSON系列【JSON、JSONCompact和JSONEachRow】
JSONJSON格式的输入输出JSON格式只支持数据的输出,不支持数据的解析(数据导入)。案例演示建表插数据create table t_json_demo(id UInt8, prov String) ENGINE=TinyLog;insert into t_json_demo values(1, 'jiangsu'),(1, 'jiangsu'),(2, 'anhui'),(2, 'anihu'),(3, 'beijing');查询演示以JSON格式查询转载 2021-04-11 15:11:05 · 3595 阅读 · 0 评论 -
主键、索引的工作机制以及数据标记的工作机制
1.MergeTree的稀疏索引数据按照主键排序后存储的每个索引记录对应8192条记录(有index_grandularity指定),索引是常驻内存的。索引是常驻内存的。2.索引的生成过程索引由Primary Key指定。索引数据保存在primary.idx文件中。这里假设索引粒度(index_grandularity)为3,即每3条数据生成一条索引记录。3.索引的查询前后相邻的两个索引的值,构成索引的范围。根据主键的查询条件,确定索引范围。id in (转载 2021-04-12 21:50:25 · 310 阅读 · 0 评论 -
clickhouse算术函数
--求和SELECT plus(12, 21), plus(10, -10), plus(-10, -10);+------------+-------------+--------------+|plus(12, 21)|plus(10, -10)|plus(-10, -10)|+------------+-------------+--------------+|33 |0 |-20 |+------------+-------..转载 2021-04-28 22:00:42 · 456 阅读 · 0 评论 -
clickhouse,数据查询与写入优化,分布式子查询优化,外部聚合/排序优化,基于JOIN引擎的优化,SQL优化案例,物化视图提速,查询优化常用经验法则,选择和主键不一样的排序键,数据入库优化
1.分布式子查询优化带子查询的IN和JOIN有两个选项:普通的IN/JOIN、GLOBAL IN / GLOBAL JOIN。普通的IN/JOIN : 查询发送到远程的server,在每个远程的server上运行IN子查询或JOIN子句。 GLOBAL IN/GLOBAL JOIN : 首先为GLOBAL IN/GLOBAL JOIN运行所有子查询,将结果收集在临时表中。然后将临时表发送到每个远端server,并在其中使用此临时数据运行查询。1.1)分布式表的IN查询示例1(普通IN子查询、I转载 2021-05-04 12:11:12 · 878 阅读 · 0 评论 -
clickhouse输入输出格式之ORC
ORC数据的输入输出仅支持ORC格式的写入。ORC和CH数据类型的匹配关系备注:不支持的ORC数据类型:DATE32, TIME32, FIXED_SIZE_BINARY, JSON, UUID, ENUM。 ClickHouse表的列名必须与ORC表的列名一致。使用Spark生成ORC文件val list = List( ("113.248.234.232", "123.212.22.01", "2018-07-12 14:35:31"), ("115.248...转载 2021-04-11 17:30:36 · 589 阅读 · 0 评论 -
ReplacingMergeTree,案例,根据排序键去重,使用版本参数的去重
1.ReplacingMergeTree删除具有相同排序键值的重复项。 数据去重是在合并期间进行的。 后台的合并操作在未知的时间触发,因此用户无法对合并进行计划。 可使用OPTIMIZE语句运行计划外的合并,但OPTIMIZE是一个很重的操作。 ReplacingMergeTree适合清除后台的重复数据以节省空间。指定表引擎:ENGINE = ReplacingMergeTree([ver])参数:ver,版本列。版本列的类型为UInt*、Date或DateTime。可选参数。合并转载 2021-04-12 22:11:32 · 2205 阅读 · 0 评论 -
clickhouse20.1.4.14-2单机版安装
1.安装文件清单2.安装方式rpm方式,这种方式适用于环境的依赖都很全,不需要安装其他的环境依赖包 命令:rpm -ivh ./*.rpm yum方式,这种方式依赖于yum,但是不需要安装其他的环境依赖包,缺少的话会自动帮你安装 命令:yum install *.rpm3.使用rpm方式安装 1)在/opt/clickhouse目录下 2)安装 4.启动clickhouse命令systemctl ...原创 2021-04-05 11:37:09 · 166 阅读 · 1 评论 -
clickhouse,硬件管理与优化(cpu,内存,网络,存储,操作系统配置),profile管理,Quotas设置,约束管理,查询权限,用户管理配置等
1.运维管理与优化1.1)硬件管理与优化 1.1.1)CPU ClickHouse的并行数据处理机制,使得其能利用所有可用的硬件资源。在选择CPU处理器时,应选择更多核心数而不是更高频率的处理器。 例如:频率为2600MHz的16核心处理器比3600MHz的8核心的处理器的效率更高。 建议使用Turbo Boost和超线程技术,在高工作负载情况下能显著提高性能。 ...转载 2021-05-04 16:23:38 · 5009 阅读 · 0 评论 -
ClickHouse函数整理(详细)
1、日期类函数1.1 时间或日期截取函数(to)—— 返回非日期1.2 时间或日期截取函数(toStartOf)—— 返回日期1.3 日期或时间日期生成函数2、类型转化类函数2.1 精度保留(非四舍五入)2.2 字符串转化为整数(非整数的字符串返回0)2.3 日期与时间日期转化2.4 转化为字符型2.5 查看数据类型3、字符串操作3.1 基本字符串操作3.2 字符串查找3.3 字符串替换3.4 字符串分割转载 2021-04-28 22:31:57 · 2667 阅读 · 0 评论 -
clickhouse输入输出格式之不常用数据格式
1. Native数据以二进制数据块的方式进行读写。数据的导出:clickhouse-client --query=“SELECT * FROM tsv_demo FORMAT Native” > a.native数据的导入:clickhouse-client --query=“insert into tsv_demo FORMAT Native” < a.native2. Null主要用于测试性能。 查询会被处理,并且数据会被传送到客户端,但是什么也不输出。Nul转载 2021-04-11 17:32:59 · 237 阅读 · 0 评论 -
MergeTree系列引擎概述与存储结构
MergeTree系列引擎介绍MergeTree系列引擎是clickhouse中最强大的表引擎数据按照片段被一批批写入表数据片段在后台按照一定规则进行合并。主要特性数据按照 主键排序,稀疏索引快速检索数据 数据分区 增加查询性能 数据副本 ReplicatedMergeTree系列的引擎支持数据副本,替身查询性能和容错 数据采样 设置采样方法,快速分析数据建表模板CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLU转载 2021-04-11 19:58:23 · 424 阅读 · 0 评论 -
使用DBeaver连接clickhouse数据库
首次使用,记录一下DBeaver官网下载地址:https://dbeaver.io/download/第一个需要安装,第二个免安装,我下载的第二个,解压直接双击dbeaver.exe运行新建连接点击上面的倒三角 -->other -->clickhouse首次连接需要下载相关的驱动,点击“编辑驱动设置”点击“下载/更新”下载完成后,点击“确定”确认clickhouse可以被监听# netstat -tunlp|grep 8123...原创 2021-04-05 14:46:59 · 4561 阅读 · 0 评论