Materialized View Nedir | Materialized View Kullanımı

Oracle Materialized View Nedir ?

Merhaba, Bu yazımda Materialized View Nedir buna değineceğiz. Yazı sonunda Oracle Materialized View konusunda epey bir fikir edinmiş olacağımızı umuyorum 🙂

mv = Materialized View

MV oluştururken kullanılan syntax aşağıdaki gibidir:

-- Normal
CREATE MATERIALIZED VIEW view-name
BUILD [IMMEDIATE | DEFERRED]
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;

-- Pre-Built
CREATE MATERIALIZED VIEW view-name
ON PREBUILT TABLE
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;

 

Oracle Materialized View Nedir | bizim için ne ifade etmeli ?

MV bir nevi bir tablonun veya bir view’in kopyasıdır. Veri tutan tablolar gibidirler. Oracle Materialized View Nedir sorusunun cevabı aslında bize sunduğu avantajlardır. MV’leri kullanmak bize 2 konuda avantaj sağlar;

  • Tablo verilerinin kopyalanması ile kopya veriler oluşturulur. Örnek olarak uzak sunuculara gidip bir tabloyu sorgulamak yerine, tablonun kopyasını kendi veritabanımıza mv’ler ile bir nevi kopyalayabiliriz. Oluşan bu kopya (materialized view), kopyası olduğu tablo veya view içerisinde update-insert-delete gibi değişiklikleri algılar ve kendisini belli zaman aralıklarında veya belirli database işlemlerinden sonra günceller. Bu sayede o uzak sunucudaki tablonun verisinin bir kopyası bizde her zaman güncel olarak mv olarak tutulabilir. Dolayısı ile artık uzak sunucudan ara ara beslenen MV’imizi kendi sunucumuzda güncel olarak kullanabiliriz. Aynı zamanda ana sunucudaki işlem yükü azaltılmış olur.
  • Tabiki muhteşem bir performans sağlar. Örneğin birkaç tablonun verisini kullanan bir view düşünün o birkaç tablodan veriyi getirmek için epey çaba harcayacaktır. Ancak bu view i sorguladığımız ifadeyi MV olarak oluşturursak. MV içerisine kopyalanan verileri kullanacaktır. Yani gidip de verileri kendi tablolarından getirmeyecektir.

 

Oracle Materialized View Nedir | hangi seçenekler ile oluşturulabilir ?

BUILD IMMEDIATE : MV oluşturulur oluşturulmaz içeriği doldurulur.

BUILD DEFERRED : MV oluşturulduğunda değil, ilk kez yenilenmek istediğinde içi doldurulur.

 

Oracle Materialized View Nedir | nasıl Yenilenir ?

REFRESH FAST : Oluşturulduğu tablo veya view içeriğinde en ufak bir satır veri bile değişse o satırdaki değişiklik algılanır ve sadece mv’deki o satırlar refresh edilir. Eğer mv logları kaynak tablo için oluşturulmamışsa, mv oluşturulmaz. Buna ilerde tekrar bakacağız.

REFRESH COMPLETE :  Oluşturulduğu tablo veya view içeriğinde bir değişiklik olursa tüm mv yeniden doldurulur.

REFRESH FORCE : FAST refresh mümkün ise fast refresh yapar. Eğer mümkün değil ise Complete refresh yapar.

 

Oracle Materialized View Nedir | yenilenme işlemi ne zaman yapılacak ?

ON COMMIT:  MV’in bağlı bulunduğu view veya tabloda herhangi bir değişiklik commit edilir edilmez mv içeriği güncellenir.

ON DEMAND:

Manuel olarak DBMS_MVIEW.refresh(‘my_MV_name’) komutu kullanarak veya

START WITH SYSDATE NEXT SYSDATE + 1  aralığı ile yenilenir. Buradaki “1” gün’ü ifade eder. Yani burada günde bir defa refresh edilmesi istenilmiş. Eğer 1/(30*24) yapsaydık, dakikada 1 refresh edilmesini belirtmiş olurduk.

Bu şekilde oluşturduğumuz MV’ler bizim için oracle veritabanında bir job oluşturur. bunu “select * from user_jobs” sorgusunu kullanarak bunları görebiliriz. Eğer user_jobs içersindeki kolonlarda Blocked Y ise o zaman bu görev engellenmiştir manası taşır. Bu görev içerisindeki engeli kaldırırsak, Yani  Y ifadesini N olarak değiştirirsek tekrar çalışacaktır.

Create Materialized View | Materialized View Nedir | Örnek :


create materialized view Hdk_F_D_MV
build immediate
refresh force
on demand
start with sysdate next sysdate + 1/(24*60)
as
select * from hdk;
  • Buradaki  “hdk” birçok tablodan ve çeşitli fonksiyonlar ile getirilen kolonlardan oluşan, normal sorgusu (select * from hdk) 2-3 dakika süren bir View’dir. Çünkü birçok tablodan ve birçok fonksiyon kullanarak doldurduğu sütun verileri vardır.
  • Build immediate diyerek MV’mizi hemen oluşturduk.
  • Bunu oluştururken REFRESH FORCE ile yenileme biçimini belirttik.
  • ON DEMAND ile hemen yenileme dedik bi dur altında START WITH ile zaman aralığını 1 dakika olarak tanımladık.
  • AS deyiminden sonra da sorgumuzu yazdık.

Sorgu çok kompleks olmamak şartı ile kompleks olabilir. Peki MV’mizi nasıl kullanacağız?


SELECT * from hdk_f_d_mv

 

İşte bu kadar. Artık 3 dakikamızı alan “select * from hdk”  raporumuzu  “select * from hdk_f_d_mv” ile 3 saniyede almayı başardık 🙂  “ Materialized View nedir ? ” sorumuzun cevabını ilerleyen dönemde FAST REFRESH konusu ile tekrar inceleyip geliştireceğiz.

Materialized View Nedir başlıklı yazımın,şimdilik, sonuna geldik.

Ayrıntılı bilgi için;    Oracle Docs

Diğer Oracle yazılarım için;  Oracle Arşivi

Daha Faydalı yazılarda görüşmek dileğiyle 🙂

Materialized View Nedir ? Materialized View Kullanımı
Materialized View Nedir ? Materialized View Kullanımı