Yavaş Veritabanı Sorguları Nasıl Tespit Edilir?

Web sitenizin yönetim panelinde belirli işlemleri yaparken (örneğin bir yazı yayımlarken, bir ürünü güncellerken veya bir eklenti ayarını kaydederken) anlamsız bir yavaşlama veya “takılma” hissi yaşadınız mı? Kullanıcılarınız sayfalar arasında gezerken sitenin geç yüklendiğinden mi şikayetçi? Bu tür performans sorunlarının arkasındaki en yaygın sebeplerden biri, verimli çalışmayan veya çok uzun süren veritabanı sorgularıdır.

Neyse ki, bu performans darboğazlarını tespit etmek için sunucunuzun derinliklerinde saklı güçlü bir araca sahibiz: MySQL Yavaş Sorgu Kaydı (Slow Query Log).

Bu yazıda, yavaş sorgu kaydını nasıl aktif hale getireceğinizi ve web sitenizin performansını olumsuz etkileyen veritabanı işlemlerini nasıl tespit edeceğinizi adım adım anlatacağız.

MySQL Yavaş Sorgu Kaydı (Slow Query Log) Nedir?

Yavaş Sorgu Kaydı, MySQL veya MariaDB veritabanı sunucunuzda, belirlediğiniz bir zaman sınırını (örneğin 2 saniye) aşan tüm SQL sorgularını bir metin dosyasına kaydetme özelliğidir. Bu kayıt dosyası, hangi sorgunun, ne zaman ve ne kadar süreyle çalıştığını analiz etmenizi sağlayarak performans sorunlarının kaynağını bulmanıza yardımcı olur.

Adım 1: Yavaş Sorgu Kaydını Aktif Etme

Bu işlemi yapabilmek için sunucunuza SSH üzerinden erişiminizin olması gerekmektedir.

  1. Sunucunuza SSH ile Bağlanın:
    Terminal veya Putty gibi bir araçla sunucunuza bağlanın.
  2. MySQL Yapılandırma Dosyasını Bulun ve Açın:
    Yapılandırma dosyasının konumu sunucu kurulumunuza göre değişiklik gösterebilir. Yaygın yollar şunlardır:
  • /etc/mysql/my.cnf
  • /etc/mysql/mysql.conf.d/mysqld.cnf
  • /etc/my.cnf
  • MariaDB için: /etc/mysql/mariadb.conf.d/50-server.cnf

Dosyayı bir metin düzenleyici ile açın.

sudo nano /etc/mysql/my.cnf
  1. Gerekli Parametreleri Ekleyin:
    Dosyanın içinde [mysqld] bölümünü bulun ve altına aşağıdaki satırları ekleyin:
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
  • slow_query_log = 1: Bu satır, yavaş sorgu kaydı özelliğini aktif eder (0 kapalı, 1 açık demektir).
  • slow_query_log_file: Yavaş sorguların kaydedileceği dosyanın yolunu belirtir.
  • long_query_time = 2: “Yavaş” olarak kabul edilecek sorgu süresini saniye cinsinden belirler. Sitenizdeki takılmalar çok belirginse 2 saniye iyi bir başlangıç noktasıdır.
  1. Dosyayı Kaydedin ve Veritabanı Servisini Yeniden Başlatın:
    Yaptığınız değişikliklerin geçerli olması için MySQL veya MariaDB servisini yeniden başlatmanız gerekir.
# Ubuntu/Debian için
sudo systemctl restart mysql

# CentOS/RHEL veya MariaDB için
sudo systemctl restart mariadb

Adım 2: Sorunu Tekrarlayın ve Kayıtları İnceleyin

Yapılandırmayı tamamladığınıza göre, şimdi analiz zamanı!

  1. Yavaşlığa Neden Olan İşlemi Tekrarlayın:
    Web sitenize gidin ve yavaşlığa neden olan işlemi tekrar yapın. Örneğin, sitenizde bir yazıyı yayımlarken sorun yaşıyorsanız, yeni bir yazı yayımlayın ve işlemin takılmasını gözlemleyin.
  2. Log Dosyasını Canlı Olarak İzleyin:
    İşlem devam ederken veya bittikten hemen sonra sunucunuza dönün ve aşağıdaki komutu çalıştırarak log dosyasını gerçek zamanlı olarak takip edin:
sudo tail -f /var/log/mysql/mysql-slow.log

Adım 3: Kayıtları Yorumlama ve Kaynağı Belirleme

tail komutunu çalıştırdığınızda, terminal ekranınıza yavaş sorgular düşmeye başlayacaktır. Kayıtların içinde şuna benzer bilgiler göreceksiniz:

  • # Time: Sorgunun ne zaman çalıştırıldığı.
  • # User@Host: Sorguyu hangi veritabanı kullanıcısının çalıştırdığı.
  • # Query_time: Sorgunun tamamlanmasının kaç saniye sürdüğü.
  • Ve en önemlisi, uzun süren SQL isteğinin kendisi (örn: UPDATE wp_postmeta SET meta_value = …, DELETE FROM wp_options WHERE option_name LIKE … vb.).

Sorgunun içeriği, sorunun kaynağı hakkında size çok değerli ipuçları verecektir:

  • Eklenti veya Tema Tabloları: Eğer sorgu wp_some_plugin_table gibi bir eklentiye ait özel bir tablo üzerinde çalışıyorsa, sorunun kaynağını doğrudan buldunuz demektir.
  • WordPress Çekirdek Tabloları: wp_options, wp_postmeta veya wp_posts gibi çekirdek tablolarda çalışan sorgular genellikle bir tema veya eklentinin verimsiz bir işlem yapmasından kaynaklanır. Sorgudaki meta_key veya option_name gibi alanlara bakarak hangi eklentinin bu kaydı kullandığını tahmin edebilirsiniz.

Uzun süren SQL isteklerini bu şekilde tespit etmek, sunucu sağlığını ve performansını yönetmenin en temel adımlarından biridir. Web sitenizin hızını olumsuz etkileyen bu darboğazları belirlemek, optimizasyon sürecinin ilk ve en kritik aşamasıdır. HELIAN.work olarak, sunucularınızın en yüksek verimlilikle çalışmasını sağlamak için bu ve benzeri analizler gerçekleştiriyoruz. Kapsamlı sunucu ve veritabanı optimizasyonları ile web sitenizin ziyaretçilerinize kesintisiz ve hızlı bir deneyim sunmasına yardımcı oluyoruz.

Blog yazısını puanlayın!
[Toplam: 1 Ortalama: 5]

Blog Yazıları

Dijital Pazarlama, performans ve dönüşüm odaklı güncel içerikler

Performans Değerleri

LCP
-
Yükleniyor
CLS
-
Yükleniyor
PageSpeed Skoru
-
-
-
Açıklama:
-