Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak InnoDB przechowuje kolumny znaków?

Z MySQL Dokumentacja :

Różnica między CHAR i VARCHAR wartości to sposób ich przechowywania, CHAR (10) wymaga 10 bajtów pamięci bez względu na liczbę użytych znaków, ponieważ dane są uzupełnione spacjami po prawej stronie, VARCHAR (10) zajmuje tylko 1 bajt (w 1-bajtowym zestawie znaków) + prefiks długości (1, gdy długość wynosi 255 lub mniej, 2 w przeciwnym razie... Nie wiem, dlaczego key_len dla EXPLAIN dodaj 2 bajty)

Nie rozumiem, co masz na myśli z końcowymi spacjami, chociaż mogę sobie wyobrazić, że masz na myśli nadmiar końcowych spacji, z VARCHAR są one obcinane ostrzeżeniem, tymczasem w CHAR kolumny te spacje są po cichu obcinane, ma to pewien sens, ponieważ CHAR są przechowywane z końcowymi spacjami na końcu.

Odnośnie zestawu znaków w tym linku widać, że liczba znaków dla CHAR lub VARCHAR jest taki sam, chociaż twoja pamięć będzie wymagać od 1 do 4 bajtów na znak, tutaj to lista obsługiwanych zestawów znaków i tutaj bajtów na znak.

Co przeczytałem o różnych formatach wierszy dla InnoDB

Charakterystyka nadmiarowego formatu wierszy :

Charakterystyka formatu wiersza COMPACT :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Biblioteka błędów pasażera nie została załadowana

  2. Najlepszy sposób na obsługę dużego (UUID) jako klucza podstawowego tabeli MySQL

  3. używać mysql osadzonego z qt?

  4. Jak mogę przepisać PHP i MySQL, aby pogrupować listę HTML według równych wartości kolumn?

  5. SQL aktualizuje jedną kolumnę z innej kolumny w innej tabeli