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

+ Recent posts