SQL Academy · Ders

Yavaş Sorguları Belirleme ve Düzeltme

Yavaş sorguları bulmak ve hedefli düzeltmeler uygulamak için pg_stat_statements, log_min_duration_statement ve EXPLAIN kullanın.

4. ders / 414 adım

Yavaş Sorguları Belirleme ve Düzeltme, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. 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.

1. Adım: Yavaş Olanları Bulun

Körü körüne iyileştirme yapmayın. Şunları kullanın:

  • pg_stat_statements — toplam süreye göre en üstteki sorgular
  • log_min_duration_statement — bir eşik değerin üzerindeki sorguları günlüğe kaydeder
  • pgBadger — günlüklerden okunaklı raporlar oluşturur

pg_stat_statements Kurulumu

Uzantıyı etkinleştirin ve shared_preload_libraries ayarını yapılandırın:

-- postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

-- After restart:
CREATE EXTENSION pg_stat_statements;

En Ağır 10 Sorgu

Her DBA için en yararlı tek sorgu:

SELECT query,
       calls,
       total_exec_time,
       mean_exec_time,
       rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Yavaş Sorguları Günlüğe Kaydetme

Bir eşik belirleyin ve günlüğü okuyun:

-- postgresql.conf
log_min_duration_statement = '500ms'
-- All queries running > 500ms are logged.

2. Adım: EXPLAIN ANALYZE ile Yeniden Üretin

Her yavaş sorgu için temsili bir ortamda (üretime benzer verilerle) EXPLAIN ANALYZE çalıştırın. Şunlara bakın:

  • Gerçek süreye göre en büyük düğüm
  • Tahmin edilen ve gerçek satır sayıları arasındaki en büyük fark
  • Doğru dizinlerin kullanılıp kullanılmadığı

Yaygın Düzeltmeler

  • Bir WHERE / JOIN sütununda eksik dizin
  • Arama için uygun olmayan koşul (sütun üzerinde işlev) — ifade dizini ekleyin veya yeniden yazın
  • Güncel olmayan istatistikler — ANALYZE çalıştırın
  • Yanlış veri türü (örtük dönüştürmeye neden oluyor) — sütun türünü düzeltin
  • OR koşulları — tek koşullu sorguların UNION biçiminde yeniden yazın
  • Çok fazla veri getiren SELECT * — seçilen sütunları daraltın

Güncel Olmayan İstatistikler

Tahmin edilen satır sayıları gerçek satır sayılarından çok farklıysa önce ANALYZE çalıştırın:

ANALYZE orders;
-- Or rely on autovacuum to do it periodically.

Dizin Sağlık Kontrolü

Bir tablodaki dizinleri ve boyutlarını listeleyin:

SELECT indexrelname, pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE relname = 'orders'
ORDER BY pg_relation_size(indexrelid) DESC;

Kullanılmayan Dizinler

Hiç kullanılmayan dizinleri bulun:

SELECT schemaname, relname, indexrelname, idx_scan
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY pg_relation_size(indexrelid) DESC;
-- Consider dropping them — they slow writes for no read benefit.

Kilit Çekişmesi

Bazen bir sorgu, kilit beklediği için "yavaştır". wait_event değerini görmek için pg_stat_activity öğesini kontrol edin:

SELECT pid, state, wait_event_type, wait_event, query
FROM pg_stat_activity
WHERE state <> 'idle';

Sorgu Yeniden Yazma Kalıpları

  • Filtreleri WHERE koşuluna taşıyın
  • SELECT içindeki ilişkili alt sorguyu JOIN + GROUP BY ile değiştirin
  • OR koşulunu dizin kullanan sorguların UNION ALL biçimiyle değiştirin
  • Kendi kendine birleştirmeler yerine pencere işlevlerini kullanın
  • Planlayıcının kafası karıştığında yinelenen alt sorguları CTE'lerle gerçekleştirin

Yineleyin

Performans ayarlama bir döngüdür: ölçün → varsayım kurun → değiştirin → ölçün. Tahmin yürütmeyin.

Özet

Yavaş sorguları pg_stat_statements ile bulun, EXPLAIN ANALYZE ile tanılayın, dizinler / ANALYZE / yeniden yazımlarla düzeltin ve yineleyin.

Hızlı Kontrol

Toplam çalışma süresine göre en çok zaman alan sorguları hangi PostgreSQL uzantısı ortaya çıkarır?

Başlamak ücretsiz

Yapay zeka eğitmeniyle SQL öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
46
Dersler
183

Sıkça Sorulan Sorular

“Yavaş Sorguları Belirleme ve Düzeltme” dersi ücretsiz mi?

Evet — “Yavaş Sorguları Belirleme ve Düzeltme” 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.

“Yavaş Sorguları Belirleme ve Düzeltme” dersinde ne öğreneceğim?

Yavaş sorguları bulmak ve hedefli düzeltmeler uygulamak için pg_stat_statements, log_min_duration_statement ve EXPLAIN kullanın. 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 4. dersidir.

“Yavaş Sorguları Belirleme ve Düzeltme” 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

  1. EXPLAIN ve EXPLAIN ANALYZE Okuma
  2. Sıralı Taramalar ve INDEX Taramaları
  3. Hash Birleştirme ve Birleştirmeli Birleştirme ve İç İçe Döngü
  4. Yavaş Sorguları Belirleme ve Düzeltme
← SQL Academy Sayfasına Dön