首批通过分布式安全可靠测评,为关键业务系统打造
旁路导入概述
更新时间:2026-02-13 18:29:58
OceanBase 数据库支持旁路导入的方式向数据库插入数据,即 OceanBase 数据库支持向 data 文件中直接写入数据的功能。旁路导入可以绕过 SQL 层的接口,直接在 data 文件中直接分配空间并插入数据,从而提高数据导入的效率。
OceanBase 数据库的传统数据导入方式(如 LOAD DATA、OBLOADER、OMS)依赖 INSERT 语句,需经过以下流程:
SQL 解析 -> 事务处理 -> 内存表(MemTable)写入 -> 转储 & 合并 -> SSTable。
瓶颈:
- 消耗大量 CPU 和内存资源。
- 大数据量导入时,性能下降。
OceanBase 数据库通过旁路导入技术,跳过中间步骤,直接将数据写入 SSTable,同时减少资源消耗(CPU、内存),并且支持高效全量或增量数据导入。
注意
不建议在执行旁路导入任务过程中执行升级,可能导致旁路导入任务失败。
技术架构

传统导入路径(蓝色路径):
客户端 -> SQL 解析 -> 事务处理 -> 内存表(MemTable) -> 转储 -> Minor/Major 合并 -> SSTable
缺点:路径长,资源消耗高,写入速度受限。
旁路导入路径(绿色路径):
客户端 -> 类型转换 -> 主键排序(可选) -> 直接写入 Major SSTable(全量)或 Mini SSTable(增量)
优势:
- 跳过 SQL、事务、MemTable 等中间模块,减少资源消耗。
- 数据直接写入底层存储,避免多次合并开销。
旁路导入的核心机制
跳过中间层:绕过 SQL 解析、事务、MemTable,直接写入 SSTable。
类型转换与排序:
- 数据类型转换(如 CSV 到 OceanBase 表结构)。
- 按主键排序(全量导入时必需,保证 Major SSTable 的有序性)。
存储层架构与旁路导入流程
存储层分层结构

OceanBase 数据库的 LSM-Tree 存储层分为三层:
- MemTable:内存中的行存结构,支持高并发写入。
- Mini SSTable:磁盘中的行存结构,由 MemTable 转储生成。
- Major SSTable:列存结构,通过每日合并(Major Compaction)生成,查询性能最优。
功能概述
OceanBase 数据库支持两种方式的旁路导入:全量旁路导入和增量旁路导入。
LOAD DATA 语句、INSERT INTO SELECT 语句以及 CREATE TABLE AS SELECT 语句导入数据时支持旁路导入,可以通过对单个导入任务加 Hint 指定数据的导入方式为旁路导入,也可以通过全局配置项 default_load_mode 来指定数据的导入方式为旁路导入。
全量旁路导入
- 全量旁路导入用于将完整的数据集一次性直接写入到数据库的数据文件中。该方法能够绕过 SQL 层的接口,在数据文件中直接分配空间并插入数据,从而提高数据导入的效率。
- 全量旁路导入通常用于初始化数据库、数据迁移或在需要快速载入大量数据时使用。
增量旁路导入
- 增量旁路导入用于在已有大量数据的情况下,直接将新增的数据写入数据库的数据文件,无需通过 SQL 接口。该方法能够绕过 SQL 层的数据处理过程,直接将新增数据写入数据文件,从而提高数据的写入效率。
- 增量旁路导入通常用于高吞吐量的数据写入场景,例如大规模的实时数据采集、日志写入等场景。
全量导入与增量导入对比
全量导入示意图:

增量导入示意图:

| 维度 | 全量导入 | 增量导入 |
|---|---|---|
| 触发场景 | 初始化数据加载或完全覆盖数据。 | 追加数据或部分更新。 |
| 导入过程 |
|
|
| 写入位置 | Major SSTable(列存) | Mini SSTable(行存) |
| 性能特征 | 需逐行处理并重写 Major SSTable,数据量越大开销越高。数据重写导致速度随规模下降。
|
查询性能差但支持并行导入。查询时需等待每日合并(Major Compaction)将 Mini SSTable 转为列存。
|
| 锁机制 | 表锁(全表不可用) | 分区锁(仅锁定目标分区) |
| 查询性能 | 列存表是列存结构,行存表是行存结构,查询性能优。 | 列存表和行存表都是行存结构,查询性能差。 |
使用场景
旁路导入功能可以在下面的场景中使用:
数据迁移与同步。对于数据迁移和同步,通常需要将大量的各种格式的数据从不同的数据源向 OceanBase 数据库进行迁移,传统的 SQL 接口性能可能在时效性上无法得到满足。
传统 ETL。当数据在源端进行了抽取和转化之后,在装载到目标端时,通常需要在短时间内加载大量的数据,使用旁路导入技术,会提升数据导入的性能。而对于 ETL 技术,在装载数据的过程中,也可以通过旁路导入技术提高效率。
从文本文件或者其他数据源向 OceanBase 数据库加载数据,利用旁路导入技术,也能够提升加载数据效率。