DB

[Mariadb] Create Database

내나위 2024. 8. 20. 10:28
728x90
반응형
SMALL

평소에 아무런 생각 없이 생성하던 데이터베이스가 오늘은 각 항목마다 의미하는게 뭔지 궁금해서 알아봤다.

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 - 대소문자를 구분하지 않습니다.
- 유니코드의 정교한 정렬 규칙을 따릅니다.

 

잘 정리되어 있는 아래 사이트를 참고 했음을 알립니다~^^

https://hyangtech.tistory.com/entry/MariaDB%EC%9D%98-Character-Set-%EB%B0%8F-Collation-%EC%A2%85%EB%A5%98-%EB%B0%8F-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95 

 

MariaDB의 Character Set 및 Collation 종류 및 변경 방법

쿼리를 수행할 때 조건절이나 조인 시 문자열을 비교할 때, 각 테이블 및 칼럼의 문자정렬(Collaction)이 일치하지 않다면 쿼리 성능 저하가 올 수 있습니다. 그만큼, 문자셋과 문자정렬 방법은 모

hyangtech.tistory.com

 

728x90
반응형
LIST

'DB' 카테고리의 다른 글

[SQLD] SQL 개발자  (0) 2024.07.19