카카오테크 부트캠프/프로젝트

MYSQL 9.2 버전 선정한 근거

bubhyun 2025. 5. 8. 17:17
728x90

MySQL 9.2.0 (2025-01-21, Innovation Release)

 

MySQL :: MySQL 9.2 Release Notes :: Changes in MySQL 9.2.0 (2025-01-21, Innovation Release)

MySQL 9.2 Release Notes  /  Changes in MySQL 9.2.0 (2025-01-21, Innovation Release) Changes in MySQL 9.2.0 (2025-01-21, Innovation Release) Process memory usage grew when the libmysqlclient API user tried to cache and reuse a prepared statement, preparin

dev.mysql.com

 

 

MySQL 9.2.0 주요 업데이트

계정 및 권한 관련

  • DROP USER 이후 데이터베이스 캐시가 제대로 비워지지 않던 문제 해결
  • 새 권한 CREATE_SPATIAL_REFERENCE_SYSTEM 추가
    → 기존에는 SUPER 권한 필요했지만, 이제 전용 권한으로 분리됨
  • 비밀번호 유효성 검사 오류 일부 수정

컴포넌트 관련

  • Group Replication Resource Manager 추가 (EE 전용)
    → 세컨더리 노드의 지연 시간과 리소스 사용량 감시 후 자동 퇴출
  • Option Tracker 개선
    → 일부 설치 순서 문제나 병렬 설치 중 서버 중단 문제 해결

컴파일 및 플랫폼 관련

  • macOS: Homebrew Clang 지원, 중복 경고 제거, 빌드 오류 수정
  • Windows: Visual Studio 2022 경고 제거, WITH_SASL 비활성화
  • Clang 19 / GCC 14 / Fedora 40 / Solaris 11.4 지원 개선
  • Libedit 버전: 20240808-3.1로 업그레이드

SQL 및 기능 관련

  • BINLOG 키워드 → 이제 인용부호 없는 라벨로 사용 금지 (SQL 예약어로 강제됨)
  • FLUSH PRIVILEGES 문 → Deprecated (추후 제거 예정)
  • Version Tokens Plugin → Deprecated

옵티마이저 개선

  • EXPLAIN FORMAT=JSON → lookup_references 정보 추가됨
  • 일부 해시 조인 최적화
  • WHERE 절 내 집계 함수 처리 오류 수정

Performance Schema 개선

  • 복제 스레드의 사용자 이름이 system user로 표기되도록 수정
  • 메타데이터 락 유형 변경 시 반영되지 않던 문제 해결

인증 관련

  • AUTHENTICATION_POLICY_ADMIN 관련 정책 오류 수정
  • OpenID Connect 플러그인 → Option Tracker에 등록됨

JavaScript 저장 프로시저(MLE) (EE 전용)

  • ENUM, SET 타입 지원
  • CREATE LIBRARY, DROP LIBRARY 문으로 JS 라이브러리 관리 가능
  • JS에서 MySQL 함수, 트랜잭션, 사용자 변수 직접 호출 가능

InnoDB 관련 핵심 개선사항

  • 복구 시 IBUF 병합 완전히 비활성화 (속도 및 안정성 개선)
  • 공간 인덱스 관련 버그 수정 및 일부 인덱스 손상 이슈 해결
  • 고성능 환경에서의 I/O 처리 성능 향상
  • ALTER TABLE 관련 동시성 버그 및 데이터 손실 이슈 해결
  • 128코어 이상 환경에서 CPU 사용률 집계 오류 수정

복제 및 Group Replication

  • 대용량 트랜잭션 처리 중 STOP REPLICA 후 처리되지 않던 문제 수정
  • Primary 노드 재합류 시 다중 노드 충돌로 인한 무한 대기 상태 해결
  • View Change 이벤트 주변에서는 commit order 보장 안될 수 있음 (비충돌 트랜잭션에 한해)

기타 주요 버그 수정

  • ALTER TABLE 중 동시 purge로 인한 데이터 손실 가능성 제거
  • UNION 과다 메모리 사용 문제 개선
  • mysqlslap, mysqldump 사용 중 비정상 동작 다수 수정
  • WITH ROLLUP, OFFSET, VECTOR, YEAR + BOOL 등 타입 처리 오류 다수 해결

요약해서,

  • 보안과 권한 관리 강화
  • macOS/Windows/Clang 등 플랫폼 호환성 향상
  • 복제 및 InnoDB 안정성 개선
  • MLE 기능 확장 (EE 대상)
  • 다양한 성능 개선과 버그 수정

 

MySQL 9.1.0 주요 업데이트

1. 원자적 DDL 완전 지원

  • CREATE DATABASE 및 DROP DATABASE가 이제 완전한 원자성을 보장.
  • 실패하거나 충돌이 발생해도 파일 시스템과 데이터사전의 상태가 일치함.

2. 보안 및 인증 개선

  • Windows Hello 기반 WebAuthn 지원 (Enterprise Edition): 생체 인증 및 패스키 인증 가능.
  • authentication_openid_connect 플러그인으로 OpenID Connect 인증 지원.
  • 키링 구성 요소에서 AES-ECB 제거 → 안전한 암호화 방식 유지.

3. 옵션 추적 기능 도입 (Option Tracker)

  • 시스템 및 플러그인에서 사용하는 옵션들의 사용 여부 및 사용 시각을 기록.
  • 성능 스키마와 통합되어 시각화 가능 (Enterprise 기능).

4. 트리거 처리 성능 향상

  • SELECT 쿼리 등에서 트리거를 파싱하지 않음 → 불필요한 리소스 사용 감소.
  • 새로운 시스템 변수 table_open_cache_triggers 도입.

5. 벡터 타입 및 JavaScript 저장 프로그램 개선

  • JavaScript 저장 프로시저에서 VECTOR 타입 완전 지원.
  • CREATE LIBRARY, USING 절로 JavaScript 모듈 재사용 가능.
  • 저장 JavaScript 내 SQL 실행 결과가 Performance Schema에 기록됨.

6. 성능 스키마 및 복제 메트릭 강화

  • 복제 지연 시간, 리소스 사용량, 쓰기 순서 보존 여부 추적 가능.
  • 새로운 상태 테이블 도입: replication_applier_metrics, replication_applier_progress_by_worker.

7. OpenTelemetry 원격 측정 로그 지원 (Enterprise 기능)

  • 로그를 OTLP 포맷으로 내보내 외부 백엔드에서 분석 가능.
  • 커스텀 로깅 구성 요소 개발도 가능.

8. 구성 및 빌드 환경 개선

  • macOS, Windows, Ubuntu, Fedora, Solaris 등 다양한 OS에서 컴파일 호환성 향상.
  • 번들 라이브러리 업데이트: curl 8.11.1, zlib 1.3.1, libedit, OpenSSL 3.0.15 등.

9. 인덱스 및 쿼리 최적화

  • 다중값 인덱스(MVIC) 개선 및 커버링 인덱스 버그 수정.
  • EXPLAIN FORMAT=JSON 및 TREE 형식에 더 풍부한 정보 추가.
  • GROUP BY ROLLUP, SUM(DISTINCT ...), UNION 관련 불일치 문제 해결.

10. 버그 수정 및 안정성 강화

  • 수백 건의 버그 수정: 서버 충돌, 메모리 누수, 잘못된 정렬 처리, 준비된 명령문 이슈 등.
  • 특히 InnoDB, FTS, Replication, Group Replication 관련 문제 다수 해결.

 

  9.1.0 (기능 도입 중심) 9.2.0 (기능 확장 + 안정화) 9.2에서 더 좋아진 점
DDL 처리 원자적 DDL 지원 시작 (CREATE/DROP DATABASE) 버그 수정 및 안정성 강화 실패 시 디렉터리 정리 문제 해결
보안 및 인증 WebAuthn (Windows Hello), OpenID Connect 지원 시작 인증 정책 플러그인 오류 수정, 플러그인 Option Tracker 등록 신뢰성 및 관리 기능 강화
옵션 추적 (Option Tracker) 최초 도입, 사용 시각 기록, EE 기능 설치 순서 문제 해결, 병렬 설치 충돌 해결 실사용자 환경에서 문제 해결
트리거 처리 SELECT 시 파싱 안 함, 리소스 절감 트리거 캐시 최적화 + 관련 변수(table_open_cache_triggers) 도입 SELECT 성능 향상 + 메모리 관리
벡터 타입 / JS 프로시저 (MLE) VECTOR 타입 완전 지원, JS 라이브러리 도입 ENUM/SET 타입 추가 지원, 트랜잭션 API, 사용자 변수 접근 추가 실제 JS 개발 생산성 증가
복제/Group Replication 새로운 지표 제공 (지연, 순서 등), 상태 테이블 도입 리소스 초과 자동 퇴출, STOP REPLICA 중단 문제 해결 장애 복구 능력 강화
OpenTelemetry OTLP 포맷 로그 전송 도입 (EE) 실제 OTLP 통합 버그 해결, 안정화 외부 분석 연동이 가능해짐
컴파일/플랫폼 macOS, Windows, Ubuntu 등 지원 확장 Homebrew Clang, GCC 14, Clang 19, Fedora 40, Solaris 11.4 추가 대응 최신 환경 대응력 향상
인덱스/쿼리/옵티마이저 MVIC, 커버링 인덱스, ROLLUP 등 개선 시작 EXPLAIN FORMAT=JSON 강화, 집계 함수 처리 오류 다수 수정 진단 도구 정확도 + 쿼리 신뢰도 향상
버그 및 안정성 대규모 버그 수정: InnoDB, FTS, 복제 등 ALTER 중 purge, UNION 메모리, DROP USER 캐시, mysqlslap 등 실질적 개선 실서비스 중 장애 가능성 낮아짐

# 좋아진 점

1. DDL 완전 원자화

  • 이전: CREATE DATABASE나 DROP DATABASE가 실패하면 폴더는 생기거나 남는데 DB는 없어서 수동으로 정리해야 했습니다.
  • 지금: 이제는 완전 원자적으로 처리되어, 실패해도 시스템이 자동 정리해줘서 안정성과 신뢰성이 높아졌습니다.

2. 트리거 성능 향상

  • 이전: SELECT만 해도 트리거를 항상 읽어서 불필요한 리소스를 썼습니다.
  • 지금: 이제는 데이터 변경(INSERT/UPDATE/DELETE) 때만 트리거를 읽어서, 쿼리 성능이 빨라졌습니다.

 

 

728x90