MySQL Collations: utf8_unicode_ci ve utf8_general_ci arasındaki farklar

Wednesday February 18th 2009, 14:58 pm |   |  Web Teknolojileri | by eser s.

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


Comments
2 Comments   |    |  Comments RSS on this post.  |  
  • - 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_general_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_general_ci, bu tip harf gruplarını doğru algılayıp genellikle çok daha doğru bir sıralama yapmakta.

    ————-
    Yukarıdaki cümlenizde bir anlam karışıklğı mı var? Yoksa ben mi okuduğumu anlamadım ?

    .... Comment by Ersan AYD • March 16, 2011 @ 16:30 pm
  • Evet bazi yerlerde utf8_unicode_ci yerine utf8_general_ci kalmis.
    Duzelttim. Tesekkurler

    .... Comment by eser s. • April 22, 2011 @ 10:40 am
  • Sorry, the comment form is closed at this time.

     
    SHATO Web Hosting Services