首批通过分布式安全可靠测评,为关键业务系统打造
物化视图自动刷新慢问题排查
更新时间:2026-07-07 12:56
问题现象
物化视图自动刷新任务执行缓慢。
关键信息
1. 查看正在运行的物化视图刷新任务
通过查询 CDB_MVIEW_RUNNING_JOBS 系统视图,可以获取当前正在运行的物化视图刷新任务及其启动时间,以判断任务已执行的时长。
SELECT *
FROM oceanbase.CDB_MVIEW_RUNNING_JOBS;
2. 获取慢会话的详细信息与执行计划
根据上一步查询到的 session_id,进一步获取该会话正在执行的语句及其执行计划。
查看会话状态与执行的 SQL
SELECT * FROM __all_virtual_session_info WHERE id = <session_id> \G获取该会话当前活跃的执行计划
SELECT sql_id, DBMS_XPLAN.DISPLAY_ACTIVE_SESSION_PLAN(A.session_id, 'all', A.svr_ip, A.svr_port) FROM ( SELECT id AS session_id, svr_ip, svr_port, sql_id FROM oceanbase.__all_virtual_session_info WHERE id = <session_id> ) A;
3. 版本注意事项
在 OceanBase 4.3.5 BP4 及之前的版本中,通过上述方法查询执行计划时,REAL.ROWS 和 REAL.TIME 字段可能显示为 0,即使语句正在实际执行。这属于已知的显示问题,不影响对执行计划本身的分析。
问题原因
物化视图刷新语句使用了错误的执行计划,例如在大表关联场景下使用了低效的 Nested Loop Join。
问题的风险及影响
NA
适用版本
OceanBase 数据库 V4.x 版本。
解决方法
可通过 Hint 干预物化视图刷新语句的执行计划,使其在大表关联场景下优先选择 HASH JOIN,以提升执行效率。
在物化视图定义或刷新语句中,可使用 Hint 指定执行计划。例如:
/*+ USE_HASH(t_reconciliation_pay_order_view_asia_1) PARALLEL(AUTO) */
规避方式
NA