Menyegarkan tampilan yang terwujud - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyegarkan tampilan yang terwujud

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 konstruksi SQL berikut yang digunakan dalam kueri saat mendefinisikan tampilan terwujud:

    • Konstruksi yang berisi klausa SELECT, FROM, [INNER] JOIN, WHERE, GROUP BY, atau HAVING.

    • Konstruksi yang berisi agregasi, seperti SUM, MIN, MAX, AVG, dan COUNT.

    • Sebagian besar fungsi SQL 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 pernyataan SQL yang mendasarinya, menggantikan semua data dalam tampilan terwujud.

  • Amazon Redshift secara otomatis memilih metode penyegaran untuk tampilan terwujud tergantung pada kueri SELECT yang digunakan untuk menentukan tampilan terwujud.

Menyegarkan tampilan terwujud pada tampilan yang terwujud bukanlah proses berjenjang. Dengan kata lain, misalkan Anda memiliki tampilan terwujud A 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. 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 REFRESH MATERIALIZED VIEW pada tampilan terwujud yang 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 SQL berikut:

  • OUTER JOIN (KANAN, KIRI, atau PENUH).

  • Operasi set UNION, INTERSECT, EXCEPT, dan MINUS.

  • Fungsi agregat MEDIAN, PERCENTILE_CONT, LISTAGG, STDDEV_SAMP, STDDEV_POP, PERKIRAAN HITUNGAN, PERKIRAAN PERSENTIL, dan fungsi agregat bitwise.

    catatan

    Fungsi agregat COUNT, SUM, dan AVG didukung.

  • Fungsi agregat yang berbeda, seperti DISTINCT COUNT, DISTINCT SUM, 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 MENYEGARKAN TAMPILAN TERWUJUD atau penyegaran terjadwal menggunakan operasi API penjadwal Amazon Redshift atau konsol.

Anda dapat mengatur autorefresh untuk tampilan terwujud menggunakan CREATE MATERIALIZED VIEW. Anda juga dapat menggunakan klausa AUTO REFRESH untuk menyegarkan tampilan terwujud secara otomatis. Untuk informasi selengkapnya tentang membuat tampilan terwujud, lihatBUAT TAMPILAN TERWUJUD. Anda dapat mengaktifkan autorefresh untuk tampilan terwujud saat ini dengan menggunakan. MENGUBAH TAMPILAN TERWUJUD

Pertimbangkan hal berikut saat Anda menyegarkan tampilan terwujud:

  • Anda masih dapat menyegarkan tampilan terwujud secara eksplisit menggunakan perintah REFRESH MATERIALIZED VIEW 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 pada tampilan terwujud hanya komputasi ulang, pastikan Anda memiliki izin CREATE pada skema. Untuk informasi selengkapnya, lihat HIBAH.