为了更快的定位您的问题,请提供以下信息,谢谢
【详述】一个sql的执行计划,判断有缓存关闭、列过滤未启用、并行度低的问题
【背景】
【业务影响】
【是否存算分离】
【StarRocks版本】例如:3.3
【集群规模】例如:3fe(1 follower+2observer)+5be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:24C/64G/万兆/台
【联系方式】社区群14-Hᴏᴡ꯭ᴇ꯭ᴠ꯭ᴇ꯭R꯭
【附件】
我想问一下,我们一个sql的执行计划,判断有缓存关闭、列过滤未启用、并行度低的问题,如果配置以下参数,会不会对服务器产生其他影响
– 1. 开启扫描缓存:复用BASIC_GOODS等重复表的扫描结果(执行计划中BASIC_GOODS被8次扫描)
SET enable_scan_datacache = true;
– 2. 开启列过滤:扫描时仅读取SQL所需字段(避免执行计划中"读取全表字段"的无效传输)
SET enable_filter_unused_columns_in_scan_stage = true;
– 3. 调整并行度:BE=3节点,设置为12(执行计划中pipeline_dop=8偏低,CPU利用率不足)
SET pipeline_dop = 12;
– 4. 优化内存配置:避免资源浪费(执行计划中query_mem_limit=50GB过大)
SET query_mem_limit = 21474836480; – 20GB
– 5. 提升Spill阈值:减少磁盘IO(执行计划中spill_operator_min_bytes=10MB易触发Spill)
SET spill_operator_min_bytes = 52428800; – 50MB
– 6. 优化Join广播策略:中大型表(如SHEET_SO_MALL)禁用广播(执行计划中广播导致网络过载)
SET join_broadcast_threshold = 104857600; – 100MB(超过则用HASH_PARTITIONED Shuffle)