Mysql
 sql >> Database >  >> RDS >> Mysql

In che modo InnoDB memorizza le colonne di caratteri?

Da MySQL Documentazione :

La differenza tra CHAR e VARCHAR valori è il modo in cui sono memorizzati, CHAR (10) richiede 10 byte di spazio di archiviazione indipendentemente dal numero di caratteri utilizzati perché i dati sono riempiti a destra con spazi, VARCHAR (10) occupa solo 1 byte (in un set di caratteri da 1 byte) + prefisso di lunghezza (1 quando la lunghezza è 255 o meno, 2 altrimenti... non so perché key_len per EXPLAIN aggiungi 2 byte)

Non capisco cosa intendi con spazi finali, anche se posso immaginare che ti riferisci all'eccesso di spazi finali, con VARCHAR questi vengono troncati con un avviso, nel frattempo in CHAR colonne questi spazi vengono troncati silenziosamente, questo ha un senso perché CHAR vengono memorizzati con spazi finali alla fine.

Riguardo al set di caratteri in questo link puoi vedere che il numero di caratteri per il CHAR o VARCHAR è lo stesso, anche se lo spazio di archiviazione richiederà da 1 a 4 byte per carattere, qui è l'elenco dei set di caratteri supportati e qui i byte per carattere.

Quello che ho letto su diversi formati di righe per InnoDB

Caratteristiche del formato riga ridondante :

Caratteristiche del formato riga COMPACT :