表引擎
表引擎(表类型)决定了
- 数据如何以及在何处存储,写入到哪里,以及从哪里读取。
- 支持哪些查询以及如何支持。
- 并发数据访问。
- 索引的使用(如果存在)。
- 是否可能进行多线程请求执行。
- 数据复制参数。
引擎家族
MergeTree
最通用和功能强大的表引擎,适用于高负载任务。这些引擎的共同特性是快速数据插入和随后的后台数据处理。MergeTree
家族引擎支持数据复制(使用 Replicated* 版本的引擎)、分区、二级数据跳过索引以及其他引擎不支持的功能。
家族中的引擎
- MergeTree
- ReplacingMergeTree
- SummingMergeTree
- AggregatingMergeTree
- CollapsingMergeTree
- VersionedCollapsingMergeTree
- GraphiteMergeTree
Log
轻量级 引擎,功能最少。当您需要快速写入许多小表(最多约 100 万行)并在以后作为一个整体读取它们时,它们是最有效的。
家族中的引擎
集成引擎
用于与其他数据存储和处理系统通信的引擎。
家族中的引擎
特殊引擎
家族中的引擎
虚拟列
虚拟列是引擎源代码中定义的表引擎的固有属性。
您不应在 CREATE TABLE
查询中指定虚拟列,并且您无法在 SHOW CREATE TABLE
和 DESCRIBE TABLE
查询结果中看到它们。虚拟列也是只读的,因此您无法将数据插入虚拟列。
要从虚拟列中选择数据,您必须在 SELECT
查询中指定其名称。SELECT *
不会从虚拟列返回值。
如果您创建一个表,其列的名称与表虚拟列之一的名称相同,则虚拟列将变得不可访问。我们不建议这样做。为了帮助避免冲突,虚拟列名称通常以一个下划线为前缀。