全部产品
Search
文档中心

Hologres:TAMPILAN MATERIALIZED

更新时间:Jul 02, 2025

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.

Catatan

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;