> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-home-button.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 表引擎文档

# 表引擎

表引擎 (表的类型) 决定了：

* 数据如何存储、存储在何处、写入到哪里以及从哪里读取。
* 支持哪些查询，以及支持方式。
* 数据的并发访问。
* 是否使用索引 (如果存在) 。
* 是否支持多线程请求执行。
* 数据复制参数。

<div id="engine-families">
  ## 引擎系列
</div>

<div id="mergetree">
  ### MergeTree
</div>

这是最通用、功能最丰富的一类表引擎，适用于高负载任务。这些引擎的共同特点是支持快速插入数据，并在后台对数据进行后续处理。`MergeTree` 家族引擎支持数据复制 (通过引擎的 [Replicated\*](/zh/reference/engines/table-engines/mergetree-family/replication) 版本) 、分区、二级数据跳过索引，以及其他引擎不支持的功能。

该家族中的引擎：

| MergeTree 引擎                                                                                                      |
| ----------------------------------------------------------------------------------------------------------------- |
| [MergeTree](/zh/reference/engines/table-engines/mergetree-family/mergetree)                                       |
| [ReplacingMergeTree](/zh/reference/engines/table-engines/mergetree-family/replacingmergetree)                     |
| [SummingMergeTree](/zh/reference/engines/table-engines/mergetree-family/summingmergetree)                         |
| [AggregatingMergeTree](/zh/reference/engines/table-engines/mergetree-family/aggregatingmergetree)                 |
| [CollapsingMergeTree](/zh/reference/engines/table-engines/mergetree-family/collapsingmergetree)                   |
| [VersionedCollapsingMergeTree](/zh/reference/engines/table-engines/mergetree-family/versionedcollapsingmergetree) |
| [GraphiteMergeTree](/zh/reference/engines/table-engines/mergetree-family/graphitemergetree)                       |
| [CoalescingMergeTree](/zh/reference/engines/table-engines/mergetree-family/coalescingmergetree)                   |

<div id="log">
  ### Log
</div>

轻量级[引擎](/zh/reference/engines/table-engines/log-family)，功能精简。当你需要快速写入许多小表 (最多约 100 万行) ，并在之后整体读取时，这类引擎的效率最高。

该家族中的引擎：

| Log 引擎                                                                |
| --------------------------------------------------------------------- |
| [TinyLog](/zh/reference/engines/table-engines/log-family/tinylog)     |
| [StripeLog](/zh/reference/engines/table-engines/log-family/stripelog) |
| [Log](/zh/reference/engines/table-engines/log-family/log)             |

<div id="integration-engines">
  ### 集成引擎
</div>

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

该家族中的引擎：

| 集成引擎                                                                                 |
| ------------------------------------------------------------------------------------ |
| [ODBC](/zh/reference/engines/table-engines/integrations/odbc)                        |
| [JDBC](/zh/reference/engines/table-engines/integrations/jdbc)                        |
| [MySQL](/zh/reference/engines/table-engines/integrations/mysql)                      |
| [MongoDB](/zh/reference/engines/table-engines/integrations/mongodb)                  |
| [Redis](/zh/reference/engines/table-engines/integrations/redis)                      |
| [HDFS](/zh/reference/engines/table-engines/integrations/hdfs)                        |
| [S3](/zh/reference/engines/table-engines/integrations/s3)                            |
| [Kafka](/zh/reference/engines/table-engines/integrations/kafka)                      |
| [EmbeddedRocksDB](/zh/reference/engines/table-engines/integrations/embedded-rocksdb) |
| [RabbitMQ](/zh/reference/engines/table-engines/integrations/rabbitmq)                |
| [PostgreSQL](/zh/reference/engines/table-engines/integrations/postgresql)            |
| [S3Queue](/zh/reference/engines/table-engines/integrations/s3queue)                  |
| [TimeSeries](/zh/reference/engines/table-engines/integrations/time-series)           |

<div id="special-engines">
  ### 特殊引擎
</div>

该家族中的引擎：

| 特殊引擎                                                                   |
| ---------------------------------------------------------------------- |
| [Distributed](/zh/reference/engines/table-engines/special/distributed) |
| [字典](/zh/reference/engines/table-engines/special/dictionary)           |
| [Merge](/zh/reference/engines/table-engines/special/merge)             |
| [Executable](/zh/reference/engines/table-engines/special/executable)   |
| [File 表引擎](/zh/reference/engines/table-engines/special/file)           |
| [Null](/zh/reference/engines/table-engines/special/null)               |
| [Set](/zh/reference/engines/table-engines/special/set)                 |
| [Join](/zh/reference/engines/table-engines/special/join)               |
| [URL](/zh/reference/engines/table-engines/special/url)                 |
| [View](/zh/reference/engines/table-engines/special/view)               |
| [Memory](/zh/reference/engines/table-engines/special/memory)           |
| [Buffer](/zh/reference/engines/table-engines/special/buffer)           |
| [外部数据](/zh/reference/engines/table-engines/special/external-data)      |
| [GenerateRandom](/zh/reference/engines/table-engines/special/generate) |
| [KeeperMap](/zh/reference/engines/table-engines/special/keepermap)     |
| [FileLog](/zh/reference/engines/table-engines/special/filelog)         |

<div id="table_engines-virtual_columns">
  ## 虚拟列
</div>

虚拟列是表引擎的内置属性，在引擎源代码中定义。

你不应在 `CREATE TABLE` 查询中指定虚拟列，并且在 `SHOW CREATE TABLE` 和 `DESCRIBE TABLE` 查询结果中也看不到它们。虚拟列也是只读的，因此你不能向虚拟列插入数据。

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

如果你创建的表中某一列与该表的某个虚拟列同名，则该虚拟列将无法访问。我们不建议这样做。为帮助避免冲突，虚拟列名通常以下划线作为前缀。

* `_table` — 包含读取数据的表名。Type: [String](/zh/reference/data-types/string).

  无论使用哪种表引擎，每个表都包含一个名为 `_table` 的通用虚拟列。

  使用 Merge 表引擎查询表时，你可以在 `WHERE/PREWHERE` 子句中为 `_table` 设置常量条件 (例如 `WHERE _table='xyz'`) 。在这种情况下，只会读取满足 `_table` 条件的那些表，因此 `_table` 列可充当索引。

  当使用 `SELECT ... FROM (... UNION ALL ...)` 这种格式的查询时，我们可以通过指定 `_table` 列来确定返回的行实际来自哪个表。
