MySQL 5.7 vs 8.0

kmb·2022년 7월 21일
0

DB

목록 보기
1/10
post-thumbnail

MySQL 5.7 버전에서 8.0 버전으로 2020년 8월30일에 출시가 되었다.

5.7 버전과 8.0 버전의 차이점

 
1. 사용자 인증 방식

MySQL 5.7의 사용자 계정은 Native Authentication 인증방식을 사용하지만, MySQL 8.0 버전에서 별도의 옵션없이 생성되는 사용자 계정은 Caching SHA-2 Authentication 인증방식을 사용.

MySQL 8.0 버전에서도 Native Authentication 인증방식을 사용하려면 MySQL 서버를 시작할때
--default-authentication-plugin=mysql_native_password 파라미터를 활성화한다.

2. 외래키 이름의 길이

MySQL 8.0에서는 외래키(Foreign Key)의 이름이 64글자로 제한된다.

3. 파티션을 위한 공용 테이블스페이스 저장여부

MySQL 8.x 에서는 파티션의 각 테이블스페이스를 공용 테이블스페이스에 저장할 수 없다.

만약 MySQL 8.x 에서 파티션의 테이블스페이스가 공용 테이블스페이스에 저장된것이 있다면
ALTER TABLE ... REORGANIZE 명령어를 실행해서 개별 테이블스페이스를 사용하도록 변경해야 한다.


8.0 버전에서 새롭게 추가된 기능

 
1. 별도의 NoSQL 문서 데이터베이스가 필요하지 않다

2. SQL Locking 절에 nowaitskip locked 대안을 제공한다

일반적으로 row가 update로 잠기게 되면 다른 transaction은 잠긴 row에 접근하기위해 대기해야한다.
nowait을 사용하는 locking 절은 잠금이 된 row를 얻기위해 기다리지않는다.
대신 잠긴 row는 건너뛰고 전혀 읽지않는다.

3. 인덱스를 내림차순으로 지원한다.

MySQL 5.7 버전에서는 내림차순 인덱스를 만들기 위해 먼저 오름차순 인덱스를 생성하고 역순으로 검색해야한다.

4. JSON 경로 표현식의 범위에 대한 구문을 확장한다.

JSON 배열을 생성하는 집계함수 JSON_ARRAYAGG( ) 및 JSON 객체를 생성하는 JSON_OBJECTAGG( ) 가 추가된다.

--> 여러 row의 JSON 문서를 JSON 배열이나 JSON 객체로 결합할 수 있다.

참조

profile
꾸준하게

0개의 댓글