본문 바로가기
DEV/MYSQL

mysql collation utf8_general_ci, utf8_unicode_ci 차이점

by 황천의 쩌리맨 2022. 6. 7.
반응형

character-set을 utf8로 사용하는 경우 collation 에 대하여 utf8_general_ci 와 utf8_unicode_ci 둘중에 하나를 사용할 수 있습니다. 이 둘의 차이는 비교적 간단하고, 자신의 서비스 원칙에 따라서 둘중에 하나를 사용하는 것이 좋습니다.

 

일단 utf8_general_ci 명칭에서 느껴지듯이 성능을 우선시하며, 일반적인 경우에 사용하는 collation 이다. 이를 사용하면 ÀÁÅåāă 등의 문자가 없어 A 로 치환되어 비교 처리됩니다. 하여 정확한 비교, 정렬 등이 필요한 경우라면 utf8_general_ci를 사용하지 않도록 합니다. 물론 비교, 정렬에서 utf8_unicode_ci에 비해서 빠른 속도를 보여줍니다. (링크 : collation 차이의 벤치마킹 정보)

 

개인 PC에서 테스트한 결과 utf8_general_ci 의 경우 0.859초, utf8_unicode_ci 의 경우 2.286초로 성능상 약 266% 만큼 utf8_general_ci 가 빠릅니다.

 

utf8_unicode_ci 의 경우는 위의 경우에 대한 예외가 없이 모두 정상적으로 비교, 정렬된다라는 장점이 있으나, 위의 벤치마킹 정보에서 확인할 수 있드시 성능부분에서는 손해를 많이 보게 됩니다.

 

뭐.. 빡세게 돌아가는 서버가 아니라면 utf8_unicode_ci 를 사용하는 편이 나을 것이고, 구지 저런 특이한 악센트 문자를 사용하는 나라의 언어는 포기한다면, utf8_general_ci를 사용하는 것도 괜찮을 것이라 봅니다.

 

하지만 항상, 무엇때문에 정상적으로 작동하지 않는지 알 수 없는 경우를 대비하기 위해서 기본적으로는 utf8_unicode_ci를 사용할 것을 권합니다. (성능에 문제가 된다면 그건 추후 변경해야 할 사항이라고 생각하지만, 벤치마크상의 수치만 보면 고민이 되긴 합니다.)

 

출처 : https://www.dante2k.com/530

반응형

댓글