Update materialized_view_postgresql.MD
This commit is contained in:
parent
007407631f
commit
2471d39134
|
|
@ -1,3 +1,79 @@
|
|||
Ya, **PostgreSQL memiliki fitur *Materialized View***.
|
||||
|
||||
### Apa itu Materialized View di PostgreSQL?
|
||||
|
||||
**Materialized View** adalah objek database yang **menyimpan hasil query secara fisik** (seperti tabel), bukan menjalankan ulang query setiap kali dipanggil seperti *VIEW* biasa.
|
||||
|
||||
### Perbedaan VIEW vs MATERIALIZED VIEW
|
||||
|
||||
| Aspek | VIEW | MATERIALIZED VIEW |
|
||||
| ---------------- | -------------------------- | ----------------- |
|
||||
| Penyimpanan data | Tidak disimpan | Disimpan fisik |
|
||||
| Kecepatan query | Lebih lambat (query ulang) | Lebih cepat |
|
||||
| Update otomatis | Selalu real-time | ❌ Tidak otomatis |
|
||||
| Perlu refresh | ❌ | ✅ Ya |
|
||||
|
||||
---
|
||||
|
||||
### Contoh penggunaan
|
||||
|
||||
```sql
|
||||
CREATE MATERIALIZED VIEW laporan_penjualan AS
|
||||
SELECT
|
||||
tanggal,
|
||||
SUM(total) AS total_penjualan
|
||||
FROM penjualan
|
||||
GROUP BY tanggal;
|
||||
```
|
||||
|
||||
Mengambil data:
|
||||
|
||||
```sql
|
||||
SELECT * FROM laporan_penjualan;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Refresh data (WAJIB agar update)
|
||||
|
||||
```sql
|
||||
REFRESH MATERIALIZED VIEW laporan_penjualan;
|
||||
```
|
||||
|
||||
Tanpa mengunci (PostgreSQL ≥ 9.4, wajib ada index UNIQUE):
|
||||
|
||||
```sql
|
||||
REFRESH MATERIALIZED VIEW CONCURRENTLY laporan_penjualan;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Kapan sebaiknya pakai Materialized View?
|
||||
|
||||
✅ Query berat (JOIN besar, agregasi)
|
||||
✅ Data laporan / dashboard
|
||||
✅ Data tidak harus real-time
|
||||
❌ Data yang sering berubah dan harus langsung update
|
||||
|
||||
---
|
||||
|
||||
### Kekurangan
|
||||
|
||||
* Data bisa **tidak up-to-date**
|
||||
* Perlu mekanisme **refresh manual / cron**
|
||||
* Memakai **storage tambahan**
|
||||
|
||||
---
|
||||
|
||||
Kalau mau, saya bisa jelaskan:
|
||||
|
||||
* 🔁 cara auto-refresh pakai **cron / pg_cron**
|
||||
* ⚡ strategi performa (index materialized view)
|
||||
* 🆚 kapan pilih materialized view vs table biasa
|
||||
|
||||
Tinggal bilang mau fokus ke yang mana.
|
||||
|
||||
|
||||
Berikut **strategi performa Materialized View di PostgreSQL (fokus INDEX & refresh)** yang sudah terbukti efektif untuk kasus laporan & query berat.
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Reference in New Issue