跳到主要内容
跳到主要内容

表引擎

表引擎(表的类型)决定:

  • 数据的存储方式和位置,写入和读取的位置。
  • 支持哪些查询,以及如何支持。
  • 并发数据访问。
  • 是否使用索引(如果存在)。
  • 是否可能多线程请求执行。
  • 数据复制参数。

引擎家族

MergeTree

最通用和功能强大的高负载任务表引擎。这些引擎的共同特性是快速的数据插入以及随后的后台数据处理。MergeTree 家族的引擎支持数据复制(与 Replicated* 版本引擎)、分区、二级数据跳过索引,以及其他在其他引擎中不支持的特性。

该家族的引擎:

MergeTree 引擎
MergeTree
ReplacingMergeTree
SummingMergeTree
AggregatingMergeTree
CollapsingMergeTree
VersionedCollapsingMergeTree
GraphiteMergeTree

Log

轻量级的 引擎,功能最小化。当您需要快速写入许多小表(约 100 万行)并稍后按整体读取时,它们效果最佳。

该家族的引擎:

Log 引擎
TinyLog
StripeLog
Log

集成引擎

用于与其他数据存储和处理系统通信的引擎。

该家族的引擎:

集成引擎
ODBC
JDBC
MySQL
MongoDB
Redis
HDFS
S3
Kafka
EmbeddedRocksDB
RabbitMQ
PostgreSQL
S3Queue
TimeSeries

特殊引擎

该家族的引擎:

特殊引擎
Distributed
Dictionary
Merge
Executable
File
Null
Set
Join
URL
View
Memory
Buffer
External Data
GenerateRandom
KeeperMap
FileLog

虚拟列

虚拟列是表引擎属性,需在引擎源代码中定义。

您不应在 CREATE TABLE 查询中指定虚拟列,且在 SHOW CREATE TABLEDESCRIBE TABLE 查询结果中看不到它们。虚拟列也是只读的,因此无法向虚拟列插入数据。

要从虚拟列中选择数据,必须在 SELECT 查询中指定其名称。SELECT * 不会返回虚拟列的值。

如果您创建的表中有一个与表虚拟列同名的列,则该虚拟列将变得不可访问。我们不建议这样做。为避免冲突,虚拟列名称通常以下划线开头。