Performans Optimizasyonu ve İzleme
Bir veritabanını hızlandırmanın ilk adımı sunucu büyütmek değil, hangi sorgunun toplam süreyi tükettiğini ölçmektir.
Performans sorunlarını ölçerek çözüyoruz
Yavaşlığın nedenini tahmin etmeyiz. İzleme altyapısını kurar, yavaş sorguları analiz eder ve her iyileştirmeyi öncesi–sonrası ölçümle raporlarız.
İzleme altyapısı
Percona Monitoring and Management (PMM) ve Grafana kurulumunu yapıyor, veritabanı ve işletim sistemi metriklerini tek panelde toplayıp anlamlı eşiklerle alarm kuruyoruz.
Yavaş sorgu analizi
Slow query log kayıtlarını parmak izine (fingerprint) göre gruplayarak toplam süreyi hangi sorgu desenlerinin tükettiğini çıkarıyoruz. Analizi kendi ürünümüz GoFast ile yapıyoruz.
Sorgu ve indeks optimizasyonu
Yürütme planlarını (execution plan) inceleyerek eksik indeksleri, gereksiz tam tablo taramalarını ve yanlış birleştirme (join) sıralarını tespit ediyor, düzeltmeleri ölçülebilir etkileriyle raporluyoruz.
Yapılandırma ve kapasite
Bellek ayrımı, bağlantı havuzu, InnoDB ve WAL parametreleri ile depolama katmanını mevcut iş yüküne göre düzenliyor, büyüme senaryolarına göre kapasite planı çıkarıyoruz.
Performans çalışması ölçümle başlar
Yavaşlayan bir veritabanında ilk refleks genellikle donanım kaynaklarını artırmaktır. Kaynak artırımı bazı senaryolarda geçici rahatlama sağlar; ancak kök nedeni ortadan kaldırmadığı için maliyeti kalıcı hâle getirir ve sorunun daha büyük ölçekte tekrar etmesine zemin hazırlar.
Sahada karşılaştığımız yavaşlamaların önemli bölümü birkaç sorgu deseninden
kaynaklanır. Bir sistemde toplam sorgu süresinin üçte ikisini tek bir SELECT
deseninin tükettiğini ölçmek, hangi sunucuyu büyüteceğinizi tartışmaktan çok
daha hızlı sonuç verir. Çalışmalarımızı bu nedenle ölçüm üzerine kuruyoruz.
İzleme altyapısı: PMM ve Grafana
Ölçüm yapabilmek için önce veri gerekir. Percona Monitoring and Management (PMM) kurulumunu yapıyor, MySQL ve PostgreSQL metriklerini işletim sistemi metrikleriyle birlikte tek panelde topluyoruz. PMM’nin Prometheus tabanlı mimarisi, metriklerin sorgulanabilir biçimde saklanmasını ve olay sonrası incelemelerde geriye dönük analiz yapılmasını sağlar.
Grafana panellerini iş yükünüze göre düzenliyor, alarmları anlamlı eşiklerle kuruyoruz. Aşırı hassas ayarlanmış bir alarm sistemi, kısa sürede görmezden gelinmeye başlanır; alarm kurgusunun amacı bildirim üretmek değil, müdahale gerektiren durumu ayırt etmektir.
Halihazırda Prometheus, Zabbix veya benzeri bir izleme altyapısı işletiyorsanız veritabanı metriklerini mevcut sisteminize entegre ediyoruz.
Yavaş sorgu analizi: GoFast
Slow query log, performans sorunlarının en zengin veri kaynağıdır; ancak ham hâliyle okunabilir değildir. Binlerce satırlık bir kayıt dosyasında aynı sorgu yüzlerce kez, her seferinde farklı parametrelerle görünür.
Yavaş sorgu kayıtlarının analizinde kendi geliştirdiğimiz GoFast Enterprise ürününü kullanıyoruz.
GoFast Enterprise, MySQL yavaş sorgu kayıtlarını (slow query log) Go ile
DuckDB’ye aktarır ve analitik olarak sorgulanmasını sağlar. Kayıt bir kez
işlenir, sonraki her soru depodan yanıtlanır. Aktarılan kayıtların hash’i
tutulur ve mükerrer kayıt oluşmaz. Yüzdelik (percentile) değerleri kesin
hesaplanır. Tek çalıştırılabilir dosya olarak,
bağımlılık olmadan ve Docker içinde çalışır. Rapor biçimi pt-query-digest
ile uyumludur.
Web arayüzü birden fazla sunucunun kaydını tek panelde gösterir. Kayıtlar kullanıcı, sunucu, veritabanı ve tablo kırılımında incelenir. Aynı kırılımlar komut satırı raporlarında da alınır. Bir sorgu imzasının (fingerprint) zaman içindeki seyri grafikle izlenir. Günlük ve haftalık görünümlerle dönemler karşılaştırılır.
Aracın veritabanına bağlanmasına gerek yoktur. Analiz için üretim sistemine erişim vermeniz gerekmez, kayıt dosyalarını iletmeniz yeterlidir.
Ayrıştırma katmanı MIT lisanslı açık kaynak gofast-cli olarak GitHub’da yayımlanır . GoFast Enterprise müşteri altyapısına kurulur ve sözleşme kapsamında sunulur. Web arayüzü ve gofast-mcp sunucusu lisansa dahildir.
Yapay zekâ destekli analiz
Performans analizinde son yıllarda değişen şey, verinin kendisi değil, veriye soru sorma biçimidir. Yavaş sorgu korpusunu ve metrik geçmişini büyük dil modellerine açtığımızda, “dün saat 14:00 ile 15:00 arasında ne değişti” gibi bir sorunun yanıtı dakikalar içinde alınabiliyor.
Bu amaçla iki MCP (Model Context Protocol) sunucusu geliştirdik:
- gofast-mcp, GoFast Enterprise’ın ürettiği yavaş sorgu korpusunu dil modellerine açar.
En kötü sorguları, sıklıkla ağırlıklandırılmış etki skorunu, tablo bazında
kilit çekişmesini ve
WHEREkoşullarının indeks kümelenmesi açısından dağılımını sorgulayabilen araçlar sunar. Olay analizinde kullandığımız bileşen, bir zaman aralığını kendi öncesindeki referans dönemle karşılaştırıp sorguları yavaşlama oranına göre sıralar. - PMM Prometheus MCP, PMM’in topladığı metrikleri aynı biçimde sorgulanabilir hâle getirir. Bir olay penceresindeki tüm doygunluk sinyallerini — yük ortalaması, CPU dağılımı, iowait, bellek, disk gecikmesi ve kuyruk derinliği, ağ, MySQL bağlantı ve QPS metrikleri — tek çağrıda tarar ve her metriğin tepe değerini kendi öncesindeki medyanla karşılaştırır.
İki bileşen birlikte kullanıldığında, bir performans olayının sorgu tarafındaki ve altyapı tarafındaki izleri aynı anda incelenebilir. Her iki bileşen de şu aşamada sözleşmeli müşterilerimize sunulmaktadır.
Arşivleme de bir performans çalışmasıdır
Sürekli büyüyen tablolar, indeksler bellekte tutulamaz hâle geldiğinde performansı kademeli olarak düşürür. Sorgu optimizasyonuyla kazanılan süre, tablo hacmi arttıkça geri kaybedilir.
Aktif olarak kullanılmayan veriyi üretim sisteminden çıkarmak, çoğu senaryoda tek başına sorgu optimizasyonundan daha kalıcı bir kazanç sağlar. İlişkisel veri arşivleme için geliştirdiğimiz GoArchive, kayıtları doğrulayarak taşır ve siler.
İlgili hizmetler
Denetim kaydının performansa etkisi ve şifrelemenin işlemci maliyeti birlikte değerlendirilir: Veritabanı Güvenliği ve KVKK Teknik Tedbirleri
Yedekleme penceresinin üretim yüküne etkisi de performans çalışmasının kapsamındadır: Veritabanı Yedekleme ve Kurtarma
Replikasyon gecikmesi ve düğümler arası yük dağılımı cluster tasarımıyla birlikte değerlendirilir: Yüksek Erişilebilirlik ve Cluster Çözümleri
GoFast araç ailesi
Performans analizinde kullandığımız araçları kendimiz geliştiriyoruz.
GoFast CLI — açık kaynak
MySQL slow query log ayrıştırıcı ve analiz aracı. MIT lisanslı, tek binary, GitHub üzerinde herkese açık.
GoFast Enterprise
Aynı çekirdek üzerine kurulu React tabanlı web arayüzü, çok sunuculu kurulum ve kurumsal dağıtım desteği. Sözleşme kapsamında sunulur.
GoArchive
İlişkili MySQL verisini doğrulayarak arşivleyen açık kaynak aracımız. Büyüyen tabloların performans etkisini kalıcı olarak azaltır.
Veritabanı destek hizmetlerimiz
Performans çalışmasını yürüttüğümüz veritabanlarında destek ve danışmanlık hizmetlerimizin tamamını sunuyoruz.
