Features Added in MySQL 8.0
Data dictionary
- 이전 버전에서 data dictionary가 meta data와 비 트랜잭션 테이블에 저장되었으나 MySQL 8.0에서는 data dictionary 모두 transactional한 테이블에 저장.
Atomic DDL
- DDL 수행할 때 data dictionary update → 스토리지 엔진에서 수행 → binary log에 기록 하던 단계가 하나로 통합.
Upgrade procedure
- 이전 버전에서는 새로운 버전의 MySQL 설치한 후 DBA가 수동으로 mysql_upgrade를 수동으로 호출하여 system table을 업그레이드 했었음.
- MySQL 8.0.16 버전 부터는 서버 시작시 필요한 모든 업그레이드 작업을 자동으로 수행함.
- 필요시 --upgrade 옵션으로 upgrade 여부 제어 가능.
Security and account management
- MySQL의 권한을 관리하던 mysql 테이블이 innodb로 바뀜.
- 계정 생성중 성공 또는 롤백이 되어도 에러나 오류가 발생하지 않음.
- caching_sha2_password 인증 플러그인이 사용 됨.
Resource management
- DBA가 리소스 그룹을 지정해서 그룹에 CPU thread 할당이 가능함.
InnoDB enhancements
- MySQL 8.0 이전 버전에서는 서버가 재시작 되면 auto_increment 값은 row count+1인 상태로 초기화 되었으나 MySQL 8.0부터는 auto_increment max 값 유지 된다.
- MySQL이 재시작 되도 AUTO_INCREMENT=N 옵션이 사라지지 않는다.
- 동시성이 높은 시스템에서 dead lock 감지는 많은 쓰레드가 동일한 잠금을 대기 하게 되고 속도 저하를 유발 시킴.
- 이때 DBA는 innodb_deadlock_detect 옵션을 조절해서 dead lock 감지 기능 제어 가능.
- information_schema.innodb_cached_indexes 테이블을 통해 innodb buffer pool 내에 인덱스 페이지에 캐시된 수치 확인이 가능.
- buffer pool의 preflushing 및 flushing에 관여하는 옵션의 기본값이 변경 됨.
- innodb_max_dirty_pages_pct_lwm 값은 0 → 10으로 변경. 해당값 10은 buffer pool 내에 dirty page가 10%에 도달하면 preflushing 하는 정책.
- innodb_max_dirty_pages_pct 값은 75 → 90으로 변경. buffer pool 내에 dirty page 값이 지정값을 넘지 않도록 flush 시도하는 정책.
- 기본적으로 비활성화 되어 있으나 innodb_dedicated_server 설정으로 서버의 물리 메모리를 감지해서 아래의 변수들 값을 자동으로 지정할 수 있다.
- innodb_buffer_pool_size,innodb_log_file_size,innodb_flush_method
- lib library 버전이 12.3 → 1.2.11로 상향되어 더 향상된 압축 기능 제공.
- Online DDL 지원, 모든 ALTER TABLE 구문에서 지원은 아니고 제약은 있으나 가능한 범위가 확장됨.
Character set support
- 기본 character set이 latin1 → utf8mb4로 변경 되었다.
Optimizer
- invisible index 지원. 인덱스 생성/삭제 전 쿼리 성능에 영향을 주는지 여부 테스트 용도에 사용.
- descending index 지원. MySQL 8.0 이전 버전에서 인덱스를 역으로 scan 가능했지만 성능 저하가 있었음.
Common table expressions
- CTE 기능 지원
Window functions
- RANK(),LAG(),SUM(),AVG() 등 지원
Features Deprecated in MySQL 8.0
- utf8mb3 character set 은 더이상 사용하지 않음. utf8bm4 사용해야함.
- sha256_password는 더이상 사용하지 않음. caching_sha2_password 사용해야함.
- auto_increment 컬럼을 FLOAT,DOUBLE 타입은 더이상 지원하지 않음. integer 타입으로 전환해야함.
Features Removed in MySQL 8.0
- user 생성 때 GRANT 구문 제거 됨. CREATE USER 구문으로 변경.
- 패스워드 변경 때 update mysql.user set = password('password') 구문 더이상 지원하지 않음.
- Query Cache 기능 제거 됨.
- sql_log_bin 명령어 제거 됨.
- GROUP BY 절에 오는 ASC,DESC 구문 제거 됨. 이전 버전의 MySQL 과 다른 결과를 생성 할 가능성이 있고, 정렬이 필요하면 ORDER BY 구문을 명시해야 함.
- mysql_install_db 프로그램이 제거 됨. MariaDB는 여전히 유지
'RDB > MySQL' 카테고리의 다른 글
mysql 8.0 replication 구성 (0) | 2022.10.24 |
---|---|
MySQL 8.0 Optimization 변경사항 (0) | 2022.10.12 |
SQL 데이터 페이징 처리 (0) | 2022.09.29 |
mysql8.0 lock 확인 (0) | 2022.09.19 |
explain 정보 (0) | 2022.09.16 |