Topik ini menjelaskan fitur pembaruan terjadwal dari tampilan material dan operasi terkait.
Catatan penggunaan
Pembaruan terjadwal tampilan material pada dasarnya adalah tugas yang dikirimkan oleh sistem latar belakang. Waktu penyelesaian pembaruan bervariasi berdasarkan jumlah sumber daya kluster yang tersedia dan ukuran tugas.
Ketika pembaruan terjadwal dipicu, semua data diperbarui.
Jika data di partisi tabel dasar yang dipartisi sesuai dengan kolom kunci partisi dalam tampilan material yang dipartisi berubah, hanya data di partisi terkait dari tampilan material yang diperbarui. Data di partisi lain tidak terpengaruh. Jika data di tabel lain yang terkait dengan tampilan material yang dipartisi berubah, seluruh data di tampilan material diperbarui.
Jika Anda mengaktifkan fitur pembaruan terjadwal untuk tampilan material yang tidak dipartisi, sistem secara otomatis memeriksa apakah operasi pembaruan diperlukan. Jika data di tabel sumber tidak diperbarui, operasi pembaruan dilewati.
Jika pembaruan terjadwal belum selesai sebelum waktu pembaruan berikutnya, sistem secara otomatis membatalkan pembaruan terjadwal berikutnya dan memicu pembaruan baru pada waktu terjadwal terbaru.
Sebagai contoh, pembaruan terjadwal dipicu setiap interval 20 menit. Jika pembaruan pertama dijadwalkan pada
10:00:00, pembaruan kedua direncanakan dijadwalkan pada10:20:00, dan pembaruan ketiga direncanakan dijadwalkan pada10:40:00.Jika pembaruan pertama dimulai pada
10:00:00dan berakhir pada10:30:00, pembaruan yang direncanakan dijadwalkan pada10:20:00dibatalkan, dan pembaruan berikutnya dijadwalkan pada10:40:00.MaxCompute tidak dapat mendeteksi pengaturan pembaruan terjadwal tampilan material secara real-time dan mungkin mengirimkan tugas pembaruan otomatis untuk tampilan material dengan penundaan kurang dari 30 menit.
Aktifkan fitur pembaruan terjadwal untuk tampilan material
Anda dapat mengaktifkan fitur pembaruan terjadwal untuk tampilan material di MaxCompute menggunakan salah satu metode berikut.
Dalam contoh-contoh di topik ini, tampilan material dibuat berdasarkan tabel mf_refresh.
CREATE TABLE mf_refresh (id bigint, name string);
INSERT INTO TABLE mf_refresh VALUES (1,'kyle'),(2,'tom');Gunakan parameter EVERY
Saat membuat tampilan material, tentukan interval di mana tampilan material diperbarui. Interval bisa N menit, jam, atau hari. Waktu pembaruan berikutnya adalah waktu pembaruan sebelumnya ditambah N menit, jam, atau hari.
Sintaksis
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [project_name.]mv_name [LIFECYCLE days] -- Siklus hidup tampilan material. [(col_name [COMMENT col_comment], ...)] -- Komentar kolom. [DISABLE REWRITE] -- Menentukan apakah akan menonaktifkan operasi penulisan ulang kueri yang dilakukan berdasarkan tampilan material. [PARTITIONED BY (col_name [, col_name, ...]) -- Kolom kunci partisi dalam tampilan material. Parameter ini diperlukan saat Anda membuat tampilan material yang dipartisi. [CLUSTERED BY|RANGE CLUSTERED BY (col_name [, col_name, ...]) [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])] INTO number_of_buckets BUCKETS] -- Atribut shuffle dan sortir tampilan material. Parameter ini diperlukan saat Anda membuat tampilan material yang dikelompokkan. [REFRESH EVERY xx MINUTES/HOURS/DAYS] -- Interval pembaruan terjadwal tampilan material. TBLPROPERTIES("enable_auto_refresh"="true") -- Aktifkan fitur pembaruan terjadwal untuk tampilan material. AS <select_statement>;Contoh
Buat tampilan material yang diperbarui setiap interval 10 menit.
Buat tampilan material bernama mf_mv_refresh dan kueri tampilan material tersebut.
CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh REFRESH EVERY 10 minutes TBLPROPERTIES("enable_auto_refresh"="true") AS SELECT id,name FROM mf_refresh; SELECT * FROM mf_mv_refresh;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | +------------+------------+Masukkan data ke dalam tabel.
INSERT INTO TABLE mf_refresh VALUES (3,'jen'),(4,'cathy');Kueri tampilan material setelah 10 menit.
SELECT * FROM mf_mv_refresh;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 3 | jen | | 4 | cathy | +------------+------------+
Gunakan parameter refresh_interval_minutes dari TBLPROPERTIES
Saat membuat tampilan material, tentukan interval pembaruan terjadwal. Sebagai contoh, atur interval pembaruan terjadwal menjadi N menit. Waktu pembaruan berikutnya adalah waktu pembaruan sebelumnya ditambah N menit.
Sintaksis
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [project_name.]mv_name [LIFECYCLE days] -- Siklus hidup tampilan material. [(col_name [COMMENT col_comment], ...)] -- Komentar kolom. [DISABLE REWRITE] -- Menentukan apakah akan menonaktifkan operasi penulisan ulang kueri yang dilakukan berdasarkan tampilan material. [PARTITIONED BY (col_name [, col_name, ...]) -- Kolom kunci partisi dalam tampilan material. Parameter ini diperlukan saat Anda membuat tampilan material yang dipartisi. [CLUSTERED BY|RANGE CLUSTERED BY (col_name [, col_name, ...]) [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])] INTO number_of_buckets BUCKETS] -- Atribut shuffle dan sortir tampilan material. Parameter ini diperlukan saat Anda membuat tampilan material yang dikelompokkan. TBLPROPERTIES("enable_auto_refresh"="true", "refresh_interval_minutes"="xx") -- Aktifkan fitur pembaruan terjadwal. AS <select_statement>;Contoh
Buat tampilan material yang diperbarui setiap interval 20 menit.
Buat tampilan material bernama mf_mv_refresh2 dan kueri tampilan material tersebut.
CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh2 TBLPROPERTIES("enable_auto_refresh"="true", "refresh_interval_minutes"="20") AS SELECT id,name FROM mf_refresh; SELECT * FROM mf_mv_refresh2;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 3 | jen | | 4 | cathy | +------------+------------+Masukkan data ke dalam tabel.
INSERT INTO TABLE mf_refresh VALUES (5,'roger'),(6,'david');Kueri tampilan material setelah 20 menit.
SELECT * FROM mf_mv_refresh2;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 3 | jen | | 4 | cathy | | 5 | roger | | 6 | david | +------------+------------+
Gunakan parameter refresh_cron dari TBLPROPERTIES
Anda dapat menggunakan ekspresi Cron untuk menentukan interval atau waktu pembaruan terjadwal.
Sintaksis
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [project_name.]mv_name [LIFECYCLE days] -- Siklus hidup tampilan material. [(col_name [COMMENT col_comment], ...)] -- Komentar kolom. [DISABLE REWRITE] -- Menentukan apakah akan menonaktifkan operasi penulisan ulang kueri yang dilakukan berdasarkan tampilan material. [PARTITIONED BY (col_name [, col_name, ...]) -- Kolom kunci partisi dalam tampilan material. Parameter ini diperlukan saat Anda membuat tampilan material yang dipartisi. [CLUSTERED BY|RANGE CLUSTERED BY (col_name [, col_name, ...]) [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])] INTO number_of_buckets BUCKETS] -- Atribut shuffle dan sortir tampilan material. Parameter ini diperlukan saat Anda membuat tampilan material yang dikelompokkan. TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="xx") -- Aktifkan fitur pembaruan terjadwal. AS <select_statement>;Parameter
refresh_cronadalah string dalam format Cron Quartz. Untuk informasi lebih lanjut, lihat Contoh ekspresi Cron.Contoh
Buat tampilan material yang diperbarui setiap interval 5 menit.
Buat tampilan material bernama mf_mv_refresh3 dan kueri tampilan material tersebut.
CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh3 TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="* */5 * * * ? *") AS SELECT id,name FROM mf_refresh; SELECT * FROM mf_mv_refresh3;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 3 | jen | | 4 | cathy | | 5 | roger | | 6 | david | +------------+------------+Masukkan data ke dalam tabel.
INSERT INTO TABLE mf_refresh VALUES (7,'ethan'),(8,'cal');Kueri tampilan material setelah 5 menit.
SELECT * FROM mf_mv_refresh3;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 7 | ethan | | 8 | cal | | 3 | jen | | 4 | cathy | | 5 | roger | | 6 | david | +------------+------------+
Buat tampilan material yang diperbarui pada pukul 20:00 setiap malam.
Buat tampilan material bernama mf_mv_refresh4 dan kueri tampilan material tersebut.
CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh4 TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="0 0 20 * * ? *") AS SELECT id,name FROM mf_refresh; SELECT * FROM mf_mv_refresh4;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 7 | ethan | | 8 | cal | | 3 | jen | | 4 | cathy | | 5 | roger | | 6 | david | +------------+------------+Masukkan data ke dalam tabel.
INSERT INTO TABLE mf_refresh VALUES (9,'annie'),(10,'zoe');Kueri tampilan material setelah
20:00.SELECT * FROM mf_mv_refresh4;Hasil berikut dikembalikan.
+------------+------------+ | id | name | +------------+------------+ | 1 | kyle | | 2 | tom | | 9 | annie | | 10 | zoe | | 7 | ethan | | 8 | cal | | 3 | jen | | 4 | cathy | | 5 | roger | | 6 | david | +------------+------------+
Ubah interval pembaruan terjadwal tampilan material
Eksekusi salah satu pernyataan berikut untuk mengubah interval pembaruan terjadwal tampilan material:
ALTER MATERIALIZED VIEW mf_mv_refresh2 SET TBLPROPERTIES("enable_auto_refresh"="true", "refresh_interval_minutes"="xx");
ALTER MATERIALIZED VIEW mf_mv_refresh3 SET TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="xx");Nonaktifkan pembaruan terjadwal
Eksekusi pernyataan berikut untuk menonaktifkan fitur pembaruan terjadwal untuk tampilan material:
ALTER MATERIALIZED VIEW mf_mv_refresh SET TBLPROPERTIES("enable_auto_refresh"="false");Lihat riwayat pembaruan tampilan material
Eksekusi pernyataan berikut untuk melihat riwayat pembaruan tampilan material:
DESC EXTENDED mv;Hasil berikut dikembalikan. Untuk informasi lebih lanjut tentang tampilan material, lihat Kueri informasi tentang tampilan material.
+------------------------------------------------------------------------------------+
| Pemilik: ALIYUN$$****@***.aliyunid.com |
| Proyek: m**** |
| KomentarTabel: |
+------------------------------------------------------------------------------------+
| CreateTime: 2023-05-30 13:16:07 |
| LastDDLTime: 2023-05-30 13:16:07 |
| LastModifiedTime: 2023-05-30 13:16:07 |
+------------------------------------------------------------------------------------+
| MaterializedView: YES |
| ViewText: select id,name from mf_refresh |
| Rewrite Enabled: true |
| AutoRefresh Enabled: true |
| Refresh Interval Minutes: 10 |
+------------------------------------------------------------------------------------+
| Native Columns: |
+------------------------------------------------------------------------------------+
| Field | Type | Label | ExtendedLabel | Nullable | DefaultValue | Comment |
+------------------------------------------------------------------------------------+
| id | bigint | | | true | NULL | |
| name | string | | | true | NULL | |
+------------------------------------------------------------------------------------+
| Extended Info: |
+------------------------------------------------------------------------------------+
| IsOutdated: false |
| TableID: 569ec712873e44b3868e79b7a8beabab |
| IsArchived: false |
| PhysicalSize: 1875 |
| FileNum: 2 |
| StoredAs: CFile |
| CompressionStrategy: normal |
| odps.timemachine.retention.days: 1 |
| ColdStorageStatus: N/A |
| encryption_enable: false |
+------------------------------------------------------------------------------------+
| AutoRefresh History: |
+------------------------------------------------------------------------------------+
| InstanceId | Status | StartTime | EndTime |
+------------------------------------------------------------------------------------+
| 20230619070546735ghwl1****** | TERMINATED | 2023-06-19 15:05:46 | 2023-06-19 15:05:47 |
| 20230619065545586gwllc****** | TERMINATED | 2023-06-19 14:55:45 | 2023-06-19 14:55:46 |
| 20230619064544463gcjgom****** | TERMINATED | 2023-06-19 14:45:44 | 2023-06-19 14:45:45 |
| 20230619063543334gzxs2d****** | TERMINATED | 2023-06-19 14:35:43 | 2023-06-19 14:35:44 |
| 2023061906254257gi21w2****** | TERMINATED | 2023-06-19 14:25:42 | 2023-06-19 14:25:43 |
| 20230619061540813giacg8****** | TERMINATED | 2023-06-19 14:15:41 | 2023-06-19 14:15:41 |
| 20230619060539674gswjq9****** | TERMINATED | 2023-06-19 14:05:39 | 2023-06-19 14:05:40 |
| 20230619055538578gvdjk****** | TERMINATED | 2023-06-19 13:55:38 | 2023-06-19 13:55:40 |
| 20230619054537356glqdne****** | TERMINATED | 2023-06-19 13:45:37 | 2023-06-19 13:45:38 |
| 2023061905353687gcc5pl****** | TERMINATED | 2023-06-19 13:35:36 | 2023-06-19 13:35:37 |
+------------------------------------------------------------------------------------+Referensi
Untuk informasi lebih lanjut tentang operasi pada tampilan material, lihat Operasi tampilan material.
Untuk informasi lebih lanjut tentang cara menulis ulang kueri umum menjadi kueri dari tampilan material, lihat Kueri dan penulisan ulang untuk tampilan material.