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 사이에 차이가 없다는 것입니다.

utf8mb4utf8mb4_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

참조링크

로그인하면 댓글을 남길 수 있습니다.
  • charset_collation_-_utf8_unicode_ci_and_utf8mb4_0900_ai_ci.txt
  • 마지막으로 수정됨: 2019/06/14 14:55
  • 저자 koov