Champs CHAR 3 fois plus gros en UTF-8 ?
Dans mes tests de migration d'ISO-8859-1 vers UTF-8, je pensais que la taille de la base ne serait pas trop impactée dans mon cas, la plupart des champs texte étant des champs de type CHAR (donc de taille fixe). Pourtant, je viens de constater qu'en changeant simplement l'interclassement (de latin1_swedish_ci vers utf8_general_ci) d'un champ d'une table de test contenant seulement un id et un champ CHAR(255), sa taille triple (au minimum), même si cette table ne contient que des caractères ASCII (donc identiques dans les 2 encodages). Par exemple en saisissant simplement une ligne avec pour valeur 'test', la table iso fait 257 octets contre 767 pour la table UTF-8 (et un test de conversion sur une table de 12Mo donne une table de 43Mo)
Quelque chose doit m'échapper, mais j'avoue ne pas du tout voir quoi. Normalement, le champ de type CHAR(50) devrait faire 50 octets, quel que soit l'encodage et quel que soit son contenu. Les lettres accentués (par exemple) prenant simplement 2 de ces 50 octets en UTF-8, réduisant donc simplement le nombre de caractères pouvant être saisis dans ce champ.
Ma base de donnée dépassant les 500Mo, je me vois mal la voir dépasser les 1.5Go suite à une éventuelle migration.
Je n'ai pas passé 3h (mais bien une) à chercher l'explication mais je n'ai pour l'instant rien trouvé de probant.