[Oracle 工程师手记] 记一次 MVIEW 刷新慢的分析
刷新慢的原因分析:
客户观察到 MVIEW 的刷新很慢,从AWR 报告中的 ,可以看到 "enq: JI - contention"。
Top 10 Foreground Events by Total Wait Time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Total Wait Avg % DB Wait Event Waits Time (sec) Wait time Class ------------------------------ ----------- ---------- --------- ------ -------- enq: JI - contention 93 3594.5 38.65 s 49.9 Other DB CPU 2062.4 28.6
向客户要了 MVIEW 定义:
CREATE MATERIALIZED VIEW U1R.ST_RV ON PREBUILT TABLE USING INDEX REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/1440 AS SELECT * FROM U1R.ST_RV@MYLINK;
JI enque 是多个session 执行同一个 MVIEW 时,为了保证不并行进行而使用的一种机制。enq: JI - contention 待机,表明执行同一个 MVIEW 刷新的 JOB/session 太多了。这个 MVIEW 每1分钟刷新一次。有可能一次刷新尚未结束,下一次刷新又要来了,多个准备刷新的session 一起,在竞争 JI enque。
建议客户用 "alter materialized view <MVIEW> refresh fast start with",来减少MVIEW刷新的频度。调整后,问题得到了解决。