0Pricing
SQL Academy · Ders

ANALYZE ve pg_statistic

ANALYZE ile planlayıcı istatistiklerini güncel tutun, pg_statistic'i inceleyin ve ilişkili sütunlar için genişletilmiş istatistikler kullanın.

ANALYZE ve pg_statistic, 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.

ANALYZE Neden?

Sorgu planlayıcısı, iyi bir plan seçmek için satır sayılarını ve seçicilikleri tahmin etmelidir. Bu tahminler, ANALYZE tarafından toplanan sütun başına istatistiklerden gelir.

ANALYZE Ne Zaman Çalıştırılmalı

Otomatik VACUUM, satır değişikliği eşiklerine göre ANALYZE'yi otomatik çalıştırır. Toplu yüklemelerden veya büyük DELETE işlemlerinden sonra, planların kötüleşmemesi için bunu manuel çalıştırın:

ANALYZE orders;
ANALYZE (VERBOSE) orders;

Örnekleme

ANALYZE, sütun başına birkaç yüz satırdan örnek alır. Varsayılanlar kötü tahminler veriyorsa istatistik hedefini ayarlayın:

ALTER TABLE orders ALTER COLUMN customer_id SET STATISTICS 1000;
-- Up from default 100. ANALYZE will sample more rows.

pg_statistic

İstatistiklerin bulunduğu sistem kataloğu (okunabilirlik için pg_stats görünümünü kullanın):

SELECT attname, n_distinct, most_common_vals, most_common_freqs, histogram_bounds
FROM pg_stats
WHERE schemaname = 'public' AND tablename = 'orders';

Planlayıcının İnceledikleri

  • n_distinct — kaç farklı değer olduğu
  • most_common_vals — en sık kullanılan değerler ve sıklıkları
  • histogram_bounds — aralık sorguları için bölmeler
  • correlation — fiziksel ve mantıksal sıralama (tarama maliyetini etkiler)

Genişletilmiş İstatistikler

Sütun başına tutulan istatistikler, sütunlar arasındaki ilişkileri gözden kaçırır. CREATE STATISTICS bunları yakalar:

CREATE STATISTICS orders_country_status (dependencies)
  ON country, status FROM orders;
ANALYZE orders;

-- Now the planner knows that  country='US' AND status='paid' is correlated
-- (e.g. most US orders happen to be 'paid').

Çok Değişkenli İstatistik Türleri

  • dependencies — işlevsel bağımlılıklar (bir sütun diğerini öngörür)
  • ndistinct — farklı değer birleşimleri
  • mcv — en sık kullanılan birleşik değerler (PG 12+)

Kötü Tahminler → Kötü Planlar

"Sorgum neden yavaş?" sorusunun en yaygın nedeni, satır sayılarının kötü tahmin edilmesidir. Planlayıcı 1 satır beklediği için İç İçe Döngü'yü seçer; gerçekte satır sayısı 1.000.000'dur.

EXPLAIN ANALYZE SELECT * FROM ... ;
-- Look at Plan rows vs actual rows. Big gap = run ANALYZE or add extended stats.

Geçişlerde ANALYZE Zorlamak

Büyük bir toplu yüklemeden sonra:

COPY users FROM ... ;
ANALYZE users;
-- Without ANALYZE, the planner has no idea the table just grew.

Veri Çarpıklığında İstatistikler Otomatik Güncellenmez

Bugünün verileri dünkünden büyük ölçüde farklıysa, otomatik analiz çalışana kadar istatistikler hâlâ güncelliğini yitirmiş olabilir. Veri yapısı değişikliklerinden sonra manuel ANALYZE çalıştırın.

pg_class.reltuples

Planlayıcı ayrıca pg_class içindeki tahmini satır sayısını da kullanır. Bu değer VACUUM/ANALYZE tarafından güncellenir. Hızlıca denetlemek için:

SELECT relname, reltuples FROM pg_class WHERE relname = 'orders';

Özet

ANALYZE, planlayıcıyı besler.

  • Büyük veri değişikliklerinden sonra çalıştırın
  • Çarpık sütunlar için STATISTICS hedefini artırın
  • Sütunlar arasındaki ilişkiler için CREATE STATISTICS kullanın
  • Tahmini ve gerçek değerler arasındaki büyük fark = ilk düzeltilmesi gereken şey

Kısa Kontrol

EXPLAIN ANALYZE, tek sütunlu bir WHERE koşulunda tahmini satır sayısını 1, gerçek satır sayısını 500.000 gösteriyor. İlk çözüm nedir?

Sıkça Sorulan Sorular

“ANALYZE ve pg_statistic” dersi ücretsiz mi?

Evet — “ANALYZE ve pg_statistic” 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.

“ANALYZE ve pg_statistic” dersinde ne öğreneceğim?

ANALYZE ile planlayıcı istatistiklerini güncel tutun, pg_statistic'i inceleyin ve ilişkili sütunlar için genişletilmiş istatistikler 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 3. dersidir.

“ANALYZE ve pg_statistic” 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. MVCC ve Şişkinliğin Nedenleri
  2. VACUUM, autovacuum, vacuum_cost_delay
  3. ANALYZE ve pg_statistic
  4. Yalnızca INDEX Taramaları ve Görünürlük Haritası
← SQL Academy Sayfasına Dön