:::: MENU ::::
Posts tagged with: tuning

Mysql’de Sorguların Hızlandırılması

Veritabanı olarak MySql kullanıyorsak, Mysql’de Sorguların Hızlandırılması yani sorguların daha hızlı, verimli ve yüksek performansta çalıştırabilmek için birkaç noktaya dikkat etmeniz gerekmektedir. Bu işlemler tasarım aşamasından başlayıp bir sürü işlemler bütününü kapsamaktadır.Sorgularınızın verimli ve performanslı çalışması için kullanabileceğimiz  Indexleme ve yöntemler aşağıdaki gibidir;

İndexleme nedir?

index, tablolarda bulunan sütunlarının bazılarının özel şekilde düzenlenmiş halidir. Bu alanların özel düzenlenmesi sayesinde sorgular daha hızlı ve performanslı çalışır ve geriye daha çabuk sonuçlar dönmesini sağlamaktadır.

Hangi Sütunlara index konulmalıdır?

– Primary key ve Foreign key sütunları.
– Sorgularda çok sık kullanılan sütunlar.
– Çok sık sıralamaya tabi tutulan sütunlar.
– Gruplama yapılan sütunlar (group by).

İndex gerektirmeyen Sütunlar:

– Nadiren sorgulanan sütunlar.
– Az seçeneği olan sütunlar(cinsiyet,ülke gibi).
– Text,ntext ve image sütunları.

İndex yapılırken dikkat edilecek noktalar:

– Primary key veya Unique constraint oluşturulduğu zaman index otomatik olarak oluşturulur. Standart index oluşturmak yerine Primary key veya Unique constraint tercih edilmelidir.
– View’larda da index olabilir.
– Bir sütun üzerinde index oluşturmadan önceden bir index’e sahip olup olmadığı bakılmalıdır.
– Bir tabloda index oluştumak için tablonun sahibi olmak gerekir.
– Indexleme, sabit diskte extra yer tutar. Verdiği performans artışının yanında karşılaştırılabilecek kadar bile değildir ancak veritabanınınzdaki her tablonun her sütununda index oluşturursanız, sabit diskinizin umduğunuzdan çok daha çabuk yer kaplayabilir.
Index Oluşturma

Bir tablo ile ilişkili olarak index yaratmak için gerekli komut CREATE INDEX komutudur. Komutun yazılış biçimi aşağıdaki gibidir:

 

– Mümkünse Count(*) metodunu tüm tablo için çalıştırmayın, tüm tabloyu kilitleyebilir.
– DISTINCT yerine GROUP BY ifadeleri kullanın. Performansı daha iyidir.
– WHERE, GROUP BY, and ORDER BY ifadelerinde indekslenmiş kolon kullanın.
– Indeksleri basit tutun, bir kolonu birden fazla indekste kullanmayın.
– Bazen MySQL yanlış Index seçer bu sebepten USE INDEX kullanın.
– 5’den az Indeksli alanda OR yerine, UNION ifadelerinde LIMIT kullanın.
– MAX yerine Indeksli alan ve Order BY ifadeleri kullanın.
– ORDER BY RAND() ifadesi kullanmaktan kaçının.
– Bazı durumlarda LIMIT M,N sorguları yavaşlatır. Mümkün oldukça az kullanın.
– Where kullandığınız ifadelerde Alt Sorgular yerine UNION kullanın.
– Bir tablodaki tüm verileri DELETE FROM ile silmek yerine DROP Table ve Create Table kullanın. Tüm verileri silmektense Tabloyu silip yeniden oluşturmak daha hızlıdır.
– Select ifadelerinde SELECT * yerine SELECT KolonAdı şeklinde sadece ihtiyacınız olan alanları seçin.


Mysql Hızlandırmak İçin Öneriler

Mysql hızlandırmak için öneriler aşağıda kısaca anlatmaya çalıştım. umarım faydalı olur.

Mysql Slow Queries

Mysql sunucu üzerindeki problemli (Yüksek I/O ‘ya ve CPU utilizasyonuna neden olan) ve index kullanmayan veya yanlış index kullanan sorgular belirlenebilir.

Ayarların kalıcı olması için/etc/my.cnf dosyasına aşağıdaki satırlar ekleyebiliriz.

Mevcut session’da gerekli ayarları düzenleyebiliriz. Continue Reading