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   |   Leave a comment  |  Comments RSS on this post.  |   TrackBack URI
  • - 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
  • Leave a comment

    [required]

    [required]



    Line and paragraph breaks automatic, e-mail address never displayed,
    HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)

    You must read and type the 5 chars within 0..9 and A..F, and submit the form.

      

    Oh no, I cannot read this. Please, generate a

     
    SHATO Web Hosting Services