Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 오블완
- 멀티프로세싱
- ExceptionHandlerFilter
- 티스토리챌린지
- Spring Cloud OpenFeign
- REDIS
- Spring Reactive Programming
- querydsl
- asciidoctor
- 2024년 상반기 회고
- JWT
- 네이버클라우드 서버
- springboot
- microsoft
- spring boot
- OAuth2.0
- ExecutorService
- 멀티태스킹
- 비동기
- 코드로 배우는 스프링 부트 웹 프로젝트
- Spring Security
- 프로세스
- 비사이드프로젝트
- 멀티스레드
- 스레드
- 사이드 프로젝트
- Apple 로그인
- 도메인 주도 설계(DDD) 기반 마이크로서비스(MSA) 모델링
- OpenFeign
- FeignClients
Archives
- Today
- Total
기록하기
MySQL - CHAR 와 VARCHAR 본문
프로젝트를 진행하면서 도메인 추출을 통해 테이블 설계 작업을 하고 있는데 어떤 데이터 타입이 이 컬럼에 적절한지 고민이 되는 경우가 많았다. 모든 부분을 기억할 수는 없지만 적어도 가장 많이 사용하는 VARCHAR 타입에 대해 간단하게라도 정리를 할 필요성을 느꼈고, 이 뒤로 조금씩 정리를 해가면서 프로젝트 설계에 도움이 되고자 데이터 타입 정리를 시작했다.
CHAR, VARCHAR
CHAR | VARCHAR | |
길이 | 0 ~ 255 byte | 0 ~ 65,535 byte |
특징 | 고정 길이 문자열 | 가변 길이 문자열 |
할당된 크기만큼공간이 생성된다. |
여기서 특징에 주목할 필요가 있다.
CHAR 의 경우에는, 고정 길이의 문자열이므로 저장될 데이터의 길이가 지정된 공간보다 작더라도 그 공간이 그대로 유지가 된다. 만약 MD5 와 같이 언제나 같은 길이가 저장된다는 것이 보장이 된다면 CHAR 가 적합하다. 하지만 고정 길이의 단점은, 만약 언제나 같은 길이의 데이터가 아닐 경우에는 나머지 공간의 낭비가 발생하게 되고, 이는 결국 메모리 낭비로 이루어지므로 보통 VARCHAR 를 사용한다.
VARCHAR 의 경우에는 가변 길이의 문자열을 저장하게 되는데, 필요한 만큼만 공간을 사용하기 때문에 남은 공간의 낭비가 줄어들어 저장될 데이터의 길이가 유동적이라면 VARCHAR 를 사용하는 것이 좋다.
물론, 두 타입 모두 할당된 크기 안에서 데이터가 저장될 수 있으며 그 크기를 넘어서는 데이터 저장은 VARCHAR 타입에서도 저장할 수 없다.
'computer science > database' 카테고리의 다른 글
식별(강결합)관계와 비식별(약결합) 관계 (0) | 2022.06.05 |
---|---|
MariaDB - INSERT ON DUPLICATE KEY UPDATE (0) | 2022.05.22 |