MySQL 8.0은 이전 버전 대비 보안, 성능, 운영 편의성 등 여러 면에서 크게 개선된 기능들을 담고 있습니다. 이번 글에서는 MySQL 8.0에 새롭게 추가된 주요 기능들을 하나씩 살펴보겠습니다.
강화된 보안 수준
MySQL 8.0에서는 보안 수준이 크게 향상되었으며, DBA(데이터베이스 관리자)에게 계정 관리에 대한 더 많은 유연성이 제공됩니다. 역할(Role) 기반 권한 관리가 도입되어 사용자별로 세분화된 권한 부여와 체계적인 계정 관리가 가능해졌습니다.
리소스 그룹(Resource Groups)
리소스 그룹을 생성하고 관리할 수 있으며, 서버 내에서 실행 중인 스레드를 특정 그룹의 리소스에 할당할 수 있습니다. 그룹 속성을 활용하면 리소스 사용량을 제어하거나, 특정 스레드의 리소스 소비를 허용 또는 제한하는 등 세밀한 자원 관리가 가능합니다.
트랜잭션 데이터 딕셔너리
데이터베이스 객체 정보를 저장하는 데이터 딕셔너리가 트랜잭션 방식으로 변경되었습니다. 이전 버전에서는 트랜잭션을 지원하지 않는 테이블에 객체 정보가 저장되었지만, MySQL 8.0부터는 원자성과 안정성이 보장되는 트랜잭션 데이터 딕셔너리에 저장되어 데이터 충돌이나 불일치 위험이 줄어들었습니다.
개선된 업그레이드 절차
업그레이드 절차가 변경되어, 이전에는 'mysql_upgrade' 유틸리티가 수행하던 작업을 이제 서버가 직접 처리합니다. 필요한 모든 업그레이드 작업이 자동으로 수행되므로 관리자의 수동 작업 부담이 크게 줄었습니다.
InnoDB 엔진 개선
InnoDB 엔진에도 중요한 변화가 있었습니다. 현재 최대 AUTO_INCREMENT 카운터 값이 변경될 때마다 'redo log'에 기록되고, 체크포인트 시점마다 엔진 전용 시스템 테이블에 저장됩니다. 이를 통해 서버가 재시작되더라도 최대 자동 증가 카운터 값이 모든 서버에서 일관되게 유지됩니다.
기본 문자 집합 변경
버전 업데이트와 함께 기본 문자 집합이 'latin1'에서 'utf8mb4'로 변경되었습니다. 새로운 문자 집합인 'utf8mb4'는 다양한 콜레이션(collation)을 지원하며, 그중 'utf8mb4_ja_0900_as_cs'는 MySQL에서 Unicode용으로 처음 제공된 일본어 전용 콜레이션입니다. 이를 통해 다국어 데이터를 더욱 안정적으로 처리할 수 있습니다.
JSON 기능 강화
MySQL의 JSON 기능도 개선되었습니다. 인라인 경로 연산자인 '->>'가 새롭게 추가되었으며, 이는 'JSON_EXTRACT()' 함수를 호출한 결과에 'JSON_UNQUOTE()' 함수를 적용한 것과 동일하게 동작합니다. 덕분에 JSON 데이터에서 값을 추출하고 따옴표를 제거하는 작업을 더 간결하고 효율적으로 처리할 수 있습니다.