MySQL veya MariaDB’de Yavaş Sorgu Günlüğü Nasıl Etkinleştirilir
Veritabanları büyüdükçe ve web uygulamalarının temel bir bileşeni haline geldikçe, performans ayarlaması kritik hale gelir. MySQL® ve MariaDB’de performans darboğazlarını teşhis etmenin en etkili yollarından biri yavaş sorgu günlüğünü etkinleştirmektir. Bu günlük, yürütülmesi çok uzun süren sorguların belirlenmesine yardımcı olarak bunları optimize etmenize ve veritabanınızın genel performansını artırmanıza olanak tanır.
Bu kılavuzda, yavaş sorgu günlüğünün ne olduğunu, neden önemli olduğunu ve MySQL ve MariaDB’de nasıl etkinleştirilip yapılandırılacağını açıklayacağız.
Yavaş Sorgu Günlüğü nedir?
Yavaş sorgu günlüğü , yürütülmesi belirli bir süreden (eşik) daha uzun süren SQL sorgularını kaydeden bir günlük dosyasıdır. Varsayılan olarak bu eşik 10 saniye olarak ayarlanmıştır, ancak özelleştirilebilir. Bu süre sınırını aşan sorgular, sorgunun ne kadar sürdüğü ve yürütme tarihi ve saati gibi bilgilerle birlikte günlüğe kaydedilir. Bu, geliştiriciler ve veritabanı yöneticileri için yavaş çalışan sorguları belirleyip optimize ederek veritabanı performansını artırmaya yardımcı olan önemli bir araçtır.
Yavaş Sorgu Günlüğünü Neden Etkinleştirmelisiniz?
Yavaş sorgu günlüğünü etkinleştirmek yardımcı olur:
- Performans Darboğazlarını Belirleyin: Yavaş sorgular uygulamanızın performansını önemli ölçüde etkileyebilir. Günlük, bu sorunlu sorguları belirlemenize yardımcı olur.
- Optimizasyon: Yavaş sorguları inceleyerek dizinlerin, sorgu yeniden yapılandırmanın veya önbelleğe almanın performansı artırabileceği alanları belirleyebilirsiniz.
- Sorgu Performansını İzleme: Sürekli performans ayarlaması için yavaş sorgu günlüğü, sorgu yürütme sürelerinin zaman içinde nasıl değiştiğine dair içgörüler sağlar.
MySQL veya MariaDB’de Yavaş Sorgu Günlüğü Nasıl Etkinleştirilir
Yavaş sorgu günlüğünü etkinleştirmek, yapılandırma dosyasını değiştirmeyi ve bazı ayarları doğrudan MySQL/MariaDB örneğinde ayarlamayı içerir. İşte adım adım nasıl yapılacağı.
Adım 1: MySQL/MariaDB Yapılandırma Dosyasına Erişim
MySQL ve MariaDB yapılandırma dosyaları genellikle şu adreste bulunur:
- MySQL için: /etc/my.cnf veya /etc/mysql/my.cnf
- MariaDB için: /etc/my.cnf.d/server.cnf veya /etc/mysql/mariadb.cnf
Yapılandırma dosyasını açmak için tercih ettiğiniz metin düzenleyicisini kullanın. Örneğin, nano ile aşağıdaki komutu çalıştırabilirsiniz:
sudo nano /etc/my.cnf
Adım 2: Yapılandırma Dosyasını Değiştirin
Yapılandırma dosyasında [mysqld] bölümü. Eğer mevcut değilse, oluşturabilirsiniz. Yavaş sorgu günlüğünü etkinleştirmek için aşağıdaki satırları ekleyin veya değiştirin:
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
- slow_query_log = 1: Yavaş sorgu günlüğünü etkinleştirir.
- slow_query_log_file: Yavaş sorgu günlüğü dosyasının kaydedileceği konumu belirtir. Özel bir yol ve dosya adı belirleyebilirsiniz, ancak dizinin MySQL/MariaDB için uygun yazma izinlerine sahip olduğundan emin olun.
- long_query_time = 2: Neyin “yavaş” sorgu olarak nitelendirileceğine ilişkin eşiği ayarlar. Bu durumda, 2 saniyeden uzun süren herhangi bir sorgu günlüğe kaydedilecektir. Bu değeri performans ihtiyaçlarınıza göre ayarlayabilirsiniz.
Adım 3: MySQL/MariaDB Hizmetini Yeniden Başlatın
Değişiklikleri yapılandırma dosyasına kaydettikten sonra, değişikliklerin etkili olması için MySQL veya MariaDB hizmetini yeniden başlatın.
- Systemd kullanan sistemler için:
sudo systemctl restart mysqld # For MySQL
sudo systemctl restart mariadb # For MariaDB
- Init.d kullanan sistemler için:
sudo service mysqld restart # For MySQL
sudo service mariadb restart # For MariaDB
Adım 4: Yavaş Sorgu Günlüğünün Etkinleştirildiğini Doğrulama
Yavaş sorgu günlüğünün etkin olduğunu doğrulamak için, MySQL/MariaDB istemcisinde oturum açın:
mysql -u root -p
Oturum açtıktan sonra aşağıdaki komutu çalıştırın:
SHOW VARIABLES LIKE 'slow_query_log';
Şuna benzer bir şey görmelisiniz:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| slow_query_log | ON |
+-----------------+-------+
Bu, yavaş sorgu günlüğünün etkin olduğunu doğrular.
Adım 5: Yavaş Sorgu Günlüğünü Analiz Etme
Yavaş sorgu günlüğü, sorguları yapılandırmada belirtilen dosyaya kaydeder. Yavaş sorgu günlüğünün içeriğini görüntülemek için less, cat veya tail gibi bir metin görüntüleyici kullanabilirsiniz:
sudo less /var/log/mysql/slow-query.log
Aşağıdakine benzer girişler göreceksiniz:
# Time: 2024-10-11T12:45:23.489187Z
# User@Host: root[root] @ localhost []
# Query_time: 4.561529 Lock_time: 0.000115 Rows_sent: 1 Rows_examined: 50000
SET timestamp=1697030723;
SELECT * FROM large_table WHERE column = 'value';
Günlük, sorgu yürütme süresi, kilitleme süresi, gönderilen ve incelenen satır sayısı ve gerçek SQL sorgusu gibi ayrıntıları sağlar.
Yavaş Sorgu Günlüğü için İsteğe Bağlı Yapılandırma
Yavaş sorgu günlüğünü özel ihtiyaçlarınıza göre uyarlamak için ayarlayabileceğiniz ek yapılandırma seçenekleri vardır.
1. Dizinler Olmadan Günlük Sorguları
Ayrıca, genellikle performans sorunlarının kaynağı olan dizinleri kullanmayan sorgular için günlüğe kaydetmeyi de etkinleştirebilirsiniz. MySQL/MariaDB yapılandırmanıza aşağıdaki satırı ekleyin:
log_queries_not_using_indexes = 1
Bu, bir dizin kullanmayan tüm sorguları günlüğe kaydederek kötü performans gösteren sorguları belirlemenize ve optimize etmenize yardımcı olur.
2. Günlük Dosyası Boyutunu Sınırla
Yavaş sorgu günlüğünün çok büyümesini önlemek için günlükleri döndürebilir veya boyutlarını sınırlayabilirsiniz. Linux sistemlerinde, MySQL/MariaDB günlük dosyalarının boyutunu ve rotasyonunu yönetmek için logrotate kullanabilirsiniz.
İşte /etc/logrotate.d/mysql için temel bir örnek:
/var/log/mysql/slow-query.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
postrotate
/usr/bin/systemctl reload mysql >/dev/null 2>&1 || true
endscript
}
Bu yapılandırma günlük dosyasını günlük olarak döndürür ve son yedi günlüğü tutarak yavaş sorgu günlüğünün çok fazla disk alanı tüketmemesini sağlar.
Adım 6: Yavaş Sorgu Günlüğünü Devre Dışı Bırakma
Yavaş sorgularınızı belirledikten ve optimize ettikten sonra, kaynakları korumak için yavaş sorgu günlüğünü devre dışı bırakmak isteyebilirsiniz. Bunu yapmak için yapılandırma dosyasını tekrar düzenleyin ve slow_query_log değerini 0 olarak ayarlayın:
[mysqld]
slow_query_log = 0
Değişiklikleri uygulamak için MySQL veya MariaDB hizmetini yeniden başlatın.
Sonuç
Yavaş sorgu günlüğü, MySQL ve MariaDB’de veritabanı performans ayarlaması için paha biçilmez bir araçtır. Yürütülmesi çok uzun süren sorguları günlüğe kaydederek darboğazları belirleyebilir ve sorgu performansını optimize edebilirsiniz. İster küçük bir veritabanını ister büyük ölçekli bir kurumsal uygulamayı yönetiyor olun, yavaş sorgu günlüğünü etkinleştirmek veritabanlarınızın hızlı ve verimli kalmasını sağlamanın proaktif bir yoludur.
Bu kılavuzdaki adımları izleyerek, MySQL veya MariaDB veritabanı performansınızı etkili bir şekilde optimize etmek için yavaş sorgu günlüğünü etkinleştirebilmeli, yapılandırabilmeli ve analiz edebilmelisiniz.