SQL çalıştırma planını okuyarak tam tablo taraması, pahalı join, yanlış indeks ve satır tahmini sorunlarını tespit edin. Hangi iyileştirmenin önce yapılacağını, altyapı maliyetini ve araç seçimini karşılaştırın.
Bir sorguyu hızlandırmak için önce gerçek çalışma planını, satır tahminlerindeki sapmayı ve kaynak tüketimini birlikte inceleyin. İndeks ekleme veya daha güçlü bir bulut veritabanı paketi seçme kararı, bu ölçümler doğrulanmadan verilmemelidir.
Çalıştırma planı; motorun tabloya nasıl eriştiğini, join işlemlerini hangi sırayla yaptığını ve hangi operatörlerin kaynak kullandığını gösterir. En yüksek maliyet oranı tek başına öncelik anlamına gelmez; gerçek süre, gerçek satır sayısı ve disk I/O etkisi de önemlidir.
Tekil ve tekrarlanabilir sorunlarda sorgu ile indeks düzenlemesi yeterli olabilir. Eşzamanlılığın yüksek olduğu ortamlarda ise bellek, kilitlenme, yapılandırma ve izleme ihtiyacı ayrıca değerlendirilmelidir.
Bir Bakışta
- Önce gerçek planı ölçün: Tahmini maliyet yerine gerçek süre, gerçek satır sayısı ve I/O etkisini birlikte okuyun.
- Satır tahmin sapmasını bulun: Tahmini ve gerçekleşen satırlar arasındaki büyük fark, istatistik veya veri dağılımı sorununa işaret edebilir.
- Yatırımı doğrulayın: İndeks, daha güçlü altyapı veya performans izleme aracı seçmeden önce darboğazın kaynağını ayırın.
| Belirti | Olası neden | Doğrulama yöntemi | Maliyet etkisi |
|---|---|---|---|
| Sorgu uzun sürüyor | Tam tablo taraması, geniş sonuç kümesi veya pahalı sıralama | Gerçek plan, süre ve disk I/O verisini inceleyin | CPU, disk ve veri aktarımı yükü artabilir |
| Join sonrası sonuç kümesi büyüyor | Uygun olmayan join sırası, indeks eksikliği veya filtrelerin geç uygulanması | Join operatörlerini ve ara satır sayılarını karşılaştırın | Bellek kullanımı ve çalışma süresi artabilir |
| Tahmini ve gerçek satırlar uyuşmuyor | Eski istatistikler veya dengesiz veri dağılımı | Tahmini-gerçek satır farkını plan üzerinde kontrol edin | Motor yanlış erişim veya join yöntemini seçebilir |
| Yük altında yanıt süresi bozuluyor | Eşzamanlılık, kilitlenme, bellek sınırı veya altyapı kapasitesi | Kaynak metrikleri ve sorgu geçmişiyle korelasyon kurun | Bulut kaynak tüketimi ve operasyonel yük artabilir |
Çalıştırma planı size önce neyi söylemelidir?
Çalıştırma planı, veritabanı motorunun sorguyu yürütürken seçtiği operatörleri, erişim yöntemlerini ve işlem sırasını gösterir. İlk amaç “plan kötü mü?” sorusuna genel cevap vermek değildir. Asıl amaç, gecikmenin sorgu metninden mi, veri dağılımından mı, indeks yapısından mı yoksa altyapı kaynaklarından mı doğduğunu ayırmaktır.
Üç adımda hızlı teşhis: süre, satır sayısı ve kaynak tüketimi
İlk olarak sorgunun gerçek süresine bakın. Ardından her önemli operatörde tahmini satır sayısını gerçekleşen satır sayısıyla karşılaştırın. Son olarak CPU, bellek, disk I/O ve mümkünse ağ gecikmesi gibi kaynak etkilerini değerlendirin. Yalnızca süreye odaklanmak yanıltıcı olabilir; kısa görünen bir sorgu yoğun çağrıldığında toplam kaynak tüketimini büyütebilir.
Tahmini plan ile gerçek çalışma planı arasındaki fark
EXPLAIN veya benzeri komutlar, kullanılan veritabanı sistemine göre tahmini ya da gerçekleşen çalışma bilgisi sağlayabilir. Tahmini plan, motorun istatistiklere göre ne yapmayı planladığını gösterir. Gerçek plan ise sorgu çalışırken oluşan satır sayıları ve süreler hakkında daha doğrudan sinyal verebilir. Büyük tahmin farklarında istatistik güncelliği, veri dağılımı ve sorgu koşullarının veri tipleriyle uyumu kontrol edilmelidir.
Önceliklendirme: En pahalı operatör her zaman ilk sorun mudur?
Hayır. Plan üzerindeki yüksek maliyet yüzdesi, o adımın diğer adımlara göre tahmini ağırlığını gösterebilir; ancak tek başına düzeltme sırasını belirlemez. Örneğin pahalı görünen bir operatör az sayıda çalışıyorsa, daha düşük maliyetli fakat sürekli tekrarlanan başka bir adım toplam yükte daha önemli olabilir. Gerçek süre, çağrılma sıklığı, satır sapması ve I/O etkisini birlikte önceliklendirin.
Plan okurken karşılaştırılacak performans sinyalleri
Plan analizi sırasında tek bir operatöre odaklanmak yerine erişim şekli, join davranışı, ara sonuçların büyüklüğü ve sıralama maliyetini birlikte okuyun. Böylece gereksiz indeks ekleme veya erken altyapı yükseltme riski azalır.
Table scan, index scan ve index seek ne zaman anlamlıdır?
Tam tablo taraması her zaman hatalı değildir. Tablo küçükse veya filtre düşük seçicilikteyse motorun tabloyu baştan sona okuması uygun olabilir. Buna karşılık büyük bir tabloda az sayıda kayda ulaşmak için geniş tarama yapılıyorsa indeks yapısı ve filtre koşulları incelenmelidir. Index scan ve index seek yorumları veritabanı motoruna göre farklı görünebilir; bu nedenle plan ekranındaki terimleri ürün dokümantasyonuyla eşleştirmek gerekir.
Join türleri, join sırası ve ara sonuç kümesi büyüklüğü
Büyük tablolardaki join işlemlerinde join sırası, kullanılan join algoritması ve uygun indeksler çalışma süresini belirgin biçimde etkileyebilir. Filtrelenmesi gereken kayıtlar join sonrasına kalıyorsa ara sonuç kümesi gereksiz büyüyebilir. Önce hangi tablonun filtrelendiğini, join anahtarlarının nasıl kullanıldığını ve join sonrasında kaç satır üretildiğini kontrol edin.
Tahmini-gerçek satır farkı, sort, hash ve disk I/O kontrolü
Tahmin ile gerçek satır sayısı arasındaki büyük fark, motorun sonraki adımlar için hatalı seçim yapmasına neden olabilir. Sort ve hash işlemleri de bellek ile disk kullanımını etkileyebilir. Özellikle kontrolsüz sıralama, geniş sonuç seti ve gereksiz sütun seçimi veri aktarımını artırır. Sorgunun yalnızca ihtiyaç duyduğu sütunları döndürmesi, hem planı hem de uygulama katmanındaki yükü azaltabilir.
Belirti, olası çözüm ve operasyonel maliyet karşılaştırması
| Plan sinyali | İlk incelenecek alan | Olası yaklaşım | Operasyonel dikkat noktası |
|---|---|---|---|
| Geniş tablo taraması | Filtre seçiciliği ve tablo boyutu | Sorgu koşulunu sadeleştirme veya indeks adayını test etme | Tarama küçük tabloda normal olabilir |
| Yüksek join maliyeti | Join anahtarları, join sırası ve ara sonuçlar | İndeks, filtre sırası veya veri modeli incelemesi | Değişiklikler farklı sorguları etkileyebilir |
| Yoğun sort veya hash | Sıralama alanları, sonuç kümesi ve bellek kullanımı | Gereksiz sıralamayı ve seçilen sütunları azaltma | Disk taşması varsa I/O etkisi ayrıca izlenmeli |
| Yük altında gecikme | Eşzamanlılık, kilitlenme ve kaynak sınırları | Performans izleme ve altyapı yapılandırması incelemesi | Tek sorgu değişikliği tek başına yeterli olmayabilir |
Sorguyu güvenli biçimde iyileştirme adımları
İyileştirme, “indeks ekle ve bitir” yaklaşımı değildir. Sorgu, veri modeli, istatistikler ve altyapı katmanı ayrı ayrı kontrol edildiğinde daha güvenli karar verilir.
Filtreleri, seçilen sütunları ve sorgu koşullarını sadeleştirme
İlk adım, sorgunun gerçekten ihtiyaç duymadığı sütunları ve satırları taşımadığından emin olmaktır. Geniş sonuç kümeleri, gereksiz sütun seçimi ve kontrolsüz sıralama hem veritabanı hem ağ tarafında kaynak tüketimini artırabilir. Filtre koşullarının anlaşılır, tutarlı ve veri tipleriyle uyumlu olması plan seçimini de etkileyebilir.
İndeks adayını doğrulama: seçicilik, birleşik indeks ve yazma yükü
İndeks, okuma sorgularını hızlandırabilir; ancak yazma işlemlerinde ek bakım maliyeti oluşturur. Bu nedenle önce filtre ve join koşullarının seçiciliğini değerlendirin. Birden fazla koşul birlikte kullanılıyorsa birleşik indeks adayı düşünülebilir, fakat kesin sonuç ortam ölçümü olmadan söylenemez. Yeni indeksin depolama ihtiyacı, yazma gecikmesi ve bulut kaynak faturası üzerindeki etkisi test edilmelidir.
İstatistik, veri tipi ve parametrik sorgu uyumluluğunu kontrol etme
Satır tahminleri tutarsızsa istatistiklerin güncelliğini ve veri dağılımını inceleyin. Karşılaştırılan alanlarda veri tipi uyumsuzluğu veya sorgu parametrelerinin beklenmedik değer dağılımları da planı etkileyebilir. Buradaki amaç belirli bir motor davranışını varsaymak değil, plan değişikliğini açıklayabilecek koşulları kayıt altına almaktır.
Test ortamı, ölçüm kaydı ve geri alma planı oluşturma

Üretim ortamında plan değişikliğinden önce test, ölçüm ve geri alma planı hazırlayın. Başlangıç planını, gerçek süreyi, satır sayılarını ve kaynak gözlemlerini kaydedin. Ardından tek değişkenli bir düzenleme yapın: örneğin sorgu sadeleştirme veya indeks denemesi. Sonuç beklendiği gibi değilse geri dönüş yolunun hazır olması, özellikle yoğun iş yüklerinde riski azaltır.
Sorunun kaynağına göre doğru çözüm yolu
Her yavaş sorgu aynı nedenle oluşmaz. Sorunun tekil mi, tekrar eden mi, yoksa sistem genelindeki yoğunlukla mı ilişkili olduğunu belirlemek çözüm maliyetini doğrudan etkiler.
Tek bir yavaş sorgu için SQL ve indeks odaklı yaklaşım
Tek bir sorgu belirgin biçimde yavaşsa, önce plan üzerinden filtreler, join koşulları, seçilen sütunlar ve indeks kullanımı incelenir. Bu tür durumda küçük bir SQL düzenlemesi veya doğrulanmış bir indeks adayı yeterli olabilir. Ancak değişikliğin diğer okuma ve yazma iş yüklerine etkisi ayrıca kontrol edilmelidir.
Yoğun eşzamanlılıkta kilitlenme, bellek ve kaynak sınırı incelemesi
Sorun yalnızca yoğun saatlerde görünüyorsa, plan tek başına yeterli açıklama sunmayabilir. Eşzamanlılık, kilitlenme, bellek baskısı, disk I/O ve yapılandırma sınırları incelenmelidir. Bu noktada sorgu geçmişi ve kaynak metriklerini bir arada sunan veritabanı performans izleme araçları, tekrar eden örüntüleri görmeyi kolaylaştırabilir.
Bulut veritabanında ölçekleme ile sorgu optimizasyonu arasındaki denge
Daha güçlü bir bulut veritabanı paketi, kaynak sınırını geçici veya kalıcı olarak rahatlatabilir. Ancak verimsiz bir sorgu büyüyen kaynakla birlikte daha fazla maliyet üretebilir. Önce gereksiz tarama, geniş sonuç kümesi ve yanlış satır tahmini gibi sorunları doğrulamak; sonra ölçekleme ihtiyacını ölçmek daha dengeli bir yaklaşımdır.
Düzenli iş yüklerinde otomatik izleme ne zaman değer yaratır?
Sorgu yavaşlıkları düzenli tekrar ediyor, ekip manuel incelemeye zaman ayıramıyor veya kaynak maliyetini görünür kılmak istiyorsa otomatik izleme değerlendirilebilir. Uyarı mekanizmaları, sorgu geçmişi, kaynak tüketimi görünürlüğü ve erişim yetkileri bu araçların seçiminde önemlidir. Araç maliyeti; sağlayıcıya, kullanım hacmine ve sözleşme koşullarına göre değişebileceği için kapsamı ihtiyaçla eşleştirin.
Seçim Kriterleri ve Karşılaştırma Özeti
Şirket içi iyileştirme, sorgu ve veritabanı bilgisi ekipte mevcutsa tekil sorunlarda pratik olabilir. Performans izleme aracı, geçmiş sorgular, uyarılar ve kaynak tüketimi görünürlüğü gerektiğinde değerlidir. Performans danışmanlığı ise karmaşık join yapıları, süreklilik gösteren altyapı sorunları veya üretim değişikliği riskinin yüksek olduğu durumlarda değerlendirilmelidir.
- Ölçüm kapsamı: Gerçek plan, sorgu geçmişi, CPU, bellek, disk I/O ve eşzamanlılık verileri görülebiliyor mu?
- Maliyet görünürlüğü: Bulut veritabanı kaynak tüketimi ile sorgu davranışı ilişkilendirilebiliyor mu?
- Erişim yetkileri: İzleme aracı ve danışmanlık erişimi, kurumun yetki modeline uygun mu?
- Bakım yükü: Yeni indekslerin yazma işlemleri ve depolama üzerindeki etkisi izlendi mi?
- Geri dönüş planı: Sorgu, indeks veya altyapı değişikliği beklenen sonucu vermezse geri alma adımı hazır mı?
İzleme aracı, yönetilen veritabanı paketi veya uzman desteği seçmeden önce resmi özellikler, erişim koşulları ve kullanım kapsamı ilgili sayfalardan doğrulanmalıdır.
Sonuç
Çalıştırma planı, yavaş SQL sorgusunun nedenini bulmak için güçlü bir başlangıç noktasıdır; ancak tek başına nihai karar aracı değildir. En sağlam yaklaşım, gerçek süreyi, satır tahminlerini ve kaynak kullanımını aynı kayıtta değerlendirmektir. İndeks eklemek, sorguyu sadeleştirmek veya altyapıyı büyütmek; ancak hangi katmanın darboğaz oluşturduğu görüldükten sonra anlamlı hale gelir. Üretim ortamında ise her değişiklik test, ölçüm ve geri alma planıyla uygulanmalıdır.
Bilmekte Fayda Var
1. Tam tablo taraması otomatik olarak hata anlamına gelmez; küçük tablolar ve düşük seçicilikli filtreler için uygun olabilir.
2. En yüksek maliyet yüzdesi, mutlaka ilk düzeltilmesi gereken operatörü göstermeyebilir.
3. İndeksler okuma performansına yardımcı olabilir, fakat yazma yükü ve bakım maliyeti oluşturabilir.
4. SQL metni dışında CPU, bellek, disk I/O, ağ gecikmesi ve eşzamanlılık da sorgu süresini etkiler.
Önemli Notlar
Plan ekranları, komutlar ve operatör adları PostgreSQL, MySQL, SQL Server, Oracle ve bulut veritabanı hizmetlerinde farklılaşabilir. Kesin bir optimizasyon sonucu için sorgu metni, tablo boyutları, indeksler, veri dağılımı ve gerçek çalışma ölçümlerinin incelenmesi gerekir. Yeni indeksin depolama, yazma gecikmesi veya bulut faturası üzerindeki etkisi ortam ölçülmeden kesinleştirilemez.
Sık Sorulan Sorular
Q1. SQL çalıştırma planında en yüksek maliyet yüzdesi görünen adımı hemen optimize etmek gerekir mi?
A1. Hayır. Bu oran tek başına yeterli değildir. Gerçek çalışma süresi, operatörün kaç kez çalıştığı, tahmini ve gerçek satır farkı ile disk I/O etkisi birlikte değerlendirilmelidir.
Q2. Yavaş SQL sorguları için indeks eklemek mi, daha güçlü bulut veritabanı paketi seçmek mi daha mantıklıdır?
A2. Önce darboğazın kaynağını doğrulamak daha mantıklıdır. Sorgu erişim yöntemi veya indeks yapısı uygunsuzsa altyapı büyütmek maliyeti artırabilir. Sorun eşzamanlılık, bellek veya kaynak sınırından doğuyorsa bulut paketi ve yapılandırma seçenekleri de değerlendirilmelidir.
Q3. Çalıştırma planı analizini şirket içinde yapmak güvenli mi, yoksa performans danışmanlığı ne zaman düşünülmelidir?
A3. Ekipte sorgu, indeks ve üretim değişikliği yönetimi bilgisi varsa şirket içi analiz uygun olabilir. Sorun karmaşık join yapıları, sürekli kaynak baskısı, yüksek değişiklik riski veya sınırlı ekip zamanı içeriyorsa performans danışmanlığı değerlendirmek yararlı olabilir.





