평소에 아무런 생각 없이 생성하던 데이터베이스가 오늘은 각 항목마다 의미하는게 뭔지 궁금해서 알아봤다.
Charset은 많이 접해보고 많이 언급을 하는데~ Collation은 첨 들어본것 같다~^^
결론적으로 여러 가지 비교를 해보았을 때
MariaDB에서는 문자셋은 utf8mb4, 문자정렬은 utf8mb4_bin 으로 권장되는 듯합니다.
문자셋(Charset)
MariaDB에서 문자셋은 데이터베이스에서 사용되는 문자의 인코딩을 정의하는 것입니다.
문자셋은 데이터를 검색하거나 문자를 저장할 때 어떻게 문자를 표현할지 결정합니다.
MariaDB에서는 다양한 문자셋을 지원하며, 어떤 문자셋을 선택할지는 주로 데이터의 종류, 다국어 지원 여부, 성능, 저장 공간 효율 등을 고려해서 결정됩니다.
문자셋 | 내용 |
UTF-8 | - 가변 길이 문자 인코딩이며 전 세계 대부분의 문자를 표현할 수 있습니다. - ASCII 와 호환되며, 라틴 문자는 1byte로, 다국어 문자는 2byte 이상으로 인코딩됩니다. - 웹개발시 가장 권장되는 문자셋 중 하나입니다. |
UTF-16 | - 16bit 단위로 문자를 표현합니다. - 라틴 문자는 2byte로, 다국어 문자는 2byte 또는 4byte로 인코딩됩니다. - 다국어 데이터베이스에서 사용되는 경우가 많습니다. |
UTF-32 | - 32bit 단위로 문자를 표현합니다. - 모든 문자를 4byte로 인코딩하므로 물리적인 저장 공간 측면에서 비효욜적일 수 있습니다. |
EUC-KR | - 한국어 문자를 표현할때 사용되는 문자셋입니다. - 주로 한국에서 사용됩니다. |
ISO-8859-1 (Latin-1) | - 서유럽 언어를 위한 문자셋이며, 유럽 주요 언어의 문자를 포함합니다. - ASCII 와 동일하게 1byte로 문자를 나타냅니다. |
참고로, 웹개발하다 보면 한글이 깨져서 노출되는 경우가 많은데, 대부분의 경우 문자셋이 많지 않아서 생기는 일이 많습니다.
파일 인코딩과 Request, Response 시 인코딩을 동일하게 설정하면 대부분의 한글 관련 깨지는 현상은 해결되곤 합니다.
MariaDB에서는 UTF8, UTF8mb3, UTF8mb4 로 문자 인코딩을 설정하기도 하는데, 그럼 이 차이는 뭘까요?
1) UTF-8 (utf8)
- 이전 버전의 Mysql 에서 3byte까지의 문자만 지워하였으며, 4byte로 인코딩 된 문자를 처리할 수 없습니다.
2) UTF-8mb3 (utf8mb3)
- utf8과 구문적으론 같지만, 명시적으로 3byte 인코딩을 의미합니다.
3) UTF-8mb4 (utf8mb4)
- 4byte로 인코딩 된 모든 유니코드 문자를 지원합니다.
- 기본 다국어 평면 이외의 이모지나 일부 특수문자도 처리할 수 있습니다.
- 국제 표준으로, 대부분의 경우 권장되는 문자셋입니다.
문자 정렬(Collaction)
콜레이션(Collaction), 즉 문자 정렬은 데이터를 정렬할 때 문자의 순서를 결정하는 방식을 의미합니다.
문자를 비교하거나 정렬할 때, 어떤 규칙을 따를지를 결정합니다.
MariaDB에서는 문자 데이터를 비교하는 데 사용되며, 대소문자 구분 여부, 문자의 가중치, 악센트의 처리 등을 조절할 수 있습니다.
MariaDB에서는 여러 가지 문자 정렬을 제공하는데, 그중 utf8mb4_bin을 특별한 문자 정렬로 주목받고 있습니다.
문자 정렬 | 내용 |
utf8mb4_bin | - 대소문자를 엄격하게 구분합니다. - 이진(binary) 데이터와 같은 비트 수준의 정확한 비교가 필요한 경우에 사용됩니다. |
utf8mb4_general_ci | - 대소문자를 구분하지 않습니다. - 알파벳 이외의 문자들은 일반적인 유니코드 정렬 규칙을 따릅니다. |
utf8mb4_unicode_ci | - 대소문자를 구분하지 않습니다. - 유니코드의 정교한 정렬 규칙을 따릅니다. |
잘 정리되어 있는 아래 사이트를 참고 했음을 알립니다~^^
MariaDB의 Character Set 및 Collation 종류 및 변경 방법
쿼리를 수행할 때 조건절이나 조인 시 문자열을 비교할 때, 각 테이블 및 칼럼의 문자정렬(Collaction)이 일치하지 않다면 쿼리 성능 저하가 올 수 있습니다. 그만큼, 문자셋과 문자정렬 방법은 모
hyangtech.tistory.com
'DB' 카테고리의 다른 글
[SQLD] SQL 개발자 (0) | 2024.07.19 |
---|