Skip to main content

doris-debug-materialized-view

Use for Doris sync MV (rollup) miss or async MTMV refresh/rewrite issues. Commands: SHOW ALTER TABLE MATERIALIZED VIEW, mv_infos(), EXPLAIN, REFRESH MATERIALIZED VIEW.

来源信息

仓库
apache/doris-skills
最近来源活动
2026年7月24日 08:50
检测到的 SKILL.md 语言
英语
星标
46
分支
15

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
doris-debug-materialized-view
description
Use for Doris sync MV (rollup) miss or async MTMV refresh/rewrite issues. Commands: SHOW ALTER TABLE MATERIALIZED VIEW, mv_infos(), EXPLAIN, REFRESH MATERIALIZED VIEW.
version
0.2.0
category
materialized-view
# Materialized View ## Kind comparison | Kind | Code area | Check | Rewrite mechanism | |------|-----------|-------|-------------------| | Sync | `MaterializedViewHandler` / rollup | `SHOW ALTER TABLE MATERIALIZED VIEW` | Transparent — planner auto-selects | | Async MTMV | `fe/.../mtmv/` | `mv_infos()` RefreshState | CBO-based — EXPLAIN shows if matched | ## Causes | ID | Cause | Evidence | Kind | |----|-------|----------|------| | A | Sync MV build pending/stuck | `SHOW ALTER TABLE MATERIALIZED VIEW` State≠FINISHED | Sync | | B | MTMV refresh failed | `mv_infos()` RefreshState=FAIL | Async | | C | MTMV rewrite miss | EXPLAIN shows no MATERIALIZED_REWRITE | Async | | D | MTMV data stale | `mv_infos()` LastRefreshTime old | Async | | E | MV not selected by planner | EXPLAIN shows TABLE SCAN not MATERIALIZED | Either | ## 10 min triage ```sql -- Sync MV status SHOW ALTER TABLE MATERIALIZED VIEW FROM db; -- Async MTMV status SELECT * FROM mv_infos('database'='db') WHERE Name='mv'\G -- Check rewrite eligibility EXPLAIN VERBOSE SELECT ...; -- Force refresh REFRESH MATERIALIZED VIEW mv; -- Enable external MV rewrite (for catalog queries) SET materialized_view_rewrite_enable_contain_external_table = true; ``` ## Cause C — MTMV rewrite miss Common reasons (see `fe/.../mtmv/MTMVService.java` rewrite matcher): 1. **Partition misalignment**: MV has `partition_sync=false` and query partition doesn't match → `ALTER MATERIALIZED VIEW mv SET ("partition_sync" = "true")` 2. **Aggregation granularity**: MV groups by `(a, b)` but query groups by `(a)` only → MV is not a valid rewrite target 3. **Filter mismatch**: MV WHERE clause doesn't cover query WHERE clause → check MV definition 4. **Session var off**: `SET enable_materialized_view_rewrite = true` ```sql -- Debug: force the optimizer to log MV matching SET enable_materialized_view_rewrite_debug_log = true; EXPLAIN VERBOSE SELECT ...; -- check fe/log/fe.audit.log for MV match details ``` ## Cause A — Sync MV stuck ```sql -- Cancel stuck build CANCEL ALTER TABLE MATERIALIZED VIEW FROM db ON table; -- Check BE compaction queue (MV build competes with compaction) ./scripts/doris-debug be-metrics --be http://$BE:8040 --grep compaction ``` ## Source - `fe/.../mtmv/MTMVService.java` — MTMV lifecycle - `fe/.../alter/MaterializedViewHandler.java` — sync MV alter - `fe/.../materializedview/MaterializedViewRewriter.java` — rewrite logic - `SessionVariable.java` — `enable_materialized_view_rewrite`, `materialized_view_rewrite_enable_contain_external_table`
在 GitHub 查看