STATUS IS UPWEB SİTESİ OPTİMİZASYONU VİKİSİ
26Güçlendir
Performans ve teslimat / Güçlendir

İçerik ve Ticaret Siteleri için Veritabanı Performansı

Maliyetli veritabanı işlemlerini nasıl bulacağınız, önemli yolları nasıl iyileştireceğiniz ve güvenilirlik riskini artırmadan performans değişikliklerini nasıl dağıtacağınız.

İçerik ve Ticaret Siteleri için Veritabanı Performansı — GÖRSEL REHBER
OKU
8 dakika
KAYNAKLAR
8
YENİDEN DOĞRULA
2027-03-27
gözden geçirildi
Database reliability reviewer with application, security, and release context
KISA CEVAP

Kararla başlayın.

Yavaş olan kullanıcı isteğinden başlayın, sonra bunun veritabanı çalışma yükünü belirleyin. Temsil edici bir sorguyu ölçün, planını inceleyin ve onaylanmış tek bir kısıtlı değişikliği uygulayın: sorgu şekli, indeks, sayfalama, önbellek davranışı veya bağlantı kullanımı. Sonuç hâlâ doğru içerik, fiyat, stok ve izinleri döndürmelidir.

İçerik ve ticaret siteleri için hedeflenmiş ölçüm ve muhafazakâr dağıtım kullanın. Paylaşılabilir güvenli okuma yanıtlarını uygun olduğunda veritabanının dışına çıkarın, kişiselleştirilmiş verinin kapsamını doğru belirleyin ve normal iş ile kurtarma için kapasiteyi koruyun. Gerçekçi trafikle test edin, kademeli olarak yayımlayın ve bilinen iyi uygulama sürümüne geri dönme yolunu muhafaza edin.

GÖRSEL REHBER

Çalışmayı bir sistem olarak görün.

Bireysel taktiklere geçmeden önce makaledeki kararları bağlamak için bu haritayı kullanın.

SIUGüçlendir
01Veritabanını değiştirmeden önce pahalı isteği bulun
02Gerçek kullandığınız erişim yolu için indeks tasarlayın
03Sayfalamayı kararlı ve uygun maliyetli yapın
04Yanlış yanıt vermeden okuma işini önbelleğe alın
01

Veritabanını değiştirmeden önce pahalı isteği bulun

Kategori yükleme, makale araması, sepete ekleme veya sipariş gönderimi gibi bir kullanıcı eyleminden başlayın. Rotasını, sorgu sayısını, veritabanı süresini, dönen satır sayısını ve isteğin süresini kaydedin. Yavaş bir sayfa aynı zamanda uygulama kodu veya başka bir bağımlılıktan bekliyor olabilir; bu yüzden yalnızca sayfa yükleme süresinden teşhis yapmayın.

Bir sorgu planı tablolar, indeksler, join'ler, sıralamalar ve agregalar boyunca veritabanının izlediği yolu gösterir. PostgreSQL’de EXPLAIN bu yolu gösterir. EXPLAIN ANALYZE ifadeyi çalıştırır ve gerçek satırları ile zamanlamaları raporlar; bu nedenle güvenli bir temsilci sorgu kullanın. Tahmini ile gerçek satır arasındaki büyük fark, istatistiklerin veya koşulların araştırılması için bir neden olup otomatik bir indeks talebi değildir.

Bir yolculuğu izleyin

Aday bir sorguyu bir rota ve sonuçla ilişkilendirin; sadece panoya dayalı bir rapor yavaş bir ödemeyi gölgede bırakmasın.

Bir temel değer (baseline) tutun

Değişiklik öncesi zamanlamaları ve karşılaştırılabilir trafiği, müşteri kimlikleri, tokenlar veya kartla ilgili değerler kaydetmeden saklayın.

02

Gerçek kullandığınız erişim yolu için indeks tasarlayın

İndeks, satırları bulmaya veya sıralı şekilde döndürmeye yardımcı olan korunan bir yapıdır; genel bir hız düğmesi değildir. Önce önemli bir sorgunun filtrelerini, join anahtarlarını ve sıralama düzenini belirleyin, sonra önerilen indeksin bir planda kullanıldığını doğrulayın. PostgreSQL belgeliyor ki eşleşen bir B-tree indeksi, özellikle küçük LIMIT değerlerinde, ayrı bir sıralama olmadan ORDER BY gereksinimini karşılayabilir.

İndeksler depolama ve yazma işini artırır çünkü ekleme, güncelleme ve silme işlemleri bunları korur. Tabloyun büyük bir bölümünü gerektiren bir sorgu için sıralı tarama (sequential scan) ve açık sıralama daha hızlı olabilir. Üretime benzer veride test edin ve fayda maliyeti haklı çıkarmadıkça indeksi tutmayın.

Erişim yolunu eşleştirin

Sorgunun gerçek filtrelerini ve ORDER BY ifadesini kullanın; arayüz kararlı bir sıra gerektiriyorsa deterministik bir tie-breaker ekleyin.

Spekülatif indekslerden kaçının

Bir indeksin kullanılıp kullanılmadığını ve yazma sırasında maliyetini gözden geçirin; veri ve trafik değiştikçe yeniden kontrol edin.

03

Sayfalamayı kararlı ve uygun maliyetli yapın

Sayfa numarasıyla yapılan sayfalama genellikle LIMIT artı OFFSET kullanır. Her zaman öngörülebilir bir sıra (ORDER BY) zorunlu kılın. PostgreSQL, ORDER BY olmadan LIMIT'in tahmin edilemez bir alt küme döndürebileceğini uyarır; farklı LIMIT veya OFFSET değerleri optimizer'ın farklı planlar seçmesine yol açabilir.

Büyük offset değerleri atlanmış satırların yine de hesaplanması gerektiği için dikkat gerektirir. Derin katalog, sipariş geçmişi veya arşiv gezintileri için cursor veya keyset sayfalama (anahtar tabanlı) düşünün: son görülen kararlı sıralama değeri ve benzersiz tie-breaker sonrasında satırları isteyin. Arayüzü değiştirmeden önce yeni ya da silinmiş kayıtların nasıl görüneceğini tanımlayın.

Sıkı bir sayfa boyutu belirleyin

Sınırsız bir sonuç yerine en küçük kullanışlı sayfayı döndürün.

Toplam sayıyı ayrı tutun

Arayüzün her istekte tam bir toplam sayıya gerçekten ihtiyacı olup olmadığını kararlaştırın.

04

Yanlış yanıt vermeden okuma işini önbelleğe alın

Önbellekleme, veritabanından yeniden oluşturmak yerine önceki bir sonucu yeniden kullanır. Sürümlenmiş varlıklar ve genel, tekrar eden sayfalar için HTTP katmanından başlayın; çünkü bir önbellek isabeti uygulama ve veritabanı işini atlayabilir. web.dev, sürümlendirilmiş URL'ler için uzun ömürlü önbellekleme önermektedir; URL değiştirmek pratik bir geçersiz kılma mekanizmasıdır.

Önbellek politikası bir doğruluk (correctness) kararıdır. Paylaşılan bir önbellek bir yanıtı kullanıcılar arasında yeniden kullanabilir, bu yüzden hesap, sepet, fiyat veya yetkilendirmeye özel çıktıyı paylaşmayın; aksi takdirde kapsam için tasarlanıp test edilmelidir. Cache-Control private tarayıcı önbelleğine kısıtlama getirir, no-store ise önbelleklere saklamamayı belirtir.

Yanıtları sınıflandırın

Genel katalog veya makale çıktısını oturum-spesifik, konum-spesifik ve izinlere duyarlı çıktılardan ayırın.

Tazeliği test edin

Bir kişinin ne kadar süreyle eski bir değeri görebileceğini, süresini ve geçersiz kılma ya da yeniden doğrulama yolunu tanımlayın.

05

Tavanı yükseltmek yerine bağlantı kapasitesini koruyun

Bağlantı (connection) veritabanına canlı bir istemci oturumudur. Worker'lar, cron işleri, önizlemeler veya yeniden denemeler tek tek sorgular kabul edilebilir görünse bile yuvaları (slots) tüketebilir. PostgreSQL’in max_connections eşzamanlı bağlantıları kontrol eder, sunucu başlatılırken ayarlanır ve daha yüksek bir değer daha fazla kaynak (örn. paylaşılan bellek) ayırır. İş yükü modeliniz olmadan bunu yükseltmek hatayı başka yere taşıyabilir.

Web worker'ları, arka plan işleri, yönetim ve replika arasında tek bir bütçe belirleyin. Uygun yerlerde sınırlı connection pooling kullanın, kurtarma için boşluk (headroom) bırakın ve takılmış işler süresiz beklemesin diye zaman aşımı (timeout) uygulayın. Güvenli sayılar motor, bellek, sorgu karışımı ve sağlayıcı limitlerine bağlıdır; bunları işletmeci ile doğrulayın.

Her istemciyi sayın

Web süreçleri, kuyruklar, planlanmış görevler, migration'lar, raporlama araçları ve dağıtım işleri dahil olsun.

Yeniden denemeleri sınırlayın

Eşzamanlılığı sınırlayın ve bir hata bağlantı talebini çoğaltmasın diye geri çekilmeli (backoff) strateji kullanın.

06

Sorgu maliyetini bağlam ve gizlilik kontrolleriyle gözlemleyin

Tek bir yavaş örneğe göre değil, toplam etkiye göre veritabanı işini sıralayın. Binlerce kez çağrılan orta derecede yavaş bir sorgu nadir bir rapordan daha fazla önem taşıyabilir. PostgreSQL’in pg_stat_statements planlama ve yürütme verilerini, çağrıları, toplam ve ortalama yürütme zamanını, satırları ve buffer etkinliğini toplayarak sunar. Bu eklentiyi eklemek veya çıkarmak sunucu yapılandırması ve yeniden başlatma gerektirir; planlamanın izlenmesi ek yük getirebilir.

Sorgu gruplarını rota, yayın sürümü ve zaman penceresi ile ilişkilendirin. OpenTelemetry, parametreleri temizledikten (literals'i değiştirdikten) sonra sorgu metnini varsayılan olarak toplamayı ve düşük kardinaliteli sorgu özetleriyle gruplamayı önerir. Bu, sahiplerin müşteri verilerini dışa aktarmadan veya her değer için ayrı bir etiket oluşturmadan eğilimleri görmesine yardımcı olur.

Tail (kuyruk) ve toplamı izleyin

Süre, toplam zaman, çağrılar, hatalar, bağlantılar ve satırlar gibi ölçümleri gözden geçirin; her biri farklı bir hata modunu ortaya koyar.

Telemetriyi temizleyin (sanitize)

Parametreli sorgular kullanın ve izler veya loglar uygulamadan çıkmadan önce literal değerlerin kaldırıldığını doğrulayın.

07

Veritabanı değişikliklerini geri alınabilir güvenilirlik işi olarak gönderin

Bir indeks, yeniden yazım, önbellek politikası, pool ayarı veya şema değişikliğini sahipli, başarı ölçütü ve geri alma kararı olan bir üretim değişikliği gibi ele alın. Temsilî bir ortamda doğrulayın, sınırlı bir dilime yayın ve etkilenen yolculuğu izleyin. Daha hızlı olmak, değişiklik yanlış, eksik, yinelenen veya bayat veri döndürürse başarı değildir.

Şema değişiklikleri dikkat ister çünkü uygulama sürümleri örtüşebilir. Google Cloud rehberi uyumluluk sırasını şöyle açıklar: eskisini ve yenisini idare eden bir uygulama sürümünü yayınlayın, şemayı değiştirin, sonra onu kullanan özelliği yayınlayın. Bu, uygulama geri alma yolunu korur. Kilitleme ve çevrimiçi değişim (online-change) davranışı motor ve yönetilen hizmete göre farklılık gösterir; yüksek hacimli veya ödeme ile ilgili sistemler için nitelikli inceleme alın.

Koruyucu sınırlar (guardrails) önceden tanımlayın

Rotayı, performans ve doğruluk sinyallerini ve dağıtımı durduracak eşiği adlandırın.

Canary sonra genişletin

Kontrollü bir dilimde performans ve doğruluğu doğrulayın; geri dönüş yolunu bir olay dışında da pratik edin.

EYLEM / DOĞRULA

Pratik yapılacaklar rehberiniz.

  1. 01

    Bir yolculuk seçin

    Belirgin müşteri sonucu olan bir sayfa veya işlem seçin.

    DOĞRULA: Rota ve koruması gereken doğru sonuç adlandırılmıştır.
  2. 02

    Yolu ölçün

    İstek süresi, sorgu sayısı, veritabanı süresi, satırlar ve bağlantı davranışını yakalayın.

    DOĞRULA: Tarihli bir temel değer mevcut ve hassas değerler içermiyor.
  3. 03

    Sorgu gruplarını sıralayın

    İstatistikler ve izlerle işi toplam zaman ve çağrı hacmine göre sıralayın.

    DOĞRULA: Ekip, yolculuğa bağlı maliyetli sorguyu tanımlayabiliyor.
  4. 04

    Güvenli bir planı inceleyin

    Temsilci bir ifade üzerinde veritabanı plan aracını kullanın.

    DOĞRULA: Beklenen ve gerçek satırlar ile pahalı işlem kaydedilmiş.
  5. 05

    Bir gerekçeli değişiklik seçin

    Bir sorgu, indeks, sayfalama, önbellek veya pool ayarı ve bunun ödününü seçin.

    DOĞRULA: Değişikliğin sahibi ve test kanıtı var.
  6. 06

    Doğruluğu test edin

    Gerekirse sıra, izinler, fiyat veya stok görünürlüğü ve önbellek kapsamını test edin.

    DOĞRULA: İlgili genel ve oturum açmış durumlar için beklenen veri döndürülüyor.
  7. 07

    Bağlantıları bütçelendirin

    Web, worker, planlanmış, raporlama ve yönetim istemcilerini dahil edin.

    DOĞRULA: Toplam hizmet sınırının altında ve kurtarma erişimi korunuyor.
  8. 08

    Canary yapın ve karar verin

    Sınırlı bir paya yayın, sonra genişletin veya bilinen iyi sürüme geri dönün.

    DOĞRULA: Performans, hata, bağlantı ve veri doğruluğu sinyalleri kararı destekliyor.
TARTIŞMA KONULARI

Ödünleri karşılaştırın, özel verileri paylaşmayın.

Bu başlıkları ekibiniz veya site sahipleri topluluğuyla kullanın. Yöntemleri ve çıkarılan dersleri paylaşın; ancak kimlik bilgilerini, müşteri kayıtlarını veya kamuya açık olmayan altyapı detaylarını asla paylaşmayın.

  1. 01

    Hangi müşteri yolculuğu en değerli veritabanı iyileştirmenizi ortaya çıkardı ve ilk olarak neyi ölçtünüz?

  2. 02

    Takımınız bir katalog veya içerik yanıtının paylaşılan bir önbellek için güvenli olduğuna nasıl karar veriyor?

  3. 03

    Şema ve uygulama sürümlerinizin sıralamasını en çok etkileyen geri alma kısıtı hangisiydi?

POPÜLER / YETKİLİ KAYNAKLAR

Kaynak materyalini açın.

PostgreSQL Global Development GroupUsing EXPLAIN ↗

Sorgu planı düğümlerini ve EXPLAIN ANALYZE'ın neyi ölçtüğünü açıklar.

İncelendi 2026-09-27
PostgreSQL Global Development GroupIndexes and ORDER BY ↗

B-tree indeksinin ne zaman sıralanmış sonuç sağlayabileceğini gösterir.

İncelendi 2026-09-27
PostgreSQL Global Development GroupLIMIT and OFFSET ↗

Kararlı sıralama gereksinimlerini ve büyük offset'lerin maliyetini belgelendirir.

İncelendi 2026-09-27
PostgreSQL Global Development GroupConnections and Authentication ↗

Bağlantı limitlerini, ayrılmış yuvaları ve kaynak etkilerini tanımlar.

İncelendi 2026-09-27
PostgreSQL Global Development Grouppg_stat_statements ↗

İfade düzeyinde istatistikleri, kurulum gereksinimlerini ve ek yük hususlarını detaylandırır.

İncelendi 2026-09-27
web.devPrevent unnecessary network requests with the HTTP Cache ↗

Cache-Control, sürümlendirilmiş URL'ler ve geçersiz kılma konusunda rehberlik eder.

İncelendi 2026-09-27
Google CloudReliable releases and rollbacks—CRE life lessons ↗

Şema değişiklikleri ve uygulama geri almaları için uyumluluk-öncelikli rehberlik sağlar.

İncelendi 2026-09-27
OpenTelemetrySemantic conventions for database client spans ↗

Sorgu özetleri ve temizlenmiş (sanitized) sorgu metni için veritabanı izleme/referans rehberliği sunar.

İncelendi 2026-09-27

Kaynak politikası. Bu makale için resmi dokümantasyon okundu. Tavsiye koşulludur; dahili bağlantılar gezinme amaçlıdır, kanıt değildir.

HIZLI AÇIKLAMALAR

Yaygın sorular.

Bir sorgu yavaşsa hemen indeks eklemeli miyim?

Hayır. Önce sorgunun önemli olduğunu gösterin ve temsilî veride planını inceleyin. Bir indeks eşleşen bir arama veya küçük sıralı sonuçları iyileştirebilir, ancak depolama ve yazma maliyeti vardır; bir sorgu tablonun büyük kısmına ihtiyaç duyuyorsa tablo taraması daha uygun olabilir.

OFFSET sayfalama her zaman sorunlu mudur?

Hayır. Deterministik ORDER BY ile sığ sayfalar için uygun olabilir. Derin gezinme için gözden geçirin çünkü atlanan satırlar yine de hesaplanır; ardışık gezinti için keyset sayfalama genellikle değerlendirmeye değerdir.

Bir ticaret sayfasını CDN'de önbelleğe alabilir miyim?

Sadece yanıtı sınıflandırıp test ettikten sonra. Genel tekrar eden içerik paylaşılan önbelleğe uygun olabilir; sepetler, hesap verileri, yetkilendirmeye özel çıktı ve hassas değerler daha kısıtlayıcı işlem gerektirir. Ödeme ile ilgili akışlar için nitelikli güvenlik veya ödeme incelemesi alın.

Status Is UP Editorial Team · Uptime Enablement Editors

Database reliability reviewer with application, security, and release context tarafından incelendi. Yayınlandı 2026-09-27; güncellendi 2026-09-30.