MySQL은 그 자체로 매우 강력한 데이터베이스 관리 시스템입니다. 고가의 상용 데이터베이스 패키지가 제공하는 기능 중 상당 부분을 지원하며, 널리 알려진 표준 SQL 데이터 언어를 사용합니다. MySQL 8.0은 2018년 4월 19일에 출시되었으며, 이 글을 작성하는 시점의 최신 버전은 8.0.23입니다.
이번 글에서는 MySQL 8.0에 도입된 주요 신기능을 하나씩 살펴보겠습니다.
1. 원자적 DDL(Atomic DDL)
MySQL 8.0에서는 원자적 DDL(Data Definition Language) 문이 도입되었습니다. 이를 통해 데이터 딕셔너리 업데이트, 스토리지 엔진 작업 등 여러 단계로 나뉘던 DDL 작업이 하나의 원자적 트랜잭션으로 결합됩니다. 덕분에 DDL 실행 중 오류가 발생해도 서버가 일관된 상태를 유지할 수 있습니다.
2. 암호화 기본값(Encryption Defaults)
테이블 암호화를 위한 전역적인 암호화 기본값이 정의 및 구현되었습니다. default_table_encryption 변수를 사용하면 새로 생성되는 스키마에 적용될 암호화 기본값을 설정할 수 있으며, 스키마 생성 시 DEFAULT ENCRYPTION 절을 통해 해당 스키마의 기본 암호화 설정을 지정할 수도 있습니다.
3. 리소스 그룹(Resource Groups)
이제 리소스 그룹을 생성하고 관리할 수 있으며, 서버는 서버 내에서 실행 중인 스레드를 특정 그룹의 리소스에 할당할 수 있습니다. 그룹 속성을 활용하면 리소스 사용량을 제어하거나, 스레드별로 리소스 소비 권한을 허용 또는 제한하는 등 세밀한 관리가 가능합니다.
4. 기본 문자셋 변경(Default Character Set)
버전 업데이트와 함께 기본 문자셋이 'latin1'에서 'utf8mb4'로 변경되었습니다. 새로운 기본 문자셋인 utf8mb4는 다양한 콜레이션(collation)을 지원하며, 그중에는 MySQL에서 유니코드용으로 처음 제공되는 일본어 전용 콜레이션인 'utf8mb4_ja_0900_as_cs'도 포함되어 있습니다.
5. JSON 기능 개선(JSON Enhancements)
MySQL의 JSON 기능도 크게 향상되었습니다. 인라인 경로 연산자인 '->>'가 추가되었으며, 이는 JSON_EXTRACT() 함수를 호출한 결과에 JSON_UNQUOTE() 함수를 적용한 것과 동일한 동작을 수행합니다. 이를 통해 JSON 데이터 조회 코드를 더욱 간결하게 작성할 수 있습니다.
6. DBA를 위한 향상된 제어권
DBA는 이제 워크로드에 따라 속성을 직접 조정할 수 있는 제어권을 갖게 되었습니다. 서버가 가용한 가상 CPU를 판단하면, 필요한 권한을 보유한 DBA는 해당 CPU를 특정 리소스 그룹과 스레드에 할당하여 시스템 자원을 최적화할 수 있습니다.
7. 개선된 업그레이드 절차(Upgrade Procedure)
업그레이드 절차도 변경되었습니다. 기존에는 mysql_upgrade 유틸리티가 담당하던 작업을 이제 서버가 직접 처리하며, 필요한 모든 업그레이드 작업이 자동으로 수행됩니다. 이를 통해 버전 업그레이드 과정이 한층 간편해졌습니다.
MySQL 8.0은 성능, 보안, 운영 편의성 면에서 많은 개선이 이루어진 버전입니다. 특히 원자적 DDL과 자동 업그레이드 절차는 안정적인 데이터베이스 운영에 큰 도움이 될 것입니다.