728x90
반응형
varchar 255 이유
MYSQL에서 필드의 최대 길이를 정의할 때 varchar(255)로 지정하는게 일반적이였다. 이것은 참조 링크에 따르면 MYSQL에서 메모리 용량을 8비트(256)에 맞추고 오래된 database와 호환하기 위해서 등이였다고 한다.
그리고 MYSQL에서 varchar로 된 필드를 indexing하기 위한 최대 용량을 767 byte로 잡아놨었다. 이것은 utf-8 기준이였고 767/3 = 255.666...이 되기 때문에 varchar 255로 정의하는게 관례였다. 3으로 나누는 이유는 utf-8 기준으로 모든 글자들이 3바이트에 포함되었기 때문이었다.
varchar 191 이유
그러다가 이모지 🚀까지 포함하는 utf8mb4 collation 규칙이 적용되면서 한 글자에 4바이트가 필요하게 되었다. 따라서 767/4 = 191.75를 넘지 않도록 varchar 191로 정의한다.
현대의 데이터베이스
2010년 이후 현대 데이터베이스는 인덱싱에 이런 길이 제한을 두지 않는다. 다만 최대 길이를 지정해야하는 것은 마찬가지이기 때문에 적절한 기준이 없다면 역사와 관습에 따라 191로 최대 길이를 정한다.
참조
https://www.grouparoo.com/blog/varchar-191
https://dev.mysql.com/blog-archive/mysql-8-0-when-to-use-utf8mb3-over-utf8mb4/
feat. 회사 동료 pjh님 감사합니다
728x90
반응형
'Programming-[Backend] > Database' 카테고리의 다른 글
[TIL] DB pagination offset 문제, covering index (0) | 2023.08.17 |
---|---|
[TIL] insert시 ForeignKey에 제한 걸기: DB Trigger 사용 (2) | 2023.07.23 |
[TIL] 여러 where 조건 한번에 조회하기. multi column related id query join (0) | 2023.04.03 |
[Oracle] Oracle Xe 다운로드 및 설치, 기본 계정 설정, sql plus, IntelliJ 연결하기(IO Error : The Network Adaptor ...) (0) | 2022.03.04 |
[TIL][링크] yyyyMMddhh24miss, MSSQL CONVERT 변환 코드 표 (0) | 2022.02.16 |