VDS Server’da MariaDB Performans Ayarları: Buffer ve Query Tuning

MariaDB, güçlü ve açık kaynaklı bir veritabanı sistemidir. Ancak yüksek trafikli uygulamalarda varsayılan ayarlarla sınırlı performans sergileyebilir. VDS Server üzerinde barındırılan projeler için performansı optimize etmek, hem donanım kaynaklarından maksimum verimi almak hem de uygulama gecikmelerini minimize etmek adına kritik önem taşır. Bu yazıda, özellikle buffer yönetimi ve query tuning konularına odaklanacağız.


Buffer Ayarlarıyla Bellek Yönetimi

MariaDB, disk erişimini azaltmak için RAM üzerinde çalışan çeşitli buffer yapıları kullanır. Doğru yapılandırılmış buffer’lar, sorgu sürelerini ciddi anlamda düşürür.

innodb_buffer_pool_size

Bu ayar, InnoDB motoru kullanan tabloların veri ve index yapılarının bellekte saklanacağı alanı belirler. VDS sunucunuzdaki toplam RAM’in yaklaşık %70–80’i bu alana ayrılabilir.

innodb_buffer_pool_size = 4G

RAM’iniz 8 GB ise, 4–6 GB arasında bir değer idealdir.

query_cache_size ve query_cache_type

Query cache, aynı sorgulara verilen cevapların önbellekte saklanmasını sağlar. Ancak, yüksek yazma yoğunluklu uygulamalarda performansı düşürebilir. Bu nedenle sadece okuma ağırlıklı sistemlerde aktif edilmesi önerilir.

query_cache_type = 1
query_cache_size = 128M

Yüksek trafikli, sık güncellenen uygulamalarda bu özelliği kapatmak daha verimlidir.

tmp_table_size ve max_heap_table_size

Geçici tablolar RAM’de tutulabilir. Bu ayarları artırmak, disk yerine bellekte geçici tablo oluşturulmasını sağlar.

tmp_table_size = 256M
max_heap_table_size = 256M

Bu değerlerin eşit olması önemlidir. Aksi durumda, küçük olan sınır dikkate alınır.


Query Tuning ile Sorgu Optimizasyonu

Buffer ayarları kadar önemli bir diğer konu da sorguların verimli yazılmasıdır. Yanlış indeksleme veya karmaşık JOIN işlemleri, CPU ve disk kullanımını artırır.

EXPLAIN Komutu Kullanımı

Sorguların hangi yollarla işlendiğini analiz etmek için EXPLAIN kullanılır. Bu sayede:

  • Hangi tabloların tam tarandığı,
  • Hangi index’lerin kullanıldığı,
  • Sorgunun tahmini satır sayısı gibi bilgiler öğrenilebilir.
EXPLAIN SELECT * FROM siparisler WHERE kullanici_id = 1234;

Eğer type değeri “ALL” çıkıyorsa, tablo tam taranıyordur. Bu genellikle index eksikliği anlamına gelir.

Index Kullanımı

Doğru sütunlara index eklemek, özellikle WHERE, JOIN ve ORDER BY içeren sorgularda performansı belirgin şekilde artırır.

CREATE INDEX idx_kullanici_id ON siparisler(kullanici_id);

Ancak çok fazla index kullanmak da yazma işlemlerini yavaşlatabilir. Bu nedenle dikkatli planlama şarttır.

Slow Query Log

Yavaş çalışan sorguların tespiti için slow_query_log özelliği kullanılabilir.

slow_query_log = 1
long_query_time = 2

2 saniyeden uzun süren sorgular log’a yazılır. Bu sorgular analiz edilerek optimize edilmelidir.

Vps.com.tr