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
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.
Önce ya da döngü içinde değişken kavra...
LocalStorage, sessionStorage, oturum v...
'findAndModify arasındaki fark ne...
Ne'In arasındaki fark `1L` ve `1`...
Boş ve boş bir std arasındaki fark ned...