Oracle'daki Görünümler ve Gerçekleştirilmiş Görünümler arasındaki fark nedir?


Yanıtlar:


356

Gerçekleştirilen görünümler disk tabanlıdır ve sorgu tanımına göre periyodik olarak güncellenir.

Görünümler yalnızca sanaldır ve her erişildiğinde sorgu tanımını çalıştırır.


54
Ayrıca, en son saniyeye kadar güncel olması gerekmeyen veriler üzerinde performansa ihtiyaç duyduğunuzda, somutlaştırılmış görünümler daha iyidir, ancak verileriniz standart görünümden daha eski olacaktır. Genellikle BI raporları somutlaştırılmış görüşlerden büyük fayda sağlar.
Marthinus

29
@Marthinus - KOMİTE YENİLEN materyalize edilmiş bir görünüm haricinde doğrudur - MV tam olarak işlenen verileri döndürür.
Jeffrey Kemp

2
DISK tabanlı ne anlama geliyor? Tablo DISK'in bir parçası değil mi? Bir dosyada depolanmış mı ve DISK erişimi Dosya erişimi .... 'den daha hızlı mı?
Kanagavelu Sugumar

1
@KanagaveluSugumar Evet, gerçek tablolar diske de yazılır.
dacracot

5
@dacracot Teşekkürler! DİSK DB tablolar dışında demek demek düşünüyorum; bu MVIEW ayrıca tüm birleştirmeleri çözümleyerek bir tablo sağlar. Böylece çalışma zamanında tek tablo erişimi yeterlidir; ve genellikle normal görünüm tarafından yapılan birleştirme koşulları için birden çok tablo sorgulamaya gerek yoktur. Teşekkür ederim!
Kanagavelu Sugumar

333

Görüntüleme

Görünüm sorgulanırken görünüm tanımının altında yatan tablolardaki verileri değerlendirir . Başka hiçbir yerde veri depolanmayan, tablolarınızın mantıksal bir görünümüdür.

Bir görünümün üst tarafı, her zaman en son verileri size geri vermesidir . Bir bakış olumsuz performansı olmasıdır görünüm dayanmaktadır ne kadar iyi bir select ifadesi bağlıdır. Görünüm tarafından kullanılan select deyimi birçok tabloya katılırsa veya dizine eklenmemiş sütunlara dayalı birleştirmeler kullanırsa, görünüm kötü performans gösterebilir.

Gerçekleştirilmiş görünümler

Normal görünümlere benzerler, çünkü verilerinizin mantıksal bir görünümüdür (bir select deyimine dayanarak), ancak temel alınan sorgu sonuç kümesi bir tabloya kaydedilmiştir . Bunun tersi, somutlaştırılmış bir görünümü sorguladığınızda , dizine eklenebilecek bir tabloyu sorgulamanızdır .

Buna ek olarak, tüm birleşimler materyalize görünüm yenileme zamanında çözüldüğünden, birleştirme fiyatını, materyalize görünümden her seçtiğinizde değil, bir kez (veya materyalize görünümünüzü yenilediğiniz sıklıkta) ödersiniz. Ayrıca, sorgu yeniden yazma etkinken Oracle, materyalize görünümünüzün kaynağından seçilen bir sorguyu, materyalize görünümünüzden okuyacak şekilde optimize edebilir. Toplu tablolar veya sık yürütülen sorguların kopyaları olarak somutlaştırılmış görünümler oluşturduğunuz durumlarda, bu, son kullanıcı uygulamanızın yanıt süresini büyük ölçüde hızlandırabilir. Olumsuz olsa veriler yalnızca yukarı bakış yenilendi gerçekleşmiş son kez olarak tarihe geri hayata bakış aldığım olmasıdır .


Gerçekleştirilmiş görünümler manuel olarak, belirli bir zamanlamaya göre veya temel tablolardan birindeki verilerde bir değişiklik algılayan veritabanına dayalı olarak ayarlanabilir . Gerçekleştirilen görünümler , temeldeki tablolarda veri yakalama kaynakları olarak işlev gören materyalize görünüm günlükleriyle birleştirilerek aşamalı olarak güncellenebilir .

Gerçekleştirilen görünümler çoğunlukla, binlerce milyon satırlık büyük bilgi tablolarını sorgulamanın, kullanılamaz bir uygulama ile sonuçlanan sorgu yanıt süreleriyle sonuçlanacağı veri ambarı / iş zekası uygulamalarında kullanılır.


Maddi görünümler, anlık görüntü izolasyonuna benzer şekilde, zaman içinde tutarlı bir anın garanti edilmesine yardımcı olur .


9
Ayrıntılı açıklama için +1, ancak sorgu yeniden yazmanın dezavantajı nedir? Sorgu yeniden yazma işlemi Oracle'ın sorguyu daha da optimize etmesine izin verirse, HER ZAMAN sorgu yeniden yazma özelliğini etkinleştirmeliyiz, değil mi?
Rosdi Kasim

6
@Rosdi, şunları söyledi: "materyalize görünümden geri aldığınız veriler yalnızca materyalize görünümün son yenilendiği tarih kadar güncel"
Jeffrey Kemp

49

Bir görünüm, temel tablolardan veri çekmek için bir sorgu kullanır.

Malzeme görünümü, diskteki bir sorgunun sonuç kümesini içeren bir tablodur.

Gerçekleştirilmiş görünümler öncelikle, uygulanabilir dizinler veya ona uygulanan dizinlerle standart bir görünüm kullanılması istenmediğinde uygulama performansını artırmak için kullanılır. Gerçekleştirilen görünümler, tetikleyiciler aracılığıyla veya ON COMMIT REFRESHseçenek kullanılarak düzenli olarak güncellenebilir . Bu birkaç ekstra izin gerektirir, ancak karmaşık bir şey değildir. ON COMMIT REFRESHen az Oracle 10'dan beri yürürlükte.


Materyalize Görünümde belirtilebilen bir "
KOMİTE YENİLEME

Teşekkürler! Cevabı güncelleyeceğim. Bu işlevin Oracle'a ne zaman eklendiğini biliyor musunuz?
Jeremiah Peschka

20

Görünümler esasen belirli bir sorgu ile anında doldurulan mantıksal tablo benzeri yapılardır. Görünüm sorgusunun sonuçları disk üzerinde hiçbir yerde saklanmaz ve sorgu her yürütüldüğünde görünüm yeniden oluşturulur. Gerçekleştirilmiş görünümler, veritabanında depolanan ve diske yazılan gerçek yapılardır. Oluşturulduklarında tanımlanan parametrelere göre güncellenir.


DISK tabanlı ne anlama geliyor? Tablo DISK'in bir parçası değil mi? Bir dosyada depolanmış mı ve DISK erişimi Dosya erişimi .... 'den daha hızlı mı?
Kanagavelu Sugumar

18

Materyalleştirilmiş görünüm - bir sorgunun sonuç kümesini içeren bir diskteki tablo

Materyalleştirilmiş olmayan görünüm - temel tablodan veri çeken bir sorgu


7

Görünüm: Görünüm yalnızca adlandırılmış bir sorgudur. Hiçbir şey saklamaz. Görünümde bir sorgu olduğunda, görünüm tanımının sorgusunu çalıştırır. Gerçek veriler tablodan gelir.

Gerçekleştirilmiş görünümler: Verileri fiziksel olarak depolar ve periyodik olarak güncellenir. MV sorgulanırken, MV veri verir.


2

Mike McAllister'ın oldukça ayrıntılı cevabına ekleniyor ...

Gerçekleştirilmiş görünümler, yalnızca görünüm sorgusu basit kabul edildiğinde değişiklikleri algılayarak veritabanı üzerinden otomatik olarak yenilenecek şekilde ayarlanabilir derleyici tarafından . Çok karmaşık olduğu düşünülürse, yalnızca mview tablosundaki değiştirilen satırları güncellemek için kaynak tablolardaki değişiklikleri izlemek için esas olarak dahili tetikleyicilerin ne olacağını ayarlayamaz.

Gerçekleştirilmiş bir görünüm oluşturduğunuzda, Oracle'ın hem mview'i hem de aynı ada sahip bir tablo olarak oluşturduğunu göreceksiniz , bu da işleri kafa karıştırıcı hale getirebilir.


Gerçekleştirilmiş bir görünümü destekleyen tablolar, görünümle aynı adı almaz.
Jeffrey Kemp

@JeffreyKemp, emin misin? Kabul edilen cevap burada stackoverflow.com/a/33552513 aksini iddia ediyor. Evet, ancak yorum yaptığınızda bu 2010 yılında farklı olabilir ...
leqid

Yukarıdaki yorumum daha eski bir sürümde olmalı (muhtemelen 9i). Haklısınız, MV'ler en azından modern versiyonlarda aynı ada sahip bir tablo alır.
Jeffrey Kemp

1

Gerçekleştirilmiş görünümler, seçme sorgusu tarafından yönlendirilen verilerin mantıksal görünümüdür, ancak sorgunun sonucu tabloda veya diskte depolanır, ayrıca sorgunun tanımı da veritabanında depolanır.

Materyalleştirilmiş görünümün performansı normal görünümden daha iyidir çünkü materyalize görünüm verileri tabloda ve tabloda saklanacaktır. görünüm durumunda olduğu gibi ifadeye katılın.

Diğer fark, View durumunda her zaman en son verileri alırız, ancak Materialized view durumunda en son verileri almak için görünümü yenilememiz gerekir. Materyalleştirilmiş görünüm durumunda, MV'nin yenilenmesini sağlayabilmemiz için fazladan bir tetikleyiciye veya otomatik bir yönteme ihtiyacımız vardır, bu veritabanındaki görünümler için gerekli değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.