doris:并行度调优

Doris 的查询是一个 MPP 的执行框架,每一条查询都会在多个 BE 上并行执行;同时,在单个 BE 内部也会采用多线程并行的方式来加速查询的执行效率,目前所有的语句(包括 Query,DML,DDL)均支持并行执行。

单个 BE 内并行度的控制参数是:parallel_pipeline_task_num,是指单个 Fragment 在执行时所使用的工作任务数。

并行度调优的原则

parallel_pipeline_task_num 设定目的是为了充分利用多核资源,降低查询的延迟;但是,为了多核并行执行,通常会引入一些数据 Shuffle 算子,以及多线程之间同步的逻辑,这也会带来一些不必要的资源浪费。

Doris 中默认值为 0,即 BE 的 CPU 核数目的一半,这个值考虑了单查询和并发的资源利用的情况,通常不需要用户介入调整。当存在性能瓶颈时可以参考下面示例进行必要的调整。Doris 在持续完善自适应的策略,通常建议在特定场景或 SQL 级别进行必要的调整。

示例

假设 BE 的 CPU 核数为 16:

  1. 对于单表的简单操作(如单表点差、where 扫描获取少量数据,limit 少量数据,命中物化视图) 并行度可设置为 1

说明:单表的简单操作,只有

Doris 数据库中,参数化系统性能的重要手段之一。Doris 提供了丰富的配置参数,涵盖存储、计算、查询、Compaction、缓存等多个方面。合理整这些参数可以显著提升系统的读写性能和稳定性。 ### 参数方法 1. **基于监控数据进行** Doris 提供了多种监控指标,可以通过 Prometheus + Grafana 的监控体系查看 BE 的 Base Compaction Score 和 Cumulative Compaction Score,从而判断数据版本数量和 Compaction 的压力情况[^1]。根据这些指标,可以整 Compaction 的触发阈值和度策略。 2. **按业务需求整 Compaction 策略** 默认情况下,Doris 采用基于数据版本数量的 Compaction 策略,即先处理版本最多的分片。但在“读多写少”的场景中,该策略可能无法及时化热点数据的读性能。此时可以考虑引入基于访问频率的度策略,先对高频访问的数据分片执行 Compaction[^2]。 3. **整 Compaction 并行度** 可以通过 `base_compaction_thread_num` 和 `cumulative_compaction_thread_num` 参数控制 Base Compaction 和 Cumulative Compaction 的并行线程数。增加线程数可以加快 Compaction 速度,但也可能增加 CPU 和 IO 资源消耗,需根据硬件资源进行权衡。 4. **化内存与缓存配置** - `mem_limit` 控制 BE 的最大内存使用量,应根据实际物理内存设置,避免 OOM。 - `query_cache_size` 控制查询缓存大小,对于读密集型场景可适当大以提升命中率。 - `tablet_meta_cache_limit` 控制 Tablet 元数据缓存大小,影响元数据访问性能。 5. **整日志和审计参数** - `log_roll_interval` 控制日志文件滚动间隔,避免日志文件过大影响排查效率。 - `audit_log_roll_interval` 控制审计日志的滚动频率,对于高并发写入场景可适当减小该值。 6. **整 Tablet 扫描并发控制** `max_tablet_version_num` 控制 Tablet 的最大版本数量,超过该值将触发 Compaction。适当小该值有助于控制版本膨胀,但会增加 Compaction 频率。 ### 最佳实践 - **监控驱动**:定期查看 Compaction Score、版本数量、CPU/IO 使用率等指标,结合业务负载变化进行动态整。 - **区分读写场景**:对于写入频繁的表,适当放宽版本控制,而对于读频繁的表则应加强 Compaction 策略。 - **资源隔离与先级控制**:在多租户场景下,可以通过配置不同的资源组来隔离不同业务的资源使用,避免相互影响。 - **避免过度 Compaction**:过度 Compaction 会增加 IO 压力并影响查询性能,建议通过合理设置 `min_compaction_interval` 控制 Compaction 的最小间隔。 - **测试验证机制**:在生产环境整参数前,应在测试环境中模拟真实负载进行验证,确保参数整不会引发稳定性问题。 ### 示例配置整 ```properties # Base Compaction 相关参数 base_compaction_thread_num = 5 base_compaction_min_interval = 3600 # 每小时至少一次 # Cumulative Compaction 相关参数 cumulative_compaction_thread_num = 10 cumulative_compaction_min_interval = 600 # 每10分钟至少一次 # 内存限制 mem_limit = 8589934592 # 8GB # 查询缓存 query_cache_size = 1073741824 # 1GB # Tablet 版本控制 max_tablet_version_num = 100 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值