728x90
반응형
목차는 DB 목차 에 있습니다.
[DB 5편] MySQL 데이터 유형 관련 정리
Null 을 사용하지 않는 것이 좋습니다.
- Application 개발을 할 때와 마찬가지로 null 을 사용하지 않는 것이 좋습니다.
- MySQL 내부에서 인덱스, 비교 등의 계산을 할 때, null 이 들어가면 resource 소모가 있거나 측정하기 어려우며, 이는 성능 최적화가 어렵습니다.
- 그러므로 개발을 할 때는, null 을 사용하지 않는 것이 좋으며, 기존 테이블에 null 이 있는 것을 강제로 not null 로 바꿀려고 하는 것은 운영 중인 서비스에 영향을 줄 수 있으므로 심사숙고해야합니다. 또한, null --> not null 로 바꾼다고 성능이 그렇게 향상되는 것은 아닙니다.
문자열 유형
- INNO DB 를 기준으로 VARCHAR 와 CHAR 에 대해 간략히 정리했습니다.
- VARCHAR 는 가변길이 문자를 처리하는 데이터 유형, CHAR 는 고정길이 처리 데이터 유형입니다.
- VARCHAR 는 데이터 길이에 대한 비트 1~2 를 포함합니다. CHAR 는 없습니다.
- VARCHAR 는 가변길이이고, 이는 저장공간을 최적화할 수 있으니 성능에 좋습니다.
- CHAR 는 고정 길이이므로 자주 변경되는 데이터에 사용하면 VARCHAR 보다 좋습니다.
숫자 데이터 유형
- 데이터 요건에 맞는 사이즈를 선택하는 것이 좋습니다.
- 예를 들면, 정수의 경우 SMALLINT, INT, BIGINT 등이 있는데 각각 16, 32, 64 비트의 저장 공간을 사용합니다.
- 적절한 사이즈를 선택하는 것이 좋습니다.
- unsigned 가 사용 가능한 데이터 컬럼이라면 사용하는 것이 좋습니다.
- 부호가 안붙는다는건 그 만큼 덜 저장하는 것이기에 좋습니다.
문자보다는 정수, 날짜, 시간이 좋습니다.
- 데이터 유형을 정할 때는 문자 < 정수, 날짜, 시간이 좋습니다.
- 문자를 가지고 sort 를 하거나 equal 비교 등을 진행한다면 문자열이 정수, 날짜, 시간 보다 더 많은 cpu 를 사용합니다.
'database' 카테고리의 다른 글
[DB 9편] MySQL 인덱스 성능 관련 정리 (Auto increment, UUID) (0) | 2022.10.15 |
---|---|
[DB 6편] MySQL 인덱스 성능 관련 정리 (prefix, 복합인덱스) (0) | 2022.10.13 |
[DB 4편] SQL Select 튜닝 정리 (0) | 2022.04.28 |
[DB 3편] 페이징 개선(querydsl, 커버링인덱스, count 쿼리) (0) | 2022.04.28 |
[DB 2편] 페이징 개선(NoOffset) (0) | 2022.04.28 |
댓글