왜 일부 MySQL 데이터 형식에 여분의 바이트가 필요합니까?
MySQL 데이터 유형 크기에 대해 읽었습니다. VARCHAR은 1/2 바이트를, MEDIUMTEXT는 3 바이트가 추가로 필요하며 LONGTEXT는 추가로 4 바이트가 필요합니다. 그러한 MySQL 동작의 이유는 무엇입니까?
왜 일부 MySQL 데이터 형식에 여분의 바이트가 필요합니까?
MySQL 데이터 유형 크기에 대해 읽었습니다. VARCHAR은 1/2 바이트를, MEDIUMTEXT는 3 바이트가 추가로 필요하며 LONGTEXT는 추가로 4 바이트가 필요합니다. 그러한 MySQL 동작의 이유는 무엇입니까?
:
'0'
)데이터베이스는 (거의?) 항상 길이 인코딩을 사용합니다. 당신이 'A'
저장할 때
3 A B C
: 당신은 가변 길이 문자열로 'ABC'
을 저장하면 같은, 데이터베이스 저장소에 보이는
1 A
그 방법을, MySQL은 알고있는 경우 하나 개의 문자열의 끝과 다음이 시작됩니다. 다른 유형의 길이는 문자열의 최대 길이를 기준으로합니다. 따라서 1 바이트는 0에서 255 사이의 값을 포함 할 수 있습니다. 2 바이트는 0에서 65,535 사이의 값을 가질 수 있습니다.
이A B C
이 (코딩 특성에 따라) 어떤 3 바이트를/차지 : 같은
는 일반 문자 표현을 사용하는 경우, char(3)
말, 다음 'ABC'
보인다. 길이는 테이블 메타 데이터에서 알 수 있습니다.
A
---^space here
--------^space here
이 공간에 의해 점유되어 char(3)
와
는 문자열 'A'
는 3 개 개의 슬롯을 차지합니다. 긴 문자열의 경우 일반적으로 공간이 많이 낭비되므로 대부분의 문자열은 이 아닌 varchar
으로 저장됩니다.
답변을 주셔서 감사하지만 VARCHAR에 언젠가 1 바이트와 언젠가 2 바이트가 필요한 이유와 CHAR에 여분의 바이트가 필요하지 않은 이유는 무엇입니까? –
@ VarunAgw. . . 마지막 단락을 읽어 보면'varchar'가 때때로 1 바이트를 사용하는 경우도 있고 때로는 2 바이트를 사용하는 이유를 이해할 수 있습니다.'char'는 길이가 알려져 있기 때문에 여분의 바이트를 필요로하지 않습니다. 문자열의 문자 수는 데이터베이스에 저장되고 길이는 테이블 형식으로 알려져있다. –
이 질문은 다른 곳에서 다룹니다. 이유는 대답 – Strawberry