Charset, Collation - utf8_unicode_ci and utf8mb4_0900_ai_ci
MySQL / MariaDB 에서 Charset(캐릭터셋)과 Collation(정렬순서)에 대한 개념과 설정 방법을 안내한다.
대상
- MySQL 8
설명
Charset의 명칭은 아래와 같이 4부분으로 이루어져 있습니다.
utf8mb4
_0900
_ai
_ci
각 부분은 아래와 같은 의미를 가집니다.
utf8mb4
: 각 문자가 UTF-8 인코딩 체계에서 MaxByte 4로 저장된다는것을 의미합니다.0900
: Unicode Collation Algorithm 버전을 나타냅니다. Unicode Collation Algorithm은 유니 코드 표준의 요구 사항을 준수하는 두 개의 유니 코드 문자열을 비교하는 데 사용되는 방법입니다.ai
: 악센트를 구분하지 않음을 나타냅니다. 즉, 정렬 할 때 e, è, é, ê 및 ë 사이에는 차이가 없습니다ci
: 대소 문자를 구분하지 않습니다. 이것은 정렬 할 때 p와 P 사이에 차이가 없다는 것입니다.
utf8mb4
는 utf8mb4_0900_ai_ci
와 함께 MySQL 8.0.1
이후버전의 디폴트 조합으로 기본 문자 세트가되었습니다 . 이전 버전에서는 utf8mb4_general_ci
가 기본 데이터 정렬이었습니다.
요즘사용하는 새로운 테이블은 기본적으로 기본 다국어 평면 이외의 문자를 저장할 수있는 능력을 가지고 있으며 이모지(Emojis)를 기본적으로 저장하여야 하는 요구가 생겼습니다. 그렇게 때문에 utf8mb4_0900_ai_ci
정렬이 기본값으로 변경되었습니다.
악센트 감도 및 대소문자 구분정렬이가 필요한 경우 utf8mb4_0900_as_cs
를 대신 사용할 수 있습니다 .
버전
버전은 아래와 같습니다.
- 4.0
_unicode_
- 5.20
_unicode_520_
- 9.0
_0900_
접미사
_bin
– 단순 비트값 비교 정렬; 대/소문자, 악센트등 고려 안함_ci
– 대소문자(A=a) 및 악센트(a=á) 구분 안함_ai_ci
– 대소문자(A=a) 및 악센트(a=á) 구분 안함_as
(etc) – 악센트 구분함 (etc)
성능
_bin
– simple, fast_general_ci
– fails to compare multiple letters; eg ss=ß, so somewhat fast…
– slower_900_
– (8.0) much faster because of a rewrite
참조링크
로그인하면 댓글을 남길 수 있습니다.