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