sql >> Databáze >  >> RDS >> Mysql

Jak InnoDB ukládá sloupce znaků?

Z MySQL Dokumentace :

Rozdíl mezi CHAR a VARCHAR hodnoty je způsob, jakým jsou uloženy, CHAR (10) vyžaduje 10 bajtů úložiště bez ohledu na to, kolik znaků použijete, protože data jsou správně doplněna mezerami, VARCHAR (10) trvá pouze 1 bajt (v 1 bajtové znakové sadě) + předpona délky (1, když je délka 255 nebo méně, 2 jinak... Nevím, proč key_len pro EXPLAIN přidat 2 bajty)

Nerozumím, co máte na mysli s mezerami na konci, i když si umím představit, že máte na mysli přebytek mezer na konci s VARCHAR tyto jsou zkráceny s varováním, mezitím v CHAR sloupce jsou tyto mezery tiše zkráceny, má to určitý smysl příčina CHAR jsou uloženy s koncovými mezerami na konci.

Pokud jde o znakovou sadu v tomto odkazu můžete vidět, že počet znaků pro CHAR nebo VARCHAR je stejný, i když vaše úložiště bude vyžadovat 1 až 4 bajty na znak, zde je seznam podporovaných znakových sad a zde bajtů na znak.

Co jsem četl o různých formátech řádků pro InnoDB

Redundantní vlastnosti formátu řádků :

Kompaktní charakteristika formátu řádků :




  1. SQL CREATE TABLE pro začátečníky

  2. ORA-00604 ORA-12705

  3. spojovat tabulky a transponovat sloupce a řádky

  4. Jak obnovit heslo root mysql?