제1장 MySQL 5.7 새로운 기능
이 섹션에서는 MySQL 5.7에서 추가 , 비추천 및 삭제 된 내용을 요약 한 것입니다. 섹션에서는 MySQL 5.7에서 추가 , 비추천 또는 삭제
된 MySQL 서버 옵션과 변수를 나타냅니다. 자세한 내용은 1.5, "Server and Status Variables and Options Added, Deprecated, or Removed in MySQL 5.7"
추가 된 기능
다음 기능은 MySQL 5.7에 추가되었습니다.
Security improvements 향상된 보안 기능이 추가되었습니다.
MySQL서버는 mysql.user 테이블에 계정의
p
lugin
열 값이 null인 계정을 비활성화합니다. 서버 업그레이드 자세한 내용은 Section 2.11.1.1, “Changes Affecting Upgrades to MySQL 5.7”. 데이터베이스 관리자도 사용되는 계정으로 변환하는 것을 권장합니다mysql_old_password
에 사용하는 인증 플러그인을mysql_native_password
를 지원하므로 대신mysql_old_password
삭제되었습니다. 자세한 내용은 Section 6.4.1.3, “Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin”.MySQL은 이제 자동으로 암호 만료 정책을 수립하기 위해 데이터베이스 관리자가 활성화됩니다. 암호가 만료 되면 암호를 변경하도록 허용하는 계정을 사용하여 서버에 연결하는 모든 사용자가 암호를 변경해야합니다. 자세한 내용은 Section 6.3.6, “Password Expiration Policy”.
관리자가 로그인 할 수있는 사용자를 보다 잘 제어하기위하여 계정을 잠그고 잠금을 해제 할 수 있습니다. 자세한 내용은 Section 6.3.10, “User Account Locking”.
쉽게 보안 연결을 지원하도록하려면 OpenSSL을 사용하여 컴파일 된 MySQL 서버는 시작할 때 자동으로 누락 된 SSL 및 RSA 인증서와 키 파일을 생성 할 수 있습니다. 자세한 내용은 Section 6.3.12.1, “Creating SSL and RSA Certificates and Keys using MySQL”.
명시적으로 SSL을 사용하도록 구성되어 있지 않은 경우, 그들은 데이터 디렉토리에 필요한 SSL 파일을 찾으면 모든 서버 (OpenSSL 또는 yaSSL를 사용하여 컴파일 여부) 시작시 자동으로 SSL을 사용하도록 시도합니다. 자세한 내용은 Section 6.3.11.4, “Configuring MySQL to Use Secure Connections”.
또한 MySQL 배포판에 포함된 mysql_ssl_rsa_setup의 SSL 및 RSA 키 파일과 인증서 파일을 생성하기 위해 수동으로 호출 할 수있는 유틸리티를 제공합니다. 자세한 내용은 Section 4.4.5, “mysql_ssl_rsa_setup — Create SSL/RSA Files”.
MySQL설치시 mysqld --initialize를 사용하여 설치됩니다 이는 기본적으로 안전합니다. 다음과 같은 변경은 기본 배포 특성으로 구현되어 있습니다.
설치 프로세스는 단일 작성
root
계정'root'@'localhost'
자동으로 이 계정의 임의의 암호를 생성하고 암호 만료를 표시 합니다. MySQL 관리자는 임의의 암호를 사용하여 root로 연결하고 새로운 암호를 지정해야 합니다. (서버가 오류 로그에 임의의 암호를 작성합니다.)설치시 익명 사용자(anonymous-user) 계정을 생성하지 않습니다.
설치시
test
데이터베이스를 생성하지 않습니다.
자세한 내용은 Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld”.
SQL mode changes. 트랜잭션 스토리지 엔진 (
STRICT_TRANS_TABLES
)을 위한 Strict SQL mode 는 기본적으로 활성화되어 있지 않습니다 .ONLY_FULL_GROUP_BY
SQL mode의 구현은 보다 정교하게 이루어졌으며 더 이상 이전에 거부 된 결정적 쿼리를 거부하지 않도록 합니다. 그 결과,이 모드는 이제 특정 그룹 내에서 결정된다는 보장이없는 표현을 포함한 유일한 비 결정적인 쿼리를 금지하기 위해 기본적으로 활성화되어 있습니다.ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
및NO_ZERO_IN_DATE
SQL 모드는 사용되지 않습니다. 하지만 기본적으로 활성화되어 있습니다. 장기적으로는 Strict SQL mode 에 포함되지만 앞으로 MySQL 릴리스에서 명시적인 형태로 그들을 제거하는 것입니다. 자세한 내용은 SQL Mode Changes in MySQL 5.7.이러한 스위칭 모드와 가변 시스템 기본값 sql_mode에서 SQL 모드에 대한 기본의 결과로 변경이 가능합니다 :
ONLY_FULL_GROUP_BY
,STRICT_TRANS_TABLES
,NO_ZERO_IN_DATE
,NO_ZERO_DATE
,ERROR_FOR_DIVISION_BY_ZERO
,NO_AUTO_CREATE_USER
andNO_ENGINE_SUBSTITUTION
.Online ALTER TABLE.
ALTER TABLE 은 현재
RENAME INDEX
구문을 지원합니다. 테이블을 복사하지 않고 그 자리에서 변경. 이것은 모든 스토리지 엔진에 대응하고 있습니다. 자세한 내용은 Section 13.1.8, “ALTER TABLE Syntax”.ngram and MeCab full-text parser plugins. MySQL은 5.7.6에서는 중국어, 일본어, 한국어 (CJK)를 지원하는 전체 텍스트의 Ngram 분석기 플러그인 및 설치 가능한 MeCab full-text parser plugin을 제공합니다
Section 12.9.8, “ngram Full-Text Parser”, and Section 12.9.9, “MeCab Full-Text Parser Plugin”.
InnoDB enhancements.
InnoDB
기능이 추가 및 개선 되었습니다.
크기를 적절히 사용하여 증가시킬 수있ALTER TABLE 문으로
VARCHAR습니다
예처럼 :
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
VARCHAR rows 에 필요한 바이트의 수는 동일하게 유지 됩니다.
0-255 VARCHAR 값의 경우는 1바이트 값을 인코딩하는 데 필요합니다. 256 바이트 이상의 VARCHAR 값은 2 바이트가 필요합니다.
결과적으로, ALTER TABLE 문은 VARCHAR 0~255 바이트의 크기를 증가 시키거나 같거나 256 바이트보다 큰 값의 크기 증가를 지원합니다.ALTER TABLE 문은 동일 또는 256 바이트보다 큰 값으로 256 바이트에서 VARCHAR 크기의 증가를 지원하지 않습니다.
이 경우, 필요한 길이의 바이트 수는 1만 테이블 복사 (ALGORITHM = COPY)을 지원하는 2로 변경합니다.
예를 들어, ALTER TABLE 문을 사용하여 255에서 256 VARCHAR 컬럼의 크기를 변경하려고 할 때 오류를 반환합니다 :
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256); ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
ALTER TABLE 문은 VARCHAR의 크기를 증가하는 것은 지원되지 않습니다. 대신에 VARCHAR의 크기를 증가시키는 것은 (ALGORITHM = COPY)를 사용 하세요.
InnoDB의 temporary table의 DDL 성능은 CREATE TABLE, DROP TABLE, TRUNCATE TABLE, and ALTER TABLE 명령문 최적화를 통해 개선 되었습니다.
InnoDB
의 temporary table 의 metadata는 더 이상InnoDB system table
에 저장되지 않습니다. 대신 새로운 테이블 INNODB_TEMP_TABLE_INFO 엑티브 상태인 temporary table 의 스냅 샷을 사용자에게 제공합니다. 테이블은 지정된 InnoDB의 인스턴스의 활성화 된 모든 사용자 및 시스템이 생성 한 임시 테이블의 메타 데이터와 보고서가 포함되어 있습니다. 먼저 SELECT 명령문을 실행하면 테이블이 만들어집니다.InnoDB는 현재 MySQL에서 지원하는 spatial data type(공간 데이터 type)을 지원합니다. 이전 버전에서는, InnoDB는 이진 BLOB 데이터의 형태로 공간 데이터를 저장합니다.
BLOB 는 기본 데이터 type이지만, 공간 데이터 type(spatial data type)은 새로운 InnoDB의 내부 데이터 type DATA_GEOMETRY에 매핑됩니다.모든 비압축
InnoDB
임시 테이블을DATADIR 에
기본적으로 위치하고 있습니다. 새로 추가 된 구성 파일 옵션인innodb_temp_data_file_path
파라미터는 사용자 정의 임시 데이터 파일의 경로를 제공합니다.MySQL5.7.2에서 innochecksum 기능은 몇 가지 새로운 옵션과 확장 된 기능으로 강화되고 있습니다. 참조 4.6.1 항을 "innochecksum - 오프라인 InnoDB는 체크섬 유틸리티 파일"
새로운 type인 non-redo undo log 는 일반적인 table 및 compressed temporary table 과 관련된 개체는 temporary tablespace 에 존재합니다.. 자세한 내용은 섹션 14.2.5 "InnoDB Temporary Table Undo Logs"
MySQL은 5.7.2에서는
InnoDB
buffer pool dupm 및 load 조작이 강화 됩니다. 새로운 시스템 변수인innodb_buffer_pool_dump_pct
는 여러분이 dump 를 검색하기 위해 각 buffer pool 에서 가장 최근에 사용된 페이지의 비율을 지정할 수 있습니다. 다른 I/O 작업이 InnoDB의 백그라운드 작엡에 의해서 이루어지고 있을때 InnoDB는innodb_io_capacity
설정을 사용하여 초당 buffer pool load 작업의 수를 제한 합니다.MySQL5.7.3에서 추가 된
InnoDB full-text parser plugins
. 전체 텍스트 파서 플러그인에 대한 자세한 내용은"Full-Text Parser Plugins" 및 Section 25.2.4.4 "Writing Full-Text Parser Plugins" 참조 하세요
.MySQL5.7.4의
InnoDB
버퍼 풀의 인스턴스에서 더티 페이지를 플래시하는 여러 페이지 클리너 스레드를 지원하고 있습니다. 새로운 시스템 변수인innodb_page_cleaners
페이지 클리너 스레드 수를 지정하는 데 사용됩니다. 기본값인1은
단일 페이지 클리너 스레드가 존재하려면 MySQL 5.7.4 설정을 유지합니다. 이 확장 기능은 InnoDB master thread 에서 buffer pool flushing 작업의 부하를 줄이기 위하여 단일 페이지 클리너 thread 를 도입합니다. 이는 MySQL5.6에서 수행한 작업을 기반으로 합니다.MySQL5.7.4에서는 다음과 같은 동작을 위한 online DDL (ALGORITHM=INPLACE)을 사용하여 정기적으로 파티션 InnoDB 테이블의 재구성을 지원합니다 :
ALTER TABLE ... ENGINE=INNODB (when run on an InnoDB table)
online DDL 지원은 테이블의 재구성 시간을 단축하고 사용자 애플리케이션 다운 타임을 줄일 수 있습니다 동시 DML을 가능하게 합니다. 자세한 내용은 Section 14.11.1, “Overview of Online DDL”.
Linux에서 Fusion-io Non-Volatile Memory (NVM) 파일 시스템은 InnoDB doublewrite buffer(이중쓰기) atomic 기록 기능을 제공합니다 . MySQL5.7.4에서는
InnoDB doublewrite buffer는
자동적으로 atomic 쓰기를 지원하는 Fusion-io 장치에 있는 system tablespace 파일 (ibdata file)을 위해 사용할수 있습니다.MySQL5.7.4에서는
InnoDB 파티션 테이블
과 개별InnoDB
테이블의 파티션 이동 가능한 tablespace 기능을 지원합니다. 이 확장 기능은 파티션 된 테이블의 백업 절차를 용이하게하고 분할 된 테이블과 MySQL 인스턴스 간의 개별 테이블 파티션 복사를 가능하게MySQL5.7.5에서
innodb_buffer_pool_size
설정 변수는 서버를 다시 시작하지 않고 버퍼 풀의 크기를 동적으로 변경할 수 있습니다. 메모리 내의 새로운 위치로 페이지를 이동하는 것을 포함 크기 변경 작업은 chunk로 이루어집니다. chunk size는 새로운innodb_buffer_pool_chunk_size
구성 옵션을 사용하여 설정할 수 있습니다. 새로운 Innodb_buffer_pool_resize_status 설정 변수를 사용하여 크기 조정 및 진행 상황을 모니터링 할 수 있습니다. 자세한 내용은 Configuring InnoDB Buffer Pool Size Online.Multi-threaded page cleaner support
(innodb_page_cleaners
)는 MySQL5.7.5에서 종료 및 복구 단계로 확장됩니다.MySQL5.7.5에서 InnoDB는 ALTER TABLE ... ALGORITHM=INPLACE 온라인 작업 (ADD SPATIAL INDEX) 사용을 포함한 공간 색인을 사용하여 공간 데이터 형식의 인덱싱을 지원 하고 있습니다.
MySQL5.7.5에서 인덱스를 만들거나
인덱스를 재구성할때
InnoDB 는 대량로드(bulk load)를 실행합니다. 인덱싱이 방법은 "sorted index build"으로 알려져 있습니다. 또한 인덱스 작성의 효율성을 향상시킬 수있는 이 향상된 기능은 전체 텍스트 인덱스에 적용됩니다. 새로운 글로벌 설정 옵션innodb_fill_factor
변수는 향후 인덱스의 향상을 위해 예약 나머지 공간에 정렬 된 색인 작성시 데이터가 충전되어있는 각 페이지의 영역의 비율을 정의합니다. 자세한 내용은 Section 14.2.6.8, “Sorted Index Builds”.MySQL5.7.5에서 새로운 로그 레코드 유형 (
MLOG_FILE_NAME
) 마지막 체크 포인트 이후에 변경된 테이블 스페이스를 식별하는 데 사용됩니다. 이 확장 기능은 복구 시점에 talbe 영역 검색을 단순화하고 응용 프로그램을 REDO Log 전에 파일 시스템 검사를 배제합니다. 이 확장 기능 이용에 대한 자세한 내용은 Section 14.16.2, “Tablespace Discovery During Crash Recovery”.이 확장 기능은 MySQL을 업그레이드 하거나 MySQL 5.7.5에서 다운 그레이드하기 전에 종료 할 것을 요청하며 REDO 로그 형식을 변경합니다.
MySQL5.7.5에서 여러분은 UNDO 테이블 스페이스 내에 존재하는 로그를 취소 할 수 있습니다. 이 기능은
innodb_undo_log_truncate
설정 옵션을 사용하여 활성화 합니다. 자세한 내용은 Section 14.5.8, “Truncating Undo Logs That Reside in Undo Tablespaces”.MySQL5.7.6에서
InnoDB
는 기본 파티셔닝을 지원하고 있습니다. 이전에는 InnoDB 는 각 파티션 핸들러 오브젝트 를 작성했으며 ha_partition 핸들러에 의존하고 있었습니다. native partitioning(기본 파티션), partitioned InnoDB table(파티션된 innodb 테이블) 은 단일 partition-aware handler 를 사용하고 있습니다. 이 향상된 기능은 파티션된 InnoDB table 에 필요한 메모리 크기를 줄일 수 있습니다.
MySQL5.7.9에서 mysql_upgrade 유틸은
ha_partition
handler 를 사용하여 작성된 파티션된 InnoDB table 을 업그레이드 하려고 합니다. 또한 MySQL5.7.9 이후로여러분은 ALTER TABLE ... UPGRADE PARTITIONING 명령문을 사용하여 클라이언트에서 이름과 같은 테이블을 업그레이드 할수 있습니다.
MySQL5.7.6에서는
InnoDB 는
CREATE TABLESPACE 명령문을 사용하여 일반적인 테이블 스페이스 생성을 지원 합니다.CREATE TABLESPACE `tablespace_name` ADD DATAFILE 'file_name.ibd' [FILE_BLOCK_SIZE = n]
일반적인 tablespace 를 MySQL 데이터 디렉토리 밖에 만들 수 있고 여러 테이블 및 모든 row format 지원 테이블을 유지하는 것이 가능합니다.
Table 에는 CREATE TABLE tbl_name ... TABLESPACE [=] tablespace_name 또는 ALTER TABLE tbl_name TABLESPACE [=] tablespace_name 구문을 사용하여 일반적인 tablespace 에 추가 됩니다.
자세한 내용은 Section 14.5.9, “InnoDB General Tablespaces”.
MySQL5.7.9에서
DYNAMIC
은InnoDB 테이블에 대한 암시적 기본 형식으로 COMPACT 를 대체합니다. 새로운 설정 옵션 innodb_default_row_format 은 기본 InnoDB row format 을 지정 할 수 있습니다. 자세한 내용은 Section 14.9.2, “Specifying the Row Format for a Table”.
MySQL5.7.11에서
InnoDB 는
file-per-table tablespace(파일당 테이블의 테이블 스페이스) 영역의 data-at-rest 암호화 를 지원합니다.암호화는 작성 또는 InnoDB 테이블을 변경할 때 암호화 옵션을 지정하여 사용할 수 있습니다.
InnoDB tablespace 암호화로 불리는 이 기능은 암호화 키 관리를 위한
keyring_file
플러그인 에 의존합니다. 자세한 내용은 Section 6.4.3, “The MySQL Keyring”, and Section 14.5.10, “InnoDB Tablespace Encryption”.
JSON 지원. MySQL5.7.8 이후에서는 MySQL은 native
JSON
형식을 지원합니다. JSON 값은 문자열로 저장되지 않습니다. 대신에 문서 요소에 대하여 빠르게 읽기 액세스를 허용하는 내부 바이너리 형식을 사용합니다. json으로 컬럼에 저장된 json 문서를 자동으로 insert 하거나 잘못된 문서로 update 될 때마다 점검 및 오류 메세지를 생성합니다. json 문서는 작성시 정상화 되고=
,<
,<=
,>
,>=
,<>
,!=
, and<=>
와 같은 비교 연산자를 사용할 수 있습니다. 자세한 내용은 Comparison and Ordering of JSON Values.MySQL5.7.8 에서는 json value 를 조작하기 위하여 여러 functions 을 도입했습니다. 도입된 functions 리스트는 아래와 같습니다.
Functions that create JSON values: JSON_ARRAY(), JSON_MERGE(), and JSON_OBJECT(). 자세한 내용은 12.16.2, “Functions That Create JSON Values”.
Functions that search JSON values: JSON_CONTAINS(), JSON_CONTAINS_PATH(), JSON_EXTRACT(), JSON_KEYS(), and JSON_SEARCH(). 자세한 내용은 12.16.3, “Functions That Search JSON Values”.
Functions that modify JSON values: JSON_APPEND(), JSON_ARRAY_APPEND(), JSON_ARRAY_INSERT(), JSON_INSERT(), JSON_QUOTE(), JSON_REMOVE(), JSON_REPLACE(), JSON_SET(), and JSON_UNQUOTE(). See Section 12.16.4, “Functions That Modify JSON Values”.
Functions that provide information about JSON values: JSON_DEPTH(), JSON_LENGTH(), JSON_TYPE(), and JSON_VALID(). 자세한 12.16.5, “Functions That Return JSON Value Attributes”.
MySQL5.7.9 이상에서 JSON_EXTRACT(column, path) 약어로
column->path 를 사용 할 수 있습니다.
이것은 row 식별자가 WHERE, ORDER BY 및 GROUP BY 를 포함한 SQL 명령문으로 발생할 수 있습니다. 어느 row의 별칭으도 가능합니다. SELECT, UPDATE, DELETE, CREATE TABLE 및 다른 SQL 문이 포함되어 있습니다. 좌측은 json 컬럼 식별자(and not an alias) 이여야 합니다. 우측은 json 문서를 row value 로 반환하는 json 경로 입니다.자세한 내용은 Section 12.16.3, “Functions That Search JSON Values” ”Searching and Modifying JSON Values” ”Secondary Indexes and Virtual Generated Columns”
System and status variables. 시스템과 상태 변수(status variable) 정보는 이러한 변수를 얻기 위해 INFORMATION_SCHEMA tables 사용에 우선하여 Performance Schema tables 에서 사용할 수있게되었습니다. 또한 SHOW VARIABLES 및 SHOW STATUS 명령문의 동작에 영향을 미칩니다. 시스템 변수인 show_compatibility_56 는 system 변수 및 status 보고서, 테이블에 생성되는 출
력
에 영향을 미칩니다.자세한 내용은 Section 5.1.4, “Server System Variables.
Noteshow_compatibility_56
변수의 기본값은OFF 입니다
. 이러한 시스템 변수 와 상태 변수에 대한 새로운 동작으로 이행되면서 5.6의 동작을 필요로 하는 응용프로그램은 이 변수를 ON 으로 설정 해야 합니다. 자세한 내용은 Section 22.17, “Migrating to Performance Schema System and Status Variable Tables”
sys schema. MySQL배포판은 DBA 와 개발자들이 Performance Schema 에서 수집한 데이터의 분석에 도움을 주는 sys schema 를 제공 합니다. sys schema 개체는 전형적인 튜닝 및 진단 용도로 활용 할 수 있습니다. 자세한 내용은 Chapter 23, MySQL sys Schema.
Condition handling. MySQL은 이제 stacked diagnostics 영역을 지원합니다. 진단(diagnostics) 영역의 스택을 누르면 첫번째 (current) 진단 영역은 두 번째 (stacked) 영역이 진단되고 현재 진단되는 새로운 영역을 복사본으로 작성합니다. condition handle 내에서 명령문이 새로운 현재의 진단 영역을 수정 및 실행하지만 GET STACKED DIAGNOSTICS 핸들러 자체 내에서 현재 상태와 관계없이 핸들러가 활성화시킨 상태에 대한 정보를 얻기 위해 stacked diagnostics 영역을 검사하는데 사용 할 수 있습니다. (이전에는 하나의 진단 영역이 있었습니다. 핸들러에서 handler-activating 의 조건을 검사하려면 그것을 바꿀 수있는 모든 명령문을 실행하기 전에 이 진단 영역을 확인했습니다.) 자세한 내용은 Section 13.6.7.3, “GET DIAGNOSTICS Syntax”, and Section 13.6.7.7, “The MySQL Diagnostics Area”.
Optimizer. 향상된 최적화 기능이 추가되었습니다.
EXPLAIN
문은 지정된 연결에서 실행 계획 정보를 얻기 위해 사용 할 수 있습니다.EXPLAIN [
options
] FOR CONNECTIONconnection_id
;자세한 내용은 Section 8.8.4, “Obtaining Execution Plan Information for a Named Connection”.
optimizer_switch 시스템 변수를 사용하여 SQL 명령문 실행 계획을 보다 세밀하게 제어 할 수 있는 개별 SQL명령문에 최적화 힌트를 제공 할 수 있습니다. 힌트는 EXPLAIN 문에서 사용 할 수 있습니다. 자세한 내용은 Section 8.9.3, “Optimizer Hints”.
Triggers. 이전 버전에서는 table trigger event (INSERT, UPDATE, DELETE) 와 동작 시간(BEFORE, AFTER) 의 조합에 대해 1개의 trigger만 가질 수 있었습니다. MySQL5.7 에서는 multiple trigger 를 허용합니다. 자세한 내용은 Section 20.3, “Using Triggers”.
Logging. 향상된 로깅 기능이 추가되었습니다.
이전에는 Unix 나 Unix 계열 시스템에서는 서버 오류 로그를 전송하기 위해 MySQL의 지원은
mysqld_safe 가 오류를 출력함으로써 syslog
에 전달했습니다
. 서버는 Windows 를 포함하도록 확장 된 기본 syslog 를 지원합니다. 서버 오류 출력을 전송하는 방법에 대한 자세한 내용은 Section 5.4.2, “The Error Log”.
mysql 클라이언트는 현재 시스템의 sylog 기능을 사용 하수 있도록 --syslog 옵션을 제공 합니다. --histignore 옵션을 사용하여 지정된 패턴과 일치("*IDENTIFIED*:*PASSWORD*") 하는 명령문은 기본 “ignore” 패턴 리스트에 일치하는 문에 대해 억제되어 있습니다. 자세한 내용은 Section 4.5.1.3, “mysql Logging”.
Generated Columns. MySQL은 이제 CREATE TABLE 및 ALTER TABLE 명령문에서 생성 된 컬럼의 사양을 지원합니다. 생성된 row 값은 row 를 만들 때 지정된 식에서 연산 됩니다. 생성된 row 또는 stored 는 가상화 될 수 있습니다. 자세한 내용은 CREATE TABLE and Generated Columns.
mysql client. 이전에는 Control+C 는 MySQL을 종료한 경우 현재 명령문을 중단 했습니다. 이제는 Control+C 는 어떤 부분적인 입력 행을 취소 한 경우 현재의 명령문을 중단했지만 종료하지 않습니다.
Database name rewriting with mysqlbinlog. row-based 포멧을 사용하여 작성된 바이너리 로그를 읽을 때 mysqlbinlog 유틸에 의한 데이터베이스 이름 변경은 --rewrite-db 옵션을 사용하여 지원합니다. MySQL5.7.1에 추가 되었습니다.
이 옵션은 format --rewrite-db='dboldname->dbnewname' 을 사용하고 있습니다. 여려분은 옵션을 여러 번 지정하여 여러 재 작성 규칙을 구현할 수 있습니다.
HANDLER with partitioned tables.
HANDLER
문은 현재 사용자 파티션 테이블에서 사용할 수 없습니다. 이러한 table은 사용 가능한 파티션 중 하나를 사용하여도 좋습니다. 자세한 내용은 Section 19.2, “Parstitioning Type”Index condition pushdown support for partitioned tables. MySQL5.7.3 이후에는 InnDB 또는 MyISAM 스토리지 엔진을 사용하여 파티션 테이블에 대한 쿼리에서 MySQL5.6 에서 도입 된 index condition pushdown optimization 을 사용할 수 있습니다. 자세한 내용은 Section 8.2.1.6, “Index Condition Pushdown Optimization”
WITHOUT VALIDATION support for ALTER TABLE ... EXCHANGE PARTITION.
MySQL
5.7.5 에서는ALTER TABLE ... EXCHANGE PARTITION
구문 옵션에{WITH|WITHOUT} VALIDATION
절이 포함 되었습니다. WITHOUT VALIDATION 옵션을 지정한 경우 파티션은 이입 테이블을 교환 할 때 ALTER TABLE ... EXCHANGE PARTITION 구문은 rows가 파티션 정의의 경계에 있음을 보장 하기 위해 행단위(row-by-row) 검증을 하지 않습니다. WITH VALIDATION 옵션은 명시적으로 지정할 필요가 없습니다. 자세한 내용은 Section 20.3.3, “Exchanging Partitions and Subpartitions with Tables”.Master dump thread improvements. master dump thread 는 잠금 경합(lock)을 줄이고 마스터의 처리량을 향상시키기 위해 리팩토링(refactoring) 되었습니다. MySQL5.7.2 이전에는 dump thread 는 이벤트를 로드 할 때마다 바이너리 로그의 잠금이 발생했습니다. MySQL5.7.2 이후에는 lock 은 마지막으로 성공적으로 기록 된 이벤트의 끝 위치를 읽는 동안 유지되고 있습니다.. 이것은 multiple dump threads 는 바이너리 로그 파일에서 동시에 읽을 수 있으며, 덤프 스레드는 현재 클라이언트가 바이너리 로그에 기록하는 동안 읽을 수 있습니다 .
Globalization improvements. MySQL5.7.4부터는 중국 국가 표준 GB18030 문자 세트를 지원합니다. 자세한 내용은 Section 11.1, “Character Set Support”.
Changing the replication master without STOP SLAVE. MySQL5.7.4이후부터 엄격한 요건이 삭제되고 모든 CHANGE MASTER TO 구문을 발표하기 전에 STOP SLAVE 를 실행 합니다. 대신 Slave의 정지 여부에 따라 CHANGE MASTER TO 구문의 동작은 현재 Slave SQL Thread 와 Slave I/O Thread의 상태에 따라 다릅니다. 이러한 thread는 중지 혹은 지금 실행중이거나나 또는 특정 시점에 CHANGE MASTER TO 구문을 사용할 수 없습니다. 이러한 결젱에 대한 규칙은 다은과 같습니다. :
SQL thread 가 stop 상태인 경우 그리고 Slave I/O Thread 가 실행되는 경우에도 CHANGE MASTER TO 구문의
RELAY_LOG_FILE
,RELAY_LOG_POS
, 및MASTER_DELAY
옵션을 조합 하여 사용 할 수 있습니다. 다른 옵션은 I/O thread 가 실행중일때 사용 할 수 없습니다.I/O thread 가 중지되면 여러분은 SQL thread가 샐행되는 경우에도
RELAY_LOG_FILE
,RELAY_LOG_POS
, 또는MASTER_DELAY 옵션을 제외하고
CHANGE MASTER TO
구문을 실행 할 수 있습니다..SQL thread 와 I/O thread 모두
CHANGE MASTER TO ... MASTER_AUTO_POSITION = 1 구문을 실행 하기 전에 중지해야 합니다
.
여러분은 SHOW SLAVE
STATUS
구문으로 Slave SQL 및 I/O thread 의 현재 상태를 체크 할 수 있습니다.
여러분은 명령문 기반(statement-based) 복제 및 임시 테이블을 사용하는 경우 Slave에 임시 테이블을 반영 시킬 수 있게 STOP SLAVE 구문 실행 다음에 CHANGE MASTER TO 구문 실행이 가능합니다.
명령문 기반(statement-based) 복제를 사용중인 경우 STOP SLAVE 구문 다음 CHANGE MASTER TO 발행시에
Slave_open_temp_tables(Slave SQL thread가 현재 오픈 한 임시테이블 갯수)
값이 0 보다 큰 값을 유지 할 때 경고가 발행되지 않습니다.
자세한 내용은 Section 14.4.2.1, “CHANGE MASTER TO Syntax”, and Section 18.3.6, “Switching Masters During Failover”.
Test suite. MySQL test suite는 기본 스토리지 엔진으로 InnoDB를 사용하지 않습니다.
Multi-source replication is now possible. MySQL Multi-Source Replication 은 Slave에 여러 Master를 복제 할 수 있는 기능이 추가 되었습니다. MySQL Multi-Source Replication 토폴로지는 여러 서버에서 데이터를 테이블 파편으로 병합 하여 하나의 서버에 여러 서버를 백업하고 통합 할 수 있습니다. 자세한 내용은 Section 18.1.4, “MySQL Multi-Source Replication”.
MySQL Multi-Source Replication 의 일환으로 리플리케이션 체널이 추가 되었습니다. 각 채널은 Master에 연결되는 과정에서 복제하기 위해 여러 연결을 오픈하는데 Slave를 사용합니다. 자세한 내용은 Section 18.2.3, “Replication Channels”.
Group Replication Performance Schema tables. MySQL 5.7에서는 복제 그룹 및 채널에 대한 정보를 제공하기 위해 performance_schema 에 새로운 tables 이 추가 되었습니다. 추가된 테이블은 아래와 같습니다.
위 테이블들은 모두 MySQL5.7.6에 추가 되었습니다.(MySQL5.7.2에서는 replication_group_members 및 replication_group_member_stats 두 테이블은 제외 되었습니다.) 자세한 내용은 Section 23.9.10, “Performance Schema Replication Tables”.
Group Replication SQL. 다음 구문은 그룹의 복제를 제어하기 위해 MySQL 5.7.6에서 추가되었습니다 .
자세한 내용은 Section 14.4.3, “SQL Statements for Controlling Group Replication”.
사용되지 않는 기능
다음 기능은 MySQL 5.7 에서 추천 하지 않으며, 앞으로 릴리즈에서 삭제 될 예정 입니다. 대안이 표시된 경우 응용 프로그램은 대안을 사용하도록 업데이트해야합니다.
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
및NO_ZERO_IN_DATE
SQL 모드는 추천 하지 않지만 기본적으로 활성화되어 있습니다. 앞으로는 strict SQL 모드에 포함 되며 미래의 MySQL 릴리스에서 명시적인 형태로 제거 될 것입니다.삭제 될 예정인 ERROR_FOR_DIVISION_BY_ZERO 은 NO_ZERO_DATE 및 NO_ZERO_IN_DATE SQL
mode 는 그들에게 이름을 붙이는 문장에서 오류가 발생하지 않도록 아직 인식되만, MySQL의 향후 버전에서 삭제됩니다. 향후 MySQL 버전의 사전 준비를 위해 응용 프로그램이 그들을 참조 하지 않도록 변경해야합니다. 자세한 내용은 SQL Mode Changes in MySQL 5.7.계정 관리 구문에 대한 변경은 다음과 같은 기능이 충분하지 못합니다. 이들은 폐지되어 있습니다.
사용자를 생성 하려면 GRANT 문 대신에 CREATE USER 문을 사용합니다. GRANT 문 사용을 추천 하지 않습니다.
사용자 권한 할당 이외의 계정의 속성을 변경하려면 GRANT문을 사용 했습니다. SSL 인증 및 리소스 제한 속성이 포함 됩니다. 대신에 CREATE USER 문으로 계정 작성시 이러한 속성을 설정하거나 ALTER USER 문으로 나중에 이를 수정합니다.
CREATE USER 와 GRANT 문은 IDENTIFIED BY PASSWORD 'hash_string' 구문 대신 'hash_string' 값이 지정된 플러그인과 호환되는 형식인 CREATE USER 문을
'hash_string' 과 ALTER USER AS IDENTIFIED WITH auth_plugin 형식으로 사용합니다.
PASSWORD()
함수사용은 추천하지 않으며
어떤 상황에서 피해야한다. 따라서 SET PASSWORD ... = PASSWORD('auth_string') 구문은 권장하지 않습니다.SET PASSWORD ... = 'auth_string'
구문은 폐지되어 있지 않습니다. 그럼에도 불구하고ALTER USER 문은
암호를 할당하기 위해 바람직한 구문입니다.old_passwords
시스템 변수. 계정 인증 플러그인은 더이상 mysql.user 테이블에 지정되지 않은 상태로 남아있을 수 있으므로 일반 텍스트 문자열에서 암호를 할당하는 구문은 명확하게 mysql.user 테이블에 저장하기 전에 문자열을 사용하는 해싱 방법을 결정 할 수 있습니다.
MySQL5.7에서는 암시적으로 group by 정열에 의존하는 것은 권장하지 않습니다. 그룹화 된 결과 특정 정렬 순서를 구현하기 위해서는 명시 적으로 order by 문을 사용하는 것이 바람직합니다.
group by 정열은 향후 릴리스에서 변경 될 수 있습니다. 예를 들어 가능한 최적화가 가장 효율적인 방식으로 그룹 정열하려면 오버 헤드를 피할 수 있게 합니다.
EXPLAIN 문의 EXTENDED 및 PARTITIONS 키워드는 폐지 되었습니다. 이러한 키워드는 아직 인식되어 있지만, 그 효과는 항상 활성화 상태이므로 필요하지 않습니다.
--skip-innodb
옵션과 동의어 (--innodb=OFF
,--disable-Innodb
)은 추천 하지 않습니다. 이 옵션은 MySQL 5.7에 영향을 주지 않습니다. 왜냐하면InnoDB는
비활성화 할 수 없기 때문 입니다.클라이언트 측
--ssl
과--ssl-verify-server-cert
옵션은 사용되지 않습니다.--ssl=1 or --enable-ssl 대신에
--ssl-mode=REQUIRED
을 사용하세요. --ssl=0, --skip-ssl, or --disable-ssl 대신에 --ssl-mode=DISABLED 을 사용하세요. --ssl-verify-server-cert 옵션 대신에 --ssl-mode=VERIFY_IDENTITY 을 사용하세요.(서버측 --ssl 옵션은 더이상 사용되지 않습니다.)C API의 경우 mysql_options() 에 대한 MYSQL_OPT_SSL_ENFORCE 및 MYSQL_OPT_SSL_VERIFY_SERVER_CERT 옵션은 클라이언트측에 --ssl 과 --ssl-verify-server-cert 옵션에 해당하고 비추천 입니다. 대신 SSL_MODE_REQUIRED 또는 SSL_MODE_VERIFY_IDENTITY 옵션 값으로 MYSQL_OPT_SSL_MODE 을 사용하세요.
log_warnings
시스템 변수와--log-warnings
서버 옵션은 사용되지 않습니다. 대신에 log_error_verbosity 시스템 변수를 사용하세요.binlog_max_flush_queue_time
시스템 변수는 MytSQL5.7 에서 아무런 역할도 하지 않으며 MySQL 5.7.9에서 추천하지 않습니다.innodb_support_xa 시스템 변수는 MySQL5.7.10 이후로 사용되지 않습니다. XA Transaction
two-phase commit(트랜젝션 2-단계 실행) 을 지원하도록 InnoDB는 항상 활성화 되어 있습니다.
metadata_locks_cache_size
및metadata_locks_hash_instances
시스템 변수는 사용되지 않습니다. 이 시스템 변수는 MySQL 5.7.4부터 아무런 역할도 하지 않습니다.sync_frm
시스템 변수는 사용되지 않습니다.Global
character_set_database
및collation_database
시스템 변수는 권장되지 않습니다.
MySQL의 향후 버전에서는 삭제됩니다.session
character_set_database
및collation_database
시스템 변수에 값을 할당하면 경고를 발생합니다. session 변수는 MySQL 향후 릴리스에서 read-only 가 될 것이며 할당시 오류가 발생합니다. 이것은 기본 데이터베이스에 대한 character set 및 collation 을 결정하기 위해 session 변수에 액세스 하는 것은 유지 될 것 입니다.암호화 함수 ENCRYPT(), ENCODE(), DECODE(), DES_ENCRYPT(), and DES_DECRYPT() 는 사용되지 않습니다. 대신에 AES_ENCRYPT() 및 AES_DECRYPT() 함수를 사용하세요.
공간 함수 MBREqual() 는 사용되지 않습니다. 대신에 MBREquals() 함수를 사용하세요.
INFORMATION_SCHEMA.PROFILING
테이블은 사용되지 않습니다. 대신 Performance_schema 를 사용하세요. 자세한 내용은 Chapter 23, MySQL Performance Schema.syslog 출력을 위한 mysqld_safe 지원은 중단 되었습니다. 대신 native server syslog 을 사용하세요. 자세하 내용은 Section 6.4.2, “The Error Log”.
#mysql50 처럼 특수문자(#) 이 포함된 5.1이전의 MySQL 데이터베이스 이름의 변환이 권장되지 않습니다. 따라서 mysqlcheck를 실행하고 ALTER DATABASE 구문의 UPGRADE DATA DIRECTORY NAME 절에 대한 --fix-db-names 및 --fix-table-names 옵션도 사용되지 않습니다.
Upgrade 는 서로 다른 릴리스 시리즈에서 지원(for example, 5.0 to 5.1, or 5.1 to 5.5), 그래서 MySQL은 현재 번전 이전 5.0 데이터베이스 이름의 변환에 대하여 최소한의 지원이 필요합니다. 이 문제를 해결하려면 최신 버전으로 업그레이드 하기 전에 5.1에 5.0을 설치하여 업그레이드 합니다.
mysql_install_db 기능은 MySQL server, mysqld 에 통합 되었습니다. MySQL설치를 초기화 하는데 이 기능을 사용하려면 이전에 수동으로 mysql_install_db 를 시작하면 --initialize 또는 --initialize-insecure 옵션을 지정하여 mysqld 를 시작합니다. 서버가 초기 'root'@'localhost' 계정에 대한 임의의 암호를 생성 할 것인지 여부에 따라 달라집니다. mysql_install_db 는 현재 사용되지 않습니다. --bootstrap 옵션은 그대로 mysql_install_db 는 mysqld로 옮겨 졌습니다.
mysql_plugin 유틸은 폐지되었습니다. 대신에 --plugin-load 또는--plugin-load-add 옵션을 사용하여 서버를 시작할 때 loading plugin 을 포함하거나 실행시 INSTALL PLUGIN 구문을 사용합니다.
C API 함수인 mysql_kill(), mysql_list_fields(), mysql_list_processes(), and mysql_refresh() 함수가 삭제 되었습니다. 또한 COM_PROCESS_KILL, COM_FIELD_LIST, COM_PROCESS_INFO, and COM_REFRESH client/server protocol commands 도 삭제 되었습니다. 대신에 KILL, SHOW COLUMNS, SHOW PROCESSLIST, or FLUSH 명령문을 mysql_query() 함수를 통하여 실행합니다.
삭제 된 기능
다음 항목이 폐지되고, MySQL 5.7에서 삭제되었습니다. 대안이 표시된 경우 응용 프로그램은 대안을 사용하도록 업데이트해야합니다.
pre-4.1 이전 암호 해시 포맷을 사용한 암호의 지원은 다음과 같은 변경이 수반되어 삭제됩니다. 제거된 기능을 사용하는 응용프로그램을 변경해야 합니다.
mysql_old_password
인증 플러그인이 삭제 되었습니다.
이 플러그인을 사용하는 계정은 시작할 때 비활성화 된 서버가 오류 로그에 “unknown plugin” 라는 메세지를 기록합니다. 이 플러그인을 사용하여 업그레이드 하기 안내서는 Section 7.4.1.3, “Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin”.서버와 클라이언트 프로그램에 --secure-auth 옵션 값은 MySQL5.7.5 이후부터 ON(1) 으로 고정 되었습니다.
--secure-auth 은 더 이상 사용되지 않으며 향후 MySQL 릴리스에서 삭제 될 예정입니다
.서버와 클라이언트 프로그램에
--skip-secure-auth 옵션은 지원되지 않습니다. 사용시에 오류를 생성합니다.secure-auth 옵션 값은 MySQL5.7.5 이후부터 ON(1) 으로 고정 되었으며 OFF(0)은 지원하지 않습니다
.old_passwords 시스템 변수 설정 값에서 1 은 더 이상 허용되지 않습니다(produce pre-4.1 hashes 미지원).
OLD_PASSWORD()
함수가 삭제되었습니다
.
MySQL은 5.6.6에서
YEAR(2)
data-type 지원이
삭제되었습니다. 여러분은 MySQL 5.7.5 이상으로 업그레이드 한 후 나머지YEAR(2)
,YEAR(4)
컬럼
을 YEAR 로 변환해야 합니다.
변환 방법은 Section 12.3.4, “YEAR(2) Limitations and Migrating to YEAR(4)” example, run mysql_upgrade after upgrading.innodb_mirrored_log_groups 시스템 변수가 지원하는 유일한 값은 1 이므로 더 이상 필요하지 않습니다.
storage_engine 시스템 변수가 삭제 되었으므로 대신 default_storage_engine 시스템 변수를 사용하세요.
thread_concurrency
시스템 변수가 삭제 되었습니다.timed_mutexes
시스템 변수가 삭제 되었습니다.ALTER TABLE 구문에서
IGNORE 옵션이 삭제 되었습니다.INSERT DELAYED 는
더 이상 지원되지 않습니다.서버는 DELAYED
키워드를 무시하고 비지연(nondelayed) insert로 삽입을 처리하고ER_WARN_LEGACY_SYNTAX_CONVERTED
경고를 생성합니다
.(“INSERT DELAYED is no longer supported. The statement was converted to INSERT.”) ,DELAYED REPLACE 또한
비지연(nondelayed) 처리됩니다.DELAYED
키워드는 향후 릴리스에서 제거됩니다.또한 일부
DELAYED
관련 옵션이나 기능을 삭제했습니다.--delayed-insert option for mysqldump.
COUNT_WRITE_DELAYED, SUM_TIMER_WRITE_DELAYED, MIN_TIMER_WRITE_DELAYED, AVG_TIMER_WRITE_DELAYED, and MAX_TIMER_WRITE_DELAYED columns of the Performance Schema table_lock_waits_summary_by_table table.
mysqlbinlog
는
더 이상 INSERT DELAYED 와 관련된 코멘트를 작성하지 않습니다.
mklink를 통해 기본 심볼릭 링크를 지원하기 때문에 .sym 파일을 사용하여 Windows 기반 데이터베이스 심볼릭 링크는 삭제되었습니다. 모든 .sym 파일의 심볼릭 링크는 무시되며 mklink 를 사용하여 만든 심볼릭 링크로 대체해야 합니다. 자세한 내용은 Section 9.12.4.3, “Using Symbolic Links for Databases on Windows”.
mysql_upgrade 유틸에서
사용하지 않는 --basedir
,--datadir
및--tmpdir 옵션이
제거 되었습니다.이전에는 프로그램의 옵션은 완전히 또는 명백한 접두사로 지정 할 수 있었습니다. 예를 들어, --compress 옵션 --compr로 mysqldump에 부여 할 수 있지만, 후자 --comp으로 모호하기 때문에 옵션에 접두사는 더 이상 지원하지 않으므로 확실한 전체 옵션만 허용됩니다. 프로그램에 애매 모호한 접두사가 구현되는 경우 앞으로 문제를 발생 시킬 수 있기 때문입니다. 이 변경의 몇 가지 의미:
--key-buffer 옵션
은 --key-buffer-size로 지정해야 합니다
.
--skip-grant 옵션은 --skip-grant-tables 로 지정해야 합니다
.
SHOW ENGINE INNODB MUTEX
출력은 MySQL5.7.2에서 삭제되었으나 MySQL 5.7.8에서 다시 도입 되었습니다. 비교 가능한 정보는 Performance Schema 테이블에 대한 Views 를 생성함으로써 대체 할 수 있습니다.InnoDB Tablespace Monitor 및InnoDB Table Monitor
는 MySQL5.7.4에서 제거 되었습니다.Tablespace Monitor의 경우 동일한 기능은 MySQL5.7 GA(안정화) 버전 출시 전에 도입 됩니다. Table Monitor 의 경우 동일한 정보는 InnoDB INFORMATION_SCHEMA 테이블에서 얻을 수 있습니다.
활성화 또는 비활성화하는 데 사용되는 특별한 이름의 테이블 표준
InnoDB Monitor 및 InnoDB Lock Monitor(innodb_monitor and innodb_lock_monitor)
는
MySQL 5.7.4에서 삭제되고 2 개의 동적 시스템 변수로 대체됩니다 :innodb_status_output
andinnodb_status_output_locks
. 자세한 내용은 Section 15.15, “InnoDB Monitors”.MySQL5.6.3에서 사용되지 않는 innodb_use_sys_malloc
및innodb_additional_mem_pool_size
시스템 변수는 MySQL 5.7.4에서 삭제 되었습니다.msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, mysql_waitpid, mysql_zap, mysqlaccess, and mysqlbug utilities.
mysqlhotcopy 유틸리티. 대안으로는 mysqldump 및 MySQL Enterprise Backup.
binary-configure.sh script.
CMake 옵션인
INNODB_PAGE_ATOMIC_REF_COUNT 가
MySQL5.7.5에서 삭제 되었습니다.innodb_create_intrinsic
옵션은 MySQL 5.7.6에서삭제 되었습니다.
innodb_optimize_point_storage
옵션과 관련된 내부 데이터 타입 (DATA_POINT
과DATA_VAR_POINT은
) 삭제 되었습니다.innodb_log_checksum_algorithm
옵션은 MySQL 5.7.9에서삭제 되었습니다.