6.8.3.15 DML 计划调优¶
DML
计划调优包括导入部分( INSERT INTO SELECT
)与查询部分( CREATE TABLE AS SELECT - CTAS
)。本小节将分别介绍这两部分的工作原理与调优实践。
1 导入部分¶
1.1 工作原理¶
Apache Doris
提供了多种灵活的数据导入方案,以满足不同场景下的数据接入需求。 Doris
支持从以下数据源导入数据:
-
对象存储(
S3
)和HDFS
-
本地文件
-
Kafka
-
关系型数据库(如
MySQL
、PostgreSQL
、Oracle
、SQLServer
等) -
通过
JDBC
连接的数据源 -
JSON
格式数据
Doris
提供了以下几种主要的数据导入方式:
-
Broker Load
:通过Broker
进程导入外部存储系统的数据 -
Stream Load
:流式导入本地文件或内存中的数据 -
Routine Load
:持续导入Kafka
中的数据 -
INSERT INTO
:通过SQL
插入语句导入数据 -
S3 Load
:直接从支持S3
协议的对象存储导入数据 -
MySQL Load
:使用MySQL
客户端导入本地数据
不同的导入方式所支持的数据格式略有差异:
-
Broker Load
:支持Parquet
、ORC
、CSV
、GZip
格式 -
Stream Load
:支持CSV
、JSON
、Parquet
、ORC
格式 -
Routine Load
:支持CSV
、JSON
格式 -
MySQL Load
:支持CSV
格式
数据的导入具备以下机制:
-
原子性保证:每个导入作业都作为一个完整的事务,确保数据的原子性写入。
-
导入标识:每个导入作业都分配有唯一的
Label
,用于确保At-Most-Once
语义。 -
同步或异步模式:同步模式会立即返回结果,而异步模式则需要另行查询作业状态。
-
Array
类型支持:可以通过CAST
和数组函数来导入Array
类型的数据。 -
执行引擎:可以根据配置选择是否使用
Pipeline
引擎来执行导入任务。
在实际应用中,需要注意以下事项:
-
合理选择导入方式:针对不同的数据源,选择最合适的导入方法。
-
利用
Label
机制:实现Exactly-Once
语义的保证。 -
适当配置并行度:根据集群资源,调整并行导入的数量。
-
监控导入状态:对于异步导入,及时查看作业的运行情况。
Tip
通过灵活运用 Doris
提供的多种导入功能,可以高效地将各种来源的数据导入到 Doris
中进行分析。如需了解更多细节,请参考数据导入概览
1.2 导入优化¶
Pipeline
引擎是 Doris
中一种新的查询执行引擎,旨在提高查询和数据处理的效率。在数据导入过程中, Pipeline
引擎同样可以被启用,以提升整体性能。默认情况下,数据导入时 Pipeline
引擎是关闭状态,但用户可以通过相关配置来启用它。
在数据导入中启用 Pipeline
引擎,需配置以下变量:
-
FE
配置项:enable_pipeline_load
-
位置:位于
FE
(Frontend
)的配置文件中 -
作用:启用后,
Stream Load
等导入任务将尝试使用Pipeline
引擎执行
-
-
Session
变量:enable_nereids_dml_with_pipeline
-
位置:在会话级别进行设置
-
作用:启用后,
INSERT INTO
语句将尝试使用Pipeline
引擎执行
-
-
Session
变量:enable_pipeline_engine
-
位置:在会话级别进行设置
-
作用:控制是否实际启用
Pipeline
引擎
-
2 查询部分¶
详细请参考计划调优的其他章节