StarRocks学习4-查询优化与性能调优
✅ 1. 执行计划分析(EXPLAIN
)
🌟 作用:
用于查看 SQL 的执行路径,判断是否命中索引、物化视图、Join 策略、并行度等。
📌 常用命令:
EXPLAIN SELECT ...;
EXPLAIN VERBOSE SELECT ...;
📊 重点关注字段:
Physical Plan
:实际执行路径Scan Node
:是否使用索引、过滤条件是否下推Join Type
:是否为 Broadcast、Shuffle、Nested LoopMaterialized View Rewrite
:是否命中物化视图Runtime Filter
:是否启用动态过滤
✅ 2. 查询缓存(Query Cache)& 物化视图加速
🔹 查询缓存(Query Cache):
- 开启后可缓存相同 SQL 的结果,适合高频、低变更的查询
- 默认关闭,可通过会话参数开启:
SET enable_query_cache = true;
🔹 物化视图(Materialized View):
- 自动预计算聚合、Join、筛选等结果
- 查询时自动重写命中视图,无需改写 SQL
- 适合加速复杂聚合、TopN、维度查询等
✅ 示例:
CREATE MATERIALIZED VIEW mv_user_order AS
SELECT user_id, COUNT(*) AS order_cnt
FROM orders
GROUP BY user_id;
✅ 3. 多表 Join 策略优化
StarRocks 支持多种 Join 策略,优化 Join 可显著提升性能。
🔸 常见 Join 类型:
类型 | 说明 | 场景建议 |
---|---|---|
Broadcast Join | 小表广播到每个节点 | 小表 (<100MB) 推荐使用 |
Shuffle Join | 大表按 Join Key 分发 | 大表 Join 推荐 |
Colocate Join | 表分布一致,可本地 Join | Star Schema 下最优 |
Bucket Shuffle | 分桶 Join,减少数据移动 | 分桶表之间 Join |
🔸 优化建议:
- 小表放前面(广播更快)
- 使用分区表、分桶表提升 Join 本地性
- 尽量使用等值 Join(支持 Runtime Filter)
✅ 4. 并发控制与资源组配置(Resource Group)
🌟 Resource Group 用于限制资源使用,避免单个任务拖慢整个系统。
📌 配置内容包括:
- CPU 核数
- 内存上限
- 并发数
- 优先级等
✅ 示例:
CREATE RESOURCE GROUP rg_olap
WITH (CPU_CORE_LIMIT = 4,MEMORY_LIMIT = '4GB',CONCURRENCY_LIMIT = 10
);
然后绑定用户或 SQL:
ALTER USER user1 SET RESOURCE GROUP = rg_olap;
✅ 5. 慢查询分析与索引优化
🔍 慢查询日志:
- 可通过
SHOW PROC '/slow_query/'
查看慢查询记录 - 包括执行时间、SQL、节点、扫描行数等
📌 优化方法:
- 查看是否走了全表扫描
- 检查是否命中索引(如 Bitmap、Bloom Filter)
- 是否使用了 Runtime Filter
- 是否命中物化视图
🔧 索引优化建议:
- 低基数字段用 Bitmap 索引
- 精确查找字段使用 Bloom Filter(自动启用)
- 频繁聚合字段创建物化视图
- 使用分区、分桶提升并行度与数据裁剪
✅ 总结:
优化项 | 作用 | 常见手段或建议 |
---|---|---|
执行计划分析 | 查看 SQL 执行路径 | EXPLAIN VERBOSE |
查询缓存 & 物化视图 | 减少重复计算、加速聚合查询 | 启用缓存、创建物化视图 |
Join 策略优化 | 降低数据传输、提升 Join 效率 | Broadcast、Shuffle、Colocate |
并发与资源控制 | 避免资源争抢、保障关键查询 | Resource Group |
慢查询分析与索引 | 定位瓶颈、提升过滤与扫描效率 | Bitmap、Bloom、物化视图、分区分桶 |
✅ 补充:
当然可以!下面是 StarRocks 中 同步物化视图(Sync MV) 和 异步物化视图(Async MV) 的对比说明,帮助你理解它们的联系与区别:
✅ 一、共同点(联系)
- 都是 预计算查询结果,提升查询性能
- 都支持自动 查询改写(Query Rewrite)
- 都可用于加速聚合、Join、TopN 等复杂查询
- 都需显式创建,不影响原始表写入
✅ 二、区别对比
项目 | 同步物化视图(Sync MV) | 异步物化视图(Async MV) |
---|---|---|
更新方式 | 同步更新:数据写入基表时立即更新 | 异步更新:后台定期刷新 MV 数据 |
延迟性 | 实时(几乎无延迟) | 有延迟(取决于刷新间隔) |
性能影响 | 写入开销大,影响基表写入性能 | 写入快,刷新时有一定资源消耗 |
支持的数据量 | 适合小表或实时性要求高的场景 | 适合大表、分析型查询 |
支持的操作 | 支持简单聚合、投影、单表 | 支持复杂 Join、聚合、多表 |
创建方式 | CREATE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW ... REFRESH |
刷新控制 | 自动同步,无需配置 | 可配置手动或定时刷新 |
✅ 三、使用建议
需求场景 | 推荐类型 |
---|---|
实时查询、数据量较小 | 同步物化视图 |
大数据分析、复杂查询、容忍延迟 | 异步物化视图 |
需要 Join 多表、复杂表达式 | 异步物化视图 |
✅ 四、示例
🔹 同步 MV 示例(自动实时更新):
CREATE MATERIALIZED VIEW mv_user_order
AS SELECT user_id, COUNT(*) AS order_cnt
FROM orders
GROUP BY user_id;
🔹 异步 MV 示例(定时刷新):
CREATE MATERIALIZED VIEW mv_user_order_async
REFRESH ASYNC
START("2025-08-18 00:00:00")
EVERY(INTERVAL 1 HOUR)
AS
SELECT user_id, COUNT(*) AS order_cnt
FROM orders
GROUP BY user_id;
✅ 总结一句话:
同步 MV 实时更新、写入慢,适合小表实时场景;异步 MV 定期刷新、写入快,适合大表分析型查询。
✅Cascades 框架
当然可以,下面是对 Cascades 框架 的简要介绍:
🌐 Cascades 框架简介:
Cascades 是一种用于数据库查询优化的 优化框架,最早由 IBM 提出,广泛用于现代数据库系统(如 Apache Calcite、Greenplum、Trino 等)中。
🔧 核心思想:
Cascades 使用 规则驱动 + 动态规划 的方式,通过模式匹配和转换规则,在搜索空间中找到最优或较优的查询执行计划。
🧩 主要组成:
-
表达式树(Expression Tree)
表示查询的逻辑结构,比如 join、filter、scan 等。 -
Group / GroupExpression
把等价的表达式归为一组,避免重复计算。 -
规则(Rule)
定义如何将一种表达式转换为另一种(如 Join 交换、下推 Filter)。 -
Cost Model(代价模型)
用于评估计划的代价,选出最优执行路径。 -
Memo(记忆表)
存储所有中间表达式和转换结果,避免重复优化。
📦 应用案例:
- Apache Calcite:通用 SQL 优化框架,广泛用于 Flink、Hive、Doris 等系统。
- Greenplum:基于 Cascades 的 ORCA 优化器。
- StarRocks / Doris:部分组件借鉴 Cascades 设计思想。
✅ 优势:
- 支持多种等价转换,优化空间大
- 可插拔规则,灵活扩展
- 支持多阶段优化(逻辑 -> 物理)
- 高效的搜索策略(剪枝、记忆)
场景
StarRocks 是一款高性能 MPP 分布式分析型数据库,特别适合 实时数仓、湖仓一体、OLAP 等场景。下面是详细介绍:
🚀 StarRocks 的主要应用场景:
1️⃣ 实时数仓(Real-time Data Warehouse)
特点: 高并发、低延迟、秒级入库、实时分析
用途:
- 实时报表(如运营看板、用户行为分析)
- 实时风控、实时监控告警
- 实时营销推荐
优势:
- 支持高吞吐的流式导入(如 Kafka、Flink)
- 查询延迟毫秒级,支持复杂聚合和多维分析
2️⃣ 湖仓一体(Lakehouse Architecture)
特点: 统一存储、计算分离、与数据湖集成
用途:
- 直接分析数据湖中的 Parquet/ORC 文件(通过外表)
- 与 Hive、Hudi、Iceberg 等格式无缝集成
优势:
- 无需数据迁移即可查询数据湖
- 支持物化视图加速分析
- 结合数据湖低成本 + StarRocks 高性能
3️⃣ OLAP 多维分析(Online Analytical Processing)
特点: 快速响应复杂 SQL、多维聚合、钻取分析
用途:
- 销售分析、渠道分析、用户画像
- BI 工具对接(如 Tableau、Superset、Power BI)
优势:
- 高性能向量化执行引擎
- 支持复杂 SQL、Join、窗口函数
- 自带物化视图、列存压缩、并行执行
🔧 其他典型场景:
场景 | 应用 |
---|---|
指标平台 | 快速构建统一指标体系和数据服务 |
日志分析 | 高速写入 + 高效查询,适合安全/运维日志 |
广告投放分析 | 实时归因、转化率分析 |
电商/金融报表 | 多维度聚合、实时刷新 |
数据中台 | 作为轻量级分析引擎,服务多个业务系统 |
✅ 总结:
StarRocks = 实时 + 高性能 + 简化架构
适合构建现代化数据分析平台,特别是在对实时性、并发性、分析深度有要求的场景中表现出色。