Eu entendo que, se o comprimento for > 255, serão necessários 2 bytes para armazenar o prefixo de comprimento. Só preciso verificar minhas suposições. Por favor, diga-me o prefixo de comprimento e o comprimento de string('abcd') para charsets(latin1, ucs2, utf8mb4). Para uma coluna varchar(20). A documentação diz:
[...] Para a string 'abcd', L é 4 e o requisito de armazenamento é de cinco bytes. Se a mesma coluna for declarada para usar o conjunto de caracteres de byte duplo ucs2, o requisito de armazenamento é de 10 bytes : O comprimento de 'abcd' é oito bytes e a coluna requer dois bytes para armazenar comprimentos porque o comprimento máximo é maior que 255 (até 510 bytes). [...]
Referência: 11.7 Requisitos de armazenamento de tipo de dados (Oracle | Documentos)
Eu só não entendo por que para 'abcd' com charset 'ucs2' requer um prefixo de comprimento de 2 bytes mesmo depois de ser menor que 255.