Loading...
MySQL 9.5 Reference Manual 9.5의 12.14 Adding a Collation to a Character Set의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
12.14.1 Collation Implementation Types 12.14.2 Choosing a Collation ID 12.14.3 Adding a Simple Collation to an 8-Bit Character Set 12.14.4 Adding a UCA Collation to a Unicode Character Set
주의
사용자 정의 collation은 deprecated 상태입니다. 향후 버전의 MySQL에서 이에 대한 지원이 제거될 것이라고 예상해야 합니다.
MySQL 9.5 server는 SQL statement에서
COLLATE user_defined_collation을 사용하는 모든 경우에 대해 warning을 발생시킵니다.
또한 server가
--collation-server
를 사용자 정의 collation 이름으로 설정하여 시작될 때에도 warning이 발생합니다.
collation은 문자 문자열을 비교하고 정렬하는 방법을 정의하는 규칙 집합입니다. MySQL의 각 collation은 하나의 문자 집합에 속합니다. 모든 문자 집합은 적어도 하나의 collation을 가지며, 대부분은 두 개 이상의 collation을 가집니다.
collation은 weight에 기반하여 문자를 정렬합니다. 문자 집합의 각 문자는 weight에 매핑됩니다. weight가 같은 문자들은 동일한 것으로 비교되고, 서로 다른 weight를 가진 문자들은 weight의 상대적인 크기에 따라 비교됩니다.
WEIGHT_STRING() function은 문자열 내 문자들의 weight를 확인하는 데 사용할 수 있습니다.
weight를 나타내기 위해 반환되는 값은 바이너리 문자열이므로, 출력 가능한 형태로 weight를 표시하기 위해
HEX(WEIGHT_STRING(str))을 사용하는 것이 편리합니다.
다음 예제는 비바이너리 case-insensitive 문자열인
'AaBb'에 대해, 해당 문자들의 lettercase에 대해 weight가 다르지 않지만, 바이너리 문자열인 경우에는 달라짐을 보여줍니다:
1mysql> SELECT HEX(WEIGHT_STRING('AaBb' COLLATE latin1_swedish_ci)); 2+------------------------------------------------------+ 3| HEX(WEIGHT_STRING('AaBb' COLLATE latin1_swedish_ci)) | 4+------------------------------------------------------+ 5| 41414242 | 6+------------------------------------------------------+ 7mysql> SELECT HEX(WEIGHT_STRING(BINARY 'AaBb')); 8+-----------------------------------+ 9| HEX(WEIGHT_STRING(BINARY 'AaBb')) | 10+-----------------------------------+ 11| 41614262 | 12+-----------------------------------+
MySQL은 Section 12.14.1, “Collation Implementation Types”에서 설명하는 여러 가지 collation 구현을 지원합니다. 이 중 일부는 재컴파일 없이 MySQL에 추가할 수 있습니다:
8-bit 문자 집합에 대한 simple collation.
유니코드 문자 집합에 대한 UCA-based collation.
Binary (xxx_bin) collation.
다음 절에서는 첫 두 가지 유형의 사용자 정의 collation을 기존 문자 집합에 추가하는 방법을 설명합니다. 모든 기존 문자 집합에는 이미 binary collation이 있으므로, 여기서는 이를 추가하는 방법을 설명할 필요가 없습니다.
주의
내장 collation 재정의는 지원되지 않으며, 예상치 못한 server 동작을 초래할 수 있습니다.
새 사용자 정의 collation을 추가하는 절차 요약:
collation ID를 선택합니다.
collation의 이름과 문자 정렬 규칙을 설명하는 configuration 정보를 추가합니다.
server를 재시작합니다.
server가 collation을 인식하는지 확인합니다.
여기에서의 지침은 재컴파일 없이 추가할 수 있는 사용자 정의 collation에만 해당됩니다. C 소스 파일 내 function을 통해 구현되는, 재컴파일이 필요한 collation을 추가하려면 Section 12.13, “Adding a Character Set”의 지침을 사용하십시오. 그러나 완전한 문자 집합에 필요한 모든 정보를 추가하는 대신, 기존 문자 집합에 대한 적절한 파일만 수정하십시오. 즉, 해당 문자 집합의 현재 collation에 이미 존재하는 내용을 기반으로, 새 collation에 대한 데이터 구조, function 및 configuration 정보를 추가합니다.
참고
기존 사용자 정의 collation을 수정하는 경우, 이는 해당 collation을 사용하는 column의 index에 대해 row의 정렬 순서에 영향을 줄 수 있습니다. 이 경우 잘못된 query 결과와 같은 문제를 피하기 위해 해당 index를 모두 재구축하십시오. Section 3.14, “Rebuilding or Repairing Tables or Indexes”를 참조하십시오.
Full-text search용 collation을 추가하는 방법을 보여주는 예제: Section 14.9.7, “Adding a User-Defined Collation for Full-Text Indexing”
Unicode Collation Algorithm (UCA) specification: http://www.unicode.org/reports/tr10/
Locale Data Markup Language (LDML) specification: http://www.unicode.org/reports/tr35/
12.13.3 Multi-Byte Character Support for Complex Character Sets
12.14.1 Collation Implementation Types