首批通过分布式安全可靠测评,为关键业务系统打造
旁路导入概述
更新时间:2025-07-03 10:21:27
OceanBase 数据库支持旁路导入的方式向数据库插入数据,即 OceanBase 数据库支持向 data 文件中直接写入数据的功能。旁路导入可以绕过 SQL 层的接口,直接在 data 文件中直接分配空间并插入数据,从而提高数据导入的效率。
注意
不建议在执行旁路导入任务过程中执行升级,可能导致旁路导入任务失败。
功能概述
全量旁路导入
用于将完整的数据集一次性直接写入到数据库的数据文件中。能够绕过 SQL 层的接口,在数据文件中直接分配空间并插入数据,提高数据导入的效率。通常用于初始化数据库、数据迁移、或者在需要快速载入大量数据时使用。
增量旁路导入
用于在已有大量数据的情况下,直接将新增的数据写入数据库的数据文件,无需通过 SQL 接口。能够绕过 SQL 层的数据处理过程,直接将新增数据写入数据文件,提高数据的写入效率。通常用于高吞吐量的数据写入场景,例如大规模的实时数据采集、日志写入等场景。
使用场景
旁路导入功能可以在下面的场景中使用:
数据迁移与同步。对于数据迁移和同步,通常需要将大量的各种格式的数据从不同的数据源向 OceanBase 数据库进行迁移,传统的 SQL 接口性能可能在时效性上无法得到满足。
传统 ETL。当数据在源端进行了抽取和转化之后,在装载到目标端时,通常需要在短时间内加载大量的数据,使用旁路导入技术,会提升数据导入的性能。而对于 ETL 技术,在装载数据的过程中,也可以通过旁路导入技术提高效率。
从文本文件或者其他数据源向 OceanBase 数据库加载数据,利用旁路导入技术,也能够提升加载数据效率。
旁路导入适用于大表首次导入、10 GB~TB 级别的数据迁移以及 CPU 和内存都不是特别充裕的场景,因为旁路导入的执行路径短,可以省 CPU 开销。
功能列表
目前 OceanBase 数据库支持以下语句进行旁路导入:
注意事项
- 旁路导入期间会加表锁,表无法被写入其他数据,整个过程中表是只读的。
- 虽然旁路导入支持增量导入,但是性能上可能不会特别理想。因为旁路导入的目标表如果在导入前已存在数据,那么已有数据将被重写。如果导入一个已有数据量很大的表,增量将重写所有原始数据。
- 当导入的数据量小于 Memtable 时,旁路导入没有优势。因为旁路导入写磁盘,比不过只写内存不需要转储或合并的场景。
- OceanBase 从 V4.3.0 开始支持 lob 数据类型的旁路导入。
- 使用 INSERT INTO SELECT 语句旁路导入数据时,只支持 PDML(Parallel Data Manipulation Language,并行数据操纵语言),非 PDML 不能用旁路导入。