当前位置: 首页 > 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 初阶

在这里插入图片描述

相关文章:

【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 (转账钩子) 。 想象时间 让我们戴上想象的帽子&#xf…...

网络爬虫中的反爬虫技术:突破限制,获取数据

,网络爬虫已成为获取大量网络数据的重要工具。然而,随着爬虫技术的发展,许多网站也开始采用各种反爬虫措施来保护自己的数据。作为爬虫开发者,我们需要不断更新我们的技术,以应对这些反爬虫措施。本文将详细介绍一些常…...

【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)的说话人识别测试平台。系统框架设计:特征参数采用美尔倒谱系数及差分美尔倒谱系数&#xff0c…...

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】集群网络

前言 上一章讲了集群控制器的一个大概的原理,这一章讲一下集群网络。网络是集群通信的载体,因为该书是阿里云团队出品的,所以也以阿里云的集群网络方案为例,其他云厂商的网络集群方案一般来说也大同小异。所以通过本章的学习&…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...