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.
|
Berikut **strategi performa Materialized View di PostgreSQL (fokus INDEX & refresh)** yang sudah terbukti efektif untuk kasus laporan & query berat.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue