View a markdown version of this page

Penulisan ulang kueri otomatis untuk menggunakan tampilan yang terwujud - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Penulisan ulang kueri otomatis untuk menggunakan tampilan yang terwujud

Anda dapat menggunakan penulisan ulang kueri otomatis dari tampilan yang terwujud di Amazon Redshift agar kueri Amazon Redshift menulis ulang untuk menggunakan tampilan yang terwujud. Melakukan hal ini mempercepat beban kerja kueri bahkan untuk kueri yang tidak secara eksplisit mereferensikan tampilan yang terwujud. Saat Amazon Redshift menulis ulang kueri, itu hanya menggunakan tampilan terwujud yang diperbarui.

Catatan penggunaan

Untuk memeriksa apakah penulisan ulang kueri otomatis digunakan untuk kueri, Anda dapat memeriksa rencana kueri atau STL_EXPLAIN. Berikut ini menunjukkan pernyataan SELECT dan output EXPLAIN dari rencana kueri asli.

SELECT catgroup, SUM(qtysold) AS sold FROM category c, event e, sales s WHERE c.catid = e.catid AND e.eventid = s.eventid GROUP BY 1; EXPLAIN XN HashAggregate (cost=920021.24..920021.24 rows=1 width=35) -> XN Hash Join DS_BCAST_INNER (cost=440004.53..920021.22 rows=4 width=35) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales s (cost=0.00..7.40 rows=740 width=6) -> XN Hash (cost=440004.52..440004.52 rows=1 width=37) -> XN Hash Join DS_BCAST_INNER (cost=0.01..440004.52 rows=1 width=37) Hash Cond: ("outer".catid = "inner".catid) -> XN Seq Scan on event e (cost=0.00..2.00 rows=200 width=6) -> XN Hash (cost=0.01..0.01 rows=1 width=35) -> XN Seq Scan on category c (cost=0.00..0.01 rows=1 width=35)

Berikut ini menunjukkan output EXPLAIN setelah penulisan ulang otomatis yang berhasil. Output ini mencakup pemindaian pada tampilan terwujud dalam rencana kueri yang menggantikan bagian dari rencana kueri asli.

* EXPLAIN XN HashAggregate (cost=11.85..12.35 rows=200 width=41) -> XN Seq Scan on mv_tbl__tickets_mv__0 derived_table1 (cost=0.00..7.90 rows=790 width=41)

Hanya tampilan terwujud terbaru (segar) yang dipertimbangkan untuk penulisan ulang kueri secara otomatis, terlepas dari strategi penyegaran, seperti otomatis, terjadwal, atau manual. Oleh karena itu, kueri asli mengembalikan hasil terbaru. Ketika tampilan terwujud secara eksplisit direferensikan dalam kueri, Amazon Redshift mengakses data yang saat ini disimpan dalam tampilan terwujud. Data ini mungkin tidak mencerminkan perubahan terbaru dari tabel dasar tampilan yang terwujud.

Anda dapat menggunakan penulisan ulang kueri otomatis dari tampilan terwujud yang dibuat pada cluster versi 1.0.20949 atau yang lebih baru.

Anda dapat menghentikan penulisan ulang kueri otomatis di tingkat sesi dengan menggunakan SET mv_enable_aqmv_for_session ke FALSE.

Cara kerja penulisan ulang kueri otomatis dari tampilan yang terwujud

Berdasarkan pengoptimalan internal, Amazon Redshift dapat memutuskan untuk memanggil penulisan ulang kueri otomatis dari tampilan yang terwujud secara transparan untuk memberikan eksekusi kueri yang paling optimal dengan waktu kueri serendah mungkin.

Sebagai contoh, misalkan Pengguna A membuat tampilan terwujud M1 pada tabel T1 dengan kueri. SELECT * FROM T1 Pengguna A memiliki hak SELECT penuh pada T1. Pengguna A memberikan akses ke M1 kepada semua pengguna, termasuk Pengguna B. Namun, ketika Pengguna B mencoba menanyakan T1 secara langsung, mereka ditolak aksesnya. Ini karena Pengguna B tidak memiliki hak istimewa SELECT pada T1.

Beberapa saat kemudian, Pengguna B kembali mencoba menanyakan T1, tetapi kali ini mendapatkan hasil kembali dari T1. Ini karena penulisan ulang kueri otomatis menggunakan tampilan terwujud menulis ulang kueri Pengguna B pada tabel T1 (SELECT <cols> FROM T1) ke kueri pada tampilan terwujud M1 (). SELECT <cols> FROM M1

Batasan

Berikut ini adalah batasan untuk menggunakan penulisan ulang kueri otomatis dari tampilan yang terwujud:

  • Penulisan ulang kueri otomatis berfungsi dengan tampilan terwujud yang tidak mereferensikan atau menyertakan salah satu dari berikut ini:

    • Subkueri

    • Gabungan luar kiri, kanan, atau penuh

    • Tetapkan operasi

    • Fungsi agregat apa pun, kecuali SUM, COUNT, MIN, MAX, dan AVG. (Ini adalah satu-satunya fungsi agregat yang bekerja dengan penulisan ulang kueri otomatis.)

    • Setiap fungsi agregat dengan DISTINCT

    • Fungsi jendela apa pun

    • PILIH klausa DISTINCT atau MEMILIKI

    • Tabel eksternal atau bersama

    • Pandangan terwujud lainnya

  • Penulisan ulang kueri otomatis menulis ulang kueri SELECT yang merujuk ke tabel Amazon Redshift yang ditentukan pengguna. Amazon Redshift tidak menulis ulang kueri berikut:

    • BUAT TABEL AS pernyataan

    • PERNYATAAN SELECT INTO

    • Kueri pada katalog atau tabel sistem

    • Kueri dengan gabungan luar atau klausa SELECT DISTINCT

  • Jika kueri tidak ditulis ulang secara otomatis, periksa apakah Anda memiliki izin SELECT pada tampilan materialisasi yang ditentukan dan mv_enable_aqmv_untuk_sesi opsi disetel ke TRUE.

    Anda juga dapat memeriksa apakah tampilan terwujud memenuhi syarat untuk penulisan ulang kueri secara otomatis dengan memeriksa STV_MV_INFO. Untuk informasi selengkapnya, lihat STV_MV_INFO.