Mysql
 sql >> база данни >  >> RDS >> Mysql

Как InnoDB съхранява символни колони?

От MySQL Документация :

Разликата между CHAR и VARCHAR стойностите е начинът, по който се съхраняват, CHAR (10) изисква 10 байта място за съхранение, независимо колко знака използвате, защото данните са подплатени отдясно с интервали, VARCHAR (10) отнема само 1 байт (в 1 байтов набор от знаци) + префикс за дължина (1, когато дължината е 255 или по-малко, 2 в противен случай... Не знам защо key_len за EXPLAIN добавете 2 байта)

Не разбирам какво имате предвид с крайни празни места, въпреки че мога да си представя, че имате предвид излишъка от крайни интервали с VARCHAR те са съкратени с предупреждение, междувременно в CHAR колони тези интервали се съкращават безшумно, това има някаква смислена причина CHAR се съхраняват с крайни празни места в края.

Относно набора от знаци в тази връзка можете да видите, че броят на знаците за CHAR или VARCHAR е същото, но вашето хранилище ще изисква от 1 до 4 байта на знак, тук е списъкът с поддържан набор от символи и тук байтовете на знак.

Това, което прочетох за различни формати на редове за InnoDB

Характеристики на формата на излишния ред :

Характеристики на формата на КОМПАКТЕН ред :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете данни от различни колони и две таблици

  2. Как правилно да боравите с международния знак в PHP / MySQL / Apache

  3. Вземете последните записи с помощта на GROUP BY

  4. Различните бази данни използват ли различни цитати на имена?

  5. PHP mysqli Insert не работи, но не дава никакви грешки