MATERIALIZED VIEW'lar ve REFRESH Stratejileri
MATERIALIZED VIEW ile maliyetli bir sorgunun sonucunu kalıcı hâle getirin ve bunu bir programa göre veya isteğe bağlı olarak REFRESH edin.
MATERIALIZED VIEW'lar ve REFRESH Stratejileri, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Materialized View = Kaydedilmiş Sonuç
Normal bir görünümün aksine, bir materyalize görünüm SELECT sonucunu diskte saklar. Sorgular saklanan verilere erişir — hızlıdır. İsteğe bağlı olarak yenilenir.
CREATE MATERIALIZED VIEW daily_revenue AS
SELECT date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM orders
GROUP BY 1;Sorgulama
Sorgular, materyalize edilmiş veriler üzerinde yalnızca SELECT işlemleridir:
SELECT * FROM daily_revenue WHERE day >= NOW() - INTERVAL '30 days';REFRESH MATERIALIZED VIEW
Sonucu yeniden hesaplar. Görünümü özel olarak kilitler:
REFRESH MATERIALIZED VIEW daily_revenue;
-- Selects on the view block during refresh.REFRESH MATERIALIZED VIEW CONCURRENTLY
Engellemesiz yenileme — yeni veriler hazır olana kadar okuyucular eski verilerden hizmet almaya devam eder. Görünüm üzerinde benzersiz bir dizin olması gerekir:
CREATE UNIQUE INDEX ON daily_revenue (day);
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;Materyalize Görünümlerde Dizinler
Bir materyalize görünümü herhangi bir tablo gibi dizinleyebilirsiniz — bu, sorguları hızlandırır:
CREATE INDEX daily_revenue_day_idx ON daily_revenue (day DESC);Ne Zaman Materyalize Edilmeli
Materyalize görünümleri şu durumlarda kullanın:
- Temel sorgu pahalıysa
- Sonucun biraz güncelliğini yitirmiş olmasına izin verilebiliyorsa
- Güncellemeler arasında sorgu birçok kez çalıştırılıyorsa
Zamanlanmış Yenileme
Yerleşik bir zamanlayıcı yoktur. pg_cron, bir işletim sistemi cron işi veya uygulamanızın zamanlayıcısını kullanın:
-- Via pg_cron extension:
SELECT cron.schedule('refresh_daily', '0 1 * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;');Artımlı Yenileme
PostgreSQL'in yerel artımlı yenileme özelliği yoktur — her REFRESH işlemi hesaplamayı baştan yapar. Artımlı toplulaştırma için şunları inceleyin:
- Elle oluşturulmuş, tetikleyici tabanlı "özet tabloları"
- TimescaleDB sürekli toplulaştırmaları
- pg_ivm eklentisi (artımlı materyalize görünümler)
Okumaları Etkilemeden Temel Tabloları Okuma
CONCURRENT yenilemesi, temel tabloları bir işlem anlık görüntüsünde okur — tabloları engellemez. Ancak yenilemenin kendisi çok büyük verilerde yavaş olabilir.
Disk Kullanımı
Bir materyalize görünüm, verilerinin depolama alanını iki katına çıkarır. Disk alanını buna göre planlayın.
Bölümlemeyle Birleştirme
Devasa zaman serileri için materyalize görünümü bölümlere ayırın (veya TimescaleDB kullanın):
CREATE MATERIALIZED VIEW orders_summary AS ... ;
CREATE INDEX ON orders_summary (day);
-- For very large views, consider regular table + manual upsert pattern.Ne Zaman Kullanılmamalı
Okumalarınız güncel SQL verilerini tolere ediyorsa ve temel sorgu zaten hızlıysa kendinizi yenileme bakımından kurtarın. Materyalize görünümler bir dengedir — hız karşılığında güncelliğin geride kalması.
Özet
Materyalize görünümler sorgu sonuçlarını önbelleğe alır.
- Diskte saklanır, dizinlenebilir ve hızlıdır
- REFRESH işlemini elle veya zamanlanmış olarak çalıştırın
- CONCURRENTLY için UNIQUE dizini gerekir
- Pahalı ve biraz güncelliğini yitirmiş toplulaştırmalar için kullanın
Hızlı Kontrol
REFRESH MATERIALIZED VIEW CONCURRENTLY, temel REFRESH işleminin gerektirmediği neyi gerektirir?
Sıkça Sorulan Sorular
“MATERIALIZED VIEW'lar ve REFRESH Stratejileri” dersi ücretsiz mi?
Evet — “MATERIALIZED VIEW'lar ve REFRESH Stratejileri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“MATERIALIZED VIEW'lar ve REFRESH Stratejileri” dersinde ne öğreneceğim?
MATERIALIZED VIEW ile maliyetli bir sorgunun sonucunu kalıcı hâle getirin ve bunu bir programa göre veya isteğe bağlı olarak REFRESH edin. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“MATERIALIZED VIEW'lar ve REFRESH Stratejileri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Basit VIEW'lar: Mantıksal Yeniden Kullanım
- Güncellenebilir VIEW'lar ve INSTEAD OF Tetikleyicileri
- MATERIALIZED VIEW'lar ve REFRESH Stratejileri
- Önceden Toplama Ne Zaman Yapılmalı