بروز شدن همزمان Materialized Viewهای on-commit refresh از طریق sessionهای مختلف می تواند سبب رخ دادن eventای به نام enq: JI – contention شود چرا که این نوع از MVها به طور پیش فرض به صورت سریالی بروز می شوند و امکان بروزرسانی Concurrent را ندارند.
در قسمت زیر، از طریق دو session به طور همزمان دیتایی را در جدول مرجع MV درج کرده ایم که این مسئله سبب شد تعداد زیادی از eventهای enq: JI – contention را شاهد باشیم:
SQL> create materialized view auther_contry_mv refresh fast on commit as select country,count(*) from author_tbl group by country; Materialized view created.
Session 1: SQL> begin for i in 10000 ..19999 loop insert into author_tbl values(i,'Rahmat Rabbani','m','Oracle DBA','IRAN'); commit; end loop; end; / PL/SQL procedure successfully completed. Elapsed: 00:03:00.18
Session 2: begin for i in 1 ..9999 loop insert into author_tbl values(i,'Rahmat Rabbani','m','Oracle DBA','IRAN'); commit; end loop; end; / PL/SQL procedure successfully completed. Elapsed: 00:03:00.25
در نسخه 23c اوراکل از طریق قابلیت Materialized View Concurrent Refresh این محدودیت از بین برده است و با استفاده از این قابلیت می توان به صورت Concurrent این نوع از MVها را بروزرسانی کرد.
برای استفاده از این قابلیت، باید عبارت enable concurrent refresh را به دستور ساخت MV اضافه کرد در ادامه MVای را با استفاده از این عبارت ایجاد می کنیم و بلاک PL/SQLای فوق را مجددا اجرا می کنیم خواهیم دید که زمان اجرا از 3 ثانیه به 2 ثانیه کاهش یافته است و خبری از enq: JI – contention نیست:
SQL> create materialized view auther_contry_mv refresh fast on commit enable concurrent refresh as select country,count(*) from author_tbl group by country; Materialized view created.
--session 1: SQL> begin for i in 1 ..9999 loop insert into author_tbl values(i,'Rahmat Rabbani','m','Oracle DBA','IRAN'); commit; end loop; end; / PL/SQL procedure successfully completed. Elapsed: 00:02:23.02
Session 2: SQL> begin for i in 10000 ..19999 loop insert into author_tbl values(i,'Rahmat Rabbani','m','Oracle DBA','IRAN'); commit; end loop; end; / PL/SQL procedure successfully completed. Elapsed: 00:02:22.48