기록하기

MySQL - CHAR 와 VARCHAR 본문

computer science/database

MySQL - CHAR 와 VARCHAR

jjungdev 2022. 5. 15. 19:41

프로젝트를 진행하면서 도메인 추출을 통해 테이블 설계 작업을 하고 있는데 어떤 데이터 타입이 이 컬럼에 적절한지 고민이 되는 경우가 많았다. 모든 부분을 기억할 수는 없지만 적어도 가장 많이 사용하는 VARCHAR 타입에 대해 간단하게라도 정리를 할 필요성을 느꼈고, 이 뒤로 조금씩 정리를 해가면서 프로젝트 설계에 도움이 되고자 데이터 타입 정리를 시작했다.

 

 

CHAR, VARCHAR

  CHAR VARCHAR
길이 0 ~ 255 byte 0 ~ 65,535 byte
특징 고정 길이 문자열 가변 길이 문자열
할당된 크기만큼공간이 생성된다.

 

여기서 특징에 주목할 필요가 있다.

CHAR 의 경우에는, 고정 길이의 문자열이므로 저장될 데이터의 길이가 지정된 공간보다 작더라도 그 공간이 그대로 유지가 된다. 만약 MD5 와 같이 언제나 같은 길이가 저장된다는 것이 보장이 된다면 CHAR 가 적합하다. 하지만 고정 길이의 단점은, 만약 언제나 같은 길이의 데이터가 아닐 경우에는 나머지 공간의 낭비가 발생하게 되고, 이는 결국 메모리 낭비로 이루어지므로 보통 VARCHAR 를 사용한다.

 

VARCHAR 의 경우에는 가변 길이의 문자열을 저장하게 되는데, 필요한 만큼만 공간을 사용하기 때문에 남은 공간의 낭비가 줄어들어 저장될 데이터의 길이가 유동적이라면 VARCHAR 를 사용하는 것이 좋다.

 

물론, 두 타입 모두 할당된 크기 안에서 데이터가 저장될 수 있으며 그 크기를 넘어서는 데이터 저장은 VARCHAR 타입에서도 저장할 수 없다.