Escolar Documentos
Profissional Documentos
Cultura Documentos
Refresh materialized view adalah proses untuk melakukan pembaharuan terhadap materialized view. Fungsi
untuk refresh materialized view pada PostgreSQL versi 11.1 yang terdapat pada file matview.c yang dengan
lokasi file yaitu postgresql-11.1/src/backend/commands/matview.c. Proses melakukan eksekusi perintah
REFRESH MATERIALIZED VIEW menggunakan fungsi ExecRefreshMatView() dengan flow proses
sebagai berikut.
Refresh
Set Materialized Checking
Start materialized view
View as Populated Materialized View
data fill
yes Cocurrently no
Refresh
Refresh
Materialized View Materialized View
by Match Merge by Heap Swap
Materialized View
Incremental
Maintenance
Finish
Berikut adalah proses menandai materialized view yang ada pada relasi apakah populated atau
tidak. Sebelum dilakukan pengeksekusian refresh dipastikan materialized view tersebut dapat
dilakukan generate atau tidak, dengan mendapatkan nama relasi dari materialized view
tersebut.
2. Refresh Materialized View Data Fill
Proses ini memastikan bahwa perencanaan terhadap query yang telah mengubah isi basis data
saat dilakukan refresh akan dikirim ke dalam argumen DestReceiver sebagai target tabel
materialized view. DestReceiver adalah tempat persinggahan sementara atau transient data fill.
3. Checking Materialized View
Pada proses ini menjelaskan tentang pengecekan yang terjadi pada materialized view saat dilakukan
eksekusi refresh. Pengecekan yang dilakukan adalah memastikan bahwa query refreshing untuk target
materialized view tersebut merupakan sebuah materialized view, kemudian memastikan refresh yang
dilakukan concurrent adalah materialized view yang populated untuk dapat dilakukan refresh
materialized view. Jika materialized view concurrent maka dilakukan refresh materialized view by
match merge, jika tidak maka dilakukan refresh materialized view by heap swap.
Pada proses ini, fungsi refresh_by_match_merge adalah refresh materialized view dengan
menggunakan statement concurrently karena memiliki Exclusivelock untuk materialized view yang
terlebih dahulu dilakukan refresh. Kemudian menemukan unique index di beberapa tabel
materialized view dengan menggunakan full outer join untuk melakukan refresh materialized
view. Jika index ditemukan kemudian di beberapa tabel tidak ada data duplicate dan null maka
akan di-insert ke tabel temporary kemudian dilakukan refresh materialized view..
5. Refresh Maerialized View by Heap Swap
Pada proses ini, fungsi refresh_by_heap_swap adalah refreh materialized view dengan
menukar target tabel dengan tabel sementara dengan index yang terdapat pada target table,
kemudian tabel sementara dihapus.
Declare setpopulatedstate(tuple)
bcakfbwef
1 START:
2 DECLARE QUERY_PLAN AS QUERY
3 GET All_Table_List
4
5 DO CHECKING_TABLE
6 IF (!All_Table_List IS EFFECTED) THEN
7 SET All_Table_List AS NOT EFFECTED
8 ELSE
9 SET All_Table_List AS EFFECTED
10
11 GET All_Table_List From CHECKING_TABLE
12 IF (All_Table_List IS EFFECTED) THEN
13 REFRESH_MATERIALIZED_VIEW
14 ELSE
15 DROP All_Table_List
16
17 RETURN RESULT
List Refresh
All Table Effected Materilized Materialized
Base Table Checking Table Effected Filter Table Materialized
View View
View