Apa perbedaan antara Tampilan dan Tampilan Terwujud di Oracle?

Jawaban:

355

Tampilan terwujud adalah berbasis disk dan diperbarui secara berkala berdasarkan definisi permintaan.

Tampilan hanya virtual dan menjalankan definisi permintaan setiap kali diakses.

dacracot
sumber
54
Juga ketika Anda membutuhkan kinerja pada data yang tidak perlu terkini hingga detik, tampilan terwujud lebih baik, tetapi data Anda akan lebih tua daripada dalam tampilan standar. Biasanya laporan BI mendapatkan banyak manfaat dari pandangan terwujud.
Marthinus
29
@Martinus - itu benar kecuali dalam kasus tampilan terwujud yang REFRESH PADA KOMIT - MV akan mengembalikan tepat data yang telah dilakukan.
Jeffrey Kemp
2
Apa arti dari DISK? Apakah ini berarti tabel bukan bagian dari DISK? Apakah ini disimpan dalam file dan akses DISK lebih cepat daripada akses File ....?
Kanagavelu Sugumar
1
@ KanagaveluSugumar Ya, tabel sebenarnya juga ditulis ke disk.
dacracot
5
@ Docracot Terima kasih! saya pikir Anda bermaksud mengatakan selain tabel DB di DISK; MVIEW ini juga memelihara tabel dengan menyelesaikan semua gabungan. Sehingga dalam runtime akses tabel tunggal sudah cukup; dan tidak perlu kueri beberapa tabel untuk kondisi bergabung yang biasanya dilakukan oleh tampilan normal. Terima kasih!
Kanagavelu Sugumar
332

Tampilan

Mereka mengevaluasi data dalam tabel yang mendasari definisi tampilan pada saat tampilan dipertanyakan . Ini adalah tampilan logis dari tabel Anda, tanpa data yang disimpan di tempat lain.

Kelebihan tampilan adalah bahwa ia akan selalu mengembalikan data terbaru kepada Anda . The downside dari pandangan adalah bahwa kinerjanya tergantung pada seberapa baik pernyataan pilih pandangan didasarkan pada. Jika pernyataan pilih yang digunakan oleh tampilan bergabung dengan banyak tabel, atau menggunakan gabungan berdasarkan kolom yang tidak diindeks, tampilan bisa berkinerja buruk.

Pandangan terwujud

Mereka mirip dengan tampilan biasa, karena itu adalah tampilan logis dari data Anda (berdasarkan pernyataan pilih), namun, set hasil kueri yang mendasarinya telah disimpan ke tabel . Sisi positifnya adalah ketika Anda meminta tampilan terwujud, Anda meminta tabel , yang mungkin juga diindeks.

Selain itu, karena semua gabungan telah diselesaikan pada waktu refresh tampilan terwujud, Anda membayar harga bergabung sekali (atau sesering Anda menyegarkan tampilan terwujud Anda), daripada setiap kali Anda memilih dari tampilan terwujud. Selain itu, dengan penulisan ulang kueri diaktifkan, Oracle dapat mengoptimalkan kueri yang memilih dari sumber tampilan terwujud Anda sedemikian rupa sehingga bukan membaca dari tampilan terwujud Anda. Dalam situasi di mana Anda membuat tampilan terwujud sebagai bentuk tabel agregat, atau sebagai salinan kueri yang sering dieksekusi, ini dapat sangat mempercepat waktu respons aplikasi pengguna akhir Anda. The downside adalah bahwa meskipun data Anda kembali dari tampilan terwujud hanya sebagai up to date sebagai terakhir kali muncul tampilan telah refresh .


Tampilan terwujud dapat diatur untuk menyegarkan secara manual, pada jadwal yang ditetapkan, atau berdasarkan database yang mendeteksi perubahan data dari salah satu tabel yang mendasarinya . Tampilan terwujud dapat diperbarui secara bertahap dengan menggabungkannya dengan log tampilan terwujud, yang bertindak sebagai sumber perubahan data pada tabel di bawahnya.

Tampilan terwujud paling sering digunakan dalam data pergudangan / aplikasi intelijen bisnis di mana kueri tabel fakta besar dengan ribuan juta baris akan menghasilkan waktu respons kueri yang menghasilkan aplikasi yang tidak dapat digunakan.


Pandangan terwujud juga membantu menjamin momen yang konsisten dalam waktu, mirip dengan isolasi snapshot .

Mike Williamson
sumber
9
+1 untuk penjelasan terperinci, tetapi apa kelemahan dari penulisan ulang kueri? Jika permintaan menulis ulang akan memungkinkan Oracle untuk mengoptimalkan permintaan lebih jauh maka kita harus SELALU mengaktifkan penulisan ulang permintaan, bukan?
Rosdi Kasim
6
@Rosdi, dia mengatakannya: "data yang Anda dapatkan dari tampilan terwujud hanya sebagai yang terbaru karena terakhir kali tampilan terwujud telah di-refresh"
Jeffrey Kemp
49

Tampilan menggunakan kueri untuk menarik data dari tabel yang mendasarinya.

Tampilan terwujud adalah tabel pada disk yang berisi kumpulan hasil kueri.

Pandangan terwujud terutama digunakan untuk meningkatkan kinerja aplikasi ketika tidak layak atau tidak diinginkan untuk menggunakan tampilan standar dengan indeks yang diterapkan padanya. Tampilan terwujud dapat diperbarui secara berkala baik melalui pemicu atau dengan menggunakan ON COMMIT REFRESHopsi. Ini memang memerlukan beberapa izin tambahan, tetapi tidak rumit. ON COMMIT REFRESHtelah ada sejak setidaknya Oracle 10.

Jeremiah Peschka
sumber
Ada opsi "REFRESH ON COMMIT" yang dapat ditentukan pada Tampilan
Terwujud
Terima kasih! Saya akan memperbarui jawabannya. Apakah Anda tahu kapan fungsi ini ditambahkan ke Oracle?
Jeremiah Peschka
20

Tampilan pada dasarnya adalah struktur seperti tabel yang dihuni dengan cepat oleh kueri yang diberikan. Hasil kueri tampilan tidak disimpan di mana pun di disk dan tampilan dibuat kembali setiap kali kueri dieksekusi. Pandangan terwujud adalah struktur aktual yang disimpan dalam database dan ditulis ke disk. Mereka diperbarui berdasarkan parameter yang ditentukan ketika mereka dibuat.

pengguna12786
sumber
Apa arti dari DISK? Apakah ini berarti tabel bukan bagian dari DISK? Apakah ini disimpan dalam file dan akses DISK lebih cepat daripada akses File ....?
Kanagavelu Sugumar
18

Tampilan terwujud - tabel pada disk yang berisi kumpulan hasil kueri

Tampilan tidak berbentuk - kueri yang menarik data dari tabel yang mendasarinya

fn27
sumber
7

Tampilan: Tampilan hanyalah kueri bernama. Itu tidak menyimpan apa pun. Ketika ada permintaan pada tampilan, itu menjalankan permintaan definisi tampilan. Data aktual berasal dari tabel.

Pandangan terwujud : Menyimpan data secara fisik dan diperbarui secara berkala. Saat meminta MV, ia memberikan data dari MV.

smshafiqulislam
sumber
2

Menambah jawaban Mike McAllister yang cukup menyeluruh ...

Tampilan terwujud hanya dapat diatur untuk menyegarkan secara otomatis melalui database yang mendeteksi perubahan ketika kueri tampilan dianggap sederhana oleh kompiler. Jika itu dianggap terlalu kompleks, itu tidak akan dapat mengatur apa yang pada dasarnya pemicu internal untuk melacak perubahan dalam tabel sumber untuk hanya memperbarui baris yang diubah dalam tabel tinjau.

Saat Anda membuat tampilan yang terwujud, Anda akan menemukan bahwa Oracle menciptakan mview dan sebagai tabel dengan nama yang sama , yang dapat membuat hal-hal membingungkan.

Stew S
sumber
Tabel yang mendukung tampilan terwujud tidak menggunakan nama yang sama dengan tampilan.
Jeffrey Kemp
@ JeffreyKemp, apakah Anda yakin? Jawaban yang diterima di sini stackoverflow.com/a/33552513 mengklaim sebaliknya. Meskipun ya, ini mungkin berbeda pada 2010 ketika Anda berkomentar ...
leqid
Komentar saya di atas pastilah pada versi yang lebih lama (mungkin 9i). Anda benar, MV mendapatkan meja dengan nama yang sama setidaknya dalam versi modern.
Jeffrey Kemp
1

Tampilan terwujud adalah pandangan logis dari data yang didorong oleh kueri pemilihan, tetapi hasil kueri akan disimpan dalam tabel atau disk, juga definisi kueri juga akan disimpan dalam database.

Kinerja tampilan terwujud lebih baik daripada tampilan normal karena data tampilan terwujud akan disimpan dalam tabel dan tabel dapat diindeks sehingga lebih cepat untuk bergabung juga bergabung dilakukan pada saat terwujud tampilan waktu refresh sehingga tidak perlu setiap kali api gabungkan pernyataan seperti dalam hal tampilan.

Perbedaan lainnya termasuk dalam hal Tampilan kami selalu mendapatkan data terbaru tetapi dalam kasus tampilan Terwujud kami perlu menyegarkan tampilan untuk mendapatkan data terbaru. Dalam kasus tampilan Terwujud kami membutuhkan pemicu tambahan atau metode otomatis agar kami dapat membuat MV segar, ini tidak diperlukan untuk tampilan dalam database.

Dhirendra Gautam
sumber