当前位置: 首页 > news >正文

【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 中级
🙉八股文专题:剑指大厂,手撕 Java 八股文

在这里插入图片描述

文章目录

      • 1. MergeTree 系列
        • 1.1 MergeTree
        • 1.2 ReplacingMergeTree
        • 1.3 SummingMergeTree
        • 1.4 AggregatingMergeTree
      • 2. 日志系列
        • 2.1 Log
        • 2.2 TinyLog
      • 3. 分布式系列
        • 3.1 Distributed
      • 4. 内存系列
        • 4.1 Memory
      • 5. 特殊用途系列
        • 5.1 Null
        • 5.2 File
      • 6. 其他表引擎
        • 6.1 Join
        • 6.2 Buffer

ClickHouse 提供了多种表引擎,每种引擎都有其特定的用途和优化目标。下面详细介绍几种常用的表引擎:

1. MergeTree 系列

1.1 MergeTree

特点

  • 最常用的表引擎,适用于大多数场景。
  • 支持分区和排序,可以显著提高查询性能。
  • 支持数据压缩,节省存储空间。
  • 支持数据的去重和合并。

使用场景

  • 大规模数据存储和分析。
  • 实时查询和报表生成。

我们来举个例子

CREATE TABLE my_table
(id UInt64,date Date,value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (id, date);
1.2 ReplacingMergeTree

特点

  • 继承自 MergeTree,支持数据去重。
  • 可以根据指定的列(通常是主键)删除重复的数据。

使用场景

  • 需要保证数据唯一性的场景。

我们来举个例子

CREATE TABLE my_table
(id UInt64,date Date,value Float64
)
ENGINE = ReplacingMergeTree(id)
PARTITION BY toYYYYMM(date)
ORDER BY (id, date);
1.3 SummingMergeTree

特点

  • 继承自 MergeTree,支持数据的自动汇总。
  • 适用于需要对某些列进行汇总的场景。

使用场景

  • 日志分析和统计报表。

我们来举个例子

CREATE TABLE my_table
(id UInt64,date Date,value Float64
)
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (id, date);
1.4 AggregatingMergeTree

特点

  • 继承自 MergeTree,支持复杂的聚合操作。
  • 适用于需要进行复杂聚合计算的场景。

使用场景

  • 复杂的聚合查询和数据预处理。

我们来举个例子

CREATE TABLE my_table
(id UInt64,date Date,value AggregateFunction(sum, Float64)
)
ENGINE = AggregatingMergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (id, date);

2. 日志系列

2.1 Log

特点

  • 简单的日志表引擎,适用于小数据量的临时存储。
  • 不支持索引和分区,查询性能较差。

使用场景

  • 调试和测试。

我们来举个例子

CREATE TABLE my_table
(id UInt64,value Float64
)
ENGINE = Log;
2.2 TinyLog

特点

  • 类似于 Log,但更适合小到中等规模的数据。
  • 支持多个文件存储,但仍然不支持索引和分区。

使用场景

  • 小规模数据的临时存储和调试。

我们来举个例子

CREATE TABLE my_table
(id UInt64,value Float64
)
ENGINE = TinyLog;

3. 分布式系列

3.1 Distributed

特点

  • 用于在多个 ClickHouse 服务器之间分布数据。
  • 支持跨节点的查询和数据分片。

使用场景

  • 大规模数据的分布式存储和查询。

我们来举个例子

CREATE TABLE my_distributed_table
(id UInt64,date Date,value Float64
)
ENGINE = Distributed(cluster_name, database_name, table_name, rand());

4. 内存系列

4.1 Memory

特点

  • 将数据存储在内存中,适用于需要极高性能的临时数据。
  • 数据在重启后会丢失。

使用场景

  • 缓存和临时数据存储。

我们来举个例子

CREATE TABLE my_table
(id UInt64,value Float64
)
ENGINE = Memory;

5. 特殊用途系列

5.1 Null

特点

  • 用于创建一个虚拟表,不存储任何数据。
  • 适用于测试和调试。

使用场景

  • 测试和调试。

我们来举个例子

CREATE TABLE my_null_table
(id UInt64,value Float64
)
ENGINE = Null;
5.2 File

特点

  • 从外部文件中读取数据,支持多种文件格式(如 CSV、JSON 等)。
  • 适用于一次性导入数据。

使用场景

  • 数据导入和导出。

我们来举个例子

CREATE TABLE my_file_table
(id UInt64,value Float64
)
ENGINE = File(CSV)
LOCATION '/path/to/file.csv';

6. 其他表引擎

6.1 Join

特点

  • 用于存储临时的关联表,支持左连接和右连接。

使用场景

  • 复杂的关联查询。

我们来举个例子

CREATE TABLE my_join_table
(key UInt64,value Float64
)
ENGINE = Join(ANY, LEFT, key);
6.2 Buffer

特点

  • 用于缓存数据,定期批量写入目标表。
  • 适用于高并发写入场景。

使用场景

  • 高并发写入和数据流处理。

我们来举个例子

CREATE TABLE my_buffer_table
(id UInt64,value Float64
)
ENGINE = Buffer(default, my_target_table, 16, 10, 100, 10000, 1000000, 10000000, 100000000);

每种表引擎都有其特定的适用场景和优化目标。选择合适的表引擎可以显著提高 ClickHouse 的性能和可靠性。

精彩专栏推荐订阅:在下方专栏👇🏻
✅ 2023年华为OD机试真题(A卷&B卷)+ 面试指导
✅ 精选100套 Java 项目案例
✅ 面试需要避开的坑(活动)
✅ 你找不到的核心代码
✅ 带你手撕 Spring
✅ Java 初阶

在这里插入图片描述

http://www.lryc.cn/news/474762.html

相关文章:

  • 你好,C++并发世界
  • windows10 安装 达梦数据库DM8
  • ntp交叉编译 ntpdate时间同步
  • 微服务实战系列之玩转Docker(十六)
  • Solana 代币 2022 — Transfer Hook
  • 网络爬虫中的反爬虫技术:突破限制,获取数据
  • 【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库
  • 【Web.路由】——URL生成
  • 使用 Java 实现从搜索引擎批量下载图片
  • 基于Matlab GUI的说话人识别测试平台
  • Leetcode 热题100之二叉树2
  • <项目代码>YOLOv8 煤矸石识别<目标检测>
  • GA/T1400视图库平台EasyCVR视频分析设备平台微信H5小程序:智能视频监控的新篇章
  • LVM与磁盘配额
  • xmuoj [蒙德里安的梦想] 状压dp个人笔记
  • ubuntu22安装搜狗输入法不能输入中文
  • HtmlAgilityPack 操作详解
  • 基于SSM医院门诊互联电子病历管理系统的设计
  • 【读书笔记/深入理解K8S】集群网络
  • 【专有网络VPC】连接公网
  • 论文 | Legal Prompt Engineering for Multilingual Legal Judgement Prediction
  • 国科安芯抗辐照MCU和CANFD芯片发布
  • C++ 并发专题 - 无锁数据结构(概述)
  • NLP领域的经典算法和模型
  • 提升安全上网体验:Windows 11 启用 DOH(阿里公共DNS)
  • 论文概览 |《Journal of Transport Geography》2024.10 Vol.120
  • yum不能使用: cannot find a valid baseurl for repo: base/7/x86_64
  • 什么品牌的护眼台灯比较好?五款护眼效果比较明显的护眼台灯
  • HTML 表单设计与验证
  • qt QDialog详解