---
title: DataX 抽取 OceanBase 数据慢优化-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于DataX 抽取 OceanBase 数据慢优化相关的常见问题和使用技巧，帮助您快速解决DataX 抽取 OceanBase 数据慢优化的难题。
---
切换语言

- 简体中文
- English

划线反馈

# DataX 抽取 OceanBase 数据慢优化

更新时间：2026-05-26 06:26

适用版本： V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x、V4.3.x 内容类型：Troubleshoot  

## 适用版本

DataX 所有版本。

OceanBase 数据库所有版本。

## 问题现象

每天抽取 OceanBase 的全量数据库，总共约 5T 大小，预计 4 小时内完成，实际在执行过程中，需要 6.5 小时，不符合预期。

```shell
2025-03-26 22:00:46.221 [job-0] INFO StandAloneJobContainerCommunicator - Total 38024818005 records, 3177683945664 bytes | Speed 129.25MB/s, 1621804 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 2,837,192.250s | All Task WaitReaderTime 264,487.781s | Percentage 100.00%
2025-03-26 22:00:46.226 [job-0] INFO JobContainer -
任务启动时刻 : 2025-03-26 15:29:58
任务结束时刻 : 2025-03-26 22:00:46
任务总计耗时 : 23447s
任务平均流量 : 129.25MB/s
记录写入速度 : 1621804rec/s
读出记录总数 : 38024818005
读写失败总数 : 0

```

## 问题原因

DataX reader 读取数据时，会按照主键或者唯一键来切分任务，默认情况下 batch size 是 10w，也就是说把一个读取任务按照 10w 条数据一个子任务来切分，防止数据量太大时单条 SQL 读取时间太长，以及出错之后得从头开始。然而对于分区表来说，每次都去读可能需要扫描全部分区，效率较低。

## 解决方法

在 reader 中实现按照分区读取数据的特性，以提高分区表的读取效率。

具体操作如下：

在配置文件中，将 splitPk 设置为空，加入 `readByPartition` 和 `queryMode` 两个参数即可。

![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/data-migration/datax/datax-extracts-oceanbase-data-for-slow-optimization/1.png)

经过上述配置之后，抽取时间由原来的 6.5 小时，优化到 2.5 小时。

```shell
2025-03-27 18:29:26.144 [job-0] INFO JobContainer - PerfTrace not enable!
2025-03-27 18:29:26.144 [job-0] INFO StandAloneJobContainerCommunicator - Total 38031275645 records, 3178230850705 bytes | Speed 338.89MB/s, 4252155 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 305,628.500s | All Task WaitReaderTime 51,006.844s | Percentage 100.00%
2025-03-27 18:29:26.148 [job-0] INFO JobContainer -
任务启动时刻 : 2025-03-27 16:00:21
任务结束时刻 : 2025-03-27 18:29:26
任务总计耗时 : 8944s
任务平均流量 : 338.89MB/s
记录写入速度 : 4252155rec/s
读出记录总数 : 38031275645
读写失败总数 : 0

```

Previous

[DataX 性能不符合预期，在 speed 中指定 record 会限制并发](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000297651)

Next

[mysqldump 还原导入错误，错误代码 1300](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000084) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
