>  기사  >  데이터 베이스  >  MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!

MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!

藏色散人
藏色散人앞으로
2020-04-11 11:47:562450검색

MySQL의 역사에 대해서는 이미 많은 분들이 잘 알고 계실 것이라 여기에서는 자세히 다루지 않겠습니다. 다음은 제품 특성 측면에서만 개발 과정의 마일스톤을 요약한 것입니다.

권장: "mysql 비디오 튜토리얼"

1995년에 MySQL 1.0은 내부용으로만 출시되었습니다.

1996년에 MySQL 3.11.1이 출시되어 MySQL 2.x 버전을 직접 건너뛰었습니다.

1999년에 MySQL AB가 설립되었습니다. 같은 해에 Berkeley DB 스토리지 엔진을 통합한 MySQL 3.23이 출시되었습니다. 엔진은 Sleepycat에서 개발되었으며 트랜잭션을 지원합니다. 엔진을 통합하는 과정에서 소스 코드가 수정되어 후속 플러그형 스토리지 엔진 아키텍처의 기반이 마련되었습니다.

2000년 ISAM은 MyISAM 스토리지 엔진으로 업그레이드되었습니다. 같은 해에 MySQL은 GPL 계약을 기반으로 한 오픈 소스였습니다.

2002년에 MySQL 4.0이 출시되어 나중에 유명한 InnoDB 스토리지 엔진이 통합되었습니다. Innobase에서 개발한 이 엔진은 트랜잭션 및 행 수준 잠금을 지원하며 OLTP와 같은 높은 동시성 시나리오에 적합합니다.

2005년 MySQL 5.0이 출시되어 커서, 저장 프로시저, 트리거, 뷰, XA 트랜잭션과 같은 기능을 지원하기 시작했습니다. 같은 해 Oracle은 Innobase를 인수했습니다.

2008년 Sun은 MySQL AB를 10억 ​​달러에 인수했습니다. 같은 해 타이머(이벤트 스케줄러), 파티셔닝, 행 기반 복제 등의 기능을 지원하기 시작한 MySQL 5.1이 출시되었습니다.

2009년 Oracle은 Sun을 74억 달러에 인수했습니다.

2010년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 5.5가 출시되었습니다.

● InnoDB는 MySQL의 기본 스토리지 엔진으로 MyISAM을 대체합니다.

● 멀티코어 확장으로 멀티코어 CPU를 최대한 활용할 수 있습니다.

● InnoDB 성능 개선에는 신속한 인덱스 생성 지원, 테이블 압축, I/O 하위 시스템 성능 개선, PURGE 작업이 메인 스레드에서 분리되고 버퍼 풀을 여러 인스턴스로 분할할 수 있는 기능이 포함됩니다.

● 반동기 복제.

● 이모티콘 표현을 저장하는 데 사용할 수 있는 utf8mb4 문자 세트를 소개합니다.

● 메타데이터 잠금을 소개합니다.

● 파티션 테이블 향상, RANGE COLUMNS 및 LIST COLUMNS라는 두 가지 새로운 파티션 유형이 추가되었습니다.

● MySQL Enterprise Edition에는 스레드 풀이 도입되었습니다.

● IO 읽기 및 쓰기 스레드 수를 구성할 수 있습니다(innodb_read_io_threads, innodb_write_io_threads). 이전에는 숫자가 1이었고 구성할 수 없었습니다.

● 더티 페이지 새로 고침 횟수를 제어하기 위해 innodb_io_capacity 옵션을 도입했습니다.

2013년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 5.6이 출시되었습니다.

● GTID 사본.

● 무손실 사본.

● 복사가 늦어졌습니다.

● 라이브러리 레벨 기반 병렬 복제.

● mysqlbinlog는 binlog를 원격으로 백업할 수 있습니다.

● TIME, DATETIME 및 TIMESTAMP가 소수 초를 지원하도록 리팩터링되었습니다. DATETIME의 공간 요구 사항도 이전 8바이트에서 5바이트로 줄었습니다.

● 온라인 DDL. ALTER 작업은 더 이상 DML을 차단하지 않습니다.

● 이동 가능한 테이블스페이스.

● 통계 정보의 지속성. 마스터와 슬레이브 간에 또는 데이터베이스를 다시 시작한 후에 동일한 SQL의 실행 계획에 차이가 발생하지 않도록 하세요.

● 전체 텍스트 색인.

● InnoDB Memcached 플러그인.

● EXPLAIN을 사용하면 DELETE, INSERT, REPLACE, UPDATE 등 DML 작업의 실행 계획을 볼 수 있습니다. 이전에는 SELECT 작업만 지원되었습니다.

● 사용 가능한 최대 파티션 수를 8192개로 늘리고, 분할된 테이블과 분할되지 않은 테이블 간의 데이터 교환을 지원하고, 작업 중 파티션을 명시적으로 지정하는 등 파티션 테이블이 향상되었습니다.

● Redo Log의 전체 크기 제한이 기존 4G에서 512G로 확장되었습니다.

● Undo Log는 독립적인 테이블 공간에 저장할 수 있기 때문에 SSD에 두는 것이 더 적합합니다. 그러나 자동 공간 회수는 여전히 지원되지 않습니다.

● 데이터베이스를 다시 시작한 후 필요한 긴 준비 시간을 피하기 위해 버퍼 풀의 상태를 덤프하고 로드할 수 있습니다.

● 커널 뮤텍스 분할, 독립적인 새로 고침 스레드 도입, 다중 제거 스레드 설정 등 InnoDB 내부 성능이 개선되었습니다.

● 옵티마이저 성능이 향상되었고, ICP, MRR, BKA 등의 기능이 도입되었으며, 하위 쿼리가 최적화되었습니다.

MySQL 5.6은 MySQL 역사상 획기적인 버전이라고 할 수 있으며, 프로덕션에서 가장 널리 사용되는 버전이기도 합니다.

2015년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 5.7이 출시되었습니다.

● 그룹 복제

● InnoDB 클러스터

● 다중 소스 복제

● 향상된 반동기화(AFTER_SYNC)

● WRITESET 기반 병렬 복제.

● 온라인으로 GTID 복제를 활성화하세요.

● 온라인으로 복사 필터링 규칙을 설정하세요.

● 버퍼 풀의 크기를 온라인으로 수정하세요.

● 동일한 길이의 인코딩된 바이트 내에서 VARCHAR의 크기를 수정하면 임시 테이블을 생성하지 않고 테이블의 메타데이터만 수정하면 됩니다.

● NUMA 아키텍처(innodb_numa_interleave)의 메모리 할당 전략을 설정할 수 있습니다.

● 투명한 페이지 압축.

● UNDO 테이블 공간 자동 재활용.

● 쿼리 최적화 프로그램 리팩토링 및 개선.

● 현재 실행 중인 SQL의 실행 계획(EXPLAIN FOR CONNECTION)을 확인할 수 있습니다.

● 서버 측에서 쿼리를 다시 작성할 수 있는 쿼리 다시 쓰기 플러그인을 도입했습니다.

● EXPLAIN FORMAT=JSON은 두 실행 계획의 장단점을 직관적으로 비교할 수 있도록 비용 정보를 표시합니다.

● Oracle의 함수 인덱스와 유사한 가상 열이 도입되었습니다.

● 새 인스턴스는 더 이상 기본적으로 테스트 데이터베이스와 익명 사용자를 생성하지 않습니다.

● 사용자 비밀번호, 비밀번호 만료 정책 및 사용자 잠금을 수정하는 데 사용할 수 있는 ALTER USER 명령을 소개합니다.

● mysql.user 테이블에서 비밀번호를 저장하는 필드가 비밀번호에서 인증_문자열로 변경되었습니다.

● 테이블 공간 암호화.

● 성능 스키마가 최적화되고 메모리 사용량이 줄어듭니다.

● 성능 스키마는 다양한 악기를 소개합니다. 일반적으로 사용되는 것에는 MySQL의 메모리 사용량을 확인하는 데 사용할 수 있는 메모리 사용량 계측, MDL의 보유 상태를 확인하는 데 사용할 수 있는 메타데이터 잠금 계측, 진행 상황을 확인하는 데 사용할 수 있는 Stage Progress 계측 등이 있습니다. 온라인 DDL.

● 동일한 트리거 이벤트(INSERT, DELETE, UPDATE) 및 동일한 트리거 시간(BEFORE, AFTER)을 통해 여러 트리거 생성이 가능합니다. 이전에는 하나의 트리거만 생성할 수 있었습니다.

● InnoDB는 기본적으로 파티션 테이블을 지원합니다. 이전에는 ha_partition 인터페이스를 통해 구현되었습니다.

● 분할된 테이블은 이동 가능한 테이블 공간 기능을 지원합니다.

● 통합 SYS 데이터베이스로 MySQL 관리를 단순화하고 비정상적인 문제를 찾아냅니다.

● 기본적으로 JSON 유형을 지원하고 다양한 JSON 기능을 도입합니다.

● 테이블 수준 멀티 스레드 백업을 지원하는 새로운 논리적 백업 도구인 mysqlpump를 도입했습니다.

● JavaScript, Python 및 SQL의 세 가지 언어를 지원하는 새로운 클라이언트 도구인 mysqlsh를 도입했습니다. 두 가지 API: X DevAPI 및 AdminAPI 전자는 MySQL을 문서 데이터베이스로 작동할 수 있고 후자는 InnoDB 클러스터를 관리하는 데 사용됩니다.

● mysql_install_db는 인스턴스를 초기화하는 데 사용되는 mysqld --initialize로 대체됩니다.

● systemd에 대한 기본 지원.

● super_read_only 옵션이 도입되었습니다.

● SELECT 작업에 대한 제한 시간(max_execution_time)을 설정할 수 있습니다.

● SHUTDOWN 명령을 통해 MySQL 인스턴스를 종료할 수 있습니다.

● 높은 동시성 시나리오에서 교착 상태 감지를 끄는 데 사용할 수 있는 innodb_deadlock_Detect 옵션이 도입되었습니다.

● ICP, MRR 활성화 여부 등 옵티마이저의 동작을 명령문 수준에서 제어할 수 있는 옵티마이저 힌트가 도입되었습니다. 이전에는 인덱스 힌트만 있었습니다.

● Boost.Geometry를 사용하여 이전 GIS 알고리즘을 대체하는 등 GIS 기능이 향상되었으며 InnoDB가 공간 인덱스를 지원하기 시작했습니다.

2018년에는 다음과 같은 중요한 기능과 업데이트가 포함된 MySQL 8.0이 출시되었습니다.

● 네이티브 InnoDB 기반 데이터 사전을 선보였습니다. 데이터 사전 테이블은 mysql 라이브러리에 있으며 사용자에게 표시되지 않습니다. mysql 라이브러리의 다른 시스템 테이블과 마찬가지로 데이터 디렉터리의 mysql.ibd 파일에 저장됩니다. 더 이상 mysql 디렉토리에 위치하지 않습니다.

● 원자적 DDL.

● INFORMATION_SCHEMA가 재구성되었으며, 일부 테이블은 데이터 사전을 기반으로 뷰로 재구성되었습니다.

● PERFORMANCE_SCHEMA 쿼리 성능이 향상되었으며 여러 내장 인덱스가 있습니다.

● 보이지 않는 색인.

● 내림차순 지수.

● 히스토그램.

● 일반적인 테이블 표현식.

● 창 기능.

● 역할.

● 리소스 그룹을 사용하면 스레드의 우선순위와 스레드에서 사용할 수 있는 리소스를 제어할 수 있습니다. 현재 관리할 수 있는 유일한 리소스는 CPU입니다.

● 서버 메모리에 따라 innodb_buffer_pool_size, innodb_log_file_size 및 innodb_flush_method를 동적으로 설정할 수 있는 innodb_dedicated_server 옵션이 도입되었습니다.

● 열을 빠르게 추가하세요(ALGORITHM=INSTANT).

● JSON 필드 부분 업데이트(JSON 부분 업데이트).

● 자동 증가 기본 키의 지속성.

● 지속 가능한 전역 변수(SET PERSIST).

● 기본 문자 집합이 latin1에서 utf8mb4로 변경되었습니다.

● UNDO 테이블스페이스는 기본적으로 활성화되어 있으며 온라인 수량 조정(innodb_undo_tablespaces)을 지원합니다. MySQL 5.7에서는 기본적으로 활성화되어 있지 않습니다. 활성화하려면 초기화 중에만 설정할 수 있습니다.

● 백업 잠금.

● 여러 사용자 스레드가 로그 버퍼에 동시에 쓸 수 있도록 허용하고 innodb_log_buffer_size의 크기를 동적으로 수정하는 등 로그 최적화를 다시 실행합니다.

● 기본 인증 플러그인이 mysql_native_password에서 caching_sha2_password로 변경되었습니다.

● 기본 메모리 임시 테이블이 MEMORY 엔진에서 TempTable 엔진으로 변경되었습니다. 전자에 비해 후자는 VARCHAR, VARBINARY 및 기타 가변 길이 필드의 가변 길이 저장을 지원합니다. MySQL 8.0.13부터 TempTable 엔진은 BLOB 필드를 지원합니다.

● Grant는 더 이상 암시적으로 사용자를 생성하지 않습니다.

● NOWAIT 및 SKIP LOCKED 옵션은 전자 상거래 시나리오에서 핫 행 문제를 해결하기 위해 SELECT ... FOR SHARE 및 SELECT ... FOR UPDATE 문에 도입되었습니다.

● 정규식 향상, 4개의 새로운 관련 함수 REGEXP_INSTR(), REGEXP_LIKE(), REGEXP_REPLACE(), REGEXP_SUBSTR()이 추가되었습니다.

● 쿼리 최적화 프로그램은 실행 계획을 세울 때 데이터가 버퍼 풀에 있는지 여부를 고려합니다. 이전에는 데이터가 디스크에 있다고 가정했습니다.

● ha_partition 인터페이스가 코드 레이어에서 제거되었습니다. 파티션 테이블을 사용하려면 InnoDB 스토리지 엔진만 사용할 수 있습니다.

● SUPER 권한을 대체하기 위해 더욱 세분화된 권한이 도입되었습니다. 이제 SUPER 권한을 부여하면 경고 메시지가 표시됩니다.

● GROUP BY 문은 더 이상 암시적으로 정렬되지 않습니다.

● MySQL 5.7에 도입된 테이블스페이스 암호화 기능은 Redo Log 및 Undo Log를 암호화할 수 있습니다.

● information_schema의 innodb_locks 및 innodb_lock_waits 테이블이 제거되고performance_schema의 data_locks 및 data_lock_waits 테이블로 대체되었습니다.

● 매개변수의 소스 및 수정 사항을 기록하기 위해performance_schema.variables_info 테이블이 도입되었습니다.

● 클라이언트 오류 메시지에 대한 통계가 추가되었습니다(performance_schema.events_errors_summary_xxx).

● 쿼리의 응답 시간 분포를 계산할 수 있습니다(sys.ps_statement_avg_latency_histogram() 호출).

● 열 이름 직접 수정을 지원합니다(ALTER TABLE ... RENAME COLUMN old_name TO new_name).

● 사용자 비밀번호에 따라 재시도 정책(Reuse Policy)을 설정할 수 있습니다.

● PASSWORD() 함수를 제거하세요. 이는 "SET PASSWORD ... = PASSWORD('auth_string')" 명령을 통해 사용자 비밀번호를 수정할 수 없음을 의미합니다.

● 코드 레이어에서 Query Cache 모듈이 제거되어 Query Cache 관련 변수 및 연산이 더 이상 지원되지 않습니다.

● BLOB, TEXT, GEOMETRY 및 JSON 필드를 사용하면 기본값을 설정할 수 있습니다.

● RESTART 명령을 통해 MySQL 인스턴스를 다시 시작할 수 있습니다.

위에 언급된 릴리스는 일반적으로 GA 버전을 의미한다는 점에 유의해야 합니다.

마지막으로 아래 표를 보시면 최근 메이저 버전의 출시 시간과 이 책이 출판된 시점의 최신 마이너 버전과 출시 시간이 나와 있습니다.

MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!

https://en.wikipedia.org/wiki/MySQL#Release_history

표의 데이터에서

1 메이저 버전은 약 3년마다 출시됩니다.

2. 제품 지원 주기는 일반적으로 8년입니다.

3. MySQL 5.5가 구식인 줄 알았는데, 아직 정식 버전이 업데이트 중입니다.

원본 주소: https://www.cnblogs.com/ivictor/p/9807284.html

위 내용은 MySQL 5.6, 5.7, 8.0의 새로운 기능을 확인해 보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제