【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 初阶

相关文章:
【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
你好,C++并发世界
C并发编程的主要目的是任务隔离和提高性能 是的,C并发编程的主要目的是任务隔离和提高性能。具体来说,可以总结为以下几点: 任务隔离:通过并发编程,程序可以将不同的任务或计算分隔开,这样可以防止它们之间…...
windows10 安装 达梦数据库DM8
一. 前期工作 下载 https://www.dameng.com/list_103.html 通过百度网盘分享的文件:达梦数据库 链接:https://pan.baidu.com/s/1mJcT3UiwojeWIhXpAwh-RA 提取码:jyzi 点我: 想要 解压 双击iso文件 二. 安装步骤 1 .双击setup.ext安装 …...
ntp交叉编译 ntpdate时间同步
NTP(Network Time Protocol,网络时间协议)是一种用于在计算机系统之间同步时钟的协议,广泛覆盖网络环境中,确保网络设备和计算机上的时间保持一致。NTP 是基于 UDP 协议工作在123号端口上,能够在不同的网络条件下达到数千级别的精度同步时间。 实现windows上位机作为ntp服…...
微服务实战系列之玩转Docker(十六)
导览 前言Q:基于容器云如何实现高可用的配置中心一、etcd入门1. 简介2. 特点 二、etcd实践1. 安装etcd镜像2. 创建etcd集群2.1 etcd-node12.2 etcd-node22.3 etcd-node3 3. 启动etcd集群 结语系列回顾 前言 Docker,一个宠儿,一个云原生领域的…...
Solana 代币 2022 — Transfer Hook
从零到英雄的 Solana 代币 2022 — Transfer Hook Token 2022 计划引入了几项令人兴奋的扩展,增强了铸造和代币账户的功能。在这些功能中,我个人最喜欢的是Transfer Hook (转账钩子) 。 想象时间 让我们戴上想象的帽子…...
网络爬虫中的反爬虫技术:突破限制,获取数据
,网络爬虫已成为获取大量网络数据的重要工具。然而,随着爬虫技术的发展,许多网站也开始采用各种反爬虫措施来保护自己的数据。作为爬虫开发者,我们需要不断更新我们的技术,以应对这些反爬虫措施。本文将详细介绍一些常…...
【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库
1、简述 cv_bridge可以实现ROS图像消息(sensor_msgs::msg::Image)和OpenCV的cv::Mat格式的转换。 cv_bridge支持各种常见的图像编码格式,包括JPEG、PNG、BMP等。 2、互转 1)cv::Mat转sensor_msgs::Image cv::Mat image; sensor_msgs::ImagePtr pMsg = cv_bridge::CvIma…...
【Web.路由】——URL生成
前几篇文章介绍了路由的相关知识,包括原理,模板和约束。围绕的一个点就是URL,那么URL是如何生成的呢? 在 ASP.NET CORE应用程序中,使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…...
使用 Java 实现从搜索引擎批量下载图片
在进行一些数据收集、图像处理或研究工作时,我们可能需要从网络上批量下载高质量的图片。本文将介绍如何使用 Java 和 Jsoup 库,从搜索引擎中抓取图片,解析详情页并过滤出高质量图片。通过以下几个步骤,您可以自动化这个图片收集的…...
基于Matlab GUI的说话人识别测试平台
基于Matlab GUI的说话人识别测试平台 摘 要:为了克服在Matlab中语音处理工具箱的不足,设计出基于Matlab图形用户界面(GUI)的说话人识别测试平台。系统框架设计:特征参数采用美尔倒谱系数及差分美尔倒谱系数,…...
Leetcode 热题100之二叉树2
1.二叉树的层序遍历 思路分析:层序遍历是逐层从左到右访问二叉树的所有节点,通常可以使用广度优先搜索(BFS)来实现。我们可以使用一个队列(FIFO)来存储每一层的节点,并逐层访问。 初始化队列&a…...
<项目代码>YOLOv8 煤矸石识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
GA/T1400视图库平台EasyCVR视频分析设备平台微信H5小程序:智能视频监控的新篇章
GA/T1400视图库平台EasyCVR是一款综合性的视频管理工具,它兼容Windows、Linux(包括CentOS和Ubuntu)以及国产操作系统。这个平台不仅能够接入多种协议,还能将不同格式的视频数据统一转换为标准化的视频流,通过无需插件的…...
LVM与磁盘配额
文章目录 LVM与磁盘配额1 LVM概述1.1 名词解释1.2 LVM优势 2 LVM相关命令2.1 创建逻辑卷过程2.2 对逻辑卷扩容 3 磁盘配额3.1 磁盘配额的特点3.2 磁盘配额的命令3.3 查看配额使用情况3.4 验证磁盘配额3.5 实验 LVM与磁盘配额 1 LVM概述 1.1 名词解释 LVM:logical…...
xmuoj [蒙德里安的梦想] 状压dp个人笔记
本题是状压dp经典题目,很多人都是通过这一题开始对状压dp有所了解。 在进行讲解之前,我们先通过几个问答大致了解状压dp。 一、问答 1. 问题:什么是状压dp? 回答:状压dp即为状态压缩动态规划,何为状态压缩&#x…...
ubuntu22安装搜狗输入法不能输入中文
关闭Wayland 在/etc/gdm3/custom.conf文件内,取消注释WaylandEnable cat /etc/gdm3/custom.conf | grep WaylandEnable WaylandEnablefalse 其它步骤参考搜狗官方教程 https://pinyin.sogou.com/linux/help.php...
HtmlAgilityPack 操作详解
目录 1.安装 HtmlAgilityPack 2. 示例 HTML 3. 使用 HtmlAgilityPack 进行 HTML 解析与操作 4. 代码详解 1.加载html文档 2.选择元素 3. 提取属性 4.修改属性 5.常用的几种获取元素的 XPath 写法 HtmlAgilityPack: 轻量且高效,适合进行常规的 H…...
基于SSM医院门诊互联电子病历管理系统的设计
管理员账户功能包括:系统首页,个人中心,用户管理,医生管理,项目分类管理,项目信息管理,预约信息管理,检查信息管理,系统管理 用户账号功能包括:系统首页&…...
【读书笔记/深入理解K8S】集群网络
前言 上一章讲了集群控制器的一个大概的原理,这一章讲一下集群网络。网络是集群通信的载体,因为该书是阿里云团队出品的,所以也以阿里云的集群网络方案为例,其他云厂商的网络集群方案一般来说也大同小异。所以通过本章的学习&…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
