Différence entre les collations utf8mb4 unicode ci et utf8mb4 unicode 520 ci dans MariaDB / MySQL?

je suis connecté sur MariaDB/MySQL et saisie:

SHOW COLLATION;

je vois utf8mb4_unicode_ci et utf8mb4_unicode_520_ci parmi les collations disponibles. Quelle est la différence entre ces deux classements, et qui devrions-nous utiliser?

17
demandé sur Flux 2016-05-18 21:06:57

2 réponses

eh Bien, vous ne devez lire dans la documentation. Je ne peux pas vous dire ce que vous devriez utiliser parce que chaque projet est différent.

10.1.3 Conventions De Nommage Des Collations

les noms de collation MySQL suivent ces conventions:

un nom de collation commence par le nom du jeu de caractères auquel il est associé, suivi d'un ou plusieurs suffixes indiquant d'autres caractéristiques de collation. Par exemple, utf8_general_ci et latin_swedish_ci sont collations pour les jeux de caractères utf8 et latin1, respectivement.

une collation spécifique à une langue comprend un nom de langue. Par exemple, utf8_turkish_ci et utf8_hungarian_ci trient les caractères pour le jeu de caractères utf8 en utilisant les règles du turc et du hongrois, respectivement.

la sensibilité à la casse pour le tri est indiquée par _ci (insensible à la casse), _cs (sensible à la casse), ou _bin (binaire; les comparaisons de caractères sont basées sur des valeurs de codes binaires de caractères). Exemple, latin1_general_ci est insensible à la casse, latin1_general_cs est sensible à la casse, et latin1_bin utilise des valeurs de code binaires.

pour Unicode, les noms de collation peuvent inclure un numéro de version pour indiquer la version de L'algorithme de Collation Unicode (UCA) sur lequel la collation est basée. Les collations basées sur UCA sans numéro de version dans le nom utilisent les touches de poids UCA version-4.0.0. Par exemple:

utf8_unicode_ci (sans nom de version) est basé sur les touches de poids UCA 4.0.0 > (http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt).

utf8_unicode_520_ci est basé sur UCA 5.2.0 les clés de poids (http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt).

pour Unicode, les collations xxx_general_mysql500_ci préservent l'ordre pré-5.1.24 des collations xxx_general_ci originales et permettent des mises à jour pour les tables créées avant MySQL 5.1.24. Pour plus d'informations, voir la Section 2.11.3, " vérifier si les tableaux ou Les index doivent être reconstruits", et la Section 2.11.4, "reconstruire ou réparer des Tables ou des index".

Source:https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html

23
répondu StuiterSlurf 2016-05-18 19:04:08

pour voir un peu plus de discussion sur les différences réelles, vous pouvez aller à https://dev.mysql.com/worklog/task/?id=2673 et cliquez sur "Architecture de haut niveau".

3
répondu Peter Gulutzan 2016-05-18 22:56:33