# GreptimeDB 表引擎

> GreptimeDB 中所有表引擎的概述。

# GreptimeDB 表引擎

## 概述

GreptimeDB 提供多种专业的表引擎（Table Engine），每种引擎都针对特定工作负载和使用场景进行了优化设计。本文档全面介绍了这些引擎，并提供了何时使用每种引擎的指导。

### Mito 引擎

Mito 是 GreptimeDB 的默认`存储引擎`，负责高效存储和管理数据库数据。基于 [LSMT][1]（日志结构合并树）架构构建，Mito 已针对时间序列数据工作负载进行了广泛优化。

该引擎的架构包括预写日志（WAL）以确保持久性、Memtable 在内存中高效组织数据以及基于时间窗口压缩策略（TWCS）的高效压缩策略。这种设计使 Mito 能够处理高吞吐量的写入操作，同时保持出色的查询性能。

Mito 无缝集成了各种对象存储解决方案，包括 S3、GCS 和 Azure Blob Storage，无需额外插件即可提供原生支持。它在对象存储之上实现了分层缓存系统，优化了任何规模时间序列数据的存储成本和访问速度。

[1]: https://en.wikipedia.org/wiki/Log-structured_merge-tree

### Metric 引擎

顾名思义，Metric 引擎旨在高效处理指标数据。它专门处理可观测性负载中典型的海量小表的场景。

Metric 引擎的关键创新在于使用合成宽物理表来存储来自众多小表的数据。这种方法能够跨表高效重用列和元数据，显著减少存储开销，同时提高列式压缩效率。在 Metric 引擎下，表成为轻量级逻辑结构，非常适合云原生可观测场景，这些场景中通常存在数千个小型指标表。

Metric 引擎构建在 Mito 引擎之上，这意味着其数据实际上存储在 Mito 引擎中。这种架构利用了 Mito 强大的存储能力，同时为指标数据管理添加了专门的优化。

### File 引擎

File 引擎是 GreptimeDB 中专为处理基于文件的数据源而设计的专用存储引擎。它允许 GreptimeDB 直接查询和处理存储在外部文件中的数据，无需数据导入或转换。

该引擎支持数据分析工作流中常用的各种文件格式，实现与现有数据管道的无缝集成。通过将外部文件视为虚拟表，File 引擎提供了对基于文件的数据的 SQL 查询能力，同时保持了 GreptimeDB 查询引擎的性能优化。

当数据已经以文件格式存在时，File 引擎特别有用，允许用户分析这些数据，同时分析存储在其他 GreptimeDB 引擎中的时间序列数据。这一功能使 GreptimeDB 成为更加多功能的统一分析平台，能够处理多样化的数据源。

## 引擎选择指南

### 何时使用各种引擎

- **Mito 引擎**：作为默认存储引擎，Mito 适用于大多数通用时间序列工作负载。当你需要平衡写入吞吐量、查询性能和存储效率时，它是一个极佳的选择。对于需要持久存储并具有良好全面性能特性的应用程序，请使用 Mito。

- **Metric 引擎**：当处理涉及数千个具有相似列结构的小表的可观测性和指标监控场景时，选择 Metric 引擎。该引擎在云原生监控环境中表现出色，可以减少存储开销并提高查询性能，特别适合指标数据为主的场景。

- **File 引擎**：当你需要查询已存在于外部文件中的数据而无需将其导入数据库时，选择 File 引擎。这对于数据探索、一次性分析任务或与现有基于文件的数据管道集成时非常理想。

### 在 SQL 中指定引擎类型

在 GreptimeDB 中创建表时，您可以通过 CREATE TABLE 语句中的 `ENGINE` 子句指定要使用的引擎。有关语法和选项的更详细信息，请参阅 [CREATE TABLE](/reference/sql/create.md#create-table) 文档。
