Tampilan materialized adalah objek database yang menyimpan hasil pra-kalkulasi dari query yang memakan waktu, seperti JOIN atau AGGREGATE. Hasil ini dapat digunakan kembali langsung saat menjalankan query serupa, sehingga mempercepat proses. Topik ini menjelaskan sintaksis dan batasan pernyataan TAMPILAN MATERIALIZED serta cara mengelola tampilan materialized menggunakan pernyataan tersebut.
Batasan
Hanya Hologres V1.3 ke atas yang mendukung tampilan materialized. Jika versi instance Anda lebih lama dari V1.3, tingkatkan instance Hologres Anda secara manual di konsol Hologres atau bergabunglah dengan grup DingTalk untuk mengajukan peningkatan instance. Untuk informasi lebih lanjut tentang cara menaikkan versi instance Hologres secara manual, lihat Peningkatan instance. Untuk informasi lebih lanjut tentang cara bergabung dengan grup DingTalk Hologres, lihat Dapatkan dukungan online untuk Hologres.
Untuk detail lebih lanjut tentang batasan dan operasi, lihat Tampilan materialized real-time.
Buat tampilan materialized
Sintaksis
Gunakan pernyataan berikut untuk membuat tampilan materialized:
CREATE MATERIALIZED VIEW <mv_name> AS <QUERY BODY>;Parameter mv_name menentukan nama tampilan materialized kustom, sedangkan parameter QUERY BODY menentukan pernyataan query. Untuk informasi lebih lanjut tentang pernyataan query, lihat SELECT.
Contoh
Membuat tampilan materialized untuk tabel non-partisi.
BEGIN; CREATE TABLE base_sales( day text not null, hour int , ts timestamptz, amount float, pk text not null primary key ); CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'appendonly'); -- Jika tampilan materialized dihapus, Anda dapat menjalankan pernyataan berikut untuk membatalkan properti appendonly untuk tabel: --CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'none'); CREATE MATERIALIZED VIEW mv_sales AS SELECT day, hour, avg(amount) AS amount_avg FROM base_sales GROUP BY day, hour; COMMIT; insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),100,'pk1'); insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),200,'pk2'); insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),300,'pk3');Membuat tampilan materialized untuk tabel partisi.
BEGIN; CREATE TABLE base_sales_p( day text not null, hour int, ts timestamptz, amount float, pk text not null, primary key (day, pk) ) partition by list(day); CALL SET_TABLE_PROPERTY('base_sales_p', 'mutate_type', 'appendonly'); -- day adalah kolom kunci partisi. Kolom ini harus disertakan dalam kondisi klausa GROUP BY tampilan materialized. CREATE MATERIALIZED VIEW mv_sales_p AS SELECT day, hour, avg(amount) AS amount_avg FROM base_sales_p GROUP BY day, hour; COMMIT; create table base_sales_20220101 partition of base_sales_p for values in('20220101');
Kueri tampilan materialized
Gunakan pernyataan SQL berikut untuk melihat tampilan materialized yang telah dibuat:
SELECT * FROM mv_sales WHERE day = to_char(now(),'YYYYMMDD') AND hour = 12;Hapus tampilan materialized
Sintaksis
Gunakan pernyataan SQL berikut untuk menghapus tampilan materialized:
DROP MATERIALIZED VIEW <mv_name>;Parameter mv_name menentukan nama tampilan materialized.
Contoh
DROP MATERIALIZED VIEW mv_sales;