跳转至

6.8.3.15 DML 计划调优

DML 计划调优包括导入部分( INSERT INTO SELECT )与查询部分( CREATE TABLE AS SELECT - CTAS )。本小节将分别介绍这两部分的工作原理与调优实践。

1 导入部分

1.1 工作原理

Apache Doris 提供了多种灵活的数据导入方案,以满足不同场景下的数据接入需求。 Doris 支持从以下数据源导入数据:

  1. 对象存储( S3 )和 HDFS

  2. 本地文件

  3. Kafka

  4. 关系型数据库(如 MySQLPostgreSQLOracleSQLServer 等)

  5. 通过 JDBC 连接的数据源

  6. JSON 格式数据

Doris 提供了以下几种主要的数据导入方式:

  1. Broker Load :通过 Broker 进程导入外部存储系统的数据

  2. Stream Load :流式导入本地文件或内存中的数据

  3. Routine Load :持续导入 Kafka 中的数据

  4. INSERT INTO :通过 SQL 插入语句导入数据

  5. S3 Load :直接从支持 S3 协议的对象存储导入数据

  6. MySQL Load :使用 MySQL 客户端导入本地数据

不同的导入方式所支持的数据格式略有差异:

  1. Broker Load :支持 ParquetORCCSVGZip 格式

  2. Stream Load :支持 CSVJSONParquetORC 格式

  3. Routine Load :支持 CSVJSON 格式

  4. MySQL Load :支持 CSV 格式

数据的导入具备以下机制:

  1. 原子性保证:每个导入作业都作为一个完整的事务,确保数据的原子性写入。

  2. 导入标识:每个导入作业都分配有唯一的 Label ,用于确保 At-Most-Once 语义。

  3. 同步或异步模式:同步模式会立即返回结果,而异步模式则需要另行查询作业状态。

  4. Array 类型支持:可以通过 CAST 和数组函数来导入 Array 类型的数据。

  5. 执行引擎:可以根据配置选择是否使用 Pipeline 引擎来执行导入任务。

在实际应用中,需要注意以下事项:

  1. 合理选择导入方式:针对不同的数据源,选择最合适的导入方法。

  2. 利用 Label 机制:实现 Exactly-Once 语义的保证。

  3. 适当配置并行度:根据集群资源,调整并行导入的数量。

  4. 监控导入状态:对于异步导入,及时查看作业的运行情况。

Tip

通过灵活运用 Doris 提供的多种导入功能,可以高效地将各种来源的数据导入到 Doris 中进行分析。如需了解更多细节,请参考数据导入概览

1.2 导入优化

Pipeline 引擎是 Doris 中一种新的查询执行引擎,旨在提高查询和数据处理的效率。在数据导入过程中, Pipeline 引擎同样可以被启用,以提升整体性能。默认情况下,数据导入时 Pipeline 引擎是关闭状态,但用户可以通过相关配置来启用它。

在数据导入中启用 Pipeline 引擎,需配置以下变量:

  1. FE 配置项: enable_pipeline_load

    • 位置:位于 FEFrontend )的配置文件中

    • 作用:启用后, Stream Load 等导入任务将尝试使用 Pipeline 引擎执行

  2. Session 变量: enable_nereids_dml_with_pipeline

    • 位置:在会话级别进行设置

    • 作用:启用后, INSERT INTO 语句将尝试使用 Pipeline 引擎执行

  3. Session 变量: enable_pipeline_engine

    • 位置:在会话级别进行设置

    • 作用:控制是否实际启用 Pipeline 引擎

2 查询部分

详细请参考计划调优的其他章节