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

Hvordan gemmer InnoDB tegnkolonner?

Fra MySQL Dokumentation :

Forskellen mellem CHAR og VARCHAR værdier er den måde, de er gemt på, CHAR (10) kræver 10 bytes lagerplads, uanset hvor mange tegn du bruger, fordi dataene er højrepolstret med mellemrum, VARCHAR (10) tager kun 1 byte (i 1 byte tegnsæt) + længdepræfiks (1 når længden er 255 eller mindre, 2 ellers... Jeg ved ikke hvorfor key_len for EXPLAIN tilføje 2 bytes)

Jeg forstår ikke, hvad du mener med efterstillede felter, selvom jeg kan forestille mig, at du henviser til overskydende mellemrum, med VARCHAR disse afkortes med en advarsel, i mellemtiden i CHAR kolonner disse mellemrum afkortes lydløst, dette har en vis årsag CHAR er gemt med efterfølgende emner i slutningen.

Angående tegnsæt i dette link du kan se, at antallet af tegn for CHAR eller VARCHAR er det samme, selvom dit lager kræver fra 1 til 4 bytes pr. tegn, her er listen over understøttede tegnsæt og her bytes pr. tegn.

Hvad jeg har læst om forskellige rækkeformater til InnoDB

Redundante rækkeformatkarakteristika :

KOMPAKTE Rækkeformatkarakteristika :




  1. Hvordan kan man skrive forespørgsler i MySQL, der kan parse JSON-data i en kolonne?

  2. Millisekunder opløsning af DateTime i Ruby

  3. Importer Excel-data til PostgreSQL 9.3

  4. Databaseskema, autoincrement