跳转到主要内容

原子性

原子性确保一个事务 (一系列数据库操作) 被视为一个单一且不可分割的整体。这意味着事务中的所有操作要么全部执行,要么全部不执行。一个原子事务的典型例子是将资金从一个银行账户转到另一个账户。如果转账过程中的任何一步失败,整个事务都会失败,资金仍会留在第一个账户中。原子性确保资金既不会丢失,也不会凭空产生。

块是组织数据处理和存储的逻辑单元。每个块都包含列式数据,这些数据会一起处理,以提升查询执行期间的性能。通过按块处理数据,ClickHouse 能够高效利用 CPU 核心,减少缓存未命中并促进向量化执行。ClickHouse 使用多种压缩算法 (如 LZ4、ZSTD 和 Delta) 对块中的数据进行压缩。

集群

一组协同工作的节点 (服务器) ,共同用于存储和处理数据。

CMEK

客户管理的加密密钥 (CMEK) 使客户能够使用其密钥管理服务 (KMS) 中的密钥来加密 ClickHouse 磁盘数据密钥,从而保护其静态数据。

字典

字典是键值对映射,适用于各种类型的参考列表。这是一项强大的功能,可在查询中高效使用字典,而这通常比对参考表使用 JOIN 更高效。

分布式表

ClickHouse 中的分布式表是一种特殊类型的表,它本身不存储数据,而是为集群中多个服务器上的分布式查询处理提供一个统一的视图。

粒度

粒度是未压缩块中的一批行。读取数据时,ClickHouse 访问的是粒度而非单独的行,因此能够在分析型工作负载中更高效地处理数据。默认情况下,一个粒度包含 8192 行。主索引中每个粒度对应一个条目。

增量materialized view

在 ClickHouse 中,增量materialized view 是一种在写入时处理并聚合数据的 materialized view。当新数据写入源表时,materialized view 仅对新写入的块执行预定义的 SQL 聚合查询,并将聚合结果写入目标表。

轻量级更新

ClickHouse 中的轻量级更新是一项实验性功能,允许你使用标准 SQL UPDATE 语法更新表中的行;但与传统变更不同,它不会重写整个列或数据分区片段,而是会创建仅包含已更新列和行的“补丁分区片段”。这些更新会通过补丁应用立即反映在 SELECT 查询中,但只有在后续合并期间,物理数据才会被实际更新。

标记文件

ClickHouse 中的标记文件用于存储“标记”,即帮助 ClickHouse 快速定位特定数据范围在数据文件中存储位置的索引条目。

materialized view

ClickHouse 中的 materialized view 是一种机制:当数据插入源表时,它会自动对这些数据运行查询,并将转换后或聚合后的结果存储到单独的目标表中,以加快查询速度。

MergeTree

ClickHouse 中的 MergeTree 是一种表引擎,专为高数据摄取速率和海量数据而设计。它是 ClickHouse 的核心存储引擎,提供列式存储、自定义分区、稀疏主索引,以及对后台数据合并的支持。

变更

在 ClickHouse 中,变更是指对表中现有数据进行修改或删除的操作,通常使用 ALTER TABLE … UPDATE 或 ALTER TABLE … DELETE 等命令。变更以异步后台进程的形式执行:它会重写受影响的整个数据分区片段,而不是原地修改行。

即时变更

ClickHouse 中的即时变更是一种机制:提交变更后,无需等待后台变更过程完成,更新或删除操作便会立即在后续的 SELECT 查询中生效。

parts

磁盘上的物理文件,用于存储表中部分数据。这与分区不同;分区是通过分区键创建的、对表数据进行的逻辑划分。

分区键

ClickHouse 中的分区键是创建表时在 PARTITION BY 子句中定义的 SQL 表达式。它决定了数据在磁盘上如何在逻辑上划分为分区。分区键的每个唯一值都会形成各自独立的物理分区,从而能够高效执行数据管理操作,例如删除、移动或归档整个分区。

主键

在 ClickHouse 中,主键决定数据在磁盘上的存储顺序,并用于构建可加快查询过滤速度的稀疏索引。与传统数据库不同,ClickHouse 中的主键不强制要求唯一性——多行可以具有相同的主键值。

投影

ClickHouse 中的投影是一种隐藏且自动维护的表,它以不同的顺序存储数据,或存储预先计算好的聚合结果,以加快查询速度,尤其适用于按不在主键中的列进行过滤的查询。

可刷新materialized view

可刷新materialized view 是一种 materialized view,会定期针对整个数据集重新执行查询,并将结果存储到目标表中。与增量materialized view 不同,可刷新materialized view 按计划进行更新,并且能够支持复杂查询,包括 JOIN 和 UNION,且没有限制。

副本

存储在 ClickHouse 数据库中的数据副本。为实现冗余和提高可靠性,你可以为同一份数据保留任意数量的副本。副本通常与 ReplicatedMergeTree 表引擎配合使用,该引擎使 ClickHouse 能够在不同服务器之间保持多份数据副本的同步。

分片

数据的一个子集。ClickHouse 中,你的数据始终至少会有一个分片。如果不将数据拆分到多台服务器上,数据就会存储在单个分片中。当单台服务器的容量不足时,可以通过将数据分布到多台服务器上的多个分片来分摊负载。

跳过索引

跳过索引会在多个连续粒度的层面存储少量元数据,使 ClickHouse 能够避免扫描无关的行。跳过索引是投影的一种轻量级替代方案。

排序键

在 ClickHouse 中,排序键定义了行在磁盘上的物理排列顺序。如果未指定主键,ClickHouse 会将排序键用作主键。如果两者都已指定,则主键必须是排序键的前缀。

稀疏索引

一种索引方式,其中主索引为一组行包含一个条目,而不是为每一行单独包含一个条目。与一组行对应的这个条目称为标记。使用稀疏索引时,ClickHouse 会先找出可能匹配查询的若干组行,然后再分别处理这些行组以找到匹配项。因此,主索引足够小,可以加载到内存中。

表引擎

ClickHouse 中的表引擎决定了数据的写入、存储和访问方式。MergeTree 是最常用的表引擎,支持快速插入海量数据,并在后台进行处理。

TTL

生存时间 (TTL) 是 ClickHouse 的一项功能,可在经过一段时间后自动移动、删除或汇总列或行。这样你就能更高效地管理存储,因为可以删除、移动或归档不再需要频繁访问的数据。
最后修改于 2026年6月10日