sql >> Databasteknik >  >> RDS >> Mysql

Hur lagrar InnoDB teckenkolumner?

Från MySQL Dokumentation :

Skillnaden mellan CHAR och VARCHAR värden är hur de lagras, CHAR (10) kräver 10 byte lagring oavsett hur många tecken du använder eftersom data är högerutfyllda med mellanslag, VARCHAR (10) tar bara 1 byte (i 1 byte teckenuppsättning) + längdprefix (1 när längden är 255 eller mindre, 2 annars... Jag vet inte varför key_len för EXPLAIN lägg till 2 byte)

Jag förstår inte vad du menar med efterföljande blanksteg, även om jag kan föreställa mig att du syftar på överskottet av efterföljande blanksteg, med VARCHAR dessa är trunkerade med en varning, samtidigt i CHAR kolumner dessa mellanslag trunkeras tyst, detta har någon betydelse orsak CHAR lagras med efterföljande ämnen i slutet.

Angående teckenuppsättning i denna länk du kan se att antalet tecken för CHAR eller VARCHAR är densamma, även om din lagring kräver från 1 till 4 byte per tecken, här är listan över teckenuppsättningar som stöds och här byte per tecken.

Vad jag har läst om olika radformat för InnoDB

Redundanta radformategenskaper :

KOMPAKTA radformategenskaper :




  1. Docker kan inte ansluta applikationen till MySQL

  2. Ska jag skapa en klass som ärver SQLiteOpenHelper för varje tabell i min databas?

  3. UTL_FILE.FREMOVE Exempel:Ta bort en fil i Oracle

  4. Hur listar man tillgängliga instanser av SQL-servrar som använder SMO i C#?