mysql 은 문자열의 저장 방식을 character set 과 collate 로 지정할수가 있다.
# character set
문자저장 인코딩 체계
utf8mb4 4byte 지원 => 이모티콘 가능
utf8mb3 는 불가, 일부 지원안됨
# collate
collate는 비교, 정렬 기준 character set 에 종속적인 부분이 있다.
문자형 타입에만 한정, 날짜형, 숫자형 과는 무관
- collate 종류의 의미
ai (accent insensitive)
ci (case insensitive)
general
bin (binary)
0900 : 버전
- 테이블 collate 변경 방법
1) modify로 개별 컬럼만 변경
ex) ALTER TABLE aaa MODIFY COLUMN colA VARCHAR(255)
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2) 테이블 속성만 변경
ex) ALTER TABLE aaa DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
=> 테이블의 속성은 변경되지만 기존 데이터 변경되지 않고, 추가되는 컬럼만 이 속성을 따름.
3) convert
기존 데이터도 변환하여 저장. lock 을 수반. 대량 테이블은 오랜 시간 걸림
4) pt-onlie-schema-change
lock 없이 온라인으로 템프테이블에 데이터 카피후 rename 방식
# collate 변경시 이슈
서로다른 collate 컬럼으로 조인을 걸때 에러가 날수 있다.
collate 의 특징을 알고 처음 설계단계에서 지정 collate 를 표준으로 쓰는 것이 중요.
'생계 > MySQL' 카테고리의 다른 글
| mysql cli 자동완성 취소 (0) | 2025.11.28 |
|---|---|
| percona toolkit pt-online-schema-change 설치 및 사용하기 (0) | 2025.11.23 |
| mysql 데이터 이관 방법들 (0) | 2025.11.06 |
| mysql multi master 에 대해 알아보자 (0) | 2025.01.01 |
| [ mysql ] 날짜 파티션 검색 시 (첫번째) 파티션 프루닝 안되는 현상 (0) | 2024.12.24 |