VIEW MATERIALIZED dan Strategi REFRESH
Simpan hasil kueri mahal dengan MATERIALIZED VIEW dan segarkan secara terjadwal atau sesuai permintaan
VIEW MATERIALIZED dan Strategi REFRESH adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Tampilan Terwujud = Hasil Tersimpan
Berbeda dari tampilan biasa, tampilan terwujud menyimpan hasil SELECT ke disk. Kueri membaca data yang tersimpan — cepat. Lakukan penyegaran sesuai kebutuhan.
CREATE MATERIALIZED VIEW daily_revenue AS
SELECT date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM orders
GROUP BY 1;Menguery
Kueri hanyalah SELECT pada data yang telah diwujudkan:
SELECT * FROM daily_revenue WHERE day >= NOW() - INTERVAL '30 days';REFRESH MATERIALIZED VIEW
Hitung ulang hasilnya. Mengunci tampilan secara eksklusif:
REFRESH MATERIALIZED VIEW daily_revenue;
-- Selects on the view block during refresh.REFRESH MATERIALIZED VIEW CONCURRENTLY
Penyegaran tanpa pemblokiran — pembaca tetap dilayani dari data lama hingga data baru siap. Memerlukan indeks UNIQUE pada tampilan:
CREATE UNIQUE INDEX ON daily_revenue (day);
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;Indeks pada Tampilan Terwujud
Anda dapat membuat indeks pada tampilan terwujud seperti pada tabel apa pun — ini mempercepat kueri:
CREATE INDEX daily_revenue_day_idx ON daily_revenue (day DESC);Kapan Menggunakan Tampilan Terwujud
Gunakan tampilan terwujud ketika:
- Kueri yang mendasarinya mahal
- Hasilnya masih dapat diterima meskipun sedikit tidak mutakhir
- Kueri dijalankan berkali-kali di antara pembaruan
Penyegaran Terjadwal
Tidak ada penjadwal bawaan. Gunakan pg_cron, pekerjaan cron pada OS, atau penjadwal aplikasi:
-- Via pg_cron extension:
SELECT cron.schedule('refresh_daily', '0 1 * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;');Penyegaran Inkremental
PostgreSQL tidak memiliki penyegaran inkremental bawaan — setiap REFRESH menghitung ulang dari awal. Untuk agregasi inkremental, pertimbangkan:
- "tabel ringkasan" berbasis pemicu yang dibuat sendiri
- agregasi kontinu TimescaleDB
- ekstensi pg_ivm (tampilan terwujud inkremental)
Membaca Tabel Dasar Tanpa Memengaruhi Pembacaan
Penyegaran CONCURRENT membaca tabel dasar dalam cuplikan transaksi — penyegaran tersebut tidak memblokir tabel. Namun, penyegaran itu sendiri dapat lambat pada data berukuran sangat besar.
Penggunaan Disk
Tampilan terwujud menggandakan penyimpanan datanya. Rencanakan kapasitas disk dengan tepat.
Menggabungkan dengan Partisi
Untuk deret waktu yang sangat besar, partisi tampilan terwujud (atau gunakan TimescaleDB):
CREATE MATERIALIZED VIEW orders_summary AS ... ;
CREATE INDEX ON orders_summary (day);
-- For very large views, consider regular table + manual upsert pattern.Kapan Tidak Menggunakannya
Jika pembacaan Anda dapat menggunakan SQL dengan data terbaru dan kueri yang mendasarinya sudah cepat, hemat pemeliharaan penyegaran. Tampilan terwujud adalah pertukaran — mengorbankan kesegaran demi kecepatan.
Ringkasan
Tampilan terwujud menyimpan hasil kueri dalam tembolok.
- Disimpan di disk, memiliki indeks, dan cepat
- Lakukan REFRESH secara manual atau terjadwal
- CONCURRENTLY memerlukan indeks UNIQUE
- Gunakan untuk agregasi mahal yang boleh sedikit tidak mutakhir
Cek Cepat
Apa yang diperlukan oleh REFRESH MATERIALIZED VIEW CONCURRENTLY tetapi tidak diperlukan oleh REFRESH dasar?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “VIEW MATERIALIZED dan Strategi REFRESH” gratis?
Ya — teks lengkap “VIEW MATERIALIZED dan Strategi REFRESH” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “VIEW MATERIALIZED dan Strategi REFRESH”?
Simpan hasil kueri mahal dengan MATERIALIZED VIEW dan segarkan secara terjadwal atau sesuai permintaan Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “VIEW MATERIALIZED dan Strategi REFRESH” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- VIEW Biasa: Penggunaan Ulang Logis
- VIEW yang Dapat Diperbarui dan Pemicu INSTEAD OF
- VIEW MATERIALIZED dan Strategi REFRESH
- Kapan Melakukan Agregasi Awal