MariaDB 10.5 변경 및 개선 사항

JM·2021년 6월 22일
0

MariaDB

목록 보기
1/1

🔨 구현 된 기능

https://mariadb.com/kb/en/changes-improvements-in-mariadb-105

📌 ColumnStore

  • MariaDB ColumnStore 스토리지 엔진 포함

📌 Binaries Named mariadb (mysql Symlinked)

  • mysql로 시작된 바이너리를 mariadb로 변경 (기존 mysql 이름은 심볼릭 링크로 유지)
    mysql -> mariadb
    mysql_client_test -> mariadb-client-test
    mysql_convert_table_format -> mariadb-convert-table-format
    mysql_find_rows -> mariadb-find-rows
    mysql_fix_extensions -> mariadb-fix-extensions
    mysql_ldb -> mariadb-ldb
    mysql_plugin -> mariadb-plugin
    mysql_secure_installation -> mariadb-secure-installation
    mysql_setpermission -> mariadb-setpermission
    mysql_tzinfo_to_sql -> mariadb-tzinfo-to-sql
    mysql_upgrade -> mariadb-upgrade
    mysql_waitpid -> mariadb-waitpid
    mysqlaccess -> mariadb-access
    mysqladmin -> mariadb-admin
    mysqlbinlog -> mariadb-binlog
    mysqlcheck -> mariadb-check
    mysqld -> mariadbd
    mysqld_multi -> mariadbd-multi
    mysqld_safe -> mariadbd-safe
    mysqld_safe_helper -> mariadbd-safe-helper
    mysqldump -> mariadb-dump
    mysqldumpslow -> mariadb-dumpslow
    mysqlhotcopy -> mariadb-hotcopy
    mysqlimport -> mariadb-import
    mysqlshow -> mariadb-show
    mysqlslap -> mariadb-slap
    mysqltest -> mariadb-test

📌 INET 6 Data Type

  • IPv6 주소 저장을 위한 새로운 INET6 데이터 유형

📌 Amazon S3

  • S3 스토리지 엔진을 사용하여 Amazon S3 또는 S3 API를 구현하는 퍼블릭 또는 프라이빗 클라우드에 MariaDB 테이블을 저장 가능

📌 Privileges Made More Granular

  • SUPER 권한을 세부적으로 분할
    • BINLOG ADMIN - PURGE BINARY LOGS를 포함하여 바이너리 로그를 관리
    • BINLOG REPLAY - BINLOG 문을 사용하여 바이너리 로그 재생을 활성화
    • CONNECTION ADMIN - 연결 리소스 제한 옵션을 관리
    • FEDERATED ADMIN - CREATE SERVER, ALTER SERVERDROP SERVER 문을 실행
    • READ_ONLY ADMIN - read_only 시스템 변수를 설정 및 read_only 옵션이 활성화 된 경우에도 쓰기 작업을 수행 가능
    • REPLICATION MASTER ADMIN - SHOW REPLICA HOSTS 문을 포함하여 기본 서버를 관리하고 gtid_binlog_state, gtid_domain_id, master_verify_checksumserver_id 시스템 변수 설정
    • REPLICATION SLAVE ADMIN - START SLAVE, STOP SLAVE, CHANGE MASTER, SHOW SLAVE STATUS, SHOW RELAYLOG EVENTS 문을 포함한 복제 서버 관리
    • SET USER - triggers, views, stored functionsstored procedures를 생성할 때 DEFINER 설정
  • REPLICATION CLIENT 권한을 BINLOG MONITOR로 이름 변경
  • SHOW MASTER STATUS 명령어를 SHOW BINLOG STATUS로 변경
  • 명령어에 필요한 권한 변경
    • SHOW BINLOG EVENTS - BINLOG MONITOR
    • SHOW SLAVE HOSTS - REPLICATION MASTER ADMIN
    • SHOW RELAYLOG EVENTS - REPLICATION SLAVE ADMIN

📌 InnoDB: Performance Improvements etc.

  • SHOW STATUS LIKE '%%' 명령어 확장 (MDEV-18582)
  • INFORMATION_SCHEMA.INNODB_ 테이블의 불일치 및 비효율성 정리 (MDEV-19940)
  • 초기화된 페이지에 Doublewrite buffer의 불필요한 사용 (MDEV-19738)
  • 페이지가 요청될 때까지 change buffer 병합 연기 (MDEV-19514)
  • Redo log에 대한 더미 테이블 스페이스 제거 ( MDEV-18115 )
  • InnoDB 페이지 헤더 필드에 대한 액세스 최적화 ( MDEV-21133 )
  • InnoDB buffer pool instances 제거 ( MDEV-15058 )
  • buf_page_t :: newest_modification 제거 ( MDEV-21132 )
  • recv_sys_t :: addr_hashstd :: map으로 변경 (MDEV-19586).
  • InnoDB의 FK에 대한 구식 내부 파서 ( MDEV-20480 )
  • 백그라운드 작업을 위한 InnoDB thread pool ( MDEV-16264 )
  • 업그레이드는 완전히 종료된 후에만 가능
  • 효율적인 InnoDB redo log 레코드 형식 ( MDEV-12353 )
  • InnoDB redo log 그룹 커밋 성능 향상 ( MDEV-21534 )
  • 트랜잭션이 이미 충돌을 방지하는 테이블 잠금을 보유하고 있을 때 불필요한 레코드 잠금을 획득 ( MDEV-14479 ).
  • 더 이상 사용되지 않는 innodb_log_files_in_group 변경에 대한 메시지 출력 (MDEV-21990)
  • NVDIMM 용 추가 전용 파일 최적화 (MDEV-17084)
  • 해제 된 InnoDB 페이지 쓰기 방지 (MDEV-15528)

🔧 InnoDB New Defaults for Variables

  • innodb_adaptive_hash_index 기본값 변경 (ON -> OFF)
  • innodb_checksum_algorithm 기본값 변경 (crc32 -> full_crc32)

🔧 InnoDB Removed or Deprecated Variables

  • innodb_buffer_pool_instances
  • innodb_checksums
  • innodb_locks_unsafe_for_binlog
  • innodb_log_checksums
  • innodb_log_files_in_group
  • innodb_log_optimize_ddl
  • innodb_rollback_segments
  • innodb_scrub_log and innodb_scrub_log_speed
  • innodb-background-scrub-data-uncompressed
  • nnodb-background-scrub-data-compressed
  • innodb-background-scrub-data-interval
  • innodb-background-scrub-data-check-interval
  • innodb_stats_sample_pages
  • innodb_undo_logs
  • innodb_thread_concurrency
  • innodb_commit_concurrency
  • innodb_replication_delay
  • innodb_concurrency_tickets
  • innodb_thread_sleep_delay
  • innodb_adaptive_max_sleep_delay

📌 Performance Schema Updates to Match MySQL 5.7 Instrumentation and Tables

  • Memory (MDEV-16431)
  • Meta data locking (MDL) (MDEV-16432)
  • Prepared statements (ps) (MDEV-16433)
  • [show] status instrumentation and tables (MDEV-16438)
  • Stored procedures (MDEV-16434)
  • Sxlocks (MDEV-16436)
  • Transactions (MDEV-16435)
  • User variables (MDEV-16439)

📌 Galera: Full GTID Support

  • Galera Cluster에 full GTID 지원 (클러스터의 모든 노드가 클러스터에서 발생하는 복제 된 이벤트에 대해 동일한 GTID를 가짐)
  • wsrep_gtid_seq_no 변수 추가
  • wsrep_OSU_method에 새 모드 추가
  • MariaDB GTID를 클러스터의 다른 노드에 복제 (MDEV-20720)

📌 Binary Log and Replication: More Metadata

  • slave_parallel_mode 기본값 변경 (conservative -> optimistic)
  • SQL에서 REPLICA를 SLAVE의 동의어로 설정
  • slave_run_triggers_for_rbr 변수의 ENFORCE 옵션 추가
  • 새 필드를 포함하도록 binlog metadata 확장 (binlog_row_metadata 변수 추가)
  • 바이너리 로그의 DDL 항목에서 대상 테이블이 존재하지 않는 경우 무시해야 한다고 표시 가능 (암시 적 IF EXISTS)
  • mariadb-binlog 출력 확장 (모든 복제 플래그 표시)
  • SHOW BINLOG EVENTSSHOW RELAYLOG EVENTS 명령어는 복제 플래그를 표시하도록 확장

📌 Syntax

  • INSERT ... RETURNING 구문 추가
  • REPLACE ... RETURNING 구문 추가
  • EXCEPT ALL, INTERSECT ALL 구문 추가
  • WITHOUT OVERLAPS 절 추가
  • 시스템 버전 관리를 위한 기본 파티션 설정 추가
  • CREATE DATABASE, ALTER DATABASE 구문의 데이터베이스 주석 추가
  • ALTER TABLE ... RENAME INDEX / KEY 구문 추가
  • ALTER TABLE ... RENAME COLUMN 구문 추가
  • ALTER TABLE, RENAME TABLE 구문의 IF EXISTS 지원
  • CREATE TABLE의 인덱스에 대한 VISIBLE 속성 추가
  • 재귀 CTECYCLE 절 추가
  • RELEASE_ALL_LOCKS 함수 추가

📌 JSON

  • JSON_ARRAYAGG 함수 추가
  • JSON_OBJECTAGG 함수 추가

📌 Thread Pool

  • Thread pool의 내부에 대한 information schema 테이블 제공
    THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS, THREAD_POOL_WAITS

📌 Performance Improvements

  • Binary row logging 코드 속도 향상
  • 범위 최적화 프로그램 속도 향상
  • MEMORY 테이블 사용 비용이 더 정확하도록 업데이트
  • 동일한 인덱스에 대해 '범위'보다 '참조' 액세스가 선호되도록 수정
  • 연결 속도 향상 (최대 25%)

📌 General

  • INFORMATION_SCHEMA.SYSTEM_VARIABLES 테이블의 GLOBAL_VALUE_PATH 컬럼 추가
  • Perl DBI 스크립트를 DBD :: mysql에서 DBD :: MariaDB 드라이버로 변경
  • Aria 최대 키 길이 변경 (2000 bytes)
  • .frm 파일이 누락 된 경우에도 DROP TABLE 명령어로 스토리지 엔진 내부의 나머지 테이블을 안정적으로 삭제
  • AMD64, ARMv8, POWER 8을 위한 가속 crc32() 함수 추가
  • Binary tarball 크기 감소

📌 PCRE (Perl Compatible Regular Expressions)

  • PCRE2로 변경하여 REGEXP/RLIKE 연산자의 성능 향상

📌 Variables

profile
오픈소스 DB엔지니어

0개의 댓글