Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyegarkan tampilan yang terwujud
Topik ini menjelaskan cara me-refresh data dalam tampilan material dari tabel yang mendasarinya.
Saat Anda membuat tampilan terwujud, isinya mencerminkan keadaan tabel atau tabel database yang mendasarinya pada saat itu. Data dalam tampilan terwujud tetap tidak berubah, bahkan ketika aplikasi mengubah data dalam tabel yang mendasarinya. Untuk memperbarui data dalam tampilan terwujud, Anda dapat menggunakan REFRESH MATERIALIZED VIEW
pernyataan kapan saja untuk menyegarkan tampilan terwujud secara manual. Saat Anda menggunakan pernyataan ini, Amazon Redshift mengidentifikasi perubahan yang terjadi di tabel dasar atau tabel dan menerapkan perubahan tersebut ke tampilan terwujud.
Amazon Redshift memiliki dua strategi untuk menyegarkan tampilan yang terwujud:
-
Dalam banyak kasus, Amazon Redshift dapat melakukan penyegaran tambahan. Dalam penyegaran tambahan, Amazon Redshift dengan cepat mengidentifikasi perubahan pada data di tabel dasar sejak penyegaran terakhir dan memperbarui data dalam tampilan terwujud. Penyegaran tambahan didukung pada SQL konstruksi berikut yang digunakan dalam kueri saat mendefinisikan tampilan terwujud:
-
Konstruksi yang berisi klausaSELECT,, [INNER]FROM,, GROUP BY JOINWHERE, atau. HAVING
-
Konstruksi yang berisi agregasi, seperti,,SUM, MINMAX, AVG dan. COUNT
-
Sebagian besar SQL fungsi bawaan, khususnya yang tidak dapat diubah, mengingat ini memiliki argumen input yang sama dan selalu menghasilkan output yang sama.
Penyegaran tambahan juga didukung untuk tampilan terwujud yang didasarkan pada tabel datashare.
-
-
Jika penyegaran tambahan tidak memungkinkan, Amazon Redshift akan melakukan penyegaran penuh. Penyegaran penuh menjalankan ulang SQL pernyataan yang mendasarinya, menggantikan semua data dalam tampilan terwujud.
-
Amazon Redshift secara otomatis memilih metode penyegaran untuk tampilan terwujud tergantung pada SELECT kueri yang digunakan untuk menentukan tampilan terwujud.
Menyegarkan tampilan terwujud pada tampilan yang terwujud bukanlah proses berjenjang. Dengan kata lain, misalkan Anda memiliki tampilan A yang terwujud yang bergantung pada tampilan terwujud B. Dalam hal ini, ketika REFRESH MATERIALIZED VIEW A dipanggil, A disegarkan menggunakan versi B saat ini, bahkan ketika B adalah. out-of-date Untuk memperbarui A sepenuhnya, sebelum menyegarkan A, segarkan B terlebih dahulu dalam transaksi terpisah.
Contoh berikut menunjukkan bagaimana Anda dapat membuat rencana penyegaran penuh untuk tampilan terwujud secara terprogram. Untuk menyegarkan tampilan terwujud v, pertama-tama segarkan tampilan terwujud u. Untuk menyegarkan tampilan terwujud w, pertama-tama segarkan tampilan terwujud u dan kemudian tampilan terwujud v.
CREATE TABLE t(a INT); CREATE MATERIALIZED VIEW u AS SELECT * FROM t; CREATE MATERIALIZED VIEW v AS SELECT * FROM u; CREATE MATERIALIZED VIEW w AS SELECT * FROM v; WITH RECURSIVE recursive_deps (mv_tgt, lvl, mv_dep) AS ( SELECT trim(name) as mv_tgt, 0 as lvl, trim(ref_name) as mv_dep FROM stv_mv_deps UNION ALL SELECT R.mv_tgt, R.lvl+1 as lvl, trim(S.ref_name) as mv_dep FROM stv_mv_deps S, recursive_deps R WHERE R.mv_dep = S.name ) SELECT mv_tgt, mv_dep from recursive_deps ORDER BY mv_tgt, lvl DESC; mv_tgt | mv_dep --------+-------- v | u w | u w | v (3 rows)
Contoh berikut menunjukkan pesan informatif saat Anda menjalankan tampilan terwujud yang REFRESH MATERIALIZED VIEW bergantung pada tampilan out-of-date terwujud.
create table a(a int);
create materialized view b as select * from a;
create materialized view c as select * from b;
insert into a values (1);
refresh materialized view c; INFO: Materialized view c is already up to date. However, it depends on another materialized view that is not up to date.
REFRESH MATERIALIZED VIEW b; INFO: Materialized view b was incrementally updated successfully.
REFRESH MATERIALIZED VIEW c; INFO: Materialized view c was incrementally updated successfully.
Amazon Redshift saat ini memiliki batasan berikut untuk penyegaran tambahan untuk tampilan terwujud.
Amazon Redshift tidak mendukung penyegaran tambahan untuk tampilan terwujud yang ditentukan dengan kueri menggunakan elemen berikut: SQL
-
OUTERJOIN(RIGHT,LEFT, atauFULL).
-
Operasi yang ditetapkanUNION,INTERSECT,EXCEPT, danMINUS.
-
Fungsi agregatMEDIAN, PERCENTILE _,CONT, _LISTAGG, STDDEV STDDEV _SAMP,, POP APPROXIMATE COUNT APPROXIMATEPERCENTILE, dan fungsi agregat bitwise.
catatan
FungsiCOUNT,SUM, dan AVG agregat didukung.
-
DISTINCTfungsi agregat, seperti DISTINCTCOUNT, DISTINCTSUM, dan sebagainya.
Fungsi Jendela.
Kueri yang menggunakan tabel sementara untuk optimasi kueri, seperti mengoptimalkan subexpressions umum.
Subkueri.
-
Tabel eksternal yang mereferensikan format berikut dalam kueri yang mendefinisikan tampilan terwujud.
-
Danau Delta
-
Hudi
Penyegaran tambahan didukung pada trek pratinjau untuk tampilan terwujud yang ditentukan menggunakan format selain yang tercantum di atas. Untuk informasi selengkapnya tentang menyiapkan kluster Pratinjau, lihat Membuat klaster pratinjau di Panduan Manajemen Pergeseran Merah Amazon. Untuk informasi tentang mengatur grup kerja Pratinjau, lihat Membuat grup kerja pratinjau di Panduan Manajemen Amazon Redshift.
-
Autorefreshing tampilan yang terwujud
Amazon Redshift dapat secara otomatis menyegarkan tampilan terwujud dengan up-to-date data dari tabel dasarnya ketika tampilan terwujud dibuat dengan atau diubah untuk memiliki opsi autorefresh. Amazon Redshift secara otomatis menyegarkan tampilan terwujud sesegera mungkin setelah tabel dasar berubah.
Untuk menyelesaikan penyegaran tampilan terwujud yang paling penting dengan dampak minimal terhadap beban kerja aktif di klaster Anda, Amazon Redshift mempertimbangkan beberapa faktor. Faktor-faktor ini termasuk beban sistem saat ini, sumber daya yang dibutuhkan untuk penyegaran, sumber daya cluster yang tersedia, dan seberapa sering tampilan terwujud digunakan.
Amazon Redshift memprioritaskan beban kerja Anda daripada autorefresh dan mungkin menghentikan autorefresh untuk mempertahankan kinerja beban kerja pengguna. Pendekatan ini mungkin menunda penyegaran beberapa pandangan yang terwujud. Dalam beberapa kasus, Anda mungkin memerlukan perilaku penyegaran yang lebih deterministik untuk tampilan terwujud Anda. Jika demikian, pertimbangkan untuk menggunakan penyegaran manual seperti yang dijelaskan dalam REFRESH MATERIALIZED VIEW atau penyegaran terjadwal menggunakan API operasi penjadwal Amazon Redshift atau konsol.
Anda dapat mengatur autorefresh untuk tampilan terwujud menggunakan. CREATE MATERIALIZED VIEW Anda juga dapat menggunakan AUTO REFRESH klausa untuk menyegarkan tampilan terwujud secara otomatis. Untuk informasi selengkapnya tentang membuat tampilan terwujud, lihatCREATE MATERIALIZED VIEW. Anda dapat mengaktifkan autorefresh untuk tampilan terwujud saat ini dengan menggunakan. ALTER MATERIALIZED VIEW
Pertimbangkan hal berikut saat Anda menyegarkan tampilan terwujud:
Anda masih dapat menyegarkan tampilan terwujud secara eksplisit menggunakan REFRESH MATERIALIZED VIEW perintah meskipun Anda belum mengaktifkan autorefresh untuk tampilan terwujud.
Amazon Redshift tidak mengautorefresh tampilan terwujud yang ditentukan pada tabel eksternal.
Untuk status penyegaran, Anda dapat memeriksa SVL _MV_ REFRESH _STATUS, yang mencatat kueri yang dimulai pengguna atau disegarkan secara otomatis.
Untuk menjalankan REFRESH tampilan terwujud hanya komputasi ulang, pastikan Anda memiliki izin pada skema. CREATE Untuk informasi selengkapnya, lihat GRANT.