MySQL에서 인덱스의 최대 크기는 얼마일까?
- innodb_large_prefix이 활성화 된 경우 3072 바이트, 비활성화 된 경우 767 바이트
- 여기서 중요한것은 바이트, 글자수가 아니라 바이트!
- MySQL은 varchar(글자수)로 선언된다. Oracle은 varchar(바이트) 그래서 중요함
- 해당 컬럼의 characterset 확인
- utf8의 경우 1글자가 3바이트
3072 / 3 = 1024
767 / 3 = 255.6666
- utf8mb4 는 1글자가 4바이트 (알아서 나누기 4하셈)
utf8mb4 에서 'a'라는 값이 저장된다고 4바이트를 쓰는게 아니다.
선언은 4바이트까지 받을수 있다지만 디스크에 저장될때는 1바이트로 저장된다. (저장공간도 1바이트)
참고 : https://dev.mysql.com/doc/refman/5.7/en/innodb-limits.html
'MySQL' 카테고리의 다른 글
online ddl 알고리즘 (0) | 2021.05.27 |
---|---|
binlog format (0) | 2021.05.15 |
MySQL 포퍼먼스 튜닝 (0) | 2021.05.12 |
delete .. where in () 시 결합인덱스 사용 (0) | 2021.05.03 |
MySQL 5.7 Virtual Columns (0) | 2021.04.27 |