MySQL - 테이블 생성 시 engine과 character 설정하기

devmin·2020년 3월 29일
0

브랜디에서 데이터베이스 스키마 입력 작업을 하면서, 엔진을 InnoDB로 설정해달라는 요청을 받게 되었습니다. MySQL의 기본 엔진이 InnoDB이기 때문에 별다른 설정을 하지 않아도 디폴트로 적용이 되기는 하지만, 이 디폴트 설정이 어느 상황에서나 작용한다는 조건이 아니므로 테이블을 생성할 때 확실히 명시해주는 것이 좋습니다.

엔진 명시는 처음 테이블을 생성할 때, 필드 입력이 끝난 뒤에 엔진을 적어주면 됩니다. ENGINE=InnoDB 이런 식으로 적어주면 되고, 그 뒤에는 character set 설정을 해줬습니다.

utf8mb4는 각 문자가 UTF-8 인코딩 체계에서 MaxByte 4로 저장된다는 것을 의미합니다. 기존의 utf8은 원래는 4바이트까지의 자료형을 저장할 수 있지만, 전세계 모든 언어가 21bit로 3바이트 내로 처리가 되어 MySQL에서 3바이트 가변 자료형으로 설계했다고 합니다. 이러한 이유 때문에 4바이트로 처리되는 이모지는 처리하지 못하는 문제가 생겼고, utf8mb4라는 체계를 추가해서 4바이트까지의 문자열을 처리할 수 있게 했다고 하네요.

그리고 collate는 문자를 정렬하는 방식을 설정해줍니다. 처리 방식에 따라 'a'가 'B' 앞에 올 수도 있고 뒤에 올수도 있습니다.

0900은 Unicode Collation Algorithm 버전을 나타내고, ai는 악센트를 구분하지 않음을 나타냅니다. 즉, 정렬 할 때 e, è, é, ê 및 ë 사이에는 차이가 없습니다. 그리고 ci는 대소문자를 구분하지 않습니다. aA에 차이를 두지 않는다는 뜻 입니다.

이전에는 utf8mb4_general_ci가 기본 데이터 정렬이었으나, 요즘 사용하는 테이블은 요구사항이 달라져 utf8mb4_0900_ai_ci 정렬이 기본값으로 변경되었다네요.

참고 글

profile
개발자가 되어가는 중

0개의 댓글