컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
표 14.18 InnoDB 옵션 및 변수 참조
InnoDB 명령 옵션
-
명령줄 형식 --innodb[=value]
더 이상 사용되지 않음 네 유형 열거 기본값 ON
유효한 값 OFF
ON
FORCE
InnoDB
서버가InnoDB
지원 으로 컴파일된 경우 스토리지 엔진의 로드를 제어 합니다. 이 옵션은 수의 값을 갖는 트라이 스테이트 형식이있다OFF
,ON
또는를FORCE
. 5.5.1절 . “플러그인 설치 및 제거”를 참조하십시오 .사용하지 않으려면
InnoDB
, 사용--innodb=OFF
또는--skip-innodb
. 이 경우 기본 스토리지 엔진이 이기 때문에InnoDB
를 사용--default-storage-engine
하여--default-tmp-storage-engine
영구 및TEMPORARY
테이블 모두에 대해 기본값을 다른 엔진으로 설정 하지 않는 한 서버가 시작되지 않습니다 .InnoDB
스토리지 엔진은 더 이상 사용할 수 없습니다, 그리고--innodb=OFF
및--skip-innodb
옵션은 더 이상 사용되지 않으며 아무 효과가 없습니다. 사용하면 경고가 표시됩니다. 향후 MySQL 릴리스에서 이러한 옵션이 제거될 것으로 예상해야 합니다. -
명령줄 형식 --innodb-status-file[={OFF|ON}]
유형 부울 기본값 OFF
--innodb-status-file
여부를 시작 옵션을 제어InnoDB
라는 이름의 파일 생성 데이터 디렉토리를 씁니다 약, 거기에 15 초마다 출력.innodb_status.
pid
SHOW ENGINE INNODB STATUS
파일은 기본적으로 만들어지지 않습니다. 그것을 생성하려면 옵션으로 mysqld 를 시작 하십시오 . 서버가 정상적으로 종료되면 파일을 제거합니다. 비정상 종료가 발생하면 상태 파일을 수동으로 제거해야 할 수 있습니다.
innodb_status.
pid
--innodb-status-file
InnoDB
출력 생성이 성능에 영향을 줄 수 있고 시간이 지남에 따라 파일이 상당히 커질 수 있으므로 이
--innodb-status-file
옵션은 임시 사용을 위한 것입니다 .SHOW ENGINE INNODB STATUS
innodb_status.
pid
관련 정보는 14.18.2절 . “InnoDB 모니터 활성화”를 참조하십시오 .
-
InnoDB
스토리지 엔진을 비활성화합니다 . 에 대한 설명을 참조하십시오--innodb
.
InnoDB 시스템 변수
-
daemon_memcached_enable_binlog
명령줄 형식 --daemon-memcached-enable-binlog[={OFF|ON}]
시스템 변수 daemon_memcached_enable_binlog
범위 글로벌 동적 아니 유형 부울 기본값 OFF
MySQL 바이너리 로그 와 함께
InnoDB
memcached 플러그인(daemon_memcached
) 을 사용하려면 소스 서버에서 이 옵션을 활성화하십시오 . 이 옵션은 서버 시작 시에만 설정할 수 있습니다. 또한 옵션을 사용하여 소스 서버에서 MySQL 바이너리 로그를 활성화해야 합니다 .--log-bin
-
daemon_memcached_engine_lib_name
명령줄 형식 --daemon-memcached-engine-lib-name=file_name
시스템 변수 daemon_memcached_engine_lib_name
범위 글로벌 동적 아니 유형 파일 이름 기본값 innodb_engine.so
InnoDB
memcached 플러그인 을 구현하는 공유 라이브러리를 지정합니다 .자세한 내용 은 14.21.3절 . “InnoDB memcached 플러그인 설정”을 참조하십시오 .
-
daemon_memcached_engine_lib_path
명령줄 형식 --daemon-memcached-engine-lib-path=dir_name
시스템 변수 daemon_memcached_engine_lib_path
범위 글로벌 동적 아니 유형 디렉토리 이름 기본값 NULL
InnoDB
memcached 플러그인 을 구현하는 공유 라이브러리가 포함된 디렉토리의 경로입니다 . 기본값은 MySQL 플러그인 디렉토리를 나타내는 NULL입니다.memcached
MySQL 플러그인 디렉토리 외부에 있는 다른 스토리지 엔진에 대한 플러그인을 지정하지 않는 한 이 매개변수를 수정할 필요가 없습니다 .자세한 내용 은 14.21.3절 . “InnoDB memcached 플러그인 설정”을 참조하십시오 .
-
명령줄 형식 --daemon-memcached-option=options
시스템 변수 daemon_memcached_option
범위 글로벌 동적 아니 유형 끈 기본값 시작 시 기본 memcached 메모리 개체 캐싱 데몬에 공백으로 구분된 memcached 옵션을 전달하는 데 사용됩니다 . 예를 들어, memcached가 수신 대기 하는 포트를 변경하거나 , 최대 동시 연결 수를 줄이거나, 키-값 쌍의 최대 메모리 크기를 변경하거나, 오류 로그에 대한 디버깅 메시지를 활성화할 수 있습니다.
사용법에 대한 자세한 내용 은 14.21.3절. “InnoDB memcached 플러그인 설정” 을 참조하십시오. memcached 옵션 에 대한 자세한 내용은 memcached 매뉴얼 페이지를 참조하십시오.
-
명령줄 형식 --daemon-memcached-r-batch-size=#
시스템 변수 daemon_memcached_r_batch_size
범위 글로벌 동적 아니 유형 정수 기본값 1
새 트랜잭션을 시작 하기 전에 수행할 memcached 읽기 작업(
get
작업) 수를 지정합니다COMMIT
. 의 상대편daemon_memcached_w_batch_size
.이 값은 기본적으로 1로 설정되므로 SQL 문을 통해 테이블에 적용된 모든 변경 사항은 memcached 작업에서 즉시 볼 수 있습니다 . 기본 테이블이 memcached 인터페이스 를 통해서만 액세스되는 시스템에서 빈번한 커밋으로 인한 오버헤드를 줄이기 위해 이 값을 늘릴 수 있습니다 . 값을 너무 크게 설정하면 실행 취소 또는 다시 실행 데이터의 양이 장기 실행 트랜잭션과 마찬가지로 일부 스토리지 오버헤드를 부과할 수 있습니다.
자세한 내용 은 14.21.3절 . “InnoDB memcached 플러그인 설정”을 참조하십시오 .
-
명령줄 형식 --daemon-memcached-w-batch-size=#
시스템 변수 daemon_memcached_w_batch_size
범위 글로벌 동적 아니 유형 정수 기본값 1
많은 방법을 지정 memcached와 같은 쓰기 작업
add
,set
그리고,incr
하는 작업을 수행하기 전에 수행 할 수있는COMMIT
새로운 트랜잭션을 시작합니다. 의 상대편daemon_memcached_r_batch_size
.이 값은 기본적으로 1로 설정되어 있으며, 저장 중인 데이터는 정전 시 보존해야 하며 즉시 커밋되어야 한다는 가정 하에 설정됩니다. 중요하지 않은 데이터를 저장할 때 이 값을 늘려 빈번한 커밋으로 인한 오버헤드를 줄일 수 있습니다. 그러나
N
예기치 않은 종료가 발생하면 커밋되지 않은 마지막 -1 쓰기 작업이 손실될 수 있습니다.자세한 내용 은 14.21.3절 . “InnoDB memcached 플러그인 설정”을 참조하십시오 .
-
명령줄 형식 --ignore-builtin-innodb[={OFF|ON}]
더 이상 사용되지 않음 네 시스템 변수 ignore_builtin_innodb
범위 글로벌 동적 아니 유형 부울 이전 버전의 MySQL에서 이 변수를 활성화하면 서버가 내장 기능
InnoDB
이 없는 것처럼 작동하여InnoDB Plugin
대신 사용할 수 있게 되었습니다. MySQL 5.7에서InnoDB
는 기본 스토리지 엔진이며InnoDB Plugin
사용되지 않으므로 이 변수는 무시됩니다. -
명령줄 형식 --innodb-adaptive-flushing[={OFF|ON}]
시스템 변수 innodb_adaptive_flushing
범위 글로벌 동적 네 유형 부울 기본값 ON
작업 부하 에 따라 버퍼 풀 에서 더티 페이지 플러시 비율을 동적으로 조정할지 여부를 지정합니다 . 플러시 속도를 동적으로 조정하는 것은 I/O 활동의 버스트를 방지하기 위한 것입니다. 이 설정은 기본적으로 활성화되어 있습니다. 자세한 내용 은 14.8.3.5절. “버퍼 풀 비우기 구성” 을 참조하십시오. 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 .
InnoDB
-
명령줄 형식 --innodb-adaptive-flushing-lwm=#
시스템 변수 innodb_adaptive_flushing_lwm
범위 글로벌 동적 네 유형 정수 기본값 10
최소값 0
최대값 70
적응 플러시 가 활성화 된 리두 로그 용량의 백분율을 나타내는 하위 워터 마크를 정의합니다 . 자세한 내용 은 14.8.3.5절 . “버퍼 풀 비우기 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-adaptive-hash-index[={OFF|ON}]
시스템 변수 innodb_adaptive_hash_index
범위 글로벌 동적 네 유형 부울 기본값 ON
InnoDB
적응형 해시 인덱스의 활성화 여부 . 작업 부하에 따라 적응형 해시 인덱싱 을 동적으로 활성화하거나 비활성화 하여 쿼리 성능을 향상시키는 것이 바람직할 수 있습니다 . 적응형 해시 인덱스는 모든 워크로드에 유용하지 않을 수 있으므로 실제 워크로드를 사용하여 활성화 및 비활성화된 상태에서 벤치마크를 수행합니다. 자세한 내용 은 14.5.3절. “적응형 해시 인덱스” 를 참조하십시오.이 변수는 기본적으로 활성화되어 있습니다.
SET GLOBAL
서버를 다시 시작하지 않고 명령문을 사용하여 이 매개변수를 수정할 수 있습니다 . 런타임 시 설정을 변경하려면 전역 시스템 변수를 설정하기에 충분한 권한이 필요합니다. 5.1.8.1절. “시스템 변수 권한”을 참조하십시오 .--skip-innodb-adaptive-hash-index
서버 시작 시 를 사용하여 비활성화 할 수도 있습니다 .적응형 해시 인덱스를 비활성화하면 해시 테이블이 즉시 비워집니다. 일반 작업은 해시 테이블이 비어 있는 동안 계속될 수 있으며 해시 테이블을 사용하는 쿼리를 실행하는 대신 인덱스 B-트리에 직접 액세스합니다. 적응형 해시 인덱스가 다시 활성화되면 일반 작업 중에 해시 테이블이 다시 채워집니다.
-
innodb_adaptive_hash_index_parts
명령줄 형식 --innodb-adaptive-hash-index-parts=#
시스템 변수 innodb_adaptive_hash_index_parts
범위 글로벌 동적 아니 유형 숫자 기본값 8
최소값 1
최대값 512
적응형 해시 인덱스 검색 시스템을 분할합니다. 각 인덱스는 특정 파티션에 바인딩되며 각 파티션은 별도의 래치로 보호됩니다.
이전 릴리스에서 적응형 해시 인덱스 검색 시스템은
btr_search_latch
경합 지점이 될 수 있는 단일 래치( ) 로 보호되었습니다 .innodb_adaptive_hash_index_parts
옵션 도입으로 검색 시스템은 기본적으로 8개 부분으로 분할됩니다. 최대 설정은 512입니다.관련 정보는 14.5.3절. “적응형 해시 인덱스”를 참조하십시오 .
-
innodb_adaptive_max_sleep_delay
명령줄 형식 --innodb-adaptive-max-sleep-delay=#
시스템 변수 innodb_adaptive_max_sleep_delay
범위 글로벌 동적 네 유형 정수 기본값 150000
최소값 0
최대값 1000000
Permits
InnoDB
to automatically adjust the value ofinnodb_thread_sleep_delay
up or down according to the current workload. Any nonzero value enables automated, dynamic adjustment of theinnodb_thread_sleep_delay
value, up to the maximum value specified in theinnodb_adaptive_max_sleep_delay
option. The value represents the number of microseconds. This option can be useful in busy systems, with greater than 16InnoDB
threads. (In practice, it is most valuable for MySQL systems with hundreds or thousands of simultaneous connections.)For more information, see Section 14.8.5, “Configuring Thread Concurrency for InnoDB”.
-
Command-Line Format --innodb-api-bk-commit-interval=#
System Variable innodb_api_bk_commit_interval
Scope Global Dynamic Yes Type Integer Default Value 5
Minimum Value 1
Maximum Value 1073741824
How often to auto-commit idle connections that use the
InnoDB
memcached interface, in seconds. For more information, see Section 14.21.5.4, “Controlling Transactional Behavior of the InnoDB memcached Plugin”. -
Command-Line Format --innodb-api-disable-rowlock[={OFF|ON}]
System Variable innodb_api_disable_rowlock
Scope Global Dynamic No Type Boolean Default Value OFF
Use this option to disable row locks when
InnoDB
memcached performs DML operations. By default,innodb_api_disable_rowlock
is disabled, which means that memcached requests row locks forget
andset
operations. Wheninnodb_api_disable_rowlock
is enabled, memcached requests a table lock instead of row locks.innodb_api_disable_rowlock
is not dynamic. It must be specified on the mysqld command line or entered in the MySQL configuration file. Configuration takes effect when the plugin is installed, which occurs when the MySQL server is started.For more information, see Section 14.21.5.4, “Controlling Transactional Behavior of the InnoDB memcached Plugin”.
-
Command-Line Format --innodb-api-enable-binlog[={OFF|ON}]
System Variable innodb_api_enable_binlog
Scope Global Dynamic No Type Boolean Default Value OFF
Lets you use the
InnoDB
memcached plugin with the MySQL binary log. For more information, see Enabling the InnoDB memcached Binary Log. -
Command-Line Format --innodb-api-enable-mdl[={OFF|ON}]
System Variable innodb_api_enable_mdl
Scope Global Dynamic No Type Boolean Default Value OFF
SQL 인터페이스를 통해 DDL 에서 삭제하거나 변경할 수 없도록
InnoDB
memcached 플러그인에서 사용하는 테이블을 잠급니다 . 자세한 내용 은 14.21.5.4절 . “InnoDB memcached 플러그인의 트랜잭션 동작 제어”를 참조하십시오 . -
명령줄 형식 --innodb-api-trx-level=#
시스템 변수 innodb_api_trx_level
범위 글로벌 동적 네 유형 정수 기본값 0
memcached 인터페이스에서 처리하는 쿼리 의 트랜잭션 격리 수준 을 제어합니다 . 친숙한 이름에 해당하는 상수는 다음과 같습니다.
-
0 =
READ UNCOMMITTED
-
1 =
READ COMMITTED
-
2 =
REPEATABLE READ
-
3 =
SERIALIZABLE
자세한 내용 은 14.21.5.4절 . “InnoDB memcached 플러그인의 트랜잭션 동작 제어”를 참조하십시오 .
-
-
명령줄 형식 --innodb-autoextend-increment=#
시스템 변수 innodb_autoextend_increment
범위 글로벌 동적 네 유형 정수 기본값 64
최소값 1
최대값 1000
자동 확장
InnoDB
시스템 테이블스페이스 파일이 가득 찼을 때 크기를 확장하기 위한 증분 크기(MB)입니다 . 기본값은 64입니다. 관련 정보는 시스템 테이블스페이스 데이터 파일 구성 및 시스템 테이블스페이스 크기 조정을 참조하십시오 .이
innodb_autoextend_increment
설정은 테이블당 파일 테이블 스페이스 파일이나 일반 테이블 스페이스 파일 에는 영향을 미치지 않습니다 . 이 파일은innodb_autoextend_increment
설정에 관계없이 자동 확장 됩니다. 초기 확장은 소량이며 이후 확장은 4MB 단위로 발생합니다. -
명령줄 형식 --innodb-autoinc-lock-mode=#
시스템 변수 innodb_autoinc_lock_mode
범위 글로벌 동적 아니 유형 정수 기본값 1
유효한 값 0
1
2
잠금 모드는 생성에 사용하는 자동 증가 값을. 허용되는 값은 각각 기존, 연속 또는 인터리브에 대해 0, 1 또는 2입니다. 기본 설정은 1(연속)입니다. 각 잠금 모드의 특성은 InnoDB AUTO_INCREMENT 잠금 모드를 참조하십시오 .
-
innodb_background_drop_list_empty
명령줄 형식 --innodb-background-drop-list-empty[={OFF|ON}]
도입 5.7.10 시스템 변수 innodb_background_drop_list_empty
범위 글로벌 동적 네 유형 부울 기본값 OFF
innodb_background_drop_list_empty
디버그 옵션을 활성화하면 백그라운드 삭제 목록이 비어 있을 때까지 테이블 생성을 지연시켜 테스트 사례 실패를 방지하는 데 도움이 됩니다. 예를 들어, 테스트 케이스 A가t1
백그라운드 드롭 목록에 테이블 을 배치 하는 경우 테스트 케이스 B는 테이블을 생성하기 전에 백그라운드 드롭 목록이 비어 있을 때까지 대기합니다t1
. -
명령줄 형식 --innodb-buffer-pool-chunk-size=#
시스템 변수 innodb_buffer_pool_chunk_size
범위 글로벌 동적 아니 유형 정수 기본값 134217728
최소값 1048576
최대값 innodb_buffer_pool_size / innodb_buffer_pool_instances
innodb_buffer_pool_chunk_size
InnoDB
버퍼 풀 크기 조정 작업을 위한 청크 크기를 정의합니다 .To avoid copying all buffer pool pages during resizing operations, the operation is performed in “chunks”. By default,
innodb_buffer_pool_chunk_size
is 128MB (134217728 bytes). The number of pages contained in a chunk depends on the value ofinnodb_page_size
.innodb_buffer_pool_chunk_size
can be increased or decreased in units of 1MB (1048576 bytes).The following conditions apply when altering the
innodb_buffer_pool_chunk_size
value:-
If
innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
is larger than the current buffer pool size when the buffer pool is initialized,innodb_buffer_pool_chunk_size
is truncated toinnodb_buffer_pool_size
/innodb_buffer_pool_instances
. -
Buffer pool size must always be equal to or a multiple of
innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
. If you alterinnodb_buffer_pool_chunk_size
,innodb_buffer_pool_size
is automatically rounded to a value that is equal to or a multiple ofinnodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
. The adjustment occurs when the buffer pool is initialized.
ImportantCare should be taken when changing
innodb_buffer_pool_chunk_size
, as changing this value can automatically increase the size of the buffer pool. Before changinginnodb_buffer_pool_chunk_size
, calculate the effect it has oninnodb_buffer_pool_size
to ensure that the resulting buffer pool size is acceptable.To avoid potential performance issues, the number of chunks (
innodb_buffer_pool_size
/innodb_buffer_pool_chunk_size
) should not exceed 1000.The
innodb_buffer_pool_size
variable is dynamic, which permits resizing the buffer pool while the server is online. However, the buffer pool size must be equal to or a multiple ofinnodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
, and changing either of those variable settings requires restarting the server.See Section 14.8.3.1, “Configuring InnoDB Buffer Pool Size” for more information.
-
-
innodb_buffer_pool_dump_at_shutdown
Command-Line Format --innodb-buffer-pool-dump-at-shutdown[={OFF|ON}]
System Variable innodb_buffer_pool_dump_at_shutdown
Scope Global Dynamic Yes Type Boolean Default Value ON
Specifies whether to record the pages cached in the
InnoDB
buffer pool when the MySQL server is shut down, to shorten the warmup process at the next restart. Typically used in combination withinnodb_buffer_pool_load_at_startup
. Theinnodb_buffer_pool_dump_pct
option defines the percentage of most recently used buffer pool pages to dump.Both
innodb_buffer_pool_dump_at_shutdown
andinnodb_buffer_pool_load_at_startup
are enabled by default.For more information, see Section 14.8.3.6, “Saving and Restoring the Buffer Pool State”.
-
Command-Line Format --innodb-buffer-pool-dump-now[={OFF|ON}]
System Variable innodb_buffer_pool_dump_now
Scope Global Dynamic Yes Type Boolean Default Value OFF
InnoDB
버퍼 풀에 캐시된 페이지를 즉시 기록합니다 . 일반적으로 와 함께 사용됩니다innodb_buffer_pool_load_now
.자세한 내용 은 14.8.3.6절 . “버퍼 풀 상태 저장 및 복원”을 참조하십시오 .
-
명령줄 형식 --innodb-buffer-pool-dump-pct=#
시스템 변수 innodb_buffer_pool_dump_pct
범위 글로벌 동적 네 유형 정수 기본값 25
최소값 1
최대값 100
읽고 덤프할 각 버퍼 풀에 대해 가장 최근에 사용된 페이지의 백분율을 지정합니다. 범위는 1에서 100까지입니다. 기본값은 25입니다. 예를 들어 각각 100페이지가 있는 버퍼 풀이 4개 있고
innodb_buffer_pool_dump_pct
25로 설정하면 각 버퍼 풀에서 가장 최근에 사용한 25페이지가 덤프됩니다.받는 사람의 변화
innodb_buffer_pool_dump_pct
디폴트 값에 대한 변경 기본값 일치innodb_buffer_pool_dump_at_shutdown
와innodb_buffer_pool_load_at_startup
모두의 MySQL 5.7에서 기본적으로 활성화되어 있습니다. -
명령줄 형식 --innodb-buffer-pool-filename=file_name
시스템 변수 innodb_buffer_pool_filename
범위 글로벌 동적 네 유형 파일 이름 기본값 ib_buffer_pool
innodb_buffer_pool_dump_at_shutdown
또는 에 의해 생성된 테이블스페이스 ID 및 페이지 ID 목록을 보유하는 파일의 이름을 지정합니다innodb_buffer_pool_dump_now
. 테이블스페이스 ID 및 페이지 ID는 다음 형식으로 저장됩니다space, page_id
. 기본적으로 파일은 이름이 지정ib_buffer_pool
되고InnoDB
데이터 디렉토리에 있습니다. 기본이 아닌 위치는 데이터 디렉토리를 기준으로 지정해야 합니다.다음
SET
명령문을 사용하여 런타임에 파일 이름을 지정할 수 있습니다 .SET GLOBAL innodb_buffer_pool_filename='file_name';
시작 시, 시작 문자열 또는 MySQL 구성 파일에서 파일 이름을 지정할 수도 있습니다. 시작할 때 파일 이름을 지정할 때 파일이 존재해야 하거나
InnoDB
그러한 파일이나 디렉터리가 없음을 나타내는 시작 오류를 반환합니다.자세한 내용 은 14.8.3.6절 . “버퍼 풀 상태 저장 및 복원”을 참조하십시오 .
-
명령줄 형식 --innodb-buffer-pool-instances=#
시스템 변수 innodb_buffer_pool_instances
범위 글로벌 동적 아니 유형 정수 기본값(Windows, 32비트 플랫폼) (autosized)
기본값(기타) 8 (or 1 if innodb_buffer_pool_size < 1GB)
최소값 1
최대값 64
InnoDB
버퍼 풀이 분할되는 영역의 수입니다 . 수 기가바이트 범위의 버퍼 풀이 있는 시스템의 경우 버퍼 풀을 별도의 인스턴스로 나누면 다른 스레드가 캐시된 페이지를 읽고 쓸 때 경합을 줄임으로써 동시성을 향상시킬 수 있습니다. 버퍼 풀에 저장되거나 버퍼 풀에서 읽는 각 페이지는 해시 함수를 사용하여 버퍼 풀 인스턴스 중 하나에 무작위로 할당됩니다. 각 버퍼 풀은 자체 여유 목록, 플러시 목록 , LRU 및 버퍼 풀에 연결된 기타 모든 데이터 구조를 관리하며 자체 버퍼 풀 뮤텍스에 의해 보호됩니다 .이 옵션은
innodb_buffer_pool_size
1GB 이상으로 설정한 경우에만 적용됩니다 . 전체 버퍼 풀 크기는 모든 버퍼 풀로 나뉩니다. 최고의 효율성을 위해innodb_buffer_pool_instances
및innodb_buffer_pool_size
각 버퍼 풀 인스턴스가 최소 1GB가 되도록 의 조합을 지정하십시오 .32비트 Windows 시스템의 기본값
innodb_buffer_pool_size
은 아래에 설명된 대로 의 값에 따라 다릅니다 .-
경우
innodb_buffer_pool_size
1.3GB,의 기본보다 큰innodb_buffer_pool_instances
것입니다innodb_buffer_pool_size
각 청크에 대한 개별 메모리 할당 요청과 / 128메가바이트 1.3GB는 32비트 Windows가 단일 버퍼 풀에 필요한 인접 주소 공간을 할당할 수 없는 상당한 위험이 있는 경계로 선택되었습니다. -
그렇지 않으면 기본값은 1입니다.
다른 모든 플랫폼에서
innodb_buffer_pool_size
가 1GB 이상인 경우 기본값은 8 입니다. 그렇지 않으면 기본값은 1입니다.관련 정보는 14.8.3.1절. “InnoDB 버퍼 풀 크기 구성”을 참조하십시오 .
-
-
명령줄 형식 --innodb-buffer-pool-load-abort[={OFF|ON}]
시스템 변수 innodb_buffer_pool_load_abort
범위 글로벌 동적 네 유형 부울 기본값 OFF
또는 에 의해 트리거된
InnoDB
버퍼 풀 내용 을 복원하는 프로세스를 중단합니다 .innodb_buffer_pool_load_at_startup
innodb_buffer_pool_load_now
자세한 내용 은 14.8.3.6절 . “버퍼 풀 상태 저장 및 복원”을 참조하십시오 .
-
innodb_buffer_pool_load_at_startup
명령줄 형식 --innodb-buffer-pool-load-at-startup[={OFF|ON}]
시스템 변수 innodb_buffer_pool_load_at_startup
범위 글로벌 동적 아니 유형 부울 기본값 ON
MySQL 서버 시작 시
InnoDB
버퍼 풀이 이전에 보유했던 동일한 페이지를 로드하여 자동으로 워밍업되도록 지정합니다 . 일반적으로 와 함께 사용됩니다innodb_buffer_pool_dump_at_shutdown
.innodb_buffer_pool_dump_at_shutdown
및 둘 다innodb_buffer_pool_load_at_startup
기본적으로 활성화되어 있습니다.자세한 내용 은 14.8.3.6절 . “버퍼 풀 상태 저장 및 복원”을 참조하십시오 .
-
명령줄 형식 --innodb-buffer-pool-load-now[={OFF|ON}]
시스템 변수 innodb_buffer_pool_load_now
범위 글로벌 동적 네 유형 부울 기본값 OFF
서버가 다시 시작될 때까지 기다리지 않고 데이터 페이지 세트를 로드 하여 버퍼 풀 을 즉시 워밍업합니다 . 벤치마킹 중에 캐시 메모리를 알려진 상태로 되돌리거나 보고서 또는 유지 관리를 위한 쿼리를 실행한 후 MySQL 서버가 정상 작업을 재개하도록 준비하는 데 유용할 수 있습니다.
InnoDB
자세한 내용 은 14.8.3.6절 . “버퍼 풀 상태 저장 및 복원”을 참조하십시오 .
-
명령줄 형식 --innodb-buffer-pool-size=#
시스템 변수 innodb_buffer_pool_size
범위 글로벌 동적 네 유형 정수 기본값 134217728
최소값 5242880
최대값(64비트 플랫폼) 2**64-1
최대값(32비트 플랫폼) 2**32-1
버퍼 풀 의 크기(바이트)는
InnoDB
테이블 및 인덱스 데이터를 캐시 하는 메모리 영역 입니다. 기본값은 134217728바이트(128MB)입니다. 최대값은 CPU 아키텍처에 따라 다릅니다. 최대값은 32비트 시스템에서 4294967295(2 32 -1)이고 64 비트 시스템에서 18446744073709551615(2 64 -1)입니다. 32비트 시스템에서 CPU 아키텍처 및 운영 체제는 명시된 최대값보다 더 작은 실제 최대 크기를 부과할 수 있습니다. 버퍼 풀의 크기가 1GBinnodb_buffer_pool_instances
보다 큰 경우 1보다 큰 값으로 설정 하면 사용량이 많은 서버에서 확장성이 향상될 수 있습니다.더 큰 버퍼 풀은 동일한 테이블 데이터에 두 번 이상 액세스하기 위해 더 적은 디스크 I/O를 필요로 합니다. 전용 데이터베이스 서버에서 버퍼 풀 크기를 시스템의 실제 메모리 크기의 80%로 설정할 수 있습니다. 버퍼 풀 크기를 구성할 때 다음과 같은 잠재적인 문제에 유의하고 필요한 경우 버퍼 풀 크기를 축소할 수 있도록 준비하십시오.
-
물리적 메모리 경쟁으로 운영 체제에서 페이징이 발생할 수 있습니다.
-
InnoDB
버퍼 및 제어 구조에 대한 추가 메모리를 예약하여 할당된 총 공간이 지정된 버퍼 풀 크기보다 약 10% 더 큽니다. -
버퍼 풀의 주소 공간은 연속적이어야 하며, 이는 특정 주소에서 로드되는 DLL이 있는 Windows 시스템에서 문제가 될 수 있습니다.
-
버퍼 풀을 초기화하는 시간은 대략 그 크기에 비례합니다. 큰 버퍼 풀이 있는 인스턴스에서는 초기화 시간이 중요할 수 있습니다. 초기화 기간을 줄이기 위해 서버 종료 시 버퍼 풀 상태를 저장하고 서버 시작 시 복원할 수 있습니다. 14.8.3.6절 . “버퍼 풀 상태 저장 및 복원”을 참조하십시오 .
버퍼 풀 크기를 늘리거나 줄일 때 작업은 청크로 수행됩니다. 청크 크기는
innodb_buffer_pool_chunk_size
변수에 의해 정의되며 기본값은 128MB입니다.버퍼 풀 크기는 항상
innodb_buffer_pool_chunk_size
* 와 같거나 배수여야 합니다innodb_buffer_pool_instances
. 당신이 동일하지 않은 값 또는의 배수에 버퍼 풀 크기를 변경하는 경우innodb_buffer_pool_chunk_size
*를innodb_buffer_pool_instances
, 풀 크기를 자동으로 동일 또는의 배수 값으로 조정 버퍼innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
.innodb_buffer_pool_size
동적으로 설정할 수 있으므로 서버를 다시 시작하지 않고도 버퍼 풀의 크기를 조정할 수 있습니다.Innodb_buffer_pool_resize_status
상태 변수는 온라인 버퍼 풀 크기 조정 작업의 상태를보고합니다. 자세한 내용 은 14.8.3.1절. “InnoDB 버퍼 풀 크기 구성” 을 참조하십시오. -
-
명령줄 형식 --innodb-change-buffer-max-size=#
시스템 변수 innodb_change_buffer_max_size
범위 글로벌 동적 네 유형 정수 기본값 25
최소값 0
최대값 50
버퍼 풀 의 전체 크기에 대한 백분율로 나타낸
InnoDB
변경 버퍼의 최대 크기 . 삽입, 업데이트 및 삭제 작업이 많은 MySQL 서버의 경우 이 값을 늘리거나 보고에 사용되는 데이터가 변경되지 않는 MySQL 서버의 경우 이 값을 줄일 수 있습니다. 자세한 내용 은 14.5.2절 . “버퍼 변경”을 참조하십시오 . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 . -
명령줄 형식 --innodb-change-buffering=value
시스템 변수 innodb_change_buffering
범위 글로벌 동적 네 유형 열거 기본값 all
유효한 값 none
inserts
deletes
changes
purges
all
변경 버퍼링
InnoDB
수행 여부 , I/O 작업이 순차적으로 수행될 수 있도록 보조 인덱스에 대한 쓰기 작업을 지연시키는 최적화입니다. 허용되는 값은 다음 표에 설명되어 있습니다.표 14.19 innodb_change_buffering에 허용되는 값
값 설명 none
어떤 작업도 버퍼링하지 마십시오. inserts
버퍼 삽입 작업. deletes
버퍼 삭제 마킹 작업; 엄밀히 말하면 제거 작업 중에 나중에 삭제할 수 있도록 인덱스 레코드를 표시하는 쓰기입니다. changes
버퍼 삽입 및 삭제 표시 작업. purges
백그라운드에서 발생하는 물리적 삭제 작업을 버퍼링합니다. all
기본값입니다. 버퍼 삽입, 삭제 표시 작업 및 제거. 자세한 내용 은 14.5.2절 . “버퍼 변경”을 참조하십시오 . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 .
-
명령줄 형식 --innodb-change-buffering-debug=#
시스템 변수 innodb_change_buffering_debug
범위 글로벌 동적 네 유형 정수 기본값 0
최대값 2
InnoDB
변경 버퍼링에 대한 디버그 플래그를 설정합니다 . 값이 1이면 변경 버퍼에 대한 모든 변경 사항이 적용됩니다. 값이 2이면 병합 시 예기치 않은 종료가 발생합니다. 기본값 0은 변경 버퍼링 디버그 플래그가 설정되지 않았음을 나타냅니다. 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
-
명령줄 형식 --innodb-checksum-algorithm=value
시스템 변수 innodb_checksum_algorithm
범위 글로벌 동적 네 유형 열거 기본값 crc32
유효한 값 crc32
strict_crc32
innodb
strict_innodb
none
strict_none
테이블스페이스 의 디스크 블록에 저장된 체크섬 을 생성하고 확인하는 방법을 지정합니다 . MySQL 5.7.7의 기본값입니다.
InnoDB
crc32
innodb_checksum_algorithm
innodb_checksums
옵션을 대체합니다 . MySQL 5.7.6까지 호환성을 위해 다음 값이 제공되었습니다.MySQL 5.7.7에서 기본값
innodb_checksum_algorithm
인 crc32innodb_checksums=ON
는 이제 와 동일합니다innodb_checksum_algorithm=crc32
.innodb_checksums=OFF
와 여전히 동일합니다innodb_checksum_algorithm=none
.충돌을 피하려면
innodb_checksums
MySQL 구성 파일 및 시작 스크립트에서 에 대한 참조를 제거하십시오 .값
innodb
은 이전 버전의 MySQL과 호환됩니다. 값crc32
은 수정된 모든 블록에 대한 체크섬을 계산하고 각 디스크 읽기에 대한 체크섬을 확인하는 더 빠른 알고리즘을 사용합니다. 한 번에innodb
8비트 블록을 스캔 하는 체크섬 알고리즘 보다 빠른 64비트 블록 을 스캔합니다. 값none
은 블록 데이터를 기반으로 값을 계산하는 대신 체크섬 필드에 상수 값을 씁니다. 테이블스페이스의 블록은 이전 값, 새 값 및 체크섬 없음 값을 혼합하여 사용할 수 있으며 데이터가 수정됨에 따라 점진적으로 업데이트됩니다. 테이블스페이스의 블록이 수정되면crc32
알고리즘에 따라 관련 테이블은 이전 버전의 MySQL에서 읽을 수 없습니다.엄격한 형식의 체크섬 알고리즘은 테이블스페이스에서 유효하지만 일치하지 않는 체크섬 값을 발견하면 오류를 보고합니다. 처음으로 테이블스페이스를 설정하려면 새 인스턴스에서만 엄격한 설정을 사용하는 것이 좋습니다. 엄격한 설정은 디스크 읽기 동안 모든 체크섬 값을 계산할 필요가 없기 때문에 다소 빠릅니다.
메모MySQL은 5.7.8에 대한 엄격한 모드 설정하기 전에
innodb_checksum_algorithm
발생InnoDB
가 발생할 때 중단 유효 하지만 일치하지 않는 체크섬. MySQL은 5.7.8 이상에서 만 오류 메시지가 출력되며, 유효한 경우 페이지가 유효한 것으로 받아 들여진다innodb
,crc32
또는none
체크섬.다음 표는
none
,innodb
, 및crc32
옵션 값과 엄격한 대응 값 간의 차이점을 보여줍니다 .none
,innodb
, 및crc32
지정된 유형의 체크섬 값을 각 데이터 블록에 쓰지만 호환성을 위해 읽기 작업 중에 블록을 확인할 때 다른 체크섬 값을 허용합니다. 엄격한 설정은 유효한 체크섬 값도 허용하지만 일치하지 않는 유효한 체크섬 값이 발견되면 오류 메시지를 인쇄합니다. 엄격한 형식을 사용하면InnoDB
인스턴스의 모든 데이터 파일이 동일한innodb_checksum_algorithm
값으로 생성되는 경우 더 빠르게 검증할 수 있습니다 .표 14.20 허용되는 innodb_checksum_algorithm 값
값 생성된 체크섬(작성 시) 허용된 체크섬(읽을 때) 없음 상수입니다. 에 의해 생성 된 체크섬의 모든 none
,innodb
또는crc32
.이노디비 의 원래 알고리즘을 사용하여 소프트웨어에서 계산된 체크섬입니다 InnoDB
.에 의해 생성 된 체크섬의 모든 none
,innodb
또는crc32
.crc32 crc32
하드웨어 지원으로 수행 되는 알고리즘을 사용하여 계산된 체크섬 입니다.에 의해 생성 된 체크섬의 모든 none
,innodb
또는crc32
.strict_none 상수 에 의해 생성 된 체크섬의 모든 none
,innodb
또는crc32
.InnoDB
유효하지만 일치하지 않는 체크섬이 발견되면 오류 메시지를 인쇄합니다.strict_innodb 의 원래 알고리즘을 사용하여 소프트웨어에서 계산된 체크섬입니다 InnoDB
.에 의해 생성 된 체크섬의 모든 none
,innodb
또는crc32
.InnoDB
유효하지만 일치하지 않는 체크섬이 발견되면 오류 메시지를 인쇄합니다.엄격한_crc32 crc32
하드웨어 지원으로 수행 되는 알고리즘을 사용하여 계산된 체크섬 입니다.에 의해 생성 된 체크섬의 모든 none
,innodb
또는crc32
.InnoDB
유효하지만 일치하지 않는 체크섬이 발견되면 오류 메시지를 인쇄합니다.MySQL Enterprise Backup 3.8.0까지 버전은 CRC32 체크섬을 사용하는 테이블스페이스 백업을 지원하지 않습니다. MySQL Enterprise Backup 은 3.8.1에 CRC32 체크섬 지원을 추가하지만 몇 가지 제한이 있습니다. 자세한 내용은 MySQL Enterprise Backup 3.8.1 변경 내역을 참조하십시오.
-
명령줄 형식 --innodb-checksums[={OFF|ON}]
더 이상 사용되지 않음 네 시스템 변수 innodb_checksums
범위 글로벌 동적 아니 유형 부울 기본값 ON
InnoDB
하드웨어 오류 또는 손상된 데이터 파일에 대한 추가 내결함성을 보장하기 위해 디스크에서 읽은 모든 테이블스페이스 페이지에서 체크섬 유효성 검사를 사용할 수 있습니다 . 이 유효성 검사는 기본적으로 활성화되어 있습니다. 특수한 상황(예: 벤치마크를 실행할 때)에서는 이 안전 기능을 로 비활성화할 수 있습니다--skip-innodb-checksums
.innodb_checksum_algorithm
옵션을 사용하여 체크섬을 계산하는 방법을 지정할 수 있습니다 .innodb_checksums
더 이상 사용되지 않으며 로 대체되었습니다innodb_checksum_algorithm
.MySQL 5.7.7 이전
innodb_checksums=ON
에는 와 동일합니다innodb_checksum_algorithm=innodb
. MySQL 5.7.7부터innodb_checksum_algorithm
기본값은crc32
이고 와innodb_checksums=ON
동일합니다innodb_checksum_algorithm=crc32
.innodb_checksums=OFF
와 동일합니다innodb_checksum_algorithm=none
.innodb_checksums
과의 충돌을 피하기 위해 구성 파일 및 시작 스크립트에서 모든 옵션을 제거하십시오innodb_checksum_algorithm
.innodb_checksums=OFF
자동으로 설정합니다innodb_checksum_algorithm=none
.innodb_checksums=ON
에 대한 다른 설정은 무시되고 무시됩니다innodb_checksum_algorithm
. -
명령줄 형식 --innodb-cmp-per-index-enabled[={OFF|ON}]
시스템 변수 innodb_cmp_per_index_enabled
범위 글로벌 동적 네 유형 부울 기본값 OFF
INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX
테이블 에서 인덱스별 압축 관련 통계를 활성화 합니다. 이러한 통계는 수집하는 데 비용이 많이 들 수 있으므로InnoDB
압축된 테이블 과 관련된 성능 조정 중에 개발, 테스트 또는 복제 인스턴스에서만 이 옵션을 활성화하십시오 .자세한 내용은 섹션 24.4.7 "고 INFORMATION_SCHEMA INNODB_CMP_PER_INDEX 및 INNODB_CMP_PER_INDEX_RESET 표" 및 "런타임에서 InnoDB의 테이블 압축 모니터링"절 14.9.1.4을 .
-
명령줄 형식 --innodb-commit-concurrency=#
시스템 변수 innodb_commit_concurrency
범위 글로벌 동적 네 유형 정수 기본값 0
최소값 0
최대값 1000
동시에 커밋 할 수 있는 스레드 수입니다 . 값이 0(기본값)이면 여러 트랜잭션 을 동시에 커밋할 수 있습니다.
의 값은
innodb_commit_concurrency
런타임에 0에서 0이 아닌 값으로 또는 그 반대로 변경할 수 없습니다. 값은 0이 아닌 값에서 다른 값으로 변경할 수 있습니다. -
명령줄 형식 --innodb-compress-debug=value
시스템 변수 innodb_compress_debug
범위 글로벌 동적 네 유형 열거 기본값 none
유효한 값 none
zlib
lz4
lz4hc
COMPRESSION
각 테이블에 대한 속성 을 정의할 필요 없이 지정된 압축 알고리즘을 사용하여 모든 테이블을 압축 합니다. 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
관련 정보는 14.9.2절. “InnoDB 페이지 압축”을 참조하십시오 .
-
innodb_compression_failure_threshold_pct
명령줄 형식 --innodb-compression-failure-threshold-pct=#
시스템 변수 innodb_compression_failure_threshold_pct
범위 글로벌 동적 네 유형 정수 기본값 5
최소값 0
최대값 100
테이블에 대한 압축 실패율 임계값을 백분율로 정의합니다. 이 지점에서 MySQL은 값비싼 압축 실패 를 피하기 위해 압축된 페이지 내에 패딩을 추가하기 시작합니다 . 이 임계값을 초과하면 MySQL은 각각의 새 압축된 페이지 내에 추가 여유 공간을 남기기 시작하여 에서 지정한 페이지 크기의 백분율까지 여유 공간의 양을 동적으로 조정합니다 . 0 값은 압축 효율성을 모니터링하고 패딩 양을 동적으로 조정하는 메커니즘을 비활성화합니다.
innodb_compression_pad_pct_max
자세한 내용 은 14.9.1.6절 . “OLTP 작업 부하에 대한 압축”을 참조하십시오 .
-
명령줄 형식 --innodb-compression-level=#
시스템 변수 innodb_compression_level
범위 글로벌 동적 네 유형 정수 기본값 6
최소값 0
최대값 9
InnoDB
압축된 테이블 및 인덱스 에 사용할 zlib 압축 수준을 지정합니다 . 값이 높을수록 압축하는 동안 더 많은 CPU 오버헤드를 희생하면서 더 많은 데이터를 저장 장치에 저장할 수 있습니다. 값이 낮을수록 저장 공간이 중요하지 않거나 데이터를 특별히 압축할 수 없을 것으로 예상되는 경우 CPU 오버헤드를 줄일 수 있습니다.자세한 내용 은 14.9.1.6절 . “OLTP 작업 부하에 대한 압축”을 참조하십시오 .
-
innodb_compression_pad_pct_max
명령줄 형식 --innodb-compression-pad-pct-max=#
시스템 변수 innodb_compression_pad_pct_max
범위 글로벌 동적 네 유형 정수 기본값 50
최소값 0
최대값 75
각 압축된 페이지 내에서 여유 공간으로 예약할 수 있는 최대 백분율을 지정하여 압축된 테이블 또는 인덱스가 업데이트되고 데이터가 다시 압축 될 때 페이지 내에서 데이터 및 수정 로그를 재구성할 수 있는 공간을 허용 합니다.
innodb_compression_failure_threshold_pct
가 0이 아닌 값으로 설정되고 압축 실패 비율이 컷오프 지점을 통과하는 경우에만 적용됩니다 .자세한 내용 은 14.9.1.6절 . “OLTP 작업 부하에 대한 압축”을 참조하십시오 .
-
명령줄 형식 --innodb-concurrency-tickets=#
시스템 변수 innodb_concurrency_tickets
범위 글로벌 동적 네 유형 정수 기본값 5000
최소값 1
최대값 4294967295
동시에 들어갈 수 있는 스레드 수를 결정합니다
InnoDB
. 스레드InnoDB
수가 이미 동시성 제한에 도달한 경우 스레드는 입력을 시도할 때 큐에 배치 됩니다. 스레드가 에 들어가도록 허용되면 의 값과 동일한 " 티켓 "InnoDB
수가 주어지며 스레드는 티켓을 모두 사용할 때까지 자유롭게 들어가고 나갈 수 있습니다. 그 시점 이후에 스레드는 다음에 입력을 시도할 때 동시성 검사(및 가능한 대기열)의 대상이 됩니다 . 기본값은 5000입니다.innodb_concurrency_tickets
InnoDB
InnoDB
작은
innodb_concurrency_tickets
값을 사용하면 몇 개의 행만 처리해야 하는 작은 트랜잭션이 많은 행을 처리하는 큰 트랜잭션과 공정하게 경쟁합니다. 작은innodb_concurrency_tickets
값 의 단점은 큰 트랜잭션이 완료되기 전에 대기열을 여러 번 반복해야 하므로 작업을 완료하는 데 필요한 시간이 늘어납니다.대형으로
innodb_concurrency_tickets
값이 큰 트랜잭션 (제어 큐의 끝에 위치 덜 시간 소비 대기innodb_thread_concurrency
) 시간 등을 행 검색. 또한 대규모 트랜잭션은 작업을 완료하기 위해 대기열을 통해 더 적은 수의 이동을 필요로 합니다. 큰innodb_concurrency_tickets
값 의 단점은 동시에 실행되는 큰 트랜잭션이 너무 많으면 작은 트랜잭션이 실행되기 전에 더 오랜 시간을 기다리게 하여 고갈될 수 있다는 것입니다.0이 아닌
innodb_thread_concurrency
값을 사용하면innodb_concurrency_tickets
더 큰 트랜잭션과 더 작은 트랜잭션 간의 최적 균형을 찾기 위해 값을 위 또는 아래로 조정해야 할 수 있습니다 .SHOW ENGINE INNODB STATUS
보고서는 큐를 통해 현재의 패스의 실행 트랜잭션 남은 티켓의 수를 나타낸다. 이 데이터는 테이블 의TRX_CONCURRENCY_TICKETS
열 에서도 얻을 수 있습니다INFORMATION_SCHEMA.INNODB_TRX
.자세한 내용 은 14.8.5절 . “InnoDB를 위한 스레드 동시성 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-data-file-path=file_name
시스템 변수 innodb_data_file_path
범위 글로벌 동적 아니 유형 끈 기본값 ibdata1:12M:autoextend
InnoDB
시스템 테이블스페이스 데이터 파일 의 이름, 크기 및 속성을 정의합니다. 에 대한 값을 지정하지 않으면innodb_data_file_path
기본 동작은 12MB보다 약간 큰 단일 자동 확장 데이터 파일을 생성하는 것ibdata1
입니다.데이터 파일 사양의 전체 구문에는 파일 이름, 파일 크기,
autoextend
속성 및max
속성이 포함됩니다.file_name:file_size[:autoextend[:max:max_file_size]]
파일 크기는 추가하여 킬로바이트, 메가 바이트, 기가 바이트 지정
K
,M
또는G
크기 값. 데이터 파일 크기를 킬로바이트 단위로 지정하는 경우 1024의 배수로 지정합니다. 그렇지 않으면 KB 값은 가장 가까운 메가바이트(MB) 경계로 반올림됩니다. 파일 크기의 합은 최소한 12MB보다 약간 커야 합니다.추가 구성 정보는 시스템 테이블스페이스 데이터 파일 구성을 참조하십시오 . 크기 조정 지침 은 시스템 테이블스페이스 크기 조정을 참조하십시오 .
-
명령줄 형식 --innodb-data-home-dir=dir_name
시스템 변수 innodb_data_home_dir
범위 글로벌 동적 아니 유형 디렉토리 이름 InnoDB
시스템 테이블스페이스 데이터 파일에 대한 디렉토리 경로의 공통 부분입니다 . 기본값은 MySQLdata
디렉토리입니다. 설정이 설정과 연결됩니다innodb_data_file_path
. 값을 빈 문자열로 지정하면 에 대한 절대 경로를 지정할 수 있습니다innodb_data_file_path
.에 대한 값을 지정할 때 후행 슬래시가 필요합니다
innodb_data_home_dir
. 예를 들어:[mysqld] innodb_data_home_dir = /path/to/myibdata/
이 설정은 테이블당 파일 테이블 스페이스 의 위치에 영향을 주지 않습니다 .
관련 정보는 14.8.1절. “InnoDB 시작 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-deadlock-detect[={OFF|ON}]
도입 5.7.15 시스템 변수 innodb_deadlock_detect
범위 글로벌 동적 네 유형 부울 기본값 ON
이 옵션은 교착 상태 감지를 비활성화하는 데 사용됩니다. 높은 동시성 시스템에서 여러 스레드가 동일한 잠금을 기다릴 때 교착 상태 감지로 인해 속도가 느려질 수 있습니다. 때때로 교착 상태 감지를 비활성화
innodb_lock_wait_timeout
하고 교착 상태가 발생할 때 트랜잭션 롤백 설정에 의존하는 것이 더 효율적일 수 있습니다 .관련 정보는 14.7.5.2절 . “교착 상태 감지”를 참조하십시오 .
-
명령줄 형식 --innodb-default-row-format=value
시스템 변수 innodb_default_row_format
범위 글로벌 동적 네 유형 열거 기본값 DYNAMIC
유효한 값 REDUNDANT
COMPACT
DYNAMIC
이
innodb_default_row_format
옵션은InnoDB
테이블 및 사용자 생성 임시 테이블에 대한 기본 행 형식을 정의합니다 . 기본 설정은DYNAMIC
입니다. 기타 허용되는 값은COMPACT
및REDUNDANT
입니다.COMPRESSED
에서 사용하기 위해 지원되지 않는 행 형식, 시스템 테이블은 기본값으로 정의 할 수 없습니다.새로 생성된 테이블 은 명시적으로 옵션을 지정하지 않거나 when 을 사용
innodb_default_row_format
하여 정의한 행 형식을 사용합니다.ROW_FORMAT
ROW_FORMAT=DEFAULT
때
ROW_FORMAT
옵션은 명시 적으로 지정하거나되지 않고ROW_FORMAT=DEFAULT
사용되는 테이블을 재 구축 모든 조작은 자동으로 정의되는 포맷 테이블의 행 형식을 변경한다innodb_default_row_format
. 자세한 내용 은 테이블의 행 형식 정의 를 참조하십시오 .InnoDB
쿼리를 처리하기 위해 서버에서 생성한 내부 임시 테이블DYNAMIC
은innodb_default_row_format
설정에 관계없이 행 형식을 사용 합니다. -
innodb_disable_sort_file_cache
명령줄 형식 --innodb-disable-sort-file-cache[={OFF|ON}]
시스템 변수 innodb_disable_sort_file_cache
범위 글로벌 동적 네 유형 부울 기본값 OFF
병합 정렬 임시 파일에 대한 운영 체제 파일 시스템 캐시를 비활성화합니다. 효과는 에 해당하는 파일을 여는 것입니다
O_DIRECT
. -
innodb_disable_resize_buffer_pool_debug
명령줄 형식 --innodb-disable-resize-buffer-pool-debug[={OFF|ON}]
시스템 변수 innodb_disable_resize_buffer_pool_debug
범위 글로벌 동적 네 유형 부울 기본값 ON
InnoDB
버퍼 풀의 크기 조정을 비활성화합니다 . 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
-
명령줄 형식 --innodb-doublewrite[={OFF|ON}]
시스템 변수 innodb_doublewrite
범위 글로벌 동적 아니 유형 부울 기본값 ON
활성화되면(기본값)
InnoDB
모든 데이터를 두 번 저장합니다. 먼저 이중 쓰기 버퍼 에 저장한 다음 실제 데이터 파일에 저장합니다 . 이 변수는--skip-innodb-doublewrite
벤치마크 또는 데이터 무결성 또는 가능한 실패에 대한 우려보다 최고의 성능이 필요한 경우에 로 끌 수 있습니다.시스템 테이블스페이스 데이터 파일(
ibdata*
파일)이 원자 쓰기를 지원하는 Fusion-io 장치에 있는 경우 이중 쓰기 버퍼링이 자동으로 비활성화되고 Fusion-io 원자 쓰기가 모든 데이터 파일에 사용됩니다. 이중 쓰기 버퍼 설정은 전역이므로 Fusion-io가 아닌 하드웨어에 있는 데이터 파일에 대해서도 이중 쓰기 버퍼링이 비활성화됩니다. 이 기능은 Fusion-io 하드웨어에서만 지원되며 Linux의 Fusion-io NVMFS에서만 활성화됩니다. 이 기능을 최대한 활용하려면 의innodb_flush_method
설정을O_DIRECT
권장합니다.관련 정보는 14.6.5절 . “이중 쓰기 버퍼”를 참조하십시오 .
-
명령줄 형식 --innodb-fast-shutdown=#
시스템 변수 innodb_fast_shutdown
범위 글로벌 동적 네 유형 정수 기본값 1
유효한 값 0
1
2
InnoDB
셧다운 모드. 값이 0이면,InnoDB
않습니다 느린 종료 , 전체 퍼지 및 종료하기 전에 병합 버퍼 변경. 값이 1(기본값)이면InnoDB
종료 시 빠른 종료 라고 하는 프로세스인 이러한 작업을 건너뜁니다 . 값이 2InnoDB
이면 MySQL이 충돌한 것처럼 로그를 플러시하고 콜드 종료합니다. 커밋된 트랜잭션은 손실되지 않지만 충돌 복구 작업으로 인해 다음 시작이 더 오래 걸립니다.느린 종료는 상당한 양의 데이터가 여전히 버퍼링되는 극단적인 경우 몇 분 또는 몇 시간이 걸릴 수 있습니다. MySQL 주요 릴리스 간에 업그레이드 또는 다운그레이드하기 전에 느린 종료 기술을 사용하여 업그레이드 프로세스가 파일 형식을 업데이트하는 경우 모든 데이터 파일이 완전히 준비되도록 합니다.
innodb_fast_shutdown=2
긴급 상황이나 문제 해결 상황에서 사용 하여 데이터가 손상될 위험이 있는 경우 가장 빠른 종료를 얻습니다. -
innodb_fil_make_page_dirty_debug
명령줄 형식 --innodb-fil-make-page-dirty-debug=#
시스템 변수 innodb_fil_make_page_dirty_debug
범위 글로벌 동적 네 유형 정수 기본값 0
최대값 2**32-1
기본적
innodb_fil_make_page_dirty_debug
으로 테이블스페이스의 ID로 설정 하면 테이블스페이스의 첫 페이지가 즉시 더티됩니다. 경우는innodb_saved_page_number_debug
설정, 기본값이 아닌 값으로 설정됩니다innodb_fil_make_page_dirty_debug
dirties에게 지정된 페이지를. 이innodb_fil_make_page_dirty_debug
옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
-
명령줄 형식 --innodb-file-format=value
더 이상 사용되지 않음 네 시스템 변수 innodb_file_format
범위 글로벌 동적 네 유형 끈 기본값 Barracuda
유효한 값 Antelope
Barracuda
테이블당 파일 테이블 스페이스에
InnoDB
대한 파일 형식을 활성화합니다 . 지원되는 파일 형식은 및 입니다. 및 행 형식 을 지원 하는 원본 파일 형식입니다. 및 행 형식 을 지원하는 최신 파일 형식입니다.Antelope
Barracuda
Antelope
InnoDB
REDUNDANT
COMPACT
Barracuda
COMPRESSED
DYNAMIC
COMPRESSED
및DYNAMIC
행 형식은 중요 저장 기능 수 있도록InnoDB
테이블을. 14.11절. “InnoDB 행 형식”을 참조하십시오 .innodb_file_format
설정을 변경해도 기존InnoDB
테이블스페이스 파일 의 파일 형식에는 영향을 미치지 않습니다 .innodb_file_format
모든 행 형식의 테이블을 지원하는 일반 테이블스페이스 에는 설정이 적용되지 않습니다. 14.6.3.3절 . “일반 테이블스페이스”를 참조하십시오 .innodb_file_format
기본값은 변경되었습니다Barracuda
MySQL은 5.7에서.innodb_file_format
사용 테이블을 생성 할 때 설정은 무시됩니다DYNAMIC
행 형식을.DYNAMIC
행 형식을 사용하여 만든 테이블Barracuda
은innodb_file_format
설정에 관계없이 항상 파일 형식을 사용 합니다.COMPRESSED
행 형식 을 사용하려면innodb_file_format
로 설정해야 합니다Barracuda
.이
innodb_file_format
옵션은 더 이상 사용되지 않습니다. 향후 릴리스에서 제거될 것으로 예상합니다. 이innodb_file_format
옵션 의 목적은 사용자가InnoDB
이전 버전의 MySQL에 내장된 버전으로 다운그레이드할 수 있도록 하는 것이었습니다 . 이제 해당 버전의 MySQL이 제품 수명 주기의 끝에 도달했으므로 이 옵션에서 제공하는 다운그레이드 지원은 더 이상 필요하지 않습니다.자세한 내용 은 14.10절. “InnoDB 파일 형식 관리”를 참조하십시오 .
-
명령줄 형식 --innodb-file-format-check[={OFF|ON}]
더 이상 사용되지 않음 네 시스템 변수 innodb_file_format_check
범위 글로벌 동적 아니 유형 부울 기본값 ON
이 변수는 서버 시작 시 1 또는 0으로 설정 하여 시스템 테이블스페이스 에서 파일 형식 태그를
InnoDB
확인 하는지 여부 (예: 또는 ) 를 활성화하거나 비활성화할 수 있습니다. 태그가 확인되고 의 현재 버전에서 지원하는 것보다 높은 경우 오류가 발생하고 시작되지 않습니다. 태그가 더 높지 않으면 의 값을 파일 형식 태그로 설정합니다.Antelope
Barracuda
InnoDB
InnoDB
InnoDB
innodb_file_format_max
메모기본값이 때때로
ON
또는 로 표시되기는OFF
하지만 항상 숫자 값 1 또는 0을 사용하여 구성 파일 또는 명령줄 문자열에서 이 옵션을 켜거나 끕니다.자세한 내용 은 14.10.2.1절 . “InnoDB 시작 시 호환성 검사”를 참조하십시오 .
이
innodb_file_format_check
옵션은 옵션과 함께 더 이상 사용되지 않습니다innodb_file_format
. 두 옵션 모두 향후 릴리스에서 제거될 것으로 예상해야 합니다. -
명령줄 형식 --innodb-file-format-max=value
더 이상 사용되지 않음 네 시스템 변수 innodb_file_format_max
범위 글로벌 동적 네 유형 끈 기본값 Barracuda
유효한 값 Antelope
Barracuda
서버 시작 시
InnoDB
이 변수의 값을 시스템 테이블스페이스 의 파일 형식 태그로 설정합니다 (예: 또는 ). 서버가 " 더 높은 " 파일 형식으로 테이블을 만들거나 열면 의 값 을 해당 형식으로 설정 합니다.Antelope
Barracuda
innodb_file_format_max
관련 정보는 14.10절. “InnoDB 파일 형식 관리”를 참조하십시오 .
이
innodb_file_format_max
옵션은 옵션과 함께 더 이상 사용되지 않습니다innodb_file_format
. 두 옵션 모두 향후 릴리스에서 제거될 것으로 예상해야 합니다. -
명령줄 형식 --innodb-file-per-table[={OFF|ON}]
시스템 변수 innodb_file_per_table
범위 글로벌 동적 네 유형 부울 기본값 ON
때
innodb_file_per_table
사용 가능, 테이블은 기본적으로 파일 당 테이블 테이블에 만들어집니다. 비활성화하면 기본적으로 시스템 테이블스페이스에 테이블이 생성됩니다. 테이블당 파일 테이블스페이스에 대한 정보는 14.6.3.2절 . “테이블당 파일 테이블스페이스” 에서 참조하십시오 .InnoDB
시스템 테이블스페이스 에 대한 정보는 14.6.3.1절 . “시스템 테이블스페이스” 에서 참조하십시오 .innodb_file_per_table
변수는 사용하여 런타임에 구성 할 수있는SET GLOBAL
옵션 파일에서 시작시 명령 행에 지정된 문을, 또는 지정했습니다. 런타임에 설정하려면 전역 시스템 변수를 설정하기에 충분한 권한이 필요하며( 섹션 5.1.8.1, “시스템 변수 권한” 참조 ) 모든 연결 작업에 즉시 영향을 미칩니다.테이블당 파일 테이블스페이스에 있는 테이블이 잘리거나 삭제되면 사용 가능한 공간이 운영 체제로 반환됩니다. 시스템 테이블스페이스에 있는 테이블을 자르거나 삭제하면 시스템 테이블스페이스의 공간만 확보됩니다. 시스템 테이블스페이스의 해제된 공간은
InnoDB
데이터에 다시 사용할 수 있지만 시스템 테이블스페이스 데이터 파일은 축소되지 않으므로 운영 체제로 반환되지 않습니다.때
innodb_file_per_table
사용 가능, 테이블 - 복사ALTER TABLE
시스템 테이블 스페이스에 상주 암시하는 테이블에 작업 파일 당 테이블의 테이블 스페이스에 테이블을 다시 작성합니다. 이를 방지하려면 시스템 테이블스페이스에 있는 테이블에 대해 테이블innodb_file_per_table
복사ALTER TABLE
작업을 실행하기 전에 비활성화 하십시오.이
innodb_file_per-table
설정은 임시 테이블 생성에 영향을 미치지 않습니다. 임시 테이블은 임시 테이블스페이스에 생성됩니다. 14.6.3.5절 . “임시 테이블스페이스”를 참조하십시오 . -
명령줄 형식 --innodb-fill-factor=#
시스템 변수 innodb_fill_factor
범위 글로벌 동적 네 유형 정수 기본값 100
최소값 10
최대값 100
InnoDB
인덱스를 생성하거나 재구축할 때 대량 로드를 수행합니다. 이 인덱스 생성 방법을 " 정렬된 인덱스 빌드 "라고 합니다.innodb_fill_factor
향후 인덱스 증가를 위해 예약된 나머지 공간과 함께 정렬된 인덱스 빌드 중에 채워지는 각 B-트리 페이지의 공간 백분율을 정의합니다. 예를 들어,innodb_fill_factor
80으로 설정 하면 향후 인덱스 증가를 위해 각 B-트리 페이지 공간의 20%를 예약합니다. 실제 비율은 다를 수 있습니다.innodb_fill_factor
설정이 힌트가 아닌 하드 제한으로 해석됩니다.innodb_fill_factor
100 개 잎 클러스터 된 인덱스 페이지에서 공간의 1/16의 설정은 향후 지수 성장을 무료로 제공됩니다.innodb_fill_factor
B-트리 리프 페이지와 리프가 아닌 페이지 모두에 적용됩니다.TEXT
또는BLOB
항목에 사용되는 외부 페이지에는 적용되지 않습니다 .자세한 내용 은 14.6.2.3절. “정렬된 인덱스 빌드”를 참조하십시오 .
-
명령줄 형식 --innodb-flush-log-at-timeout=#
시스템 변수 innodb_flush_log_at_timeout
범위 글로벌 동적 네 유형 정수 기본값 1
최소값 1
최대값 2700
매
N
초 마다 로그를 작성하고 플러시합니다 .innodb_flush_log_at_timeout
플러시를 줄이고 바이너리 로그 그룹 커밋의 성능에 영향을 미치지 않도록 플러시 사이의 시간 초과 기간을 늘릴 수 있습니다. 의 기본 설정innodb_flush_log_at_timeout
은 초당 한 번입니다. -
innodb_flush_log_at_trx_commit
명령줄 형식 --innodb-flush-log-at-trx-commit=#
시스템 변수 innodb_flush_log_at_trx_commit
범위 글로벌 동적 네 유형 열거 기본값 1
유효한 값 0
1
2
커밋 작업에 대한 엄격한 ACID 준수와 커밋 관련 I/O 작업이 재배열되고 일괄 처리될 때 가능한 더 높은 성능 간의 균형을 제어합니다 . 기본값을 변경하여 더 나은 성능을 얻을 수 있지만 충돌 시 트랜잭션을 잃을 수 있습니다.
-
전체 ACID를 준수하려면 기본 설정인 1이 필요합니다. 로그는 각 트랜잭션 커밋에서 기록되고 디스크에 플러시됩니다.
-
0으로 설정하면 초당 한 번씩 로그가 기록되고 디스크에 플러시됩니다. 로그가 플러시되지 않은 트랜잭션은 충돌로 인해 손실될 수 있습니다.
-
2로 설정하면 각 트랜잭션 커밋 후에 로그가 기록되고 초당 한 번씩 디스크에 플러시됩니다. 로그가 플러시되지 않은 트랜잭션은 충돌로 인해 손실될 수 있습니다.
-
설정 0과 2의 경우 초당 한 번 플러시가 100% 보장되지 않습니다. 플러시는 설정과
InnoDB
관계없이 로그를 플러시 하게 하는 DDL 변경 및 기타 내부 활동 으로 인해 더 자주 발생할 수innodb_flush_log_at_trx_commit
있으며 때로는 일정 문제로 인해 덜 자주 발생할 수 있습니다. 로그가 초당 한 번 플러시되는 경우 충돌로 인해 최대 1초의 트랜잭션이 손실될 수 있습니다. 로그가 초당 한 번보다 많거나 적은 빈도로 플러시되면 손실될 수 있는 트랜잭션의 양이 그에 따라 달라집니다. -
로그 플러시 빈도는 에 의해 제어되며
innodb_flush_log_at_timeout
, 이를 통해 로그 플러시 빈도를N
초로 설정할 수 있습니다 (여기서N
는1 ... 2700
, 기본값은 1임). 그러나 예상치 못한 mysqld 프로세스 종료는 최대N
몇 초의 트랜잭션 을 지울 수 있습니다 . -
DDL 변경 및 기타 내부
InnoDB
활동은innodb_flush_log_at_trx_commit
설정과 독립적으로 로그를 플러시 합니다. -
InnoDB
충돌 복구 는innodb_flush_log_at_trx_commit
설정에 관계없이 작동 합니다. 트랜잭션이 완전히 적용되거나 완전히 지워집니다.
InnoDB
트랜잭션과 함께 사용하는 복제 설정의 내구성과 일관성을 위해 :-
바이너리 로깅이 활성화된 경우 를 설정
sync_binlog=1
합니다. -
항상 설정
innodb_flush_log_at_trx_commit=1
합니다.
예상치 못한 중단에 가장 탄력적인 복제본의 설정 조합에 대한 정보는 16.3.2절. “예기치 않은 복제본 중단 처리” 에서 참조하십시오 .
주의많은 운영 체제와 일부 디스크 하드웨어는 디스크 플러시 작업을 속입니다. 그들은 플러시가 발생하지 않았음에도 불구하고 mysqld 에게 플러시가 발생했다고 말할 수 있습니다 . 이 경우 권장 설정으로도 거래의 내구성이 보장되지 않으며, 최악의 경우 정전으로
InnoDB
데이터 가 손상될 수 있습니다 . SCSI 디스크 컨트롤러 또는 디스크 자체에서 배터리 지원 디스크 캐시를 사용하면 파일 플러시 속도가 빨라지고 작업이 더 안전해집니다. 하드웨어 캐시에서 디스크 쓰기 캐싱을 비활성화할 수도 있습니다. -
-
명령줄 형식 --innodb-flush-method=value
시스템 변수 innodb_flush_method
범위 글로벌 동적 아니 유형 끈 기본값 NULL
유효한 값(Unix) fsync
O_DSYNC
littlesync
nosync
O_DIRECT
O_DIRECT_NO_FSYNC
유효한 값(Windows) async_unbuffered
normal
unbuffered
I/O 처리량에 영향을 줄 수 있는 데이터 파일 및 로그 파일 로 데이터 를 플러시 하는 데 사용되는 방법을 정의합니다 .
InnoDB
경우
innodb_flush_method
에 설정NULL
에 유닉스 계열 시스템의fsync
옵션은 기본적으로 사용됩니다.innodb_flush_method
가NULL
Windows에서 로 설정된 경우async_unbuffered
옵션이 기본적으로 사용됩니다.innodb_flush_method
Unix 계열 시스템 의 옵션은 다음과 같습니다.-
fsync
: 시스템 호출을InnoDB
사용하여fsync()
데이터와 로그 파일을 모두 플러시합니다.fsync
기본 설정입니다. -
O_DSYNC
:InnoDB
사용이O_SYNC
열고 로그 파일을 플러시하고fsync()
데이터 파일을 플러시. 많은 종류의 Unix에서 문제가 있기 때문에 직접InnoDB
사용하지 않습니다O_DSYNC
. -
littlesync
: 이 옵션은 내부 성능 테스트에 사용되며 현재 지원되지 않습니다. 자신의 책임하에 사용하십시오. -
nosync
: 이 옵션은 내부 성능 테스트에 사용되며 현재 지원되지 않습니다. 자신의 책임하에 사용하십시오. -
O_DIRECT
:InnoDB
사용O_DIRECT
(또는directio()
데이터 파일을 열려면 Solaris에서), 및 사용은fsync()
모두 데이터 파일과 로그 파일을 플러시합니다. 이 옵션은 일부 GNU/Linux 버전, FreeBSD 및 Solaris에서 사용할 수 있습니다. -
O_DIRECT_NO_FSYNC
: I/O를 플러시InnoDB
하는O_DIRECT
동안 사용 하지만fsync()
각 쓰기 작업 후에 시스템 호출을 건너뜁니다 .MySQL 5.7.25 이전에는 이 설정이
fsync()
파일 시스템 메타데이터 변경 사항을 동기화하기 위해 시스템 호출 이 필요한 XFS 및 EXT4와 같은 파일 시스템에 적합하지 않습니다 . 파일 시스템에fsync()
파일 시스템 메타데이터 변경 사항을 동기화 하기 위해 시스템 호출 이 필요한지 여부가 확실하지 않은 경우O_DIRECT
대신 사용하십시오.MySQL 5.7.25부터,
fsync()
파일 시스템 메타데이터 변경 사항이 동기화되었는지 확인하기 위해 새 파일을 생성한 후, 파일 크기를 늘린 후, 파일을 닫은 후 호출됩니다.fsync()
시스템 호출은 여전히 각 쓰기 작업 후 건너 뜁니다.리두 로그 파일과 데이터 파일이 서로 다른 저장 장치에 있는 경우 데이터 손실이 발생할 수 있으며 데이터 파일 쓰기가 배터리로 지원되지 않는 장치 캐시에서 플러시되기 전에 예기치 않은 종료가 발생합니다. 리두 로그 파일과 데이터 파일에 대해 다른 저장 장치를 사용하거나 사용할 계획이고 데이터 파일이 배터리로 지원되지 않는 캐시가 있는 장치에 있는 경우
O_DIRECT
대신 사용하십시오.
innodb_flush_method
Windows 시스템 의 옵션은 다음과 같습니다.-
async_unbuffered
:InnoDB
Windows 비동기 I/O 및 버퍼링되지 않은 I/O를 사용합니다.async_unbuffered
Windows 시스템의 기본 설정입니다.Windows의 4K 섹터 하드 드라이브에서 MySQL 서버를 실행하는 것은 에서 지원되지 않습니다
async_unbuffered
. 해결 방법은 를 사용하는 것innodb_flush_method=normal
입니다. -
normal
:InnoDB
시뮬레이션된 비동기 I/O 및 버퍼링된 I/O를 사용합니다. -
unbuffered
:InnoDB
시뮬레이트된 비동기 I/O 및 버퍼링되지 않은 I/O를 사용합니다.
각 설정이 성능에 미치는 영향은 하드웨어 구성 및 작업 부하에 따라 다릅니다. 특정 구성을 벤치마킹하여 사용할 설정을 결정하거나 기본 설정을 유지할지 여부를 결정합니다.
Innodb_data_fsyncs
상태 변수를 조사하여fsync()
각 설정에 대한 전체 호출 수를 확인하십시오 . 워크로드에서 읽기 및 쓰기 작업을 혼합하면 설정이 수행되는 방식에 영향을 미칠 수 있습니다. 예를 들어, 하드웨어 RAID 컨트롤러와 배터리 지원 쓰기 캐시O_DIRECT
가 있는InnoDB
시스템 에서 버퍼 풀과 운영 체제 파일 시스템 캐시 간의 이중 버퍼링을 방지할 수 있습니다 . 일부 시스템에서는InnoDB
데이터 및 로그 파일은 기본값인 SAN에 있거나O_DSYNC
대부분SELECT
명령문이 있는 읽기 작업량이 많은 경우 더 빠를 수 있습니다 . 항상 프로덕션 환경을 반영하는 하드웨어 및 워크로드로 이 매개변수를 테스트하십시오. 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 . -
-
명령줄 형식 --innodb-flush-neighbors=#
시스템 변수 innodb_flush_neighbors
범위 글로벌 동적 네 유형 열거 기본값 1
유효한 값 0
1
2
지정 여부를 세척 로부터 페이지를
InnoDB
버퍼 풀 다른 플러시 더러운 페이지 동일한에서 범위를 .-
0으로 설정하면 비활성화
innodb_flush_neighbors
됩니다. 같은 범위의 더티 페이지는 플러시되지 않습니다. -
기본 설정 1은 동일한 범위에서 연속적인 더티 페이지를 플러시합니다.
-
2로 설정하면 같은 범위에서 더티 페이지를 플러시합니다.
테이블 데이터가 기존 HDD 저장 장치 에 저장될 때 이러한 인접 페이지 를 한 번의 작업으로 플러시하면 개별 페이지를 다른 시간에 플러시하는 것과 비교하여 I/O 오버헤드(주로 디스크 탐색 작업의 경우)가 줄어듭니다. SSD에 저장된 테이블 데이터의 경우 탐색 시간은 중요한 요소가 아니며 쓰기 작업을 분산하기 위해 이 설정을 끌 수 있습니다. 관련 정보는 14.8.3.5절 . “버퍼 풀 비우기 구성”을 참조하십시오 .
-
-
명령줄 형식 --innodb-flush-sync[={OFF|ON}]
시스템 변수 innodb_flush_sync
범위 글로벌 동적 네 유형 부울 기본값 ON
innodb_flush_sync
기본적으로 활성화되어 변수는, 원인innodb_io_capacity
설정에서 발생하는 I / O 활동 버스트 동안 무시 체크 포인트 .innodb_io_capacity
설정에 의해 정의된 I/O 속도를 준수하려면 비활성화하십시오innodb_flush_sync
.innodb_flush_sync
변수 구성에 대한 정보는 14.8.8절. “InnoDB I/O 용량 구성” 에서 참조하십시오 . -
명령줄 형식 --innodb-flushing-avg-loops=#
시스템 변수 innodb_flushing_avg_loops
범위 글로벌 동적 네 유형 정수 기본값 30
최소값 1
최대값 1000
InnoDB
이전에 계산된 플러싱 상태의 스냅샷 을 유지하고 적응형 플러시 가 변화하는 작업 부하에 응답 하는 속도를 제어하는 반복 횟수 . 값을 높이면 플러시 작업 의 비율이 워크로드 변경에 따라 원활하고 점진적으로 변경됩니다. 값을 줄이면 적응형 플러시가 워크로드 변경 사항에 빠르게 조정되어 워크로드가 갑자기 증가하거나 감소하는 경우 플러시 활동이 급증할 수 있습니다.관련 정보는 14.8.3.5절 . “버퍼 풀 비우기 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-force-load-corrupted[={OFF|ON}]
시스템 변수 innodb_force_load_corrupted
범위 글로벌 동적 아니 유형 부울 기본값 OFF
허가
InnoDB
손상으로 표시됩니다 시작시로드 테이블. 문제 해결 중에만 사용하여 다른 방법으로는 액세스할 수 없는 데이터를 복구합니다. 문제 해결이 완료되면 이 설정을 비활성화하고 서버를 다시 시작하십시오. -
명령줄 형식 --innodb-force-recovery=#
시스템 변수 innodb_force_recovery
범위 글로벌 동적 아니 유형 정수 기본값 0
최소값 0
최대값 6
충돌 복구 모드는, 일반적으로 심각한 문제 해결 상황에서 변경되었습니다. 가능한 값은 0에서 6까지입니다. 이러한 값의 의미와 에 대한 중요한 정보는 14.22.2절 . “InnoDB 복구 강제 실행”을
innodb_force_recovery
참조하십시오 .경고InnoDB
테이블을 시작 하고 덤프 할 수 있도록 비상 상황에서만 이 변수를 0보다 큰 값으로 설정 하십시오. 안전 조치로서,InnoDB
방지INSERT
,UPDATE
또는DELETE
작업innodb_force_recovery
0보다의 인innodb_force_recovery
4 명 이상에 대한 설정을InnoDB
읽기 전용 모드로.이러한 제한으로 인해
relay_log_info_repository=TABLE
및 와 같은 복제 설정master_info_repository=TABLE
이InnoDB
테이블에 정보를 저장 하기 때문에 복제 관리 명령이 오류와 함께 실패할 수 있습니다 . -
시스템 변수 innodb_ft_aux_table
범위 글로벌 동적 네 유형 끈 인덱스를
InnoDB
포함 하는 테이블 의 규정된 이름을 지정합니다FULLTEXT
. 이 변수는 진단용이며 런타임에만 설정할 수 있습니다. 예를 들어:SET GLOBAL innodb_ft_aux_table = 'test/t1';
이 변수를 형식의 이름으로 설정 하면 테이블 , , , , 및 지정된 테이블에 대한 검색 인덱스에 대한 정보가 표시됩니다.
db_name
/table_name
INFORMATION_SCHEMA
INNODB_FT_INDEX_TABLE
INNODB_FT_INDEX_CACHE
INNODB_FT_CONFIG
INNODB_FT_DELETED
INNODB_FT_BEING_DELETED
자세한 내용 은 14.16.4절. “InnoDB INFORMATION_SCHEMA FULLTEXT 인덱스 테이블”을 참조하십시오 .
-
명령줄 형식 --innodb-ft-cache-size=#
시스템 변수 innodb_ft_cache_size
범위 글로벌 동적 아니 유형 정수 기본값 8000000
최소값 1600000
최대값 80000000
InnoDB
FULLTEXT
인덱스를 생성하는 동안 메모리에 구문 분석된 문서를 보유하는 검색 인덱스 캐시 에 할당된 메모리(바이트)입니다InnoDB
FULLTEXT
. 인덱스 삽입 및 업데이트는innodb_ft_cache_size
크기 제한에 도달한 경우에만 디스크에 커밋됩니다 .innodb_ft_cache_size
테이블별로 캐시 크기를 정의합니다. 모든 테이블에 대한 전역 제한을 설정하려면 을 참조하십시오innodb_ft_total_cache_size
.자세한 내용은 InnoDB 전체 텍스트 인덱스 캐시를 참조하십시오 .
-
명령줄 형식 --innodb-ft-enable-diag-print[={OFF|ON}]
시스템 변수 innodb_ft_enable_diag_print
범위 글로벌 동적 네 유형 부울 기본값 OFF
추가 전체 텍스트 검색(FTS) 진단 출력을 활성화할지 여부입니다. 이 옵션은 주로 고급 FTS 디버깅을 위한 것이며 대부분의 사용자에게는 관심이 없습니다. 출력은 오류 로그에 인쇄되며 다음과 같은 정보가 포함됩니다.
-
FTS 인덱스 동기화 진행률(FTS 캐시 제한에 도달한 경우). 예를 들어:
FTS SYNC for table test, deleted count: 100 size: 10000 bytes SYNC words: 100
-
FTS는 진행 상황을 최적화합니다. 예를 들어:
FTS start optimize test FTS_OPTIMIZE: optimize "mysql" FTS_OPTIMIZE: processed "mysql"
-
FTS 인덱스 빌드 진행률. 예를 들어:
Number of doc processed: 1000
-
FTS 쿼리의 경우 쿼리 구문 분석 트리, 단어 가중치, 쿼리 처리 시간 및 메모리 사용량이 인쇄됩니다. 예를 들어:
FTS Search Processing time: 1 secs: 100 millisec: row(s) 10000 Full Search Memory: 245666 (bytes), Row: 10000
-
-
명령줄 형식 --innodb-ft-enable-stopword[={OFF|ON}]
시스템 변수 innodb_ft_enable_stopword
범위 글로벌, 세션 동적 네 유형 부울 기본값 ON
Specifies that a set of stopwords is associated with an
InnoDB
FULLTEXT
index at the time the index is created. If theinnodb_ft_user_stopword_table
option is set, the stopwords are taken from that table. Else, if theinnodb_ft_server_stopword_table
option is set, the stopwords are taken from that table. Otherwise, a built-in set of default stopwords is used.For more information, see Section 12.10.4, “Full-Text Stopwords”.
-
Command-Line Format --innodb-ft-max-token-size=#
System Variable innodb_ft_max_token_size
Scope Global Dynamic No Type Integer Default Value 84
Minimum Value 10
Maximum Value 84
Maximum character length of words that are stored in an
InnoDB
FULLTEXT
index. Setting a limit on this value reduces the size of the index, thus speeding up queries, by omitting long keywords or arbitrary collections of letters that are not real words and are not likely to be search terms.For more information, see Section 12.10.6, “Fine-Tuning MySQL Full-Text Search”.
-
Command-Line Format --innodb-ft-min-token-size=#
System Variable innodb_ft_min_token_size
Scope Global Dynamic No Type Integer Default Value 3
Minimum Value 0
Maximum Value 16
Minimum length of words that are stored in an
InnoDB
FULLTEXT
index. Increasing this value reduces the size of the index, thus speeding up queries, by omitting common words that are unlikely to be significant in a search context, such as the English words “a” and “to”. For content using a CJK (Chinese, Japanese, Korean) character set, specify a value of 1.For more information, see Section 12.10.6, “Fine-Tuning MySQL Full-Text Search”.
-
Command-Line Format --innodb-ft-num-word-optimize=#
System Variable innodb_ft_num_word_optimize
Scope Global Dynamic Yes Type Integer Default Value 2000
Minimum Value 1000
Maximum Value 10000
인덱스
OPTIMIZE TABLE
에 대한 각 작업 동안 처리할 단어 수입니다InnoDB
FULLTEXT
. 전체 텍스트 검색 인덱스가 포함된 테이블에 대한 대량 삽입 또는 업데이트 작업은 모든 변경 사항을 통합하기 위해 상당한 인덱스 유지 관리가 필요할 수 있기 때문에 일련의OPTIMIZE TABLE
명령문을 수행할 수 있으며 각 명령문은 마지막으로 중단된 부분을 선택합니다.자세한 내용 은 12.10.6절. “MySQL 전체 텍스트 검색 미세 조정”을 참조하십시오 .
-
명령줄 형식 --innodb-ft-result-cache-limit=#
시스템 변수 innodb_ft_result_cache_limit
범위 글로벌 동적 네 유형 정수 기본값 2000000000
최소값 1000000
최대값 2**32-1
InnoDB
전체 텍스트 검색 쿼리 당 또는 스레드 당 (바이트 정의) 전체 텍스트 검색 쿼리 결과 캐시 제한. 중간 및 최종InnoDB
전체 텍스트 검색 쿼리 결과는 메모리에서 처리됩니다.innodb_ft_result_cache_limit
매우 큰InnoDB
전체 텍스트 검색 쿼리 결과(예: 수백만 또는 수억 행)의 경우 과도한 메모리 소비를 피하기 위해 전체 텍스트 검색 쿼리 결과 캐시에 크기 제한을 설정하는 데 사용 합니다 . 전체 텍스트 검색 쿼리가 처리될 때 메모리가 필요에 따라 할당됩니다. 결과 캐시 크기 제한에 도달하면 쿼리가 최대 허용 메모리를 초과했음을 나타내는 오류가 반환됩니다.innodb_ft_result_cache_limit
모든 플랫폼 유형 및 비트 크기 의 최대값 은 2**32-1입니다. -
innodb_ft_server_stopword_table
명령줄 형식 --innodb-ft-server-stopword-table=db_name/table_name
시스템 변수 innodb_ft_server_stopword_table
범위 글로벌 동적 네 유형 끈 기본값 NULL
이 옵션은
InnoDB
FULLTEXT
모든InnoDB
테이블에 대해 고유한 인덱스 불용어 목록 을 지정하는 데 사용됩니다 . 특정InnoDB
테이블에 대한 고유한 불용어 목록을 구성하려면 를 사용하십시오innodb_ft_user_stopword_table
.innodb_ft_server_stopword_table
형식의 불용어 목록이 포함된 테이블 이름으로 설정 합니다 .db_name
/table_name
구성하기 전에 불용어 테이블이 있어야 합니다
innodb_ft_server_stopword_table
. 인덱스 를 생성하기 전에innodb_ft_enable_stopword
활성화하고innodb_ft_server_stopword_table
옵션을 구성해야 합니다FULLTEXT
.불용어 테이블은 이라는
InnoDB
단일VARCHAR
열을 포함하는 테이블이어야 합니다value
.자세한 내용 은 12.10.4절. “전체 텍스트 불용어”를 참조하십시오 .
-
명령줄 형식 --innodb-ft-sort-pll-degree=#
시스템 변수 innodb_ft_sort_pll_degree
범위 글로벌 동적 아니 유형 정수 기본값 2
최소값 1
최대값 32
검색 색인을
InnoDB
FULLTEXT
작성할 때 색인의 텍스트를 색인화하고 토큰화하기 위해 병렬로 사용되는 스레드 수입니다 .관련 정보는 14.6.2.4절, “InnoDB 전체 텍스트 인덱스” 및
innodb_sort_buffer_size
. -
명령줄 형식 --innodb-ft-total-cache-size=#
시스템 변수 innodb_ft_total_cache_size
범위 글로벌 동적 아니 유형 정수 기본값 640000000
최소값 32000000
최대값 1600000000
InnoDB
모든 테이블 의 전체 텍스트 검색 인덱스 캐시에 할당된 총 메모리(바이트)입니다 . 각각FULLTEXT
검색 인덱스 가 있는 수많은 테이블을 생성 하면 사용 가능한 메모리의 상당 부분이 소모될 수 있습니다.innodb_ft_total_cache_size
과도한 메모리 소비를 방지하기 위해 모든 전체 텍스트 검색 인덱스에 대한 전역 메모리 제한을 정의합니다. 인덱스 작업으로 전역 제한에 도달하면 강제 동기화가 트리거됩니다.자세한 내용은 InnoDB 전체 텍스트 인덱스 캐시를 참조하십시오 .
-
명령줄 형식 --innodb-ft-user-stopword-table=db_name/table_name
시스템 변수 innodb_ft_user_stopword_table
범위 글로벌, 세션 동적 네 유형 끈 기본값 NULL
이 옵션은
InnoDB
FULLTEXT
특정 테이블에 고유한 색인 불용어 목록 을 지정하는 데 사용됩니다 . 모든InnoDB
테이블에 대해 고유한 불용어 목록을 구성하려면 를 사용하십시오innodb_ft_server_stopword_table
.innodb_ft_user_stopword_table
형식의 불용어 목록이 포함된 테이블 이름으로 설정 합니다 .db_name
/table_name
구성하기 전에 불용어 테이블이 있어야 합니다
innodb_ft_user_stopword_table
. 인덱스 를 생성하기 전에innodb_ft_enable_stopword
활성화하고innodb_ft_user_stopword_table
구성해야 합니다FULLTEXT
.불용어 테이블은 이라는
InnoDB
단일VARCHAR
열을 포함하는 테이블이어야 합니다value
.자세한 내용 은 12.10.4절. “전체 텍스트 불용어”를 참조하십시오 .
-
명령줄 형식 --innodb-io-capacity=#
시스템 변수 innodb_io_capacity
범위 글로벌 동적 네 유형 정수 기본값 200
최소값 100
최대값(64비트 플랫폼) 2**64-1
최대값(32비트 플랫폼) 2**32-1
innodb_io_capacity
변수 사용할 I / O 동작 초당 (IOPS)의 수를 정의InnoDB
같은 배경 태스크, 플러싱 로부터 페이지 버퍼 풀 및 데이터 병합 변경 버퍼 .innodb_io_capacity
변수 구성에 대한 정보는 14.8.8절. “InnoDB I/O 용량 구성” 에서 참조하십시오 . -
명령줄 형식 --innodb-io-capacity-max=#
시스템 변수 innodb_io_capacity_max
범위 글로벌 동적 네 유형 정수 기본값 see description
최소값 100
최대값(32비트 플랫폼) 2**32-1
최대값(Unix, 64비트 플랫폼) 2**64-1
최대값(Windows, 64비트 플랫폼) 2**32-1
If flushing activity falls behind,
InnoDB
can flush more aggressively, at a higher rate of I/O operations per second (IOPS) than defined by theinnodb_io_capacity
variable. Theinnodb_io_capacity_max
variable defines a maximum number of IOPS performed byInnoDB
background tasks in such situations.For information about configuring the
innodb_io_capacity_max
variable, see Section 14.8.8, “Configuring InnoDB I/O Capacity”. -
Command-Line Format --innodb-large-prefix[={OFF|ON}]
Deprecated Yes System Variable innodb_large_prefix
Scope Global Dynamic Yes Type Boolean Default Value ON
When this option is enabled, index key prefixes longer than 767 bytes (up to 3072 bytes) are allowed for
InnoDB
tables that useDYNAMIC
orCOMPRESSED
row format. See Section 14.23, “InnoDB Limits” for maximums associated with index key prefixes under various settings.For tables that use
REDUNDANT
orCOMPACT
row format, this option does not affect the permitted index key prefix length.innodb_large_prefix
is enabled by default in MySQL 5.7. This change coincides with the default value change forinnodb_file_format
, which is set toBarracuda
by default in MySQL 5.7. Together, these default value changes allow larger index key prefixes to be created when usingDYNAMIC
orCOMPRESSED
row format. If either option is set to a non-default value, index key prefixes larger than 767 bytes are silently truncated.innodb_large_prefix
is deprecated; expect it to be removed in a future release.innodb_large_prefix
was introduced to disable large index key prefixes for compatibility with earlier versions ofInnoDB
that do not support large index key prefixes. -
innodb_limit_optimistic_insert_debug
Command-Line Format --innodb-limit-optimistic-insert-debug=#
System Variable innodb_limit_optimistic_insert_debug
Scope Global Dynamic Yes Type Integer Default Value 0
Minimum Value 0
Maximum Value 2**32-1
Limits the number of records per B-tree page. A default value of 0 means that no limit is imposed. This option is only available if debugging support is compiled in using the
WITH_DEBUG
CMake option. -
Command-Line Format --innodb-lock-wait-timeout=#
System Variable innodb_lock_wait_timeout
Scope Global, Session Dynamic Yes Type Integer Default Value 50
Minimum Value 1
Maximum Value 1073741824
The length of time in seconds an
InnoDB
transaction waits for a row lock before giving up. The default value is 50 seconds. A transaction that tries to access a row that is locked by anotherInnoDB
transaction waits at most this many seconds for write access to the row before issuing the following error:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
잠금 대기 시간 초과가 발생하면 현재 문이 롤백됩니다 (전체 트랜잭션이 아님). 전체 트랜잭션을 롤백하려면
--innodb-rollback-on-timeout
옵션으로 서버를 시작하십시오 . 14.22.4절. “InnoDB 오류 처리” 도 참조하십시오 .대화형 응용 프로그램 또는 OLTP 시스템의 경우 이 값을 줄여 사용자 피드백을 빠르게 표시하거나 나중에 처리하기 위해 업데이트를 대기열에 넣을 수 있습니다. 다른 대규모 삽입 또는 업데이트 작업이 완료되기를 기다리는 데이터 웨어하우스의 변환 단계와 같이 장기 실행 백엔드 작업의 경우 이 값을 늘릴 수 있습니다.
innodb_lock_wait_timeout
InnoDB
행 잠금에만 적용 됩니다. MySQL 테이블 잠금 은 내부에서 발생하지 않으며InnoDB
이 타임아웃은 테이블 잠금 대기에 적용되지 않습니다.잠금 대기 시간 초과 값은 교착 상태를 즉시 감지하고 교착 상태 트랜잭션 중 하나를 롤백 하기 때문에 사용 가능(기본값)인 경우 교착 상태에 적용되지 않습니다 . 비활성화 되면 교착 상태가 발생할 때 트랜잭션 롤백 에 의존 합니다. 14.7.5.2절 . “교착 상태 감지”를 참조하십시오 .
innodb_deadlock_detect
InnoDB
innodb_deadlock_detect
InnoDB
innodb_lock_wait_timeout
innodb_lock_wait_timeout
SET GLOBAL
또는SET SESSION
문을 사용하여 런타임에 설정할 수 있습니다 .GLOBAL
설정을 변경 하려면 전역 시스템 변수를 설정하기에 충분한 권한이 필요하며( 섹션 5.1.8.1, “시스템 변수 권한” 참조 ) 이후에 연결하는 모든 클라이언트의 작동에 영향을 줍니다. 모든 클라이언트는 해당 클라이언트에만 영향을 주는 에SESSION
대한 설정을 변경할 수 있습니다innodb_lock_wait_timeout
. -
innodb_locks_unsafe_for_binlog
명령줄 형식 --innodb-locks-unsafe-for-binlog[={OFF|ON}]
더 이상 사용되지 않음 네 시스템 변수 innodb_locks_unsafe_for_binlog
범위 글로벌 동적 아니 유형 부울 기본값 OFF
이 변수는 검색 및 인덱스 스캔에 갭 잠금 을
InnoDB
사용 하는 방법에 영향을 줍니다 . 더 이상 사용되지 않습니다. 향후 MySQL 릴리스에서 제거될 것으로 예상합니다.innodb_locks_unsafe_for_binlog
일반적으로
InnoDB
인덱스 행 잠금과 간격 잠금 을 결합하는 다음 키 잠금이라는 알고리즘을 사용합니다 .InnoDB
테이블 인덱스를 검색하거나 스캔할 때 발견한 인덱스 레코드에 대해 공유 또는 배타적 잠금을 설정하는 방식으로 행 수준 잠금을 수행합니다. 따라서 행 수준 잠금은 실제로 인덱스 레코드 잠금입니다. 또한 인덱스 레코드에 대한 다음 키 잠금은 인덱스 레코드 앞의 간격에도 영향을 줍니다. 즉, 다음 키 잠금은 인덱스 레코드 잠금에 인덱스 레코드 앞의 간격에 대한 간격 잠금을 더한 것입니다. 한 세션에 기록에 대한 공유 또는 배타적 잠금이 있는 경우R
인덱스에서 다른 세션은R
인덱스 순서에서 바로 앞의 간격에 새 인덱스 레코드를 삽입할 수 없습니다 . 14.7.1절 . “InnoDB 잠금”을 참조하십시오 .기본적으로 의 값
innodb_locks_unsafe_for_binlog
은 0(비활성화됨)이며, 이는 갭 잠금이 활성화됨을 의미InnoDB
합니다. 검색 및 인덱스 스캔에 다음 키 잠금을 사용합니다. 변수를 활성화하려면 1로 설정하십시오. 이렇게 하면 갭 잠금이 비활성화InnoDB
됩니다. 검색 및 인덱스 스캔에 인덱스 레코드 잠금만 사용합니다.활성화
innodb_locks_unsafe_for_binlog
해도 외래 키 제약 조건 검사 또는 중복 키 검사에 대한 간격 잠금 사용이 비활성화되지 않습니다.활성화의 효과는 다음을 제외
innodb_locks_unsafe_for_binlog
하고 트랜잭션 격리 수준을 로 설정하는 것과 동일합니다READ COMMITTED
.-
활성화
innodb_locks_unsafe_for_binlog
는 전역 설정이며 모든 세션에 영향을 미치는 반면 격리 수준은 모든 세션에 대해 전역적으로 또는 세션별로 개별적으로 설정할 수 있습니다. -
innodb_locks_unsafe_for_binlog
서버 시작 시에만 설정할 수 있는 반면 격리 수준은 시작 시 설정하거나 런타임 시 변경할 수 있습니다.
READ COMMITTED
따라서 보다 정교하고 유연한 제어를 제공합니다innodb_locks_unsafe_for_binlog
. 갭 잠금에 대한 격리 수준의 영향에 대한 자세한 내용은 14.7.2.1절. “트랜잭션 격리 수준”을 참조하십시오 .innodb_locks_unsafe_for_binlog
간격 잠금이 비활성화된 경우 다른 세션이 간격에 새 행을 삽입할 수 있으므로 활성화 하면 팬텀 문제가 발생할 수 있습니다. 테이블 의id
열에 인덱스가 있고child
나중에 선택한 행의 일부 열을 업데이트할 목적으로 식별자 값이 100보다 큰 테이블의 모든 행을 읽고 잠그고 싶다고 가정합니다.SELECT * FROM child WHERE id > 100 FOR UPDATE;
쿼리
id
는 100보다 큰 첫 번째 레코드부터 인덱스를 스캔합니다 . 해당 범위의 인덱스 레코드에 설정된 잠금이 간격에 삽입된 내용을 잠그지 않으면 다른 세션에서 새 행을 테이블에 삽입할 수 있습니다. 결과적으로SELECT
동일한 트랜잭션 내 에서 동일한 작업을 다시 실행 하면 쿼리에서 반환된 결과 집합에 새 행이 표시됩니다. 이것은 또한 새 항목이 데이터베이스에 추가되는 경우InnoDB
직렬성을 보장하지 않는다는 것을 의미합니다 . 따라서innodb_locks_unsafe_for_binlog
사용 가능한 경우InnoDB
최대 격리 수준을 보장합니다.READ COMMITTED
. (충돌 직렬화 가능성은 여전히 보장됩니다.) 팬텀에 대한 자세한 내용은 14.7.4절 . “팬텀 행” 에서 참조하십시오 .활성화하면 다음과
innodb_locks_unsafe_for_binlog
같은 추가 효과가 있습니다.-
위해
UPDATE
또는DELETE
문InnoDB
이 업데이트 또는 삭제 만 행에 대한 잠금을 보유하고 있습니다. 일치하지 않는 행에 대한 레코드 잠금은 MySQL이WHERE
조건 을 평가한 후에 해제 됩니다. 이렇게 하면 교착 상태가 발생할 확률이 크게 줄어들지만 여전히 발생할 수 있습니다. -
대한
UPDATE
행이 이미 잠겨 있으면 문,InnoDB
가 행하는 ' 반 일치 " MySQL의 최신 커밋 버전을 반환 읽기 때문에, MySQL은 행이 일치하는지 여부를 결정할 수WHERE
의 상태를UPDATE
. 행이 일치하면(업데이트해야 함), MySQL은 행을 다시 읽고 이번에는 행을InnoDB
잠그거나 잠길 때까지 기다립니다.
이 표로 시작하는 다음 예를 고려하십시오.
CREATE TABLE t (a INT NOT NULL, b INT) ENGINE = InnoDB; INSERT INTO t VALUES (1,2),(2,3),(3,2),(4,3),(5,2); COMMIT;
In this case, table has no indexes, so searches and index scans use the hidden clustered index for record locking (see Section 14.6.2.1, “Clustered and Secondary Indexes”).
Suppose that one client performs an
UPDATE
using these statements:SET autocommit = 0; UPDATE t SET b = 5 WHERE b = 3;
Suppose also that a second client performs an
UPDATE
by executing these statements following those of the first client:SET autocommit = 0; UPDATE t SET b = 4 WHERE b = 2;
마찬가지로
InnoDB
각각의 실행UPDATE
, 먼저 각 행에 대한 배타적 잠금을 획득하고이를 수정할지 여부를 결정한다. 경우InnoDB
행을 수정하지 않고innodb_locks_unsafe_for_binlog
사용할 수 있습니다, 그것은 잠금을 해제합니다. 그렇지 않으면InnoDB
트랜잭션이 끝날 때까지 잠금을 유지합니다. 이는 다음과 같이 트랜잭션 처리에 영향을 미칩니다.innodb_locks_unsafe_for_binlog
비활성화된 경우 첫 번째UPDATE
는 x-잠금을 획득하고 어떤 것도 해제하지 않습니다.x-lock(1,2); retain x-lock x-lock(2,3); update(2,3) to (2,5); retain x-lock x-lock(3,2); retain x-lock x-lock(4,3); update(4,3) to (4,5); retain x-lock x-lock(5,2); retain x-lock
두 번째
UPDATE
는 잠금을 얻으려고 시도하는 즉시 차단되고(첫 번째 업데이트가 모든 행에 대한 잠금을 유지했기 때문에) 첫 번째UPDATE
커밋 또는 롤백이 완료 될 때까지 진행되지 않습니다 .x-lock(1,2); block and wait for first UPDATE to commit or roll back
innodb_locks_unsafe_for_binlog
활성화된 경우 첫 번째UPDATE
는 x-잠금을 획득하고 수정하지 않는 행에 대한 잠금을 해제합니다.x-lock(1,2); unlock(1,2) x-lock(2,3); update(2,3) to (2,5); retain x-lock x-lock(3,2); unlock(3,2) x-lock(4,3); update(4,3) to (4,5); retain x-lock x-lock(5,2); unlock(5,2)
두 번째
UPDATE
경우InnoDB
에는 " 반일관적 " 읽기를 수행하여 각 행의 최신 커밋 버전을 MySQL에 반환하여 MySQL이 해당 행이 다음WHERE
조건 과 일치하는지 여부를 결정할 수 있도록 합니다UPDATE
.x-lock(1,2); update(1,2) to (1,4); retain x-lock x-lock(2,3); unlock(2,3) x-lock(3,2); update(3,2) to (3,4); retain x-lock x-lock(4,3); unlock(4,3) x-lock(5,2); update(5,2) to (5,4); retain x-lock
-
-
명령줄 형식 --innodb-log-buffer-size=#
시스템 변수 innodb_log_buffer_size
범위 글로벌 동적 아니 유형 정수 기본값 16777216
최소값 1048576
최대값 4294967295
디스크
InnoDB
의 로그 파일 에 쓰는 데 사용 하는 버퍼의 크기(바이트)입니다 . 기본값은 32KB 및 64KBinnodb_page_size
값 이 도입되면서 8MB에서 16MB로 변경되었습니다 . 대용량 로그 버퍼를 사용 하면 트랜잭션이 커밋 되기 전에 디스크에 로그를 기록할 필요 없이 대용량 트랜잭션 을 실행할 수 있습니다 . 따라서 많은 행을 업데이트, 삽입 또는 삭제하는 트랜잭션이 있는 경우 로그 버퍼를 더 크게 만들면 디스크 I/O가 절약됩니다. 관련 정보는 메모리 구성 및 8.5.4절. “InnoDB 다시 실행 로깅 최적화”를 참조하십시오. . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 . -
명령줄 형식 --innodb-log-checkpoint-now[={OFF|ON}]
시스템 변수 innodb_log_checkpoint_now
범위 글로벌 동적 네 유형 부울 기본값 OFF
InnoDB
체크포인트 를 강제 로 작성 하려면 이 디버그 옵션을 활성화하십시오 . 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
-
명령줄 형식 --innodb-log-checksums[={OFF|ON}]
시스템 변수 innodb_log_checksums
범위 글로벌 동적 네 유형 부울 기본값 ON
리두 로그 페이지에 대한 체크섬을 활성화하거나 비활성화합니다.
innodb_log_checksums=ON
CRC-32C
리두 로그 페이지에 대한 체크섬 알고리즘을 활성화합니다 .innodb_log_checksums
비활성화 되면 리두 로그 페이지 체크섬 필드의 내용이 무시됩니다.리두 로그 헤더 페이지 및 리두 로그 체크포인트 페이지의 체크섬은 비활성화되지 않습니다.
-
명령줄 형식 --innodb-log-compressed-pages[={OFF|ON}]
시스템 변수 innodb_log_compressed_pages
범위 글로벌 동적 네 유형 부울 기본값 ON
재압축된 페이지의 이미지를 다시 실행 로그에 기록 할지 여부를 지정합니다 . 압축된 데이터가 변경되면 재압축이 발생할 수 있습니다.
innodb_log_compressed_pages
zlib
복구 중에 다른 버전의 압축 알고리즘을 사용하는 경우 발생할 수 있는 손상을 방지하기 위해 기본적으로 활성화되어 있습니다 .zlib
버전이 변경되지 않는다고 확신하는 경우innodb_log_compressed_pages
압축 데이터를 수정하는 워크로드에 대한 리두 로그 생성을 줄이기 위해 비활성화할 수 있습니다 .활성화 또는 비활성화의 효과를 측정하려면
innodb_log_compressed_pages
동일한 워크로드에서 두 설정에 대한 리두 로그 생성을 비교하십시오. 리두 로그 생성을 측정하기 위한 옵션에는 출력 섹션의Log sequence number
(LSN) 관찰 또는 리두 로그 파일에 기록된 바이트 수에 대한 모니터링 상태가 포함됩니다.LOG
SHOW ENGINE INNODB STATUS
Innodb_os_log_written
관련 정보는 14.9.1.6절 . “OLTP 작업 부하에 대한 압축”을 참조하십시오 .
-
명령줄 형식 --innodb-log-file-size=#
시스템 변수 innodb_log_file_size
범위 글로벌 동적 아니 유형 정수 기본값 50331648
최소값(≥ 5.7.11) 4194304
최소값(≤ 5.7.10) 1048576
최대값 512GB / innodb_log_files_in_group
로그 그룹 에 있는 각 로그 파일 의 크기(바이트)입니다 . 로그 파일의 결합 크기( * )는 512GB보다 약간 작은 최대값을 초과할 수 없습니다. 예를 들어, 한 쌍의 255GB 로그 파일은 한계에 접근하지만 초과하지는 않습니다. 기본값은 48MB입니다.
innodb_log_file_size
innodb_log_files_in_group
일반적으로 로그 파일의 결합 크기는 서버가 워크로드 활동의 최고점과 최저점을 평활화할 수 있을 만큼 충분히 커야 합니다. 이는 종종 1시간 이상의 쓰기 활동을 처리하기에 충분한 리두 로그 공간이 있음을 의미합니다. 값이 클수록 버퍼 풀에 필요한 체크포인트 플러시 활동이 적어 디스크 I/O가 절약됩니다. 더 큰 로그 파일은 또한 충돌 복구를 느리게 만듭니다.
최소값
innodb_log_file_size
은 MySQL 5.7.11에서 1MB에서 4MB로 증가했습니다.For related information, see Redo Log File Configuration. For general I/O tuning advice, see Section 8.5.8, “Optimizing InnoDB Disk I/O”.
-
Command-Line Format --innodb-log-files-in-group=#
System Variable innodb_log_files_in_group
Scope Global Dynamic No Type Integer Default Value 2
Minimum Value 2
Maximum Value 100
The number of log files in the log group.
InnoDB
writes to the files in a circular fashion. The default (and recommended) value is 2. The location of the files is specified byinnodb_log_group_home_dir
. The combined size of log files (innodb_log_file_size
*innodb_log_files_in_group
) can be up to 512GB.For related information, see Redo Log File Configuration.
-
Command-Line Format --innodb-log-group-home-dir=dir_name
System Variable innodb_log_group_home_dir
Scope Global Dynamic No Type Directory name The directory path to the
InnoDB
redo log files, whose number is specified byinnodb_log_files_in_group
. If you do not specify anyInnoDB
log variables, the default is to create two files namedib_logfile0
andib_logfile1
in the MySQL data directory. Log file size is given by theinnodb_log_file_size
system variable.For related information, see Redo Log File Configuration.
-
Command-Line Format --innodb-log-write-ahead-size=#
System Variable innodb_log_write_ahead_size
Scope Global Dynamic Yes Type Integer Default Value 8192
Minimum Value 512 (log file block size)
Maximum Value Equal to innodb_page_size
Defines the write-ahead block size for the redo log, in bytes. To avoid “read-on-write”, set
innodb_log_write_ahead_size
to match the operating system or file system cache block size. The default setting is 8192 bytes. Read-on-write occurs when redo log blocks are not entirely cached to the operating system or file system due to a mismatch between write-ahead block size for the redo log and operating system or file system cache block size.Valid values for
innodb_log_write_ahead_size
are multiples of theInnoDB
log file block size (2n). The minimum value is theInnoDB
log file block size (512). Write-ahead does not occur when the minimum value is specified. The maximum value is equal to theinnodb_page_size
value. If you specify a value forinnodb_log_write_ahead_size
that is larger than theinnodb_page_size
value, theinnodb_log_write_ahead_size
setting is truncated to theinnodb_page_size
value.Setting the
innodb_log_write_ahead_size
value too low in relation to the operating system or file system cache block size results in “read-on-write”. Setting the value too high may have a slight impact onfsync
performance for log file writes due to several blocks being written at once.For related information, see Section 8.5.4, “Optimizing InnoDB Redo Logging”.
-
Command-Line Format --innodb-lru-scan-depth=#
System Variable innodb_lru_scan_depth
Scope Global Dynamic Yes Type Integer Default Value 1024
Minimum Value 100
Maximum Value (64-bit platforms) 2**64-1
Maximum Value (32-bit platforms) 2**32-1
A parameter that influences the algorithms and heuristics for the flush operation for the
InnoDB
buffer pool. Primarily of interest to performance experts tuning I/O-intensive workloads. It specifies, per buffer pool instance, how far down the buffer pool LRU page list the page cleaner thread scans looking for dirty pages to flush. This is a background operation performed once per second.A setting smaller than the default is generally suitable for most workloads. A value that is much higher than necessary may impact performance. Only consider increasing the value if you have spare I/O capacity under a typical workload. Conversely, if a write-intensive workload saturates your I/O capacity, decrease the value, especially in the case of a large buffer pool.
When tuning
innodb_lru_scan_depth
, start with a low value and configure the setting upward with the goal of rarely seeing zero free pages. Also, consider adjustinginnodb_lru_scan_depth
when changing the number of buffer pool instances, sinceinnodb_lru_scan_depth
*innodb_buffer_pool_instances
defines the amount of work performed by the page cleaner thread each second.For related information, see Section 14.8.3.5, “Configuring Buffer Pool Flushing”. For general I/O tuning advice, see Section 8.5.8, “Optimizing InnoDB Disk I/O”.
-
Command-Line Format --innodb-max-dirty-pages-pct=#
System Variable innodb_max_dirty_pages_pct
Scope Global Dynamic Yes Type Numeric Default Value 75
Minimum Value 0
Maximum Value 99.99
InnoDB
tries to flush data from the buffer pool so that the percentage of dirty pages does not exceed this value. The default value is 75.The
innodb_max_dirty_pages_pct
setting establishes a target for flushing activity. It does not affect the rate of flushing. For information about managing the rate of flushing, see Section 14.8.3.5, “Configuring Buffer Pool Flushing”.For related information, see Section 14.8.3.5, “Configuring Buffer Pool Flushing”. For general I/O tuning advice, see Section 8.5.8, “Optimizing InnoDB Disk I/O”.
-
innodb_max_dirty_pages_pct_lwm
Command-Line Format --innodb-max-dirty-pages-pct-lwm=#
System Variable innodb_max_dirty_pages_pct_lwm
Scope Global Dynamic Yes Type Numeric Default Value 0
Minimum Value 0
Maximum Value 99.99
Defines a low water mark representing the percentage of dirty pages at which preflushing is enabled to control the dirty page ratio. The default of 0 disables the pre-flushing behavior entirely. The configured value should always be lower than the
innodb_max_dirty_pages_pct
value. For more information, see Section 14.8.3.5, “Configuring Buffer Pool Flushing”. -
Command-Line Format --innodb-max-purge-lag=#
System Variable innodb_max_purge_lag
Scope Global Dynamic Yes Type Integer Default Value 0
Minimum Value 0
Maximum Value 4294967295
원하는 최대 퍼지 지연을 정의합니다. 이 값을 초과하면 지연이 부과되고
INSERT
,UPDATE
그리고DELETE
잡을 퍼지 시간을 허용하는 작업. 기본값은 최대 퍼지 지연 및 지연이 없음을 의미하는 0입니다.자세한 내용 은 14.8.10절 . “퍼지 구성” 에서 참조하십시오 .
-
명령줄 형식 --innodb-max-purge-lag-delay=#
시스템 변수 innodb_max_purge_lag_delay
범위 글로벌 동적 네 유형 정수 기본값 0
최소값 0
최대값 10000000
innodb_max_purge_lag
임계값을 초과 할 때 부과되는 지연에 대한 최대 지연을 마이크로초 단위로 지정합니다 . 지정된innodb_max_purge_lag_delay
값은innodb_max_purge_lag
공식으로 계산된 지연 기간의 상한선입니다 .자세한 내용 은 14.8.10절 . “퍼지 구성” 에서 참조하십시오 .
-
명령줄 형식 --innodb-max-undo-log-size=#
시스템 변수 innodb_max_undo_log_size
범위 글로벌 동적 네 유형 정수 기본값 1073741824
최소값 10485760
최대값 2**64-1
실행 취소 테이블스페이스의 임계값 크기를 정의합니다. 실행 취소 테이블스페이스가 임계값을 초과하는 경우
innodb_undo_log_truncate
활성화된 경우 잘림으로 표시될 수 있습니다 . 기본값은 1073741824바이트(1024MiB)입니다.자세한 내용은 실행 취소 테이블스페이스 자르기를 참조하십시오 .
-
innodb_merge_threshold_set_all_debug
명령줄 형식 --innodb-merge-threshold-set-all-debug=#
시스템 변수 innodb_merge_threshold_set_all_debug
범위 글로벌 동적 네 유형 정수 기본값 50
최소값 1
최대값 50
MERGE_THRESHOLD
현재 사전 캐시에 있는 모든 인덱스에 대한 현재 설정을 재정의하는 인덱스 페이지에 대한 페이지 전체 백분율 값을 정의합니다 . 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다. 관련 정보는 14.8.12절 . “인덱스 페이지에 대한 병합 임계값 구성”을 참조하십시오 .WITH_DEBUG
-
명령줄 형식 --innodb-monitor-disable={counter|module|pattern|all}
시스템 변수 innodb_monitor_disable
범위 글로벌 동적 네 유형 끈 InnoDB
메트릭 카운터를 비활성화합니다 . 카운터 데이터는INFORMATION_SCHEMA.INNODB_METRICS
테이블을 사용하여 쿼리할 수 있습니다 . 사용 정보는 Section 14.16.6, “InnoDB INFORMATION_SCHEMA 메트릭 테이블”을 참조하십시오 .innodb_monitor_disable='latch'
에 대한 통계 수집을 비활성화합니다SHOW ENGINE INNODB MUTEX
. 자세한 내용 은 13.7.5.15절, “SHOW ENGINE 문”을 참조하십시오 . -
명령줄 형식 --innodb-monitor-enable={counter|module|pattern|all}
시스템 변수 innodb_monitor_enable
범위 글로벌 동적 네 유형 끈 InnoDB
메트릭 카운터를 활성화 합니다 . 카운터 데이터는INFORMATION_SCHEMA.INNODB_METRICS
테이블을 사용하여 쿼리할 수 있습니다 . 사용 정보는 Section 14.16.6, “InnoDB INFORMATION_SCHEMA 메트릭 테이블”을 참조하십시오 .innodb_monitor_enable='latch'
에 대한 통계 수집을 활성화합니다SHOW ENGINE INNODB MUTEX
. 자세한 내용 은 13.7.5.15절, “SHOW ENGINE 문”을 참조하십시오 . -
명령줄 형식 --innodb-monitor-reset={counter|module|pattern|all}
시스템 변수 innodb_monitor_reset
범위 글로벌 동적 네 유형 열거 기본값 NULL
유효한 값 counter
module
pattern
all
InnoDB
메트릭 카운터 의 카운트 값 을 0으로 재설정합니다 . 카운터 데이터는INFORMATION_SCHEMA.INNODB_METRICS
테이블을 사용하여 쿼리할 수 있습니다 . 사용 정보는 Section 14.16.6, “InnoDB INFORMATION_SCHEMA 메트릭 테이블”을 참조하십시오 .innodb_monitor_reset='latch'
에서 보고한 통계를 재설정합니다SHOW ENGINE INNODB MUTEX
. 자세한 내용 은 13.7.5.15절, “SHOW ENGINE 문”을 참조하십시오 . -
명령줄 형식 --innodb-monitor-reset-all={counter|module|pattern|all}
시스템 변수 innodb_monitor_reset_all
범위 글로벌 동적 네 유형 열거 기본값 NULL
유효한 값 counter
module
pattern
all
InnoDB
메트릭 카운터의 모든 값(최소값, 최대값 등)을 재설정 합니다 . 카운터 데이터는INFORMATION_SCHEMA.INNODB_METRICS
테이블을 사용하여 쿼리할 수 있습니다 . 사용 정보는 Section 14.16.6, “InnoDB INFORMATION_SCHEMA 메트릭 테이블”을 참조하십시오 . -
명령줄 형식 --innodb-numa-interleave[={OFF|ON}]
시스템 변수 innodb_numa_interleave
범위 글로벌 동적 아니 유형 부울 기본값 OFF
InnoDB
버퍼 풀 할당을 위해 NUMA 인터리브 메모리 정책을 활성화합니다 . 때innodb_numa_interleave
활성화되면, NUMA 메모리 정책이 설정되어MPOL_INTERLEAVE
에 대한 의 mysqld 프로세스입니다.InnoDB
버퍼 풀이 할당된 후 NUMA 메모리 정책은 로 다시 설정됩니다MPOL_DEFAULT
. 이innodb_numa_interleave
옵션을 사용하려면 MySQL을 NUMA 지원 Linux 시스템에서 컴파일해야 합니다.MySQL 5.7.17부터 CMake 는
WITH_NUMA
현재 플랫폼이NUMA
지원 하는지 여부에 따라 기본값을 설정합니다 . 자세한 내용 은 2.9.7절. “MySQL 소스 구성 옵션”을 참조하십시오 . -
명령줄 형식 --innodb-old-blocks-pct=#
시스템 변수 innodb_old_blocks_pct
범위 글로벌 동적 네 유형 정수 기본값 37
최소값 5
최대값 95
이전 블록 하위 목록에 사용된
InnoDB
버퍼 풀 의 대략적인 백분율을 지정합니다 . 값 범위는 5~95입니다. 기본값은 37(즉, 풀의 3/8)입니다. 와 함께 사용하는 경우가 많습니다 .innodb_old_blocks_time
자세한 내용 은 14.8.3.3절 . “버퍼 풀 스캔을 방지하기” 에서 참조하십시오 . 버퍼 풀 관리, LRU 알고리즘 및 축출 정책 에 대한 정보는 14.5.1절 . “버퍼 풀” 에서 참조하십시오 .
-
명령줄 형식 --innodb-old-blocks-time=#
시스템 변수 innodb_old_blocks_time
범위 글로벌 동적 네 유형 정수 기본값 1000
최소값 0
최대값 2**32-1
0이 아닌 값 은 전체 테이블 스캔 과 같이 짧은 기간 동안만 참조되는 데이터로 버퍼 풀이 채워지지 않도록 보호 합니다 . 이 값을 늘리면 버퍼 풀에 캐시된 데이터를 방해하는 전체 테이블 스캔에 대한 보호가 강화됩니다.
이전 하위 목록에 블록이 삽입되는 시간(밀리초)을 지정합니다. 이 새 하위 목록으로 이동할 수 있기 전에 첫 번째 액세스 후 그곳에 머물러야 . 값이 0이면 이전 하위 목록에 삽입된 블록은 삽입 후 얼마나 빨리 액세스가 발생했는지에 관계없이 처음 액세스할 때 새 하위 목록으로 즉시 이동합니다. 값이 0보다 크면 블록은 첫 번째 액세스 후 최소 밀리초 후에 액세스가 발생할 때까지 이전 하위 목록에 남아 있습니다. 예를 들어 값이 1000이면 블록이 새 하위 목록으로 이동할 수 있게 되기 전에 첫 번째 액세스 후 1초 동안 이전 하위 목록에 머물게 됩니다.
기본값은 1000입니다.
이 변수는 종종 와 함께 사용됩니다
innodb_old_blocks_pct
. 자세한 내용 은 14.8.3.3절 . “버퍼 풀 스캔을 방지하기” 에서 참조하십시오 . 버퍼 풀 관리, LRU 알고리즘 및 축출 정책 에 대한 정보는 14.5.1절 . “버퍼 풀” 에서 참조하십시오 . -
innodb_online_alter_log_max_size
명령줄 형식 --innodb-online-alter-log-max-size=#
시스템 변수 innodb_online_alter_log_max_size
범위 글로벌 동적 네 유형 정수 기본값 134217728
최소값 65536
최대값 2**64-1
테이블에 대한 온라인 DDL 작업 중에 사용되는 임시 로그 파일 크기의 상한을 바이트 단위로 지정합니다
InnoDB
. 생성 중인 각 인덱스 또는 변경 중인 테이블에 대해 이러한 로그 파일이 하나씩 있습니다. 이 로그 파일은 DDL 작업 중에 테이블에 삽입, 업데이트 또는 삭제된 데이터를 저장합니다. 임시 로그 파일은 에서innodb_sort_buffer_size
지정한 최대 값까지 , 값만큼 필요할 때 확장됩니다innodb_online_alter_log_max_size
. 임시 로그 파일이 크기 상한을 초과하면ALTER TABLE
작업이 실패하고 커밋되지 않은 모든 동시 DML 작업이 롤백됩니다. 따라서 이 옵션의 값이 크면 온라인 DDL 작업 중에 더 많은 DML이 발생할 수 있지만 로그의 데이터를 적용하기 위해 테이블이 잠겨 있을 때 DDL 작업 종료 시 시간이 연장됩니다. -
명령줄 형식 --innodb-open-files=#
시스템 변수 innodb_open_files
범위 글로벌 동적 아니 유형 정수 기본값 -1
(자동 크기 조정을 의미하며 이 리터럴 값을 할당하지 마십시오)최소값 10
최대값 2147483647
InnoDB
한 번에 열어둘 수 있는 최대 파일 수를 지정합니다 . 최소값은 10입니다. 기본값innodb_file_per_table
은 활성화되지 않은 경우 300이고 더 높은 값은 300이며table_open_cache
그렇지 않은 경우입니다.The file descriptors used for
.ibd
files are forInnoDB
tables only. They are independent of those specified by theopen_files_limit
system variable, and do not affect the operation of the table cache. For general I/O tuning advice, see Section 8.5.8, “Optimizing InnoDB Disk I/O”. -
Command-Line Format --innodb-optimize-fulltext-only[={OFF|ON}]
System Variable innodb_optimize_fulltext_only
Scope Global Dynamic Yes Type Boolean Default Value OFF
Changes the way
OPTIMIZE TABLE
operates onInnoDB
tables. Intended to be enabled temporarily, during maintenance operations forInnoDB
tables withFULLTEXT
indexes.By default,
OPTIMIZE TABLE
reorganizes data in the clustered index of the table. When this option is enabled,OPTIMIZE TABLE
skips the reorganization of table data, and instead processes newly added, deleted, and updated token data forInnoDB
FULLTEXT
indexes. For more information, see Optimizing InnoDB Full-Text Indexes. -
Command-Line Format --innodb-page-cleaners=#
System Variable innodb_page_cleaners
Scope Global Dynamic No Type Integer Default Value 4
Minimum Value 1
Maximum Value 64
The number of page cleaner threads that flush dirty pages from buffer pool instances. Page cleaner threads perform flush list and LRU flushing. A single page cleaner thread was introduced in MySQL 5.6 to offload buffer pool flushing work from the
InnoDB
master thread. In MySQL 5.7,InnoDB
provides support for multiple page cleaner threads. A value of 1 maintains the pre-MySQL 5.7 configuration in which there is a single page cleaner thread. When there are multiple page cleaner threads, buffer pool flushing tasks for each buffer pool instance are dispatched to idle page cleaner threads. Theinnodb_page_cleaners
default value was changed from 1 to 4 in MySQL 5.7. If the number of page cleaner threads exceeds the number of buffer pool instances,innodb_page_cleaners
is automatically set to the same value asinnodb_buffer_pool_instances
.If your workload is write-IO bound when flushing dirty pages from buffer pool instances to data files, and if your system hardware has available capacity, increasing the number of page cleaner threads may help improve write-IO throughput.
Multithreaded page cleaner support is extended to shutdown and recovery phases in MySQL 5.7.
The
setpriority()
system call is used on Linux platforms where it is supported, and where the mysqld execution user is authorized to givepage_cleaner
threads priority over other MySQL andInnoDB
threads to help page flushing keep pace with the current workload.setpriority()
support is indicated by thisInnoDB
startup message:[Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
For systems where server startup and shutdown is not managed by systemd, mysqld execution user authorization can be configured in
/etc/security/limits.conf
. For example, if mysqld is run under themysql
user, you can authorize themysql
user by adding these lines to/etc/security/limits.conf
:mysql hard nice -20 mysql soft nice -20
For systemd managed systems, the same can be achieved by specifying
LimitNICE=-20
in a localized systemd configuration file. For example, create a file namedoverride.conf
in/etc/systemd/system/mysqld.service.d/override.conf
and add this entry:[Service] LimitNICE=-20
After creating or changing
override.conf
, reload the systemd configuration, then tell systemd to restart the MySQL service:systemctl daemon-reload systemctl restart mysqld # RPM platforms systemctl restart mysql # Debian platforms
For more information about using a localized systemd configuration file, see Configuring systemd for MySQL.
After authorizing the mysqld execution user, use the cat command to verify the configured
Nice
limits for the mysqld process:$> cat /proc/mysqld_pid/limits | grep nice Max nice priority 18446744073709551596 18446744073709551596
-
Command-Line Format --innodb-page-size=#
System Variable innodb_page_size
Scope Global Dynamic No Type Enumeration Default Value 16384
Valid Values 4096
8192
16384
32768
65536
Specifies the page size for
InnoDB
tablespaces. Values can be specified in bytes or kilobytes. For example, a 16 kilobyte page size value can be specified as 16384, 16KB, or 16k.innodb_page_size
can only be configured prior to initializing the MySQL instance and cannot be changed afterward. If no value is specified, the instance is initialized using the default page size. See Section 14.8.1, “InnoDB Startup Configuration”.Support for 32KB and 64KB page sizes was added in MySQL 5.7. For both 32KB and 64KB page sizes, the maximum row length is approximately 16000 bytes.
ROW_FORMAT=COMPRESSED
is not supported wheninnodb_page_size
is set to 32KB or 64KB. Forinnodb_page_size=32k
, extent size is 2MB. Forinnodb_page_size=64KB
, extent size is 4MB.innodb_log_buffer_size
should be set to at least 16M (the default) when using 32KB or 64KB page sizes.The default 16KB page size or larger is appropriate for a wide range of workloads, particularly for queries involving table scans and DML operations involving bulk updates. Smaller page sizes might be more efficient for OLTP workloads involving many small writes, where contention can be an issue when single pages contain many rows. Smaller pages might also be efficient with SSD storage devices, which typically use small block sizes. Keeping the
InnoDB
page size close to the storage device block size minimizes the amount of unchanged data that is rewritten to disk.The minimum file size for the first system tablespace data file (
ibdata1
) differs depending on theinnodb_page_size
value. See theinnodb_data_file_path
option description for more information.A MySQL instance using a particular
InnoDB
page size cannot use data files or log files from an instance that uses a different page size.For general I/O tuning advice, see Section 8.5.8, “Optimizing InnoDB Disk I/O”.
-
Command-Line Format --innodb-print-all-deadlocks[={OFF|ON}]
System Variable innodb_print_all_deadlocks
Scope Global Dynamic Yes Type Boolean Default Value OFF
When this option is enabled, information about all deadlocks in
InnoDB
user transactions is recorded in themysqld
error log. Otherwise, you see information about only the last deadlock, using theSHOW ENGINE INNODB STATUS
command. An occasionalInnoDB
deadlock is not necessarily an issue, becauseInnoDB
detects the condition immediately and rolls back one of the transactions automatically. You might use this option to troubleshoot why deadlocks are occurring if an application does not have appropriate error-handling logic to detect the rollback and retry its operation. A large number of deadlocks might indicate the need to restructure transactions that issue DML orSELECT ... FOR UPDATE
statements for multiple tables, so that each transaction accesses the tables in the same order, thus avoiding the deadlock condition.For related information, see Section 14.7.5, “Deadlocks in InnoDB”.
-
Command-Line Format --innodb-purge-batch-size=#
System Variable innodb_purge_batch_size
Scope Global Dynamic Yes Type Integer Default Value 300
Minimum Value 1
Maximum Value 5000
Defines the number of undo log pages that purge parses and processes in one batch from the history list. In a multithreaded purge configuration, the coordinator purge thread divides
innodb_purge_batch_size
byinnodb_purge_threads
and assigns that number of pages to each purge thread. Theinnodb_purge_batch_size
variable also defines the number of undo log pages that purge frees after every 128 iterations through the undo logs.The
innodb_purge_batch_size
option is intended for advanced performance tuning in combination with theinnodb_purge_threads
setting. Most users need not changeinnodb_purge_batch_size
from its default value.For related information, see Section 14.8.10, “Purge Configuration”.
-
Command-Line Format --innodb-purge-threads=#
System Variable innodb_purge_threads
Scope Global Dynamic No Type Integer Default Value 4
Minimum Value 1
Maximum Value 32
The number of background threads devoted to the
InnoDB
purge operation. Increasing the value creates additional purge threads, which can improve efficiency on systems where DML operations are performed on multiple tables.For related information, see Section 14.8.10, “Purge Configuration”.
-
innodb_purge_rseg_truncate_frequency
Command-Line Format --innodb-purge-rseg-truncate-frequency=#
System Variable innodb_purge_rseg_truncate_frequency
Scope Global Dynamic Yes Type Integer Default Value 128
Minimum Value 1
Maximum Value 128
제거가 호출되는 횟수와 관련하여 제거 시스템이 롤백 세그먼트를 해제하는 빈도를 정의합니다. 롤백 세그먼트가 해제될 때까지 실행 취소 테이블스페이스를 자를 수 없습니다. 일반적으로 제거 시스템은 제거가 호출되는 128번마다 한 번씩 롤백 세그먼트를 해제합니다. 기본값은 128입니다. 이 값을 줄이면 제거 스레드가 롤백 세그먼트를 해제하는 빈도가 증가합니다.
innodb_purge_rseg_truncate_frequency
와 함께 사용하기 위한 것입니다innodb_undo_log_truncate
. 자세한 내용은 실행 취소 테이블스페이스 자르기를 참조하십시오 . -
명령줄 형식 --innodb-random-read-ahead[={OFF|ON}]
시스템 변수 innodb_random_read_ahead
범위 글로벌 동적 네 유형 부울 기본값 OFF
I/O 최적화를 위한 임의 미리 읽기 기술을 활성화합니다
InnoDB
.다양한 유형의 미리 읽기 요청에 대한 성능 고려 사항에 대한 자세한 내용은 14.8.3.4절. “InnoDB 버퍼 풀 프리페칭 구성(미리 읽기)”을 참조하십시오 . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 .
-
명령줄 형식 --innodb-read-ahead-threshold=#
시스템 변수 innodb_read_ahead_threshold
범위 글로벌 동적 네 유형 정수 기본값 56
최소값 0
최대값 64
버퍼 풀로 페이지를 프리페치 하는 데 사용하는 선형 미리 읽기 의 민감도를 제어합니다 . 익스텐트 (64페이지) 에서 적어도 페이지를 순차적으로 읽는 경우 다음 익스텐트 전체에 대해 비동기 읽기를 시작합니다. 값의 허용 범위는 0 ~ 64입니다. 값이 0이면 미리 읽기가 비활성화됩니다. 기본값 56의 경우 다음 익스텐트에 대한 비동기 읽기를 시작하려면 익스텐트에서 순차적으로 최소 56페이지를 읽어야 합니다.
InnoDB
InnoDB
innodb_read_ahead_threshold
InnoDB
미리 읽기 메커니즘을 통해 읽은 페이지 수와 액세스하지 않고 버퍼 풀에서 제거된 페이지 수를 아는 것은
innodb_read_ahead_threshold
설정을 미세 조정할 때 유용할 수 있습니다 .SHOW ENGINE INNODB STATUS
출력 은 미리 읽기 요청에 의해 버퍼 풀로 가져온 페이지 수와 액세스한 적이 없는 버퍼 풀에서 축출 된 페이지 수를 각각 보고 하는Innodb_buffer_pool_read_ahead
및Innodb_buffer_pool_read_ahead_evicted
전역 상태 변수 의 카운터 정보를 표시 합니다 . 상태 변수는 마지막 서버 재시작 이후의 전역 값을 보고합니다.SHOW ENGINE INNODB STATUS
또한 미리 읽기 페이지를 읽는 비율과 이러한 페이지가 액세스되지 않고 제거되는 비율을 보여줍니다. 초당 평균은 의 마지막 호출 이후 수집된 통계를 기반으로 하며 출력 섹션에SHOW ENGINE INNODB STATUS
표시됩니다 .BUFFER POOL AND MEMORY
SHOW ENGINE INNODB STATUS
자세한 내용 은 14.8.3.4절. “InnoDB 버퍼 풀 프리페칭 구성(미리 읽기)”을 참조하십시오 . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 .
-
명령줄 형식 --innodb-read-io-threads=#
시스템 변수 innodb_read_io_threads
범위 글로벌 동적 아니 유형 정수 기본값 4
최소값 1
최대값 64
의 읽기 작업에 대한 I/O 스레드 수입니다
InnoDB
. 쓰기 스레드에 대한 대응은innodb_write_io_threads
. 자세한 내용 은 14.8.6절. “백그라운드 InnoDB I/O 스레드 수 구성”을 참조하십시오 . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 .메모리눅스 시스템에 대한 기본 설정 (이상 12보다 일반적으로) 여러 MySQL의 서버를 실행에
innodb_read_io_threads
,innodb_write_io_threads
그리고 리눅스aio-max-nr
설정은 시스템의 한계를 초과 할 수 있습니다. 이상적으로는aio-max-nr
설정을 높이십시오 . 해결 방법으로 MySQL 변수 중 하나 또는 둘 모두에 대한 설정을 줄일 수 있습니다. -
명령줄 형식 --innodb-read-only[={OFF|ON}]
시스템 변수 innodb_read_only
범위 글로벌 동적 아니 유형 부울 기본값 OFF
InnoDB
읽기 전용 모드에서 시작 합니다. 읽기 전용 미디어에 데이터베이스 응용 프로그램 또는 데이터 세트를 배포하는 데 사용됩니다. 데이터 웨어하우스에서 여러 인스턴스 간에 동일한 데이터 디렉터리를 공유하는 데 사용할 수도 있습니다. 자세한 내용 은 14.8.2절. “InnoDB를 읽기 전용으로 구성하기”를 참조하십시오 . -
명령줄 형식 --innodb-replication-delay=#
시스템 변수 innodb_replication_delay
범위 글로벌 동적 네 유형 정수 기본값 0
최소값 0
최대값 4294967295
innodb_thread_concurrency
도달한 경우 복제 서버에서 복제 스레드 지연(밀리초)입니다 . -
명령줄 형식 --innodb-rollback-on-timeout[={OFF|ON}]
시스템 변수 innodb_rollback_on_timeout
범위 글로벌 동적 아니 유형 부울 기본값 OFF
InnoDB
기본적으로 트랜잭션 시간 초과 시 마지막 명령문만 롤백 합니다. 경우--innodb-rollback-on-timeout
지정, 트랜잭션 타임 아웃의 원인InnoDB
중단하고 다시 롤 전체 트랜잭션을 할 수 있습니다.자세한 내용 은 14.22.4절. “InnoDB 오류 처리”를 참조하십시오 .
-
명령줄 형식 --innodb-rollback-segments=#
시스템 변수 innodb_rollback_segments
범위 글로벌 동적 네 유형 정수 기본값 128
최소값 1
최대값 128
실행 취소 레코드를 생성하는 트랜잭션에 사용되는 롤백 세그먼트 수를 정의합니다
InnoDB
. 각 롤백 세그먼트가 지원하는 트랜잭션 수는InnoDB
페이지 크기와 각 트랜잭션에 할당된 실행 취소 로그 수에 따라 다릅니다 . 자세한 내용 은 14.6.7절 . “실행 취소 로그”를 참조하십시오 .하나의 롤백 세그먼트는 항상 시스템 테이블스페이스에 할당되고 32개의 롤백 세그먼트는 임시 테이블에서 사용하기 위해 예약되어 임시 테이블스페이스(
ibtmp1
)에 상주합니다 . 추가 롤백 세그먼트를 할당하려면innodb_rollback_segments
33보다 큰 값으로 설정해야 합니다. 별도의 실행 취소 테이블스페이스를 구성하면 시스템 테이블스페이스의 롤백 세그먼트가 비활성화됩니다.경우
innodb_rollback_segments
32 이하로 설정되어InnoDB
임시 테이블을 시스템 테이블에 할당 한 롤백 세그먼트 32.innodb_rollback_segments
가 32보다 큰 값으로 설정 되면InnoDB
하나의 롤백 세그먼트를 시스템 테이블스페이스에 할당하고 32를 임시 테이블스페이스에 할당하고 추가 롤백 세그먼트를 할당하여 있는 경우 실행 취소 테이블스페이스에 할당합니다. 실행 취소 테이블스페이스가 없으면 시스템 테이블스페이스에 추가 롤백 세그먼트가 할당됩니다.에서 사용하는 롤백 세그먼트 수를 늘리거나 줄일 수 있지만
InnoDB
시스템에 물리적으로 존재하는 롤백 세그먼트 수는 절대 줄어들지 않습니다. 따라서 낮은 값으로 시작하여 필요하지 않은 롤백 세그먼트를 할당하지 않도록 점차적으로 값을 늘릴 수 있습니다.innodb_rollback_segments
기본 및 최대 값은 128입니다.관련 정보는 14.3절. “InnoDB 다중 버전 관리”를 참조하십시오 . 별도의 실행 취소 테이블스페이스 구성에 대한 정보는 14.6.3.4절 . “실행 취소 테이블스페이스” 에서 참조하십시오 .
-
innodb_saved_page_number_debug
명령줄 형식 --innodb-saved-page-number-debug=#
시스템 변수 innodb_saved_page_number_debug
범위 글로벌 동적 네 유형 정수 기본값 0
최대값 2**23-1
페이지 번호를 저장합니다.
innodb_fil_make_page_dirty_debug
옵션을 설정하면 에서 정의한 페이지가 더러워집니다innodb_saved_page_number_debug
. 이innodb_saved_page_number_debug
옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
-
명령줄 형식 --innodb-sort-buffer-size=#
시스템 변수 innodb_sort_buffer_size
범위 글로벌 동적 아니 유형 정수 기본값 1048576
최소값 65536
최대값 67108864
이 변수는 다음을 정의합니다.
-
보조 인덱스를 만들거나 다시 작성하는 온라인 DDL 작업에 대한 정렬 버퍼 크기입니다.
-
온라인 DDL 작업 중 동시 DML을 기록할 때 임시 로그 파일이 확장되는 양과 임시 로그 파일 읽기 버퍼와 쓰기 버퍼의 크기입니다.
관련 정보는 14.13.3절. “온라인 DDL 공간 요구 사항”을 참조하십시오 .
-
-
명령줄 형식 --innodb-spin-wait-delay=#
시스템 변수 innodb_spin_wait_delay
범위 글로벌 동적 네 유형 정수 기본값 6
최소값 0
최대값(64비트 플랫폼) 2**64-1
최대값(32비트 플랫폼) 2**32-1
스핀 잠금에 대한 폴링 간의 최대 지연 입니다. 이 메커니즘의 저수준 구현은 하드웨어와 운영 체제의 조합에 따라 달라지므로 지연이 고정된 시간 간격에 해당하지 않습니다. 자세한 내용 은 14.8.9절 . “Spin Lock Polling 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-stats-auto-recalc[={OFF|ON}]
시스템 변수 innodb_stats_auto_recalc
범위 글로벌 동적 네 유형 부울 기본값 ON
원인
InnoDB
자동으로 다시 계산 지속적인 통계 테이블의 데이터 이후 실질적으로 변경됩니다. 임계값은 테이블 행의 10%입니다. 이 설정은innodb_stats_persistent
옵션이 활성화 되었을 때 생성된 테이블에 적용됩니다 . 자동 통계 재계산은 또는 문STATS_PERSISTENT=1
에서 지정하여 구성할 수도 있습니다 . 통계를 생성하기 위해 샘플링된 데이터의 양은 변수에 의해 제어됩니다 .CREATE TABLE
ALTER TABLE
innodb_stats_persistent_sample_pages
자세한 내용 은 14.8.11.1절. “영구적 최적화 프로그램 통계 매개변수 구성”을 참조하십시오 .
-
innodb_stats_include_delete_marked
명령줄 형식 --innodb-stats-include-delete-marked[={OFF|ON}]
도입 5.7.17 시스템 변수 innodb_stats_include_delete_marked
범위 글로벌 동적 네 유형 부울 기본값 OFF
기본적으로
InnoDB
통계를 계산할 때 커밋되지 않은 데이터를 읽습니다. 테이블에서 행을 삭제하는 커밋되지 않은 트랜잭션의 경우InnoDB
행 추정 및 인덱스 통계를 계산할 때 삭제 표시된 레코드를 제외합니다. 이외의 트랜잭션 격리 수준READ UNCOMMITTED
. 이 시나리오를 피하기 위해 영구 옵티마이저 통계를 계산할 때 삭제 표시된 레코드innodb_stats_include_delete_marked
를InnoDB
포함 하도록 활성화할 수 있습니다 .innodb_stats_include_delete_marked
활성화 되면ANALYZE TABLE
통계를 다시 계산할 때 삭제 표시된 레코드를 고려합니다.innodb_stats_include_delete_marked
모든InnoDB
테이블에 영향을 주는 전역 설정입니다 . 영구 옵티마이저 통계에만 적용할 수 있습니다.관련 정보는 14.8.11.1절. “영구적 최적화 프로그램 통계 매개변수 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-stats-method=value
시스템 변수 innodb_stats_method
범위 글로벌 동적 네 유형 열거 기본값 nulls_equal
유효한 값 nulls_equal
nulls_unequal
nulls_ignored
테이블에 대한 인덱스 값 분포에 대한 통계 를
NULL
수집할 때 서버가 값을 처리하는 방법 . 허용되는 값은 , 및 입니다. 의 경우 모든 인덱스 값은 동일한 것으로 간주되고 값 수와 동일한 크기를 갖는 단일 값 그룹을 형성 합니다. 들면 , 값이 동일하지 않은 것으로 간주되고, 각각의 형태의 크기는 (1) 용의 고유 한 값의 그룹이 , 값이 무시된다.InnoDB
nulls_equal
nulls_unequal
nulls_ignored
nulls_equal
NULL
NULL
nulls_unequal
NULL
NULL
nulls_ignored
NULL
테이블 통계를 생성하는 데 사용되는 방법은 8.3.7절. “InnoDB 및 MyISAM 인덱스 통계 수집”에 설명된 대로 옵티마이저가 쿼리 실행을 위해 인덱스를 선택하는 방법에 영향을 미칩니다 .
-
명령줄 형식 --innodb-stats-on-metadata[={OFF|ON}]
시스템 변수 innodb_stats_on_metadata
범위 글로벌 동적 네 유형 부울 기본값 OFF
이 옵션 은 옵티마이저 통계 가 비영구적으로 구성된 경우에만 적용됩니다 . 옵티마이저 통계
innodb_stats_persistent
는 비활성화된 경우 또는 개별 테이블이 로 생성 또는 변경될 때 디스크에 유지되지 않습니다STATS_PERSISTENT=0
. 자세한 내용 은 14.8.11.2절. “비영구적 최적화 통계 매개변수 구성”을 참조하십시오 .innodb_stats_on_metadata
가 활성화 되면 또는 테이블에 액세스할 때 와 같은 메타데이터 문이 있을 때InnoDB
비영구 통계를 업데이트합니다 . (이러한 업데이트는 에 대해 발생하는 것과 유사합니다 .) 비활성화된 경우 이러한 작업 중에 통계를 업데이트하지 않습니다. 설정을 비활성화하면 테이블이나 인덱스가 많은 스키마에 대한 액세스 속도가 향상될 수 있습니다. 또한 테이블 과 관련된 쿼리에 대한 실행 계획 의 안정성을 향상시킬 수 있습니다 .SHOW TABLE STATUS
INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.STATISTICS
ANALYZE TABLE
InnoDB
InnoDB
설정을 변경하려면 명령문을 실행하십시오 . 여기서 은 또는 (또는 또는 )입니다. 설정을 변경하려면 전역 시스템 변수를 설정하기에 충분한 권한이 필요하며( 섹션 5.1.8.1, “시스템 변수 권한” 참조 ) 모든 연결 작업에 즉시 영향을 미칩니다.
SET GLOBAL innodb_stats_on_metadata=
mode
mode
ON
OFF
1
0
-
명령줄 형식 --innodb-stats-persistent[={OFF|ON}]
시스템 변수 innodb_stats_persistent
범위 글로벌 동적 네 유형 부울 기본값 ON
InnoDB
인덱스 통계가 디스크에 지속 되는지 여부를 지정합니다 . 그렇지 않으면 통계가 자주 다시 계산되어 쿼리 실행 계획이 달라질 수 있습니다 . 이 설정은 테이블이 생성될 때 각 테이블과 함께 저장됩니다.innodb_stats_persistent
테이블을 생성하기 전에 전역 수준에서 설정 하거나 및 문의STATS_PERSISTENT
절을 사용 하여 시스템 전체 설정을 재정의하고 개별 테이블에 대한 영구 통계를 구성할 수 있습니다.CREATE TABLE
ALTER TABLE
자세한 내용 은 14.8.11.1절. “영구적 최적화 프로그램 통계 매개변수 구성”을 참조하십시오 .
-
innodb_stats_persistent_sample_pages
명령줄 형식 --innodb-stats-persistent-sample-pages=#
시스템 변수 innodb_stats_persistent_sample_pages
범위 글로벌 동적 네 유형 정수 기본값 20
최소값 1
최대값 18446744073709551615
에서 계산한 것과 같이 인덱스된 열에 대한 카디널리티 및 기타 통계 를 추정할 때 샘플링할 인덱스 페이지 수입니다 . 값을 늘리면 향상시킬 수있는 인덱스 통계의 정확성, 개선 쿼리 실행 계획을 실행하는 동안 증가 된 I / O의 비용으로, 에 대한 테이블을. 자세한 내용 은 14.8.11.1절. “영구적 최적화 프로그램 통계 매개변수 구성”을 참조하십시오 .
ANALYZE TABLE
ANALYZE TABLE
InnoDB
메모에 높은 값을 설정하면 실행 시간이
innodb_stats_persistent_sample_pages
길어질 수 있습니다ANALYZE TABLE
. 에서 액세스하는 데이터베이스 페이지 수를 추정하려면 Section 14.8.11.3, “InnoDB 테이블에 대한 ANALYZE TABLE 복잡성 추정”을ANALYZE TABLE
참조하십시오 .innodb_stats_persistent_sample_pages
innodb_stats_persistent
테이블에 대해 활성화된 경우에만 적용됩니다 . 때innodb_stats_persistent
비활성화되어,innodb_stats_transient_sample_pages
대신 적용됩니다. -
명령줄 형식 --innodb-stats-sample-pages=#
더 이상 사용되지 않음 네 시스템 변수 innodb_stats_sample_pages
범위 글로벌 동적 네 유형 정수 기본값 8
최소값 1
최대값 2**64-1
더 이상 사용되지 않습니다.
innodb_stats_transient_sample_pages
대신 사용하십시오 . -
innodb_stats_transient_sample_pages
명령줄 형식 --innodb-stats-transient-sample-pages=#
시스템 변수 innodb_stats_transient_sample_pages
범위 글로벌 동적 네 유형 정수 기본값 8
에서 계산한 것과 같이 인덱스된 열에 대한 카디널리티 및 기타 통계 를 추정할 때 샘플링할 인덱스 페이지 수입니다 . 기본값은 8입니다. 값을 높이면 인덱스 통계의 정확도가 향상되므로 테이블을 열거나 통계를 다시 계산할 때 I/O가 증가하는 대신 쿼리 실행 계획이 향상될 수 있습니다 . 자세한 내용 은 14.8.11.2절. “비영구적 최적화 통계 매개변수 구성”을 참조하십시오 .
ANALYZE TABLE
InnoDB
메모에 높은 값을 설정하면 실행 시간이
innodb_stats_transient_sample_pages
길어질 수 있습니다ANALYZE TABLE
. 에서 액세스하는 데이터베이스 페이지 수를 추정하려면 Section 14.8.11.3, “InnoDB 테이블에 대한 ANALYZE TABLE 복잡성 추정”을ANALYZE TABLE
참조하십시오 .innodb_stats_transient_sample_pages
innodb_stats_persistent
테이블에 대해 비활성화된 경우에만 적용됩니다 . 때innodb_stats_persistent
활성화되어,innodb_stats_persistent_sample_pages
대신 적용됩니다. 의 자리를 차지innodb_stats_sample_pages
합니다. 자세한 내용 은 14.8.11.2절. “비영구적 최적화 통계 매개변수 구성”을 참조하십시오 . -
명령줄 형식 --innodb-status-output[={OFF|ON}]
시스템 변수 innodb_status_output
범위 글로벌 동적 네 유형 부울 기본값 OFF
표준
InnoDB
모니터에 대한 주기적 출력을 활성화하거나 비활성화합니다 . 또한 잠금 모니터에innodb_status_output_locks
대한 주기적 출력을 활성화 또는 비활성화하기 위해 와 함께 사용됩니다InnoDB
. 자세한 내용 은 14.18.2절 . “InnoDB 모니터 활성화”를 참조하십시오 . -
명령줄 형식 --innodb-status-output-locks[={OFF|ON}]
시스템 변수 innodb_status_output_locks
범위 글로벌 동적 네 유형 부울 기본값 OFF
InnoDB
잠금 모니터를 활성화하거나 비활성화합니다 . 활성화되면InnoDB
잠금 모니터는SHOW ENGINE INNODB STATUS
출력 및 MySQL 오류 로그에 인쇄되는 주기적 출력의 잠금에 대한 추가 정보를 인쇄합니다.InnoDB
잠금 모니터에 대한 주기적 출력 은 표준InnoDB
모니터 출력의 일부로 인쇄됩니다 .InnoDB
따라서InnoDB
Lock Monitor가 MySQL 오류 로그에 데이터를 주기적으로 인쇄 하려면 표준 모니터를 활성화해야 합니다 . 자세한 내용 은 14.18.2절 . “InnoDB 모니터 활성화”를 참조하십시오 . -
명령줄 형식 --innodb-strict-mode[={OFF|ON}]
시스템 변수 innodb_strict_mode
범위 글로벌, 세션 동적 네 유형 부울 기본값 ON
innodb_strict_mode
활성화 되면InnoDB
특정 조건에 대한 경고가 아닌 오류를 반환합니다.Strict 모드 는 SQL에서 무시되는 오타 및 구문 오류 또는 다양한 작동 모드 및 SQL 문의 조합으로 인한 기타 의도하지 않은 결과로부터 보호하는 데 도움이 됩니다.
innodb_strict_mode
가 활성화 되면InnoDB
경고를 발행하고 지정된 명령문을 처리하는 대신 특정 경우에 오류 조건이 발생합니다(의도하지 않은 동작으로). 이것은sql_mode
MySQL에서 허용하는 SQL 구문을 제어하고 오류를 자동으로 무시할지 또는 입력 구문 및 데이터 값의 유효성을 검사할지 결정하는 MySQL 과 유사 합니다.innodb_strict_mode
설정을위한 구문 오류의 처리에 영향을 미치는CREATE TABLE
,ALTER TABLE
,CREATE INDEX
,하고OPTIMIZE TABLE
문을.innodb_strict_mode
또한 레코드 크기 검사를 활성화 하여 선택한 페이지 크기에 비해 레코드가 너무 커서 실패INSERT
하거나UPDATE
실패하지 않도록 합니다 .오라클은 가능 권장
innodb_strict_mode
사용하는 경우ROW_FORMAT
와KEY_BLOCK_SIZE
절에서CREATE TABLE
,ALTER TABLE
그리고CREATE INDEX
문. 때innodb_strict_mode
비활성화되어,InnoDB
충돌 조항을 무시하고 메시지 로그는 경고와 함께 테이블이나 인덱스를 생성합니다. 결과 테이블은 압축된 테이블을 생성하려고 할 때 압축 지원 부족과 같이 의도한 것과 다른 특성을 가질 수 있습니다. 때innodb_strict_mode
사용할 수 있습니다, 이러한 문제는 즉시 오류를 생성하고 테이블이나 인덱스가 만들어지지 않습니다.innodb_strict_mode
시작할 때 명령줄mysqld
에서 또는 MySQL 구성 파일 에서 활성화 또는 비활성화할 수 있습니다 . 또한innodb_strict_mode
명령문을 사용 하여 런타임 시 활성화 또는 비활성화할 수 있습니다 . 여기서 는 또는 입니다. 설정을 변경 하려면 전역 시스템 변수를 설정하기에 충분한 권한이 필요하며( 섹션 5.1.8.1, “시스템 변수 권한” 참조 ) 이후에 연결하는 모든 클라이언트의 작동에 영향을 줍니다. 모든 클라이언트는 에 대한 설정을 변경할 수 있으며 설정은 해당 클라이언트에만 영향을 줍니다.SET [GLOBAL|SESSION] innodb_strict_mode=
mode
mode
ON
OFF
GLOBAL
SESSION
innodb_strict_mode
innodb_strict_mode
일반 테이블스페이스 에는 적용되지 않습니다 . 일반 테이블스페이스에 대한 테이블스페이스 관리 규칙은 와 독립적으로 엄격하게 적용됩니다innodb_strict_mode
. 자세한 내용 은 13.1.19절. “CREATE TABLESPACE 문”을 참조하십시오 . -
명령줄 형식 --innodb-support-xa[={OFF|ON}]
더 이상 사용되지 않음 5.7.10 시스템 변수 innodb_support_xa
범위 글로벌, 세션 동적 네 유형 부울 기본값 ON
Enables
InnoDB
support for two-phase commit in XA transactions, causing an extra disk flush for transaction preparation. The XA mechanism is used internally and is essential for any server that has its binary log turned on and is accepting changes to its data from more than one thread. If you disableinnodb_support_xa
, transactions can be written to the binary log in a different order than the live database is committing them, which can produce different data when the binary log is replayed in disaster recovery or on a replica. Do not disableinnodb_support_xa
on a replication source server unless you have an unusual setup where only one thread is able to change data.innodb_support_xa
is deprecated; expect it to be removed in a future MySQL release.InnoDB
support for two-phase commit in XA transactions is always enabled as of MySQL 5.7.10. Disablinginnodb_support_xa
is no longer permitted as it makes replication unsafe and prevents performance gains associated with binary log group commit. -
Command-Line Format --innodb-sync-array-size=#
System Variable innodb_sync_array_size
Scope Global Dynamic No Type Integer Default Value 1
Minimum Value 1
Maximum Value 1024
Defines the size of the mutex/lock wait array. Increasing the value splits the internal data structure used to coordinate threads, for higher concurrency in workloads with large numbers of waiting threads. This setting must be configured when the MySQL instance is starting up, and cannot be changed afterward. Increasing the value is recommended for workloads that frequently produce a large number of waiting threads, typically greater than 768.
-
Command-Line Format --innodb-sync-spin-loops=#
System Variable innodb_sync_spin_loops
Scope Global Dynamic Yes Type Integer Default Value 30
Minimum Value 0
Maximum Value 4294967295
The number of times a thread waits for an
InnoDB
mutex to be freed before the thread is suspended. -
Command-Line Format --innodb-sync-debug[={OFF|ON}]
System Variable innodb_sync_debug
Scope Global Dynamic No Type Boolean Default Value OFF
Enables sync debug checking for the
InnoDB
storage engine. This option is only available if debugging support is compiled in using theWITH_DEBUG
CMake option.Previously, enabling
InnoDB
sync debug checking required that the Debug Sync facility be enabled using theENABLE_DEBUG_SYNC
CMake option. This requirement was removed in MySQL 5.7 with the introduction of this variable. -
Command-Line Format --innodb-table-locks[={OFF|ON}]
System Variable innodb_table_locks
Scope Global, Session Dynamic Yes Type Boolean Default Value ON
If
autocommit = 0
,InnoDB
honorsLOCK TABLES
; MySQL does not return fromLOCK TABLES ... WRITE
until all other threads have released all their locks to the table. The default value ofinnodb_table_locks
is 1, which means thatLOCK TABLES
causes InnoDB to lock a table internally ifautocommit = 0
.innodb_table_locks = 0
has no effect for tables locked explicitly withLOCK TABLES ... WRITE
. It does have an effect for tables locked for read or write byLOCK TABLES ... WRITE
implicitly (for example, through triggers) or byLOCK TABLES ... READ
.For related information, see Section 14.7, “InnoDB Locking and Transaction Model”.
-
Command-Line Format --innodb-temp-data-file-path=file_name
System Variable innodb_temp_data_file_path
Scope Global Dynamic No Type String Default Value ibtmp1:12M:autoextend
Defines the relative path, name, size, and attributes of
InnoDB
temporary tablespace data files. If you do not specify a value forinnodb_temp_data_file_path
, the default behavior is to create a single, auto-extending data file namedibtmp1
in the MySQL data directory. The initial file size is slightly larger than 12MB.The full syntax for a temporary tablespace data file specification includes the file name, file size, and
autoextend
andmax
attributes:file_name:file_size[:autoextend[:max:max_file_size]]
임시 테이블스페이스 데이터 파일은 다른
InnoDB
데이터 파일 과 같은 이름을 가질 수 없습니다 . 임시 테이블스페이스 데이터 파일을 생성할 수 없거나 오류가 발생하면 치명적으로 처리되고 서버 시작이 거부됩니다. 임시 테이블스페이스에는 동적으로 생성된 공간 ID가 있으며, 이 ID는 서버를 다시 시작할 때마다 변경될 수 있습니다.파일 크기는 추가하여 KB, MB 또는 GB (1,024메가바이트)를 지정
K
,M
또는G
크기 값. 파일 크기의 합은 12MB보다 약간 커야 합니다.개별 파일의 크기 제한은 운영 체제에 따라 결정됩니다. 대용량 파일을 지원하는 운영 체제에서는 파일 크기를 4GB 이상으로 설정할 수 있습니다. 임시 테이블스페이스 데이터 파일에 대한 원시 디스크 파티션 사용은 지원되지 않습니다.
autoextend
및max
속성 만 지난 지정된 데이터 파일에 사용할 수있는innodb_temp_data_file_path
설정. 예를 들어:[mysqld] innodb_temp_data_file_path=ibtmp1:50M;ibtmp2:12M:autoextend:max:500M
autoextend
옵션 을 지정하면InnoDB
여유 공간이 부족할 경우 데이터 파일을 확장합니다.autoextend
증가는 기본적으로 64메가바이트입니다. 증분을 수정하려면innodb_autoextend_increment
시스템 변수를 변경하십시오 .임시 테이블스페이스 데이터 파일의 전체 디렉토리 경로는
innodb_data_home_dir
및 에 의해 정의된 경로를 연결하여 형성됩니다innodb_temp_data_file_path
.임시 테이블스페이스는 압축되지 않은 모든 임시 테이블이 공유합니다
InnoDB
. 압축된 임시 테이블은tmpdir
구성 옵션에 의해 정의된 임시 파일 디렉토리에 생성된 테이블당 파일 테이블스페이스 파일에 있습니다.InnoDB
읽기 전용 모드로 실행하기 전에innodb_temp_data_file_path
데이터 디렉토리 외부의 위치로 설정 하십시오. 경로는 데이터 디렉토리에 상대적이어야 합니다. 예를 들어:--innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
활성
InnoDB
임시 테이블 에 대한 메타데이터 는 에 있습니다INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO
.관련 정보는 14.6.3.5절 . “임시 테이블스페이스”를 참조하십시오 .
-
명령줄 형식 --innodb-thread-concurrency=#
시스템 변수 innodb_thread_concurrency
범위 글로벌 동적 네 유형 정수 기본값 0
최소값 0
최대값 1000
내부에서 허용되는 최대 스레드 수를 정의합니다
InnoDB
. 값 0(기본값)은 무한 동시성(제한 없음)으로 해석됩니다. 이 변수는 높은 동시성 시스템에서 성능을 조정하기 위한 것입니다.InnoDB
내부 스레드 수를 제한InnoDB
보다 작거나 같게 유지하려고 합니다innodb_thread_concurrency
. 한계에 도달하면, 추가 스레드는에 배치됩니다 " , 가장 먼저 " 스레드를 대기 위해 (FIFO) 잠금을 기다리는 스레드는 동시에 실행되는 스레드 수에 포함되지 않습니다.올바른 설정은 워크로드 및 컴퓨팅 환경에 따라 다릅니다. MySQL 인스턴스가 다른 애플리케이션과 CPU 리소스를 공유하거나 워크로드 또는 동시 사용자 수가 증가하는 경우 이 변수를 설정하는 것이 좋습니다. 값 범위를 테스트하여 최상의 성능을 제공하는 설정을 결정합니다.
innodb_thread_concurrency
라이브 테스트 시스템에서 다양한 설정을 실험할 수 있는 동적 변수입니다. 특정 설정이 제대로 수행되지 않으면 빠르게innodb_thread_concurrency
다시 0으로 설정할 수 있습니다 .다음 지침을 사용하여 적절한 설정을 찾고 유지 관리하십시오.
-
워크로드에 대한 동시 사용자 스레드 수가 지속적으로 적고 성능에 영향을 미치지 않는 경우 설정
innodb_thread_concurrency=0
(무제한)합니다. -
워크로드가 지속적으로 과중하거나 가끔 급증
innodb_thread_concurrency
하는 경우 최상의 성능을 제공하는 스레드 수를 찾을 때까지 값을 설정 하고 조정하십시오. 예를 들어 시스템에 일반적으로 40-50명의 사용자가 있지만 주기적으로 그 수가 60, 70 또는 그 이상으로 증가한다고 가정합니다. 테스트를 통해 80명의 동시 사용자 제한으로 성능이 크게 안정적으로 유지된다는 것을 알게 되었습니다. 이 경우innodb_thread_concurrency
80으로 설정 합니다. -
InnoDB
사용자 스레드에 대해 특정 수 이상의 가상 CPU를 사용 하지 않으려면 (예: 20개의 가상 CPU)innodb_thread_concurrency
이 수로 설정 합니다(또는 성능 테스트에 따라 더 낮을 수 있음). 다른 애플리케이션에서 MySQL을 분리하는 것이 목표라면mysqld
가상 CPU에만 프로세스를 바인딩하는 것을 고려하십시오 . 그러나mysqld
프로세스가 지속적으로 사용 되지 않는 경우 배타적 바인딩으로 인해 하드웨어 사용이 최적화 되지 않을 수 있습니다. 이 경우mysqld
프로세스를 가상 CPU에 바인딩할 수 있지만 다른 응용 프로그램이 가상 CPU의 일부 또는 전체를 사용하도록 허용할 수 있습니다.메모운영 체제 관점에서 리소스 관리 솔루션을 사용하여 애플리케이션 간에 CPU 시간이 공유되는 방식을 관리하는 것이
mysqld
프로세스 를 바인딩하는 것보다 더 나을 수 있습니다 . 예를 들어, 당신은 다른 중요한 프로세스 동안 주어진 응용 프로그램에 가상 CPU 시간의 90 %를 할당 할 수 없습니다 실행 및 기타 중요한 프로세스 때 40 %로 그 값 다시 확장 되어 실행. -
경우에 따라 최적
innodb_thread_concurrency
설정이 가상 CPU 수보다 작을 수 있습니다. -
innodb_thread_concurrency
너무 높은 값으로 인해 시스템 내부 및 자원에 대한 증가 된 경쟁에 성능 저하가 발생할 수 있습니다. -
시스템을 정기적으로 모니터링하고 분석합니다. 작업 부하, 사용자 수 또는 컴퓨팅 환경이 변경되면
innodb_thread_concurrency
설정 을 조정해야 할 수 있습니다 .
값 0 은 출력 섹션 에서
queries inside InnoDB
및queries in queue
카운터를 비활성화합니다 .ROW OPERATIONS
SHOW ENGINE INNODB STATUS
관련 정보는 14.8.5절 . “InnoDB를 위한 스레드 동시성 구성”을 참조하십시오 .
-
-
명령줄 형식 --innodb-thread-sleep-delay=#
시스템 변수 innodb_thread_sleep_delay
범위 글로벌 동적 네 유형 정수 기본값 10000
최소값 0
최대값 1000000
InnoDB
스레드가InnoDB
대기열에 합류하기 전에 대기 하는 시간 을 마이크로초 단위로 정의합니다 . 기본값은 10000입니다. 값이 0이면 절전 모드가 비활성화됩니다. 당신은 설정할 수 있습니다innodb_adaptive_max_sleep_delay
당신이 허용 할 가장 높은 값으로innodb_thread_sleep_delay
하고,InnoDB
자동으로 조정innodb_thread_sleep_delay
까지 또는 현재의 thread 스케줄링 활동에 따라 아래로. 이 동적 조정은 시스템 부하가 적거나 거의 전체 용량으로 작동할 때 스레드 스케줄링 메커니즘이 원활하게 작동하는 데 도움이 됩니다.자세한 내용 은 14.8.5절 . “InnoDB를 위한 스레드 동시성 구성”을 참조하십시오 .
-
명령줄 형식 --innodb-tmpdir=dir_name
도입 5.7.11 시스템 변수 innodb_tmpdir
범위 글로벌, 세션 동적 네 유형 디렉토리 이름 기본값 NULL
Used to define an alternate directory for temporary sort files created during online
ALTER TABLE
operations that rebuild the table.Online
ALTER TABLE
operations that rebuild the table also create an intermediate table file in the same directory as the original table. Theinnodb_tmpdir
option is not applicable to intermediate table files.A valid value is any directory path other than the MySQL data directory path. If the value is NULL (the default), temporary files are created MySQL temporary directory (
$TMPDIR
on Unix,%TEMP%
on Windows, or the directory specified by the--tmpdir
configuration option). If a directory is specified, existence of the directory and permissions are only checked wheninnodb_tmpdir
is configured using aSET
statement. If a symlink is provided in a directory string, the symlink is resolved and stored as an absolute path. The path should not exceed 512 bytes. An onlineALTER TABLE
operation reports an error ifinnodb_tmpdir
잘못된 디렉토리로 설정되었습니다.innodb_tmpdir
MySQLtmpdir
설정을 무시 하지만 온라인ALTER TABLE
작업 에만 해당 합니다.FILE
권한을 구성하는 데 필요합니다innodb_tmpdir
.이
innodb_tmpdir
옵션은tmpfs
파일 시스템 에 있는 임시 파일 디렉토리가 오버플로되는 것을 방지하기 위해 도입되었습니다 . 이러한 오버플로ALTER TABLE
는 테이블을 다시 작성하는 온라인 작업 중에 생성된 대용량 임시 정렬 파일의 결과로 발생할 수 있습니다 .복제 환경에서는
innodb_tmpdir
모든 서버의 운영 체제 환경이 동일한 경우 에만 설정 복제를 고려하십시오 . 그렇지 않으면innodb_tmpdir
설정을 복제ALTER TABLE
하면 테이블을 다시 작성 하는 온라인 작업을 실행할 때 복제가 실패할 수 있습니다 . 서버 운영 환경이 다른 경우 서버innodb_tmpdir
별로 개별적으로 구성 하는 것을 권장합니다 .자세한 내용 은 14.13.3절. “온라인 DDL 공간 요구 사항”을 참조하십시오 . 온라인
ALTER TABLE
작업 에 대한 자세한 내용은 14.13절. “InnoDB 및 온라인 DDL”을 참조하십시오 . -
innodb_trx_purge_view_update_only_debug
명령줄 형식 --innodb-trx-purge-view-update-only-debug[={OFF|ON}]
시스템 변수 innodb_trx_purge_view_update_only_debug
범위 글로벌 동적 네 유형 부울 기본값 OFF
삭제 보기가 업데이트되도록 허용하면서 삭제 표시된 레코드의 삭제를 일시 중지합니다. 이 옵션은 퍼지 보기가 업데이트되었지만 아직 퍼지가 수행되지 않은 상황을 인위적으로 만듭니다. 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.
WITH_DEBUG
-
명령줄 형식 --innodb-trx-rseg-n-slots-debug=#
시스템 변수 innodb_trx_rseg_n_slots_debug
범위 글로벌 동적 네 유형 정수 기본값 0
최대값 1024
실행 취소 로그 세그먼트를 위한 여유 슬롯을 찾는 함수에
TRX_RSEG_N_SLOTS
대해 주어진 값으로 제한하는 디버그 플래그를 설정합니다trx_rsegf_undo_find_free
. 이 옵션은 CMake 옵션 을 사용하여 디버깅 지원이 컴파일된 경우에만 사용할 수 있습니다.WITH_DEBUG
-
명령줄 형식 --innodb-undo-directory=dir_name
시스템 변수 innodb_undo_directory
범위 글로벌 동적 아니 유형 디렉토리 이름 InnoDB
실행 취소 테이블스페이스를 생성 하는 경로 입니다. 일반적으로 다른 저장 장치에 실행 취소 로그를 저장하는 데 사용됩니다.innodb_rollback_segments
및 와 함께 사용됩니다innodb_undo_tablespaces
.기본값이 없습니다(NULL). 경로를 지정하지 않으면 에서 정의한 대로 MySQL 데이터 디렉터리에 실행 취소 테이블스페이스가 생성됩니다
datadir
.자세한 내용 은 14.6.3.4절 . “테이블스페이스 실행 취소” 에서 참조하십시오 .
-
명령줄 형식 --innodb-undo-log-truncate[={OFF|ON}]
시스템 변수 innodb_undo_log_truncate
범위 글로벌 동적 네 유형 부울 기본값 OFF
활성화되면 에서 정의한 임계값을 초과하는 실행 취소 테이블스페이스가
innodb_max_undo_log_size
잘림으로 표시됩니다. 실행 취소 테이블스페이스만 잘릴 수 있습니다. 시스템 테이블스페이스에 있는 실행 취소 로그 자르기는 지원되지 않습니다. 잘림이 발생하려면 실행 취소 테이블스페이스를 사용하도록 구성된 실행 취소 테이블스페이스와 다시 실행이 활성화된 실행 취소 로그가 두 개 이상 있어야 합니다. 이는innodb_undo_tablespaces
2보다 크거나 같은 값으로 설정해야 하고innodb_rollback_segments
35보다 크거나 같은 값으로 설정해야 함을 의미 합니다 .이
innodb_purge_rseg_truncate_frequency
변수는 실행 취소 테이블스페이스의 절단을 신속하게 처리하는 데 사용할 수 있습니다.자세한 내용은 실행 취소 테이블스페이스 자르기를 참조하십시오 .
-
명령줄 형식 --innodb-undo-logs=#
더 이상 사용되지 않음 5.7.19 시스템 변수 innodb_undo_logs
범위 글로벌 동적 네 유형 정수 기본값 128
최소값 1
최대값 128
메모innodb_undo_logs
더 이상 사용되지 않습니다. 향후 MySQL 릴리스에서 제거될 것으로 예상합니다.에서 사용하는 롤백 세그먼트 수를 정의합니다
InnoDB
.innodb_undo_logs
옵션의 별칭입니다innodb_rollback_segments
. 자세한 내용은 에 대한 설명을 참조하십시오innodb_rollback_segments
. -
명령줄 형식 --innodb-undo-tablespaces=#
더 이상 사용되지 않음 5.7.21 시스템 변수 innodb_undo_tablespaces
범위 글로벌 동적 아니 유형 정수 기본값 0
최소값 0
최대값 95
에서 사용하는 실행 취소 테이블스페이스 의 수입니다
InnoDB
. 기본값은 0입니다.메모innodb_undo_tablespaces
더 이상 사용되지 않습니다. 향후 MySQL 릴리스에서 제거될 것으로 예상합니다.트랜잭션이 장기 실행되는 동안 실행 취소 로그가 커질 수 있으므로 여러 테이블스페이스에 실행 취소 로그를 보유하면 한 테이블스페이스의 최대 크기가 줄어듭니다. 실행 취소 테이블스페이스 파일은 에 의해 정의된 위치
innodb_undo_directory
에 , 형식의 이름 으로 생성됩니다. 여기서 는 공간 ID를 나타내는 일련의 정수(앞에 오는 0 포함)입니다.undo
N
N
실행 취소 테이블스페이스 파일의 초기 크기는
innodb_page_size
값에 따라 다릅니다 . 기본 16KBInnoDB
페이지 크기의 경우 초기 실행 취소 테이블스페이스 파일 크기는 10MiB입니다. 4KB, 8KB, 32KB 및 64KB 페이지 크기의 경우 초기 실행 취소 테이블스페이스 파일 크기는 각각 7MiB, 8MiB, 20MiB 및 40MiB입니다.실행 취소 로그를 자르려면 최소 두 개의 실행 취소 테이블스페이스가 필요합니다. 실행 취소 테이블스페이스 자르기를 참조하십시오 .
중요한innodb_undo_tablespaces
MySQL 인스턴스를 초기화하기 전에만 구성할 수 있으며 이후에는 변경할 수 없습니다. 값을 지정하지 않으면 기본 설정인 0을 사용하여 인스턴스가 초기화InnoDB
됩니다. MySQL 인스턴스가 초기화될 때 지정된 것보다 더 많은 수의 실행 취소 테이블스페이스 로 다시 시작 을 시도 하면 시작 실패 및InnoDB
예상한 항목을 찾지 못했다 는 오류가 발생 합니다. 실행 취소 테이블스페이스의 수입니다.128개 중 32개 롤백 세그먼트는 14.6.7절 . “실행 취소 로그”에 설명된 대로 임시 테이블용으로 예약되어 있습니다. 하나의 롤백 세그먼트는 항상 시스템 테이블스페이스에 할당되어 실행 취소 테이블스페이스에 사용할 수 있는 95개의 롤백 세그먼트를 남깁니다. 즉,
innodb_undo_tablespaces
최대 한도는 95입니다.자세한 내용 은 14.6.3.4절 . “테이블스페이스 실행 취소” 에서 참조하십시오 .
-
명령줄 형식 --innodb-use-native-aio[={OFF|ON}]
시스템 변수 innodb_use_native_aio
범위 글로벌 동적 아니 유형 부울 기본값 ON
Linux 비동기 I/O 하위 시스템을 사용할지 여부를 지정합니다. 이 변수는 Linux 시스템에만 적용되며 서버가 실행되는 동안 변경할 수 없습니다. 일반적으로 이 옵션은 기본적으로 활성화되어 있으므로 구성할 필요가 없습니다.
Windows 시스템에 있는 비동기 I/O 기능
InnoDB
은 Linux 시스템에서 사용할 수 있습니다. (다른 Unix 계열 시스템은 계속해서 동기 I/O 호출을 사용합니다.) 이 기능은 일반적으로SHOW ENGINE INNODB STATUSG
출력에 많은 보류 중인 읽기/쓰기를 표시하는 I/O 바운드가 많은 시스템의 확장성을 향상시킵니다 .많은 수의
InnoDB
I/O 스레드로 실행하고 특히 동일한 서버 시스템에서 이러한 인스턴스를 여러 개 실행하면 Linux 시스템의 용량 제한을 초과할 수 있습니다. 이 경우 다음 오류가 나타날 수 있습니다.EAGAIN: The specified maxevents exceeds the user's limit of available events.
일반적으로 에 더 높은 제한을 작성하여 이 오류를 해결할 수 있습니다
/proc/sys/fs/aio-max-nr
.그러나 OS의 비동기 I/O 하위 시스템에 문제가 있어
InnoDB
시작 하지 못하는 경우 로 서버를 시작할 수 있습니다innodb_use_native_aio=0
. 에서 AIO를 지원하지 않는 위치, 파일 시스템 및 Linux 커널InnoDB
의 조합과 같은 잠재적인 문제를 감지하는 경우 시작하는 동안 이 옵션이 자동으로 비활성화될 수도 있습니다 .tmpdir
tmpfs
tmpfs
자세한 내용 은 14.8.7절 . “Linux에서 비동기식 I/O 사용” 에서 참조하십시오 .
-
InnoDB
버전 번호입니다. MySQL 5.7에서는 에 대한 별도의 버전 번호InnoDB
가 적용되지 않으며 이 값은version
서버 의 번호 와 동일 합니다. -
명령줄 형식 --innodb-write-io-threads=#
시스템 변수 innodb_write_io_threads
범위 글로벌 동적 아니 유형 정수 기본값 4
최소값 1
최대값 64
의 쓰기 작업에 대한 I/O 스레드 수입니다
InnoDB
. 기본값은 4입니다innodb_read_io_threads
. 읽기 스레드에 해당하는 값은 입니다 . 자세한 내용 은 14.8.6절. “백그라운드 InnoDB I/O 스레드 수 구성”을 참조하십시오 . 일반적인 I/O 튜닝 조언 은 8.5.8절. “InnoDB 디스크 I/O 최적화”를 참조하십시오 .메모리눅스 시스템에 대한 기본 설정 (이상 12보다 일반적으로) 여러 MySQL의 서버를 실행에
innodb_read_io_threads
,innodb_write_io_threads
그리고 리눅스aio-max-nr
설정은 시스템의 한계를 초과 할 수 있습니다. 이상적으로는aio-max-nr
설정을 높이십시오 . 해결 방법으로 MySQL 변수 중 하나 또는 둘 모두에 대한 설정을 줄일 수 있습니다.
컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
번호 | 분류 | 제목 | 조회 수 | 날짜 |
---|---|---|---|---|
공지 | 뉴스 |
구글 최신 뉴스
![]() |
1384 | 2024.12.12 |
공지 | 사랑LOVE 포인트 만렙! 도전 | 4629 | 2025.03.19 | |
공지 | 🚨(뉴비필독) 전체공지 & 포인트안내 2 | 25844 | 2024.11.04 | |
공지 | URL만 붙여넣으면 끝! 임베드 기능 | 20427 | 2025.01.21 | |
10639 | 네이버 지식쇼핑을 보면 깜놀랄일 | 3950 | 2014.03.23 | |
10638 | mysql 6.0 다운로드 (windows 계열 32비트용) | 2784 | 2014.03.29 | |
10637 | 리니지 프리서버 - 춘자 2.7클라이언트 2 | 9501 | 2014.03.30 | |
10636 | 안녕하세요 | 1924 | 2014.04.07 | |
10635 | 가입했습니당^.^ 1 | 2187 | 2014.04.07 | |
10634 | 가입인사드립니다. 1 | 2123 | 2014.04.07 | |
10633 | 스위트망고입니다. 반갑습니다 1 | 2194 | 2014.04.07 | |
10632 | 영자님 2 | 4000 | 2014.04.11 | |
10631 | 카오스원 2 | 3276 | 2014.04.11 | |
10630 | 컴퓨터 포멧하려는데 BIOS 화면이 안떠요. 6 | 5184 | 2014.04.12 | |
10629 | 하이하이 1 | 4141 | 2014.04.12 | |
10628 | 영자씨 1 | 2621 | 2014.04.13 | |
10627 | 인텔 v프로 원격제어 지원 메인보드-애즈락 Q87M 프로 출시 | 2849 | 2014.04.26 | |
10626 | 하즈웰 4세대 오버클럭시 온도차이. | 2377 | 2014.04.26 | |
10625 | 갠적으로 마음에 드는 그래픽카드 GTX760 PHANTOM DDR5 2G 1 | 2840 | 2014.04.26 | |
10624 | 탑파워 TOPOWER TOP-500D 80PLUS Bronze | 1939 | 2014.04.26 | |
10623 | 슈퍼플라워 SF-500P12A 후기 | 1711 | 2014.04.26 | |
10622 | 인텔 코어 i7 하스웰 4770 추천드림 | 2423 | 2014.04.26 | |
10621 | 듀얼 모니터 작업표시줄 프로그램 | 2974 | 2014.04.26 | |
10620 | 일반하드랑 ssd랑 차이가 심한가요? 1 | 3033 | 2014.04.26 | |
10619 | 로지텍 Gaming Mouse G100 쓰다보니 | 2198 | 2014.04.26 | |
10618 | AMD FX 8300 비쉐라는 인텔 cpu 어느것과 동급인가요? 1 | 4268 | 2014.04.26 | |
10617 | 인텔 G3220 하스웰- 부모님 조립해드렸어요 | 2420 | 2014.04.26 | |
10616 | 인텔 제온 E3-1230V3, 제온짝퉁이라니? | 2632 | 2014.04.26 | |
10615 | ipTIME Extender2 무선공유기 wifi 확장써보니...안습 | 2322 | 2014.04.26 | |
10614 | 안철수 v3백신도 좋지만, avast가 더 좋은것 같아요 | 2486 | 2014.04.27 | |
10613 | 컴퓨터가 아무래도 연차가 있다보니.. 1 | 3409 | 2014.04.27 | |
10612 | 그외 | 컴퓨터 온도측정 프로그램 hwmonitor | 3775 | 2014.04.28 |
10611 | 이용하는 사람이 별로 없나바요. 3 | 3509 | 2014.04.28 | |
10610 | 안녕하세요^^ 이번에 PC 새로 맞추려는데 1 | 2333 | 2014.04.28 |