SORU
20 NİSAN 2009, PAZARTESİ


Ne'In utf8_general_ci ve utf8_unicode_ci arasındaki fark

utf8_general_ci utf8_unicode_ci, orada performans açısından herhangi bir fark var arasında?

CEVAP
20 NİSAN 2009, PAZARTESİ


Bu iki alfabe UTF-8 karakter kodlama. Farkları metin sıralanmış ve kıyasla nasıl.

Not: use utf8mb4 yerine aynı performans ile UTF-8 veri biçimi aynı, ama daha önce sadece ilk 65,536 Unicode karakterleri. kabul utf8 MySQL yeni sürümlerinde

  • Doğruluk

    utf8mb4_unicode_ci doğru dil çok geniş bir yelpazede sıralar hangi sıralama ve karşılaştırma için standart Unicode dayanmaktadır.

    utf8mb4_general_ci istenmeyen bazı durumlarda sıralama neden hangi Unicode sıralama kuralları, tüm uygulamak için, belirli bir dil veya karakter kullanırken olduğu gibi başarısız olur.

  • Performans

    utf8mb4_general_ci performans ile ilgili kısayolları bir sürü alır çünkü karşılaştırma ve sıralama daha hızlı.

    Modern sunucularda, bu performansını artırmak, ama ihmal edilebilir. Sunucular bugünkü bilgisayarların CPU performansını küçük bir kısmı vardı bir zaman olarak tarif edilmiştir.

    Sıralama ve karşılaştırma için Unicode kuralları kullanan utf8mb4_unicode_ci doğru dil, geniş bir yelpazede sıralama için oldukça karmaşık bir algoritma kullanır ve özel karakterler geniş bir yelpazede kullanılırken. Bu kuralları dikkate dile özgü kuralları; dediğimiz değil, herkes türlü karakterleri almak gerekir 'alfabetik'.

Bildiğim kadarıyla Latin (yani "Avrupa") diller gidip, orada değil çok fark arasındaki Unicode sıralama ve basitleştirilmiş utf8mb4_general_ci sıralama MySQL, ama orada hala bir kaç farklılıklar:

  • Örnek olarak, Unicode harmanlama sıralar "ß" gibi "ss" ve "Kaldırmak" gibi "OE" olarak insanları kullanarak bu karakterleri normalde istiyorsun, oysa utf8mb4_general_ci sıralar bunları tek karakter (muhtemelen "s" ve "e" sırasıyla).

  • Bazı Unicode karakterleri sıralama ve karşılaştırma bir sonraki karakteri taşımanız sıralama doğru saymak yerine onlar söylememeliyiz gözardı, olarak tanımlanır. utf8mb4_unicode_ci Bu düzgün bir şekilde işler.

Latin olmayan dillerde, farklı harfler ile Asya dilleri veya dil gibi, bir çok şey olabilirdaha fazlasıralama Unicode sıralama ve utf8mb4_general_ci basitleştirilmiş arasındaki farklar. utf8mb4_general_ci uygunluğunu ağır bir dil kullanılmaktadır. Bazı diller için, oldukça yetersiz olacak.

Ne kullanmalıyım?

Neredeyse kesinlikle CPU hız performans farkı önemli olduğunu yeterince düşük olduğu utf8mb4_general_ci noktası geride kaldı artık, kullanmak için bir neden yok. Veritabanı hemen hemen kesinlikle bundan başka sorunları ile sınırlı olacaktır.

Performans farkı sadece çok özel durumlarda ölçülebilir olacak, ve eğer varsa, büyük olasılıkla zaten bunu biliyor. Eğer yavaş sıralama, hemen hemen her durumda yaşıyorsanız dizinler/sorgu planı ile ilgili bir sorun olacak. Harmanlama işlevi değişen şeylerin listesi gidermek için yüksek olmamalıdır.

Geçmişte, bazı insanlar ne zaman doğru performans maliyet haklı kadar önemli olacak sıralama dışında utf8mb4_general_ci kullanmak için tavsiye. Bugün, bu performans maliyeti neredeyse kayboldu, ve geliştiriciler daha ciddi bir uluslararası müdahale ediyor.

Bir şey daha yapacağım eklemek olduğunu bile uygulama destekler İngilizce, may hala ihtiyacımız anlaşma ile insanların isimlerini, hangi olabilir sık sık içeren karakterler kullanılan diğer dillerde olduğu gibi önemli sıralama doğru. Her şey için Unicode kuralları kullanarak çok akıllı Unicode insanlar çok düzgün iş sıralama yapmak için çalıştı huzur eklemenize yardımcı olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • Gali B

    Gali B

    1 EYLÜL 2006
  • MuscleProdigyTV

    MuscleProdig

    8 Ocak 2011