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

+ Recent posts