생계/MySQL2025. 11. 13. 11:11
반응형

 

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 를 표준으로 쓰는 것이 중요. 

반응형
Posted by 돌고래트레이너