문자셋(Character Set)과 콜레이션(Collation)은 데이터베이스에서 텍스트 데이터를 어떻게 저장하고 비교하며 정렬할지를 결정하는 중요한 설정입니다.
문자셋 (Character Set):
- utf8mb4:
- 4바이트 UTF-8 인코딩: 하나의 문자를 표현하기 위해 최대 4바이트를 사용합니다.
- 모든 유니코드 문자 지원: Basic Multilingual Plane (BMP)에 있는 문자뿐만 아니라, 이모지, 수학 기호, 고대 문자 등 BMP 외부에 있는 supplementary characters까지 완벽하게 지원합니다.
- 현재 표준: 최신 MySQL 버전에서는 utf8 대신 utf8mb4를 사용하는 것이 권장됩니다. 이전의 utf8은 실제로는 utf8mb3의 별칭이었으며, 모든 유니코드 문자를 지원하지 못하는 문제가 있었습니다.
- utf8mb3:
- 3바이트 UTF-8 인코딩: 하나의 문자를 표현하기 위해 최대 3바이트를 사용합니다.
- BMP 문자만 지원: 유니코드의 기본 다국어 평면(BMP)에 속하는 문자들만 지원합니다. 이모지나 일부 특수 문자는 저장할 수 없습니다.
- deprecated (더 이상 권장되지 않음): utf8의 원래 구현이며, 현재는 utf8mb4로 대체되고 있습니다. MySQL의 최신 버전에서는 utf8이 utf8mb4의 별칭이 될 예정입니다.
콜레이션 (Collation):
콜레이션은 특정 문자셋 하에서 문자들을 어떻게 비교하고 정렬할지를 정의하는 규칙들의 집합입니다. 대소문자 구분, 악센트 구분 등을 결정합니다.
- utf8mb4_general_ci:
- Case-Insensitive (대소문자 구분 없음): A와 a를 동일하게 취급합니다.
- Accent-Insensitive (악센트 구분 없음): é, è, e 등을 동일하게 취급합니다.
- 정렬 속도 우선: 비교 및 정렬 속도가 utf8mb4_unicode_ci보다 빠릅니다. 이는 유니코드 표준을 완벽하게 따르기보다는 성능을 위해 일부 규칙을 단순화했기 때문입니다.
- 정확성 면에서 약간의trade-off: 일부 언어에서는 정렬 순서가 유니코드 표준과 약간 다를 수 있습니다.
- utf8mb4_unicode_ci:
- Case-Insensitive (대소문자 구분 없음): A와 a를 동일하게 취급합니다.
- Accent-Insensitive (악센트 구분 없음): é, è, e 등을 동일하게 취급합니다.
- 유니코드 표준 기반: 유니코드 Collation Algorithm (UCA)을 기반으로 하여 더 정확한 비교 및 정렬 결과를 제공합니다. 다양한 언어의 정렬 규칙을 더 잘 반영합니다.
- 정확성 우선: utf8mb4_general_ci보다 비교 및 정렬 속도가 약간 느릴 수 있습니다. 하지만 현대적인 시스템에서는 그 차이가 미미한 경우가 많습니다.
'IT 관련 > 웹관련' 카테고리의 다른 글
| 마크다운 문법 정리 (1) | 2025.05.22 |
|---|---|
| 동영상 태그 삽입하기 (0) | 2025.03.13 |
| 유용한 AI 사이트 (0) | 2025.03.07 |