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

varchar(20) i varchar(50) są takie same?

MySQL oferuje wybór silników pamięci masowej. Fizyczne przechowywanie danych zależy od silnika przechowywania.

Pamięć MyISAM VARCHAR

W MyISAM, VARCHAR s zazwyczaj zajmują tylko rzeczywistą długość łańcucha plus jeden lub dwa bajty długości. Jest to praktyczne dzięki ograniczeniu projektowemu MyISAM do blokowania tabeli, w przeciwieństwie do możliwości blokowania wierszy. Konsekwencje wydajności obejmują bardziej kompaktowy profil pamięci podręcznej, ale także bardziej skomplikowane (wolniejsze) obliczanie przesunięć rekordów.

(W rzeczywistości MyISAM daje Ci stopień wyboru między stałym fizycznym rozmiarem wiersza a zmiennym fizycznym rozmiarem wiersza formatów tabeli w zależności od typów kolumn występujących w całej tabeli. Wystąpienie VARCHAR zmienia tylko domyślną metodę, ale obecność TEXT Blob siły VARCHAR s w tej samej tabeli, aby użyć metody zmiennej długości.)

Metoda fizycznego przechowywania jest szczególnie ważna w przypadku indeksów, co jest inną historią niż tabele. MyISAM używa kompresji spacji dla obu CHAR i VARCHAR kolumn, co oznacza, że ​​krótsze dane zajmują mniej miejsca w indeksie w obu przypadkach.

Przechowywanie VARCHAR InnoDB

InnoDB, podobnie jak większość innych obecnych relacyjnych baz danych, wykorzystuje bardziej wyrafinowany mechanizm. VARCHAR kolumny, których maksymalna szerokość jest mniejsza niż 768 bajtów, będą przechowywane w trybie inline, przy czym zarezerwowane miejsce będzie pasować do tej maksymalnej szerokości. Dokładniej tutaj :

InnoDB obecnie nie wykonuje kompresji przestrzeni w swoich indeksach, w przeciwieństwie do MyISAM, jak opisano powyżej.

Powrót do pytania

Wszystko to jest jednak tylko szczegółem implementacyjnym, który może się zmieniać między wersjami. Prawdziwa różnica między CHAR i VARCHAR jest semantyczny, podobnie jak ten między VARCHAR(20) i VARCHAR(50) . Upewniając się, że nie ma sposobu na przechowywanie 30-znakowego ciągu w VARCHAR(20) , baza danych sprawia, że ​​życie jest łatwiejsze i lepiej zdefiniowane dla różnych procesorów i aplikacji, które podobno integruje w przewidywalne rozwiązanie. To jest wielka sprawa.

Jeśli chodzi konkretnie o nazwiska, to pytanie może dać ci kilka praktycznych wskazówek. Osoby z pełnymi imionami powyżej 70 znaków UTF-8 i tak mają kłopoty.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. połącz dwa klucze obce z tej samej tabeli w SQL

  2. Wstrzykiwanie SQL MariaDb

  3. Czy istnieje mechanizm wyłączający wstawianie do stołu?

  4. Jak naprawić błąd:nieoczekiwane zamknięcie MySQL na Xamppie z powodu wtyczki „Aria”

  5. Jak znaleźć zduplikowane rekordy w MySQL