Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL VARCHAR 길이 접두사: 1바이트와 2바이트는 언제 사용될까?

MySQL에서 VARCHAR 값은 저장될 때 '길이 접두사(length prefix)' + 실제 데이터 형태로 기록됩니다. 이 길이 접두사는 해당 값이 몇 바이트인지를 나타내며, 1바이트 또는 2바이트로 저장됩니다.

길이 접두사란?

VARCHAR는 가변 길이 문자열 타입이기 때문에, 각 행마다 실제 저장된 값의 길이가 다를 수 있습니다. MySQL은 이를 구분하기 위해 값 앞에 길이 정보를 별도로 붙여 저장하며, 이것이 바로 길이 접두사입니다. 덕분에 MySQL은 값을 읽을 때 정확히 어디까지가 데이터인지 판단할 수 있습니다.

1바이트 vs 2바이트, 결정 기준은?

어떤 길이 접두사가 사용되는지는 컬럼에 저장될 수 있는 최대 값의 크기에 따라 자동으로 결정됩니다.

  • 1바이트 길이 접두사: 컬럼의 값들이 최대 255바이트 이하로 저장되는 경우 사용됩니다. 예를 들어 VARCHAR(100)처럼 작은 크기로 선언된 컬럼이 여기에 해당합니다.
  • 2바이트 길이 접두사: 값이 255바이트를 초과할 수 있는 경우 사용됩니다. 예를 들어 VARCHAR(256) 이상으로 선언된 컬럼은 문자 집합과 관계없이 2바이트 접두사를 사용합니다.

예시로 이해하기

  • VARCHAR(10) → 최대 255바이트 이하이므로 1바이트 접두사 사용
  • VARCHAR(500) → 255바이트를 초과할 수 있으므로 2바이트 접두사 사용

핵심 정리

즉, 길이 접두사의 크기는 실제 저장되는 개별 값의 길이가 아니라, 컬럼 선언 시 정의된 최대 길이를 기준으로 결정됩니다. 값이 짧더라도 컬럼이 255바이트 초과로 선언되어 있다면 2바이트 접두사가 적용됩니다. 이러한 내부 동작 방식을 이해하면 스토리지 설계와 성능 최적화에 도움이 됩니다.