Mysql Sunucu Optimizasyonu

ilovemysqlPhp ile beraber birçok web scriptinin vazgeçilmez gereksinimi MySQL sunucusudur.  Günümüzde, birçok webhosting sunucusunda , en fazla işlem yükü getiren servis, hiç şüphesiz MySQL servisidir. Özellikle I/O noktasında sunuculara ciddi disk yükleri getirmektedir. Bu sebep ile MySQL servisinin yoğun çalıştığı sunucularda, özellikle disk okuma ve yazma hızlarının ciddi kapasitelerde olması önerilir. Bu tip servislerin optimizasyonunda ve performans noktasında ilk ve en önemli unsur donanım özellikleri olmakta.

Buna karşın, sadece iyi donanım bu gibi servislerin hızlı ve stabil çalışmasını sağlayamamakta.  Servislerin çalışma parametreleri, performanslarını önemli derecede etkilemekte. Her sunucu, üzerinde çalışan uygulamanın karakterine göre, farklı parametrelere gereksinim duyabilir. Şüphesiz MySQL servisine ayar yapabilmek için , bu konuda bilgi sahibi olmak gerekmekte.  Fakat bu işi kısa yoldan çözebilmek için mümkün bazı küçük ipuçlarını sizlerle paylaşmak isterim.

MySQL servisi, ana ayar dosyası olarak /etc/my.cnf dosyasını kullanmakta. Bu dosya içinde, MySQL in çalışmasına etki eden tüm değişkenler tanımlıdır. Sunucumuzun yüküne ve kapasitesine göre, kurulum esnasında gelen bazı hazı ayar şablonları aslında sisteminizde mevcuttur.

root@localhost[~]# ls -an /usr/share/mysql/*.cnf
-rwxr-xr-x 1 0 0  4972 Feb 24 01:14 /usr/share/mysql/my-huge.cnf*
-rwxr-xr-x 1 0 0 20970 Feb 24 01:14 /usr/share/mysql/my-innodb-heavy-4G.cnf*
-rwxr-xr-x 1 0 0  4948 Feb 24 01:14 /usr/share/mysql/my-large.cnf*
-rwxr-xr-x 1 0 0  4955 Feb 24 01:14 /usr/share/mysql/my-medium.cnf*
-rwxr-xr-x 1 0 0  2526 Feb 24 01:14 /usr/share/mysql/my-small.cnf*

Bu dosylardan, sunucunuza uyanı, /etc/my.cnf ile değiştirmeniz, kısa yoldan birçok değişkeni tanımlamanızı sağlayacaktır. Genellikle 4GB ve üzeri RAM bulunan sunucularda my-huge.cnf  uygun görünmektedir.

Bir diğer konfigürason yardımcısı, MySQL Performance Tuning Primer Script adlı küçük bir scripttir. Bu scripti sunucunuza indirip çalıştırdığınızda, size çalışan servise ait istatistikler ile ayar dosyanız arasındaki uyumlu ve uyumsuz noktaları listeleyecektir.

wget http://day32.com/MySQL/tuning-primer.sh
sh tuning-primer.sh

Kırmızı ile belirtilen noktalar, servis istatistikleri ile ayar dosyası arasındaki sorunlu noktaları göstermekte ve önerilerde bulunmaktadır. Bu önerilere göre ayar dosyanızı düzenleyebilirsiniz.

Bunlara ek olarak, bazı performans arttırıcı önerilerim mevcut. Örneğin, eğer geriye dönük data kurtarma işlemi yapmayacaksanız, ayar dosyanızdaki --log-bin parametresini kaldırmalısınız. Bu parametre, binary formatında sql işlemlerini loglamakta. Bu işlem, olası verikayıplarında, geriye dönük verilerin kurtarılmasını sağladığı gibi ciddi bir performans yükü getirmekte sunuculara.  Ayrıca query_cache_size  ve table_cache değerlerini, sunucunuzun limitleri elverdiği kadar yüksek tutmanız, disk yükünü hafifletecektir. MySQL kaynaklı disk yükünü hafifletebilmenin bir diğer yolu da, MySQL tarafından tutulan geçici dosyaların , diskten ziyade RAM de tutulmasını sağlamaktır. Bunu sağlayabilmek için de tmp_table_size ve max_heap_table_size değerlerinin yükseltilmesi iyi olacaktır.

Post a Comment

You must be logged in to post a comment.