Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Veritabanı performansı sürekli bir mücadele alanıdır. İyi bir tasarım (Bölüm 4) ve doğru indeksleme (Bölüm 17) harika bir başlangıç olsa da, karmaşık sorgular veya yüksek yük altında performans sorunları ortaya çıkabilir. Bu sorunları çözmek, sorgu optimizleyiciyi anlamak, yürütme planlarını derinlemesine analiz etmek ve yaygın darboğazları tanımaktan geçer.

Yürütme Planlarını Daha Derinlemesine Yorumlama (Bölüm 8'in Devamı)

Yürütme planları (Execution Plans), optimizleyicinin sorguyu çalıştırmak için izleyeceği yol haritasıdır. Performans sorunlarını tespit etmek için bu planları daha detaylı incelemek gerekir:

  • Operatörler ve Maliyetleri: Plandaki her simge bir "operatör"ü temsil eder (Tablo Tarama, İndeks Arama, Birleştirme Operatörleri, Sıralama vb.). Her operatörün tahmini maliyeti (CPU, I/O, bellek) vardır. Yüksek maliyetli operatörler potansiyel darboğazlardır. Özellikle beklediğinizden yüksek maliyetli veya beklenmedik operatörlere dikkat edin (örneğin, indeks kullanılması gereken yerde Tam Tarama görmek).
  • Satır Sayıları: Plan, her adımda işlenen satır sayısını gösterir (Tahmini ve Gerçek satır sayısı - eğer varsa). Tahmini ile gerçek satır sayısı arasındaki büyük tutarsızlıklar, eski istatistiklere veya yanlış tahminlere işaret edebilir ve optimizleyicinin kötü bir plan seçmesine neden olabilir.
  • Uyarılar (Warnings): Bazı DBMS'ler yürütme planlarında uyarılar gösterebilir (örneğin, indeks eksikliği, tür dönüşümü, yüksek bellek kullanımı). Bu uyarılar, performans sorunlarının kaynağı hakkında önemli ipuçları verir.
Yaygın Performans Darboğazları

Sorguların yavaş çalışmasının ardında çeşitli nedenler yatabilir:

  1. Kilitleme (Locking) ve Engelleme (Blocking):
    • Nedir?: Veritabanı işlemleri (transactions) veri tutarlılığını sağlamak için verilere kilit koyar. Bir işlem bir kaynağa kilit koyduğunda, başka bir işlemin aynı kaynağa erişimi kilit serbest bırakılana kadar engellenebilir (blocking). Birden fazla işlemin birbirinin kilitlediği kaynağı beklemesi durumunda ise kilitlenme (deadlock) oluşur (Bölüm 5).
    • Tespit ve Çözüm: DBMS'in sağladığı izleme araçları (sp_who2 veya Dinamik Yönetim Görünümleri - DMV'ler - SQL Server'da; pg_locks PostgreSQL'de; SHOW PROCESSLIST MySQL'de) ile kimin kimi engellediğini görebilirsiniz. Çözümler arasında işlem sürelerini kısaltmak, transaction isolation seviyelerini ayarlamak, sorguları optimize ederek kilit süresini azaltmak bulunur.
  2. Aşırı Disk G/Ç (Excessive Disk I/O):
    • Nedir?: Veritabanının veriyi bellekten okumak yerine sürekli diskten okuması. Bu en yavaş işlemdir.
    • Neden?: Eksik veya uygun olmayan indeksler, indeks parçalanması (Bölüm 17), belleğin yetersiz olması, sorguların gereğinden fazla veri okuması.
    • Çözüm: Doğru indekslemeyi sağlayın, indeksleri ve istatistikleri düzenli güncelleyin (Bölüm 13), bellek kaynaklarını artırmayı düşünün, sorguları sadece gerekli sütunları çekecek ve gereksiz tablo taramalarından kaçınacak şekilde optimize edin.
  3. CPU Yoğun Sorgular (CPU-Bound Queries):
    • Nedir?: Sorgunun veri okuma/yazma yerine yoğun hesaplama (sıralama, gruplama, karmaşık fonksiyonlar) yaptığı durumlar.
    • Neden?: Büyük veri kümeleri üzerinde sıralama/gruplama, karmaşık fonksiyonların kullanımı, veri tipi dönüşümleri.
    • Çözüm: Uygun indeksler kullanarak sıralama/gruplama maliyetini azaltın, sorguyu daha basit adımlara bölün (CTEs veya alt sorgular - Bölüm 7), karmaşık hesaplamaları uygulama katmanına taşımayı düşünün, sunucu CPU kaynaklarını kontrol edin.
  4. Ağ Gecikmesi (Network Latency):
    • Nedir?: Uygulama sunucusu ile veritabanı sunucusu arasındaki iletişimdeki gecikme.
    • Neden?: Ağ altyapısı sorunları, sunucuların coğrafi olarak uzak olması, ağ trafiği.
    • Çözüm: Ağ bağlantısını optimize edin, sunucuları fiziksel olarak birbirine yakınlaştırmayı düşünün, ağ trafiğini azaltmak için Saklı Yordamlar (Bölüm 10) kullanmayı değerlendirin.
Sorgu İpuçları (Query Hints - Dikkatli Kullanılmalı!)

Bazı DBMS'ler (SQL Server gibi) optimizleyiciye belirli bir planı veya erişim yöntemini kullanması için "ipuçları" (hints) vermenize olanak tanır (OPTION (expression) yan tümcesi veya sorgu içinde yorum satırı şeklinde).

Kod:
-- SQL Server örneği: Birleştirme tipini belirtmekSELECT *FROM TabloA aINNER JOIN TabloB b ON a.ID = b.IDOPTION (HASH JOIN); -- Optimizleyiciye HASH JOIN kullanmasını söyle

-- SQL Server örneği: Belirli bir indeksi kullanmasını önermekSELECT *FROM TabloAdi WITH (INDEX(IndexAdi))WHERE Sutun = 'Deger';

UYARI: Sorgu ipuçları genellikle kesinlikle önerilmez. Optimizleyici genellikle en iyi planı kendi başına bulur. İpuçları kullanmak, veritabanı veya veri dağılımı değiştiğinde sorgunun performansını ciddi şekilde düşürebilir ve bakımı zorlaştırır. Sadece çok spesifik, nadir durumlarda ve performans testi yapılarak kullanılmalıdır. Optimizleyicinin neden beklediğiniz planı seçmediğini anlamak ve temel nedeni (eksik indeks, eski istatistikler vb.) gidermek çok daha iyi bir yaklaşımdır.

İstatistiklerin Önemi (Tekrar!)

Optimizleyicinin akıllı kararlar alabilmesi için tablolarınızın ve indekslerinizin içeriği hakkında güncel istatistiklere ihtiyacı vardır. İstatistikleri düzenli olarak güncellemek (UPDATE STATISTICS - Bölüm 13) performans ayarlamasının temel bir parçasıdır.

Performans Profilleme Araçları

Çoğu DBMS, çalışan sorguları ve bunların kaynak tüketimini izlemek için gelişmiş profil oluşturma araçları sunar (SQL Server Profiler/Extended Events, MySQL Performance Schema, PostgreSQL pg_stat_statements). Bu araçlar, hangi sorguların en yavaş çalıştığını, ne kadar kaynak tükettiğini ve performans sorunlarının kök nedenini bulmanıza yardımcı olabilir.

Bu bölümde, sorgu yürütme planlarını daha derinlemesine yorumlama ve yaygın performans darboğazlarını giderme yaklaşımlarını ele aldık. Performans ayarlaması sürekli bir öğrenme ve deneme sürecidir.

Veritabanı sistemlerinin sürekliliği ve kesintisiz hizmet vermesi de kritik öneme sahiptir. Felaket kurtarma (Bölüm 12) bir yönüyken, yüksek erişilebilirlik (High Availability - HA) kesinti süresini minimuma indirmeyi hedefler.

Bir sonraki bölümde, veritabanı sistemlerinin yüksek erişilebilirliğini sağlamak için kullanılan temel prensiplere ve teknolojilere göz atabiliriz.


 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri