ClickHouse数据库的表引擎

ClickHouse数据库的表引擎又叫表的类型,其决定如何存储和读取数据。CK表引擎分为MergeTree、Log、Integrations和Special四个系列。

  • MergeTree引擎:MegerTree系列引擎是CK提供的主要存储引擎,支持ClickHouse几乎所有核心功能。MergeTree适用于高负载任务,支持大数据量的快速写入并进行后续的数据处理,通用程度高且功能强大。该系列引擎的共同特点是支持数据副本、分区、数据采样等特性。MergeTree系列引擎主要有:
    1. MergeTree:用于海量数据分析,支持分区,顺序存储、主键索引等;
    2. ReplacingMergeTree:删除重复数据;
    3. SummingMergeTree:可累加数据;
    4. CollapsingMergeTree:该引擎是为了消除ReplacingMergeTree的限制。引擎需要一个标签列:Sign, 在创建表时指定。在后端比较时,相同主键行和相反Sign将被折叠,就是被删除。
  • Log引擎:Log表引擎主要用于快速写小规模数据(少于100万行),然后全部读出来,包括TinyLog(不支持并发读数据文件;查询性能低;格式简单,适合临时存储数据)、StripeLog(支持并发读数据文件;比TinyLog查询性能佳;在同一文件存储所有列,文件数量比TinyLog少)等。Log引擎的特点包括:
    1. 数据按顺序以追加方式写入磁盘中;
    2. 不支持更新和删除;
    3. 不支持索引;
    4. 不支持原子性写;
    5. 插入时阻塞查询操作。
  • 集成引擎:又叫Integrations系列引擎,主要用于导入外部数据至ClickHouse或在ClickHouse中直接操作外部数据源,包括Kafka(将Kafka Topic的数据导入到ClickHouse)、MySQL(在ClickHouse中操作MySQL)、PostgreSQL(在ClickHouse中操作PG)、HDFS(直接读HDFS上指定格式的数据文件)、JDBC(通过JDBC串读取数据源)等。
  • 特殊引擎:又叫Special系列引擎,用于特定的功能场景,包括Memory(数据在内存中,重启后数据丢失。查询性能极好,适合100万以内无需持久化的小表ClickHouse内部用作临时表)、Buffer(为目标表设置内存缓冲,当缓冲达到一定条件数据会写入磁盘)、Merge(本身不存储数据,可从任意多个其他表中读取数据)等。

ClickHouse的建表示例如下:

sql 复制代码
CREATE TABLE IF NOT EXISTS `tmp_sample` (
  `brand_id` String COMMENT '品牌ID',
  `plan_id` String COMMENT '计划ID',
  `stat_date` Date COMMENT '日期',
  `cost_amt` Decimal(28,2) COMMENT '花费金额',
  `deal_amt` Decimal(28,2) COMMENT '成交金额'
)
ENGINE = ReplacingMergeTree() -- 表类型
PARTITION BY stat_date -- 用于分区
ORDER BY  (stat_date, plan_id) -- 用于去重
PRIMARY KEY (stat_date, plan_id) -- 用于索引,缺失表示和排序键相同,为排序键子集
SETTINGS index_granularity=8192 -- 索引粒度,默认8192
COMMENT '测试表';

CREATE TABLE IF NOT EXISTS `tiny_log_table` (
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = TinyLog;
相关推荐
老华带你飞13 小时前
酒店预约|基于springboot 酒店预约系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
会飞的土拨鼠呀14 小时前
如何查询MySQL的CPU使用率突然变高
数据库·mysql
想用offer打牌14 小时前
一站式了解数据库三大范式(库表设计基础)
数据库·后端·面试
甘露s14 小时前
MySQL深入之索引、存储引擎和SQL优化
数据库·sql·mysql
偶遇急雨洗心尘14 小时前
记录一次服务器迁移时,数据库版本不一致导致sql函数报错和系统redirect重定向丢失域名问题
运维·服务器·数据库·sql
Arva .15 小时前
MySQL 的存储引擎
数据库·mysql
Logic10115 小时前
《Mysql数据库应用》 第2版 郭文明 实验5 存储过程与函数的构建与使用核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
小二·15 小时前
MyBatis基础入门《十六》企业级插件实战:基于 MyBatis Interceptor 实现 SQL 审计、慢查询监控与数据脱敏
数据库·sql·mybatis
bing.shao15 小时前
Golang WaitGroup 踩坑
开发语言·数据库·golang
专注VB编程开发20年15 小时前
C#内存加载dll和EXE是不是差不多,主要是EXE有入口点
数据库·windows·microsoft·c#