Web projelerimde UTF-8 kullanmaya başladığımdan beri merak ettiğim bir konu vardı. O da MySQL’deki collation değerlerinden utf8_unicode_ci ve utf8_general_ci arasında ne tür farklar olduğu idi. Biraz araştırma sonucu aşağıdaki sonuçlara ulaştım. Bakınız MySQL’deki iki collation değeri arasındaki farklar ve birbirlerine üstünlükleri neymiş?
- utf8_general_ci collation tipi utf8_unicode_ci tipine göre daha basit bir tip ve genel çalışma şekli de şu şekilde:
Bazı dillerde yer alan özel harflerde bulunan accent denilen şapkaları vs. kaldırıp harfi büyük harfe çeviriyor ve o harf grupları için belirlenen temel harfin koduna göre karşılaştırma yapıyor.
Örnek olarak, ÀÁÅåāă harflerindeki şapkaları kaldırıp temel olan A harfi ile karşılaştırıyor.
Halbuki utf8_unicode_ci tipi daha geniş bir Unicode karşılaştırma tablosu (DUCET) kullanıyor.
- İkinci olarak, utf8_general_ci Œ, ß benzeri aslında harf grubu tipinde olan harfleri desteklememekte ve bu tip harfleri sıralarken tek karaktermiş gibi algılayıp yanlış sıralayabiliyor.
Ancak utf8_unicode_ci, bu tip harf gruplarını doğru algılayıp genellikle çok daha doğru bir sıralama yapmakta.
- Bir başka fark da desteklenen dil tipleri. utf8_general_ci sadece belli dil gruplarını destekleyebilirken utf8_unicode_ci çok daha geniş dil gruplarını desteklemekte. Örnek olarak utf8_general_ci Kiril alfabesi kullanmakta olan dillerden sadece Rusça ve Bulgarca’yı desteklerken utf8_unicode_ci ayni dil grubundan Makedonca, Ukraynaca, Sırp ve Belarus dilleri gibi diğer dilleri de desteklemekte ve doğru biçimde sıralayabilmekte.
utf8_general_ci‘nin utf8_unicode_ci‘ye olan üstünlüğüne gelecek olursak o da utf8_unicode_ci‘ye göre daha hızlı olması. Dolayısıyla performans gibi dertleriniz varsa utf8_general_ci, sıralama ile ilgili sorunlarınız varsa ve bu sizin için daha önemli ise utf8_unicode_ci kullanmanız daha doğru olacaktır.
Kısaca collation seçimi ihtiyaçlarınıza ve öncelik listenize göre değişiklik gösterebilmekte.
Hani sizin de aklınıza bunlar arasındaki farklar nedir diye bir konu takılmışşa
Kaynaklar:
* http://forums.mysql.com/read.php?103,187048,188748#msg-188748
* http://www.collation-charts.org/mysql60/mysql604.utf8_general_ci.european.html
* http://www.collation-charts.org/mysql60/mysql604.utf8_unicode_ci.european.html