브랜디에서 데이터베이스 스키마 입력 작업을 하면서, 엔진을 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
는 대소문자를 구분하지 않습니다. a
와 A
에 차이를 두지 않는다는 뜻 입니다.
이전에는 utf8mb4_general_ci
가 기본 데이터 정렬이었으나, 요즘 사용하는 테이블은 요구사항이 달라져 utf8mb4_0900_ai_ci
정렬이 기본값으로 변경되었다네요.
참고 글