ClickHouse表常用引擎

1 TinyLog

特点:

  1. 是最简单的表轻量引擎(最多约100万行), 一写多读的应用场景。同时读写会损害数据;
  2. TinyLog 表经常作为中间表,用于数据的微批量处理. 语法中无需携带任何参数;
  3. 它将数据保存到磁盘. 每个字段都以单独压缩文件形式保存. 当写入数据时, 数据追加到文件的末尾;

语法格式:

复制代码
CREATE  TABLE  [ IF  NOT  EXISTS ]  [ db 。] table_name  [ ON  CLUSTER  cluster ] 
(
    name1  [ type1 ]  [ DEFAULT | MATERIALIZED | ALIAS  expr1 ]  [ TTL  expr1 ],
   	name2  [ type2 ]  [ DEFAULT | MATERIALIZED | ALIAS  expr2 ]  [ TTL  expr2 ],
  	 	 	... 
  	INDEX index_name1  expr1的 TYPE  TYPE1 (...) 粒度 值1 ,
    INDEX  index_name2  表达式2  TYPE  TYPE2 (...) 粒度 值2 
) ENGINE  =  TinyLog();

2 MergeTree

特点:

1、这是目前 ClickHouse处理能力最好的引擎.

2、引擎支持索引,通过主键和日期来构建索引, 同时提供 数据的实时更新能力.

语法:

复制代码
CREATE  TABLE  [ IF  NOT  EXISTS ]  [ db 。] table_name  [ ON  CLUSTER  cluster ] 
		(
    name1  [ type1 ]  [ DEFAULT | MATERIALIZED | ALIAS  expr1 ]  [ TTL  expr1 ],
   	name2  [ type2 ]  [ DEFAULT | MATERIALIZED | ALIAS  expr2 ]  [ TTL  expr2 ],
  		 	 ... 
  	INDEX index_name1  expr1的 TYPE  TYPE1 (...) 粒度 值1 ,
    INDEX  index_name2  表达式2  TYPE  TYPE2 (...) 粒度 值2 
) ENGINE  =  MergeTree ()
[ PARTITION  BY  EXPR ] 
[ ORDER  BY  EXPR ] 
[ PRIMARY  KEY  EXPR ] 
[ 样品 BY  EXPR ] 
[ SETTINGS  name = value, ...]

3 ReplacingMergeTree

特点:

适用于在后台清除重复数据以节省空间,但不保证不存在重复。

语法:

复制代码
CREATE  TABLE  [ IF  NOT  EXISTS ]  [ db 。] table_name  [ ON  CL	USTER  cluster ] 
		(	
    	name1  [ type1 ]  [ DEFAULT | MATERIALIZED | ALIAS  expr1 ]  [ TTL  expr1 ]
   		name2  [ type2 ]  [ DEFAULT | MATERIALIZED | ALIAS  expr2 ]  [ TTL  expr2 ],
  	 	 	... 
  	  	INDEX index_name1  expr1的 TYPE  TYPE1 (...) 粒度 值1 ,
   		 INDEX  index_name2  表达式2  TYPE  TYPE2 (...) 粒度 值2 
		) ENGINE  =ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/wt_order_details',
        		 '{replica}') 
		[ PARTITION  BY  EXPR ] 
		[ ORDER  BY  EXPR ] 
		[ PRIMARY  KEY  EXPR ] 
		[ 样品 BY  EXPR ] 
		[ SETTINGS  name = value, ...]

4 Distributed

特点:

1、分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。 读是自动并行的。

2、读取时,远程服务器表的索引(如果有的话)会被使用。

3、远程服务器不仅用于读取数据,还会对尽可能数据做部分处理。

4、分布式引擎参数:服务器配置文件中的集群名,远程数据库名,远程表名,数据分片键(可选)

举例:

(1)先创建本地表:

复制代码
CREATE TABLE if not exists datahub.analysis_20240205_local on cluster default (
`ID` String not NULL,
`PageNo` String DEFAULT '',
`PdfOssPath` String DEFAULT '',
`MkdOssPath` String DEFAULT '',
`InclTable` String DEFAULT '',
`InclFormula` String DEFAULT '',
`ImageOssPath` String DEFAULT '',
`TableLatex` String DEFAULT '',
`FormulaLatex` String DEFAULT '',
`Subject` String DEFAULT 'sub_default',
`Source` String DEFAULT 'src_default',
`Year` String DEFAULT '0000'
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/datahub/analysis_20240205_local /{uuid}', '{replica}')
PRIMARY KEY `ID`
partition by (`Subject`,  `Source`, `Year`);

(2)创建分布式表

复制代码
create table if not exists datahub.analysis_20240205 on cluster default
engine = Distributed(default, datahub,analysis_20240205_local,rand());

5 Memory

特点:

1、重新启动服务器时,表中的数据消失,表将变为空。通常,使用此表引擎是不合理的。(值得注意的是,在许多情况下,与 MergeTree 引擎的性能几乎一样高)。

2、锁范围小:读写操作不会相互阻塞。不支持索引。阅读是并行化的。

3、从这张表中读取是很轻松的。并发数据访问是同步的。

4、以未压缩的形式将数据存储在内存中。数据完全以读取时获得的形式存储。

6、Kafka

1、自动跟踪传递的消息,因此组中的每条消息仅计算一次。如果要获取数据两次,则使用另一个组名创建表的副本。组是灵活的并在群集上同步

2、发布或订阅数据流。

3、组织容错存储。

4、处理流可用。

相关推荐
Decay__5 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子7 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
HideF7 小时前
Linux
linux·服务器·网络
万联WANFLOW7 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
sbjdhjd7 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
小徐不徐说9 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场10 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
taktok_ai10 小时前
用 cc-switch 连接 Taktok
网络
Decay__10 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
小嘉丶学长12 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节