• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    19. InnoDB 문제 해결
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

14.12 InnoDB 부팅 옵션 및 시스템 변수

  • true 또는 false 인 시스템 변수는 서버 시작시 변수의 이름을 지정하여 사용 할 수 있으며, --skip- 프리픽스를 사용하여 해제 할 수 있습니다. 예를 들어, InnoDB 적응 형 해시 인덱스를 활성화하거나 비활성화하려면 명령 줄에서 --innodb_adaptive_hash_index 또는 --skip-innodb_adaptive_hash_index 를 사용하거나 옵션 파일에서 innodb_adaptive_hash_index 또는 skip-innodb_adaptive_hash_index 을 사용합니다.

  • 수치가 지정되는 시스템 변수는 명령 행에서 -- var_name = value 로 지정하거나 옵션 파일에서 var_name = value 로 지정할 수 있습니다.

  • 많은 시스템 변수는 런타임에 변경할 수 있습니다 ( 섹션 5.1.5.2 "동적 시스템 변수" 를 참조하십시오).

  • GLOBAL 와 SESSION 변수 범위 한정자 내용은 SET 문 문서를 참조하십시오.

  • 일부 옵션은 InnoDB 데이터 파일의 위치 및 레이아웃이 제어됩니다. 섹션 14.3 "InnoDB 구성" 에서는이 옵션을 사용하는 방법을 설명합니다.

  • 초기 단계에서는 사용하지 않는 같은 일부 옵션은 컴퓨터의 처리 능력과 데이터베이스 워크로드 에 따라 InnoDB 의 성능 특성을 조정하는 데 도움이됩니다.

  • 옵션 및 시스템 변수의 지정에 관한 자세한 내용은 섹션 4.2.3 "프로그램 옵션 지정" 을 참조하십시오.

표 14.6 InnoDB 옵션 / 변수 참조

이름 명령 행 옵션 파일 시스템 변수 상태 변수 변수 범위 동적
daemon_memcached_enable_binlog 예 예 예
글로벌 아니오
daemon_memcached_engine_lib_name 예 예 예
글로벌 아니오
daemon_memcached_engine_lib_path 예 예 예
글로벌 아니오
daemon_memcached_option 예 예 예
글로벌 아니오
daemon_memcached_r_batch_size 예 예 예
글로벌 아니오
daemon_memcached_w_batch_size 예 예 예
글로벌 아니오
foreign_key_checks

예
모두 예
have_innodb

예
글로벌 아니오
ignore-builtin-innodb 예 예

글로벌 아니오
- 변수 : ignore_builtin_innodb

예
글로벌 아니오
innodb 예 예



innodb_adaptive_flushing 예 예 예
글로벌 예
innodb_adaptive_flushing_lwm 예 예 예
글로벌 예
innodb_adaptive_hash_index 예 예 예
글로벌 예
innodb_adaptive_max_sleep_delay 예 예 예
글로벌 예
innodb_additional_mem_pool_size 예 예 예
글로벌 아니오
innodb_api_bk_commit_interval 예 예 예
글로벌 예
innodb_api_disable_rowlock 예 예 예
글로벌 아니오
innodb_api_enable_binlog 예 예 예
글로벌 아니오
innodb_api_enable_mdl 예 예 예
글로벌 아니오
innodb_api_trx_level 예 예 예
글로벌 예
innodb_autoextend_increment 예 예 예
글로벌 예
innodb_autoinc_lock_mode 예 예 예
글로벌 아니오
Innodb_available_undo_logs


예 글로벌 아니오
Innodb_buffer_pool_bytes_data


예 글로벌 아니오
Innodb_buffer_pool_bytes_dirty


예 글로벌 아니오
innodb_buffer_pool_dump_at_shutdown 예 예 예
글로벌 예
innodb_buffer_pool_dump_now 예 예 예
글로벌 예
Innodb_buffer_pool_dump_status


예 글로벌 아니오
innodb_buffer_pool_filename 예 예 예
글로벌 예
innodb_buffer_pool_instances 예 예 예
글로벌 아니오
innodb_buffer_pool_load_abort 예 예 예
글로벌 예
innodb_buffer_pool_load_at_startup 예 예 예
글로벌 아니오
innodb_buffer_pool_load_now 예 예 예
글로벌 예
Innodb_buffer_pool_load_status


예 글로벌 아니오
Innodb_buffer_pool_pages_data


예 글로벌 아니오
Innodb_buffer_pool_pages_dirty


예 글로벌 아니오
Innodb_buffer_pool_pages_flushed


예 글로벌 아니오
Innodb_buffer_pool_pages_free


예 글로벌 아니오
Innodb_buffer_pool_pages_latched


예 글로벌 아니오
Innodb_buffer_pool_pages_misc


예 글로벌 아니오
Innodb_buffer_pool_pages_total


예 글로벌 아니오
Innodb_buffer_pool_read_ahead


예 글로벌 아니오
Innodb_buffer_pool_read_ahead_evicted


예 글로벌 아니오
Innodb_buffer_pool_read_requests


예 글로벌 아니오
Innodb_buffer_pool_reads


예 글로벌 아니오
innodb_buffer_pool_size 예 예 예
글로벌 아니오
Innodb_buffer_pool_wait_free


예 글로벌 아니오
Innodb_buffer_pool_write_requests


예 글로벌 아니오
innodb_change_buffer_max_size 예 예 예
글로벌 예
innodb_change_buffering 예 예 예
글로벌 예
innodb_checksum_algorithm 예 예 예
글로벌 예
innodb_checksums 예 예 예
글로벌 아니오
innodb_cmp_per_index_enabled 예 예 예
글로벌 예
innodb_commit_concurrency 예 예 예
글로벌 예
innodb_compression_failure_threshold_pct 예 예 예
글로벌 예
innodb_compression_level 예 예 예
글로벌 예
innodb_compression_pad_pct_max 예 예 예
글로벌 예
innodb_concurrency_tickets 예 예 예
글로벌 예
innodb_data_file_path 예 예 예
글로벌 아니오
Innodb_data_fsyncs


예 글로벌 아니오
innodb_data_home_dir 예 예 예
글로벌 아니오
Innodb_data_pending_fsyncs


예 글로벌 아니오
Innodb_data_pending_reads


예 글로벌 아니오
Innodb_data_pending_writes


예 글로벌 아니오
Innodb_data_read


예 글로벌 아니오
Innodb_data_reads


예 글로벌 아니오
Innodb_data_writes


예 글로벌 아니오
Innodb_data_written


예 글로벌 아니오
Innodb_dblwr_pages_written


예 글로벌 아니오
Innodb_dblwr_writes


예 글로벌 아니오
innodb_disable_sort_file_cache 예 예 예
글로벌 예
innodb_doublewrite 예 예 예
글로벌 아니오
innodb_fast_shutdown 예 예 예
글로벌 예
innodb_file_format 예 예 예
글로벌 예
innodb_file_format_check 예 예 예
글로벌 아니오
innodb_file_format_max 예 예 예
글로벌 예
innodb_file_per_table 예 예 예
글로벌 예
innodb_flush_log_at_timeout

예
글로벌 예
innodb_flush_log_at_trx_commit 예 예 예
글로벌 예
innodb_flush_method 예 예 예
글로벌 아니오
innodb_flush_neighbors 예 예 예
글로벌 예
innodb_flushing_avg_loops 예 예 예
글로벌 예
innodb_force_load_corrupted 예 예 예
글로벌 아니오
innodb_force_recovery 예 예 예
글로벌 아니오
innodb_ft_aux_table

예
글로벌 예
innodb_ft_cache_size 예 예 예
글로벌 아니오
innodb_ft_enable_diag_print 예 예 예
글로벌 예
innodb_ft_enable_stopword 예 예 예
글로벌 예
innodb_ft_max_token_size 예 예 예
글로벌 아니오
innodb_ft_min_token_size 예 예 예
글로벌 아니오
innodb_ft_num_word_optimize 예 예 예
글로벌 예
innodb_ft_result_cache_limit 예 예 예
글로벌 예
innodb_ft_server_stopword_table 예 예 예
글로벌 예
innodb_ft_sort_pll_degree 예 예 예
글로벌 아니오
innodb_ft_total_cache_size 예 예 예
글로벌 아니오
innodb_ft_user_stopword_table 예 예 예
모두 예
Innodb_have_atomic_builtins


예 글로벌 아니오
innodb_io_capacity 예 예 예
글로벌 예
innodb_io_capacity_max 예 예 예
글로벌 예
innodb_large_prefix 예 예 예
글로벌 예
innodb_lock_wait_timeout 예 예 예
모두 예
innodb_locks_unsafe_for_binlog 예 예 예
글로벌 아니오
innodb_log_buffer_size 예 예 예
글로벌 아니오
innodb_log_compressed_pages 예 예 예
글로벌 예
innodb_log_file_size 예 예 예
글로벌 아니오
innodb_log_files_in_group 예 예 예
글로벌 아니오
innodb_log_group_home_dir 예 예 예
글로벌 아니오
Innodb_log_waits


예 글로벌 아니오
Innodb_log_write_requests


예 글로벌 아니오
Innodb_log_writes


예 글로벌 아니오
innodb_lru_scan_depth 예 예 예
글로벌 예
innodb_max_dirty_pages_pct 예 예 예
글로벌 예
innodb_max_dirty_pages_pct_lwm 예 예 예
글로벌 예
innodb_max_purge_lag 예 예 예
글로벌 예
innodb_max_purge_lag_delay 예 예 예
글로벌 예
innodb_mirrored_log_groups 예 예 예
글로벌 아니오
innodb_monitor_disable 예 예 예
글로벌 예
innodb_monitor_enable 예 예 예
글로벌 예
innodb_monitor_reset 예 예 예
글로벌 예
innodb_monitor_reset_all 예 예 예
글로벌 예
Innodb_num_open_files


예 글로벌 아니오
innodb_old_blocks_pct 예 예 예
글로벌 예
innodb_old_blocks_time 예 예 예
글로벌 예
innodb_online_alter_log_max_size 예 예 예
글로벌 예
innodb_open_files 예 예 예
글로벌 아니오
innodb_optimize_fulltext_only 예 예 예
글로벌 예
Innodb_os_log_fsyncs


예 글로벌 아니오
Innodb_os_log_pending_fsyncs


예 글로벌 아니오
Innodb_os_log_pending_writes


예 글로벌 아니오
Innodb_os_log_written


예 글로벌 아니오
Innodb_page_size


예 글로벌 아니오
innodb_page_size 예 예 예
글로벌 아니오
Innodb_pages_created


예 글로벌 아니오
Innodb_pages_read


예 글로벌 아니오
Innodb_pages_written


예 글로벌 아니오
innodb_print_all_deadlocks 예 예 예
글로벌 예
innodb_purge_batch_size 예 예 예
글로벌 예
innodb_purge_threads 예 예 예
글로벌 아니오
innodb_random_read_ahead 예 예 예
글로벌 예
innodb_read_ahead_threshold 예 예 예
글로벌 예
innodb_read_io_threads 예 예 예
글로벌 아니오
innodb_read_only 예 예 예
글로벌 아니오
innodb_replication_delay 예 예 예
글로벌 예
innodb_rollback_on_timeout 예 예 예
글로벌 아니오
innodb_rollback_segments 예 예 예
글로벌 예
Innodb_row_lock_current_waits


예 글로벌 아니오
Innodb_row_lock_time


예 글로벌 아니오
Innodb_row_lock_time_avg


예 글로벌 아니오
Innodb_row_lock_time_max


예 글로벌 아니오
Innodb_row_lock_waits


예 글로벌 아니오
Innodb_rows_deleted


예 글로벌 아니오
Innodb_rows_inserted


예 글로벌 아니오
Innodb_rows_read


예 글로벌 아니오
Innodb_rows_updated


예 글로벌 아니오
innodb_sort_buffer_size 예 예 예
글로벌 아니오
innodb_spin_wait_delay 예 예 예
글로벌 예
innodb_stats_auto_recalc 예 예 예
글로벌 예
innodb_stats_method 예 예 예
글로벌 예
innodb_stats_on_metadata 예 예 예
글로벌 예
innodb_stats_persistent 예 예 예
글로벌 예
innodb_stats_persistent_sample_pages 예 예 예
글로벌 예
innodb_stats_sample_pages 예 예 예
글로벌 예
innodb_stats_transient_sample_pages 예 예 예
글로벌 예
innodb-status-file 예 예



innodb_status_output 예 예 예
글로벌 예
innodb_status_output_locks 예 예 예
글로벌 예
innodb_strict_mode 예 예 예
모두 예
innodb_support_xa 예 예 예
모두 예
innodb_sync_array_size 예 예 예
글로벌 아니오
innodb_sync_spin_loops 예 예 예
글로벌 예
innodb_table_locks 예 예 예
모두 예
innodb_thread_concurrency 예 예 예
글로벌 예
innodb_thread_sleep_delay 예 예 예
글로벌 예
Innodb_truncated_status_writes


예 글로벌 아니오
innodb_undo_directory 예 예 예
글로벌 아니오
innodb_undo_logs 예 예 예
글로벌 예
innodb_undo_tablespaces 예 예 예
글로벌 아니오
innodb_use_native_aio 예 예 예
글로벌 아니오
innodb_use_sys_malloc 예 예 예
글로벌 아니오
innodb_version

예
글로벌 아니오
innodb_write_io_threads 예 예 예
글로벌 아니오
timed_mutexes 예 예 예
글로벌 예
unique_checks

예
모두 예

InnoDB 명령 옵션

  • --ignore-builtin-innodb

    비추천 5.5.22
    명령 줄 형식 --ignore-builtin-innodb
    시스템 변수 이름 ignore_builtin_innodb
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean

    MySQL 5.1에서는이 옵션을 사용하면 서버는 내장 InnoDB 가 존재하지 않는 경우와 동일하게 동작 대신 InnoDB Plugin 을 사용할 수있었습니다. MySQL 5.6에서 InnoDB 가 기본 스토리지 엔진으로 바뀌고 InnoDB Plugin 이 사용되지 않기 때문에이 옵션은 유효하지 않습니다. MySQL 5.6.5의 시점에서는 무시됩니다.

  • --innodb [= value ]

    비추천 5.6.21
    명령 줄 형식 --innodb [= value]
    허용되는 값 유형 enumeration
    기본 ON
    유효한 값 OFF
    ON
    FORCE

    서버가 InnoDB 를 지원하도록 컴파일 된 경우, InnoDB 스토리지 엔진의 부하를 제어합니다. 이 옵션의 형식은 트라이이며, 가능한 값은 OFF , ON 또는 FORCE 입니다. 섹션 5.1.8.1 "플러그인 설치 및 제거" 를 참조하십시오.

    InnoDB 를 비활성화하려면 --innodb=OFF 또는 --skip-innodb 를 사용합니다. 이 경우 기본 스토리지 엔진은 InnoDB 이기 때문에 --default-storage-engine 및 --default-tmp-storage-engine 을 사용하여 영구 테이블과 TEMPORARY 테이블 모두에 대해 디폴트를 다른 엔진으로 설정 하지 않는 한 서버는 시작하지 않습니다.

    MySQL 5.6.21 시점에서는 --innodb=OFF 및 --skip-innodb 옵션이 사용되지 않으며, 사용하면 경고가 발생합니다. 이 옵션은 향후 MySQL 릴리스에서 제거됩니다.

  • --innodb-status-file

    명령 줄 형식 --innodb-status-file
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB 가 MySQL 데이터 디렉토리에 innodb_status. pid 라는 파일을 작성할지 여부를 제어합니다. 활성화하면 InnoDB 는 정기적으로 SHOW ENGINE INNODB STATUS 의 출력을 파일에 기록합니다.

    이 파일은 기본적으로 생성되지 않습니다. 이를 작성하려면 --innodb-status-file=1 옵션으로 mysqld를 시작합니다. 이 파일은 정상적인 종료시 삭제됩니다.

  • --skip-innodb

    InnoDB 스토리지 엔진을 비활성화합니다. --innodb 의 설명을 참조하십시오.

InnoDB 시스템 변수

  • daemon_memcached_enable_binlog

    도입 5.6.6
    명령 줄 형식 --daemon_memcached_enable_binlog = #
    시스템 변수 이름 daemon_memcached_enable_binlog
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 false

    이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • daemon_memcached_engine_lib_name

    도입 5.6.6
    명령 줄 형식 --daemon_memcached_engine_lib_name = library
    시스템 변수 이름 daemon_memcached_engine_lib_name
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 파일 이름
    기본 innodb_engine.so

    InnoDB memcached 플러그인을 구현하는 공유 라이브러리를 지정합니다.

    이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • daemon_memcached_engine_lib_path

    도입 5.6.6
    명령 줄 형식 --daemon_memcached_engine_lib_path = directory
    시스템 변수 이름 daemon_memcached_engine_lib_path
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 디렉토리 이름
    기본 NULL

    InnoDB memcached 플러그인을 구현하는 공유 라이브러리를 포함하는 디렉토리의 경로입니다. 기본값은 MySQL 플러그인 디렉토리를 나타내는 NULL입니다. MySQL 플러그인 디렉토리 외부에 배치 된 다른 스토리지 엔진 memcached 플러그인을 지정하지 않으면이 매개 변수를 변경할 필요가 없을 것입니다.

    이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • daemon_memcached_option

    도입 5.6.6
    명령 줄 형식 --daemon_memcached_option = options
    시스템 변수 이름 daemon_memcached_option
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 string
    기본

    시작할 때 공백 문자로 구분 된 memcached 옵션을 기본이되는 memcached 메모리 개체 캐시 데몬에 전달하는 데 사용됩니다. 예를 들어, memcached가 대기하는 포트를 변경하거나 최대 동시 연결 수를 줄이거 나, 키와 값의 페어의 최대 메모리 크기를 변경하거나 오류 로그에 대한 메시지 디버깅을 활성화 할 수 있습니다.

    이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오. memcached의 옵션은 memcached 매뉴얼 페이지를 참조하십시오.

  • daemon_memcached_r_batch_size

    도입 5.6.6
    명령 줄 형식 --daemon_memcached_r_batch_size = #
    시스템 변수 이름 daemon_memcached_r_batch_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 1

    COMMIT 을 실행하고 새로운 트랜잭션을 시작하기 전에 실행되는 memcached 읽기 조작 ( get ) 수를 지정합니다. daemon_memcached_w_batch_size 쌍둥이 한쪽입니다.

    이 값은 SQL 문을 사용하여 테이블에 변경 사항이 즉시 memcached 작업 표시되도록 기본적으로 1로 설정되어 있습니다. 기반이되는 테이블이 memcached 인터페이스에서만 사용되는 시스템에서 자주 커밋 비용을 절감하기 위해이를 확대 할 수 있습니다. 너무 큰 값을 설정하면 Undo 데이터 또는 Redo 데이터의 양에 따라 장기 실행 트랜잭션의 경우와 마찬가지로 일부 스토리지 오버 헤드가 발생할 수 있습니다.

    이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • daemon_memcached_w_batch_size

    도입 5.6.6
    명령 줄 형식 --daemon_memcached_w_batch_size = #
    시스템 변수 이름 daemon_memcached_w_batch_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 1

    COMMIT 을 실행하고 새로운 트랜잭션을 시작하기 전에 실행되는 memcached 쓰기 작업 ( add , set , incr 등)의 수를 지정합니다. daemon_memcached_r_batch_size 대 중 하나입니다.

    이 값은 저장되는 모든 데이터는 정지에 대비하여 보유하는 것이 중요하며, 즉시 커밋되어야한다는 가정에 따라 기본적으로 1로 설정되어 있습니다. 중요하지 않은 데이터를 저장할 때 자주 커밋 비용을 절감하기 위해이 값을 크게 할 수 있습니다. 그러나 충돌시에 커밋되지 않은 마지막 N -1 회 쓰기 작업이 손실 될 수 있습니다.

    이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • ignore_builtin_innodb

    비추천 5.5.22
    명령 줄 형식 --ignore-builtin-innodb
    시스템 변수 이름 ignore_builtin_innodb
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean

    이 섹션의 앞부분의 " InnoDB 명령어 옵션 "아래의 --ignore-builtin-innodb 의 설명을 참조하십시오.

  • innodb_adaptive_flushing

    명령 줄 형식 --innodb_adaptive_flushing = #
    시스템 변수 이름 innodb_adaptive_flushing
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 ON

    워크로드에 따라 InnoDB 버퍼 풀 의 더티 페이지 를 플래시하는 비율을 동적으로 조정할지 여부를 지정합니다. 플래시 비율을 동적으로 조정하는 목적은 I / O 활동의 파열을 방지하는 것입니다. 이 설정은 기본적으로 활성화되어 있습니다. 자세한 내용은 섹션 14.13.1.2 "InnoDB 버퍼 풀 플러시 빈도 구성" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_adaptive_flushing_lwm

    도입 5.6.6
    명령 줄 형식 --innodb_adaptive_flushing_lwm = #
    시스템 변수 이름 innodb_adaptive_flushing_lwm
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 10
    최소 0
    최대 값 70

    적응 형 플래시 가 활성화되어있는 Redo 로그 공간의 비율을 나타내는 하위 경계 값입니다.

  • innodb_adaptive_hash_index

    명령 줄 형식 --innodb_adaptive_hash_index = #
    시스템 변수 이름 innodb_adaptive_hash_index
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 ON

    InnoDB 적응 형 해시 인덱스 가 유효하지 않을지되어 있는지를 나타냅니다. 워크로드에 따라 적응 형 해시 인덱스의 생성 을 동적으로 활성화 또는 비활성화하여 쿼리 성능을 개선하는 것이 바람직한 경우가 있습니다. 적응 형 해시 인덱스가 모든 워크로드에 도움이 아니기 때문에 현실적인 워크로드를 사용하여 활성화 및 비활성화 모두 벤치 마크를 실시합니다. 자세한 내용은 섹션 14.2.13.6 "적응 형 해시 인덱스" 를 참조하십시오.

    이 변수는 기본적으로 활성화되어 있습니다. SET GLOBAL 명령을 사용하면 서버를 다시 시작하지 않고이 매개 변수를 변경할 수 있습니다. 이 설정을 변경하려면 SUPER 권한이 필요합니다. 또한 서버를 시작할 때 --skip-innodb_adaptive_hash_index 을 사용하면 비활성화 할 수 있습니다.

    적응 형 해시 인덱스를 비활성화하면 즉시 해시 테이블이 비어 있습니다. 해시 테이블이 비어도 정상 동작을 계속할 수 해시 테이블을 사용하여 실행중인 쿼리 대신 인덱스의 B 트리에 직접 액세스합니다. 적응 형 해시 인덱스를 다시 사용하면 정상 작동시 해시 테이블이 다시 채워집니다.

  • innodb_adaptive_max_sleep_delay

    도입 5.6.3
    명령 줄 형식 --innodb_adaptive_max_sleep_delay = #
    시스템 변수 이름 innodb_adaptive_max_sleep_delay
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 150000
    최소 0
    최대 값 1000000

    현재의 워크로드에 따라 InnoDB 에 의해 자동으로 innodb_thread_sleep_delay 값이 상하로 조정되도록합니다. 0이 아닌 값으로 지정하면 최대 innodb_adaptive_max_sleep_delay 옵션으로 지정된 최대 값까지 자동으로 innodb_thread_sleep_delay 값의 동적 조정이 이루어집니다. 값은 마이크로 초를 나타냅니다. 이 옵션은 InnoDB 쓰레드 수가 16 개를 초과하는 고부하 시스템에서 유용 할 수 있습니다. (사실, 동시 연결 수가 수백 또는 수천된다 MySQL 시스템의 대부분의 변수입니다.)

    자세한 내용은 섹션 14.13.5 "InnoDB의 스레드 병렬성 구성" 을 참조하십시오.

  • innodb_additional_mem_pool_size

    비추천 5.6.3
    명령 줄 형식 --innodb_additional_mem_pool_size = #
    시스템 변수 이름 innodb_additional_mem_pool_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 8388608
    최소 2097152
    최대 값 4294967295

    데이터 사전 정보 및 기타 내부 데이터 구조를 포함 할 때에 InnoDB 에서 사용되는 메모리 풀의 크기 (바이트)입니다. 응용 프로그램에 존재하는 테이블 수가 많을수록 여기서 할당 메모리 량도 많아집니다. 이 풀의 메모리가 InnoDB 에 의해 소모되면 운영 체제에서 메모리 할당이 시작되고, MySQL 에러 로그에 경고 메시지가 기록됩니다. 기본값은 8M 바이트입니다.

    이 변수는 InnoDB 내부 메모리 할당에 관련합니다. 이것은 innodb_use_sys_malloc 이 활성화되어있는 경우는 사용되지 않습니다. MySQL 5.6.3의 시점에서는 innodb_additional_mem_pool_size 는 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.

  • innodb_api_bk_commit_interval

    도입 5.6.7
    명령 줄 형식 --innodb_api_bk_commit_interval = #
    시스템 변수 이름 innodb_api_bk_commit_interval
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 5
    최소 1
    최대 값 1073741824

    InnoDB memcached 인터페이스가 사용되는 유휴 연결이 자동 확정되는 빈도 (초)입니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • innodb_api_disable_rowlock

    도입 5.6.6
    명령 줄 형식 --innodb_api_disable_rowlock = #
    시스템 변수 이름 innodb_api_disable_rowlock
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    이 변수를 사용하면 InnoDB memcached에서 DML 작업이 수행 될 때 행 잠금이 해제됩니다. 기본적으로 innodb_api_disable_rowlock 는 OFF 로 설정되어 있으며, memcached가 get 및 set 작업 행 잠금을 요청합니다. innodb_api_disable_rowlock 를 ON 으로 설정하면 memcached 행 잠금 대신 테이블 잠금을 요청합니다.

    innodb_api_disable_rowlock 옵션은 동적하지 않습니다. 이것은 mysqld 명령 행에서 지정하거나 MySQL 구성 파일에 입력해야합니다. 구성은 MySQL 서버가 시작될 때마다 할 플러그인을 설치할 때 사용됩니다.

  • innodb_api_enable_binlog

    도입 5.6.6
    명령 줄 형식 --innodb_api_enable_binlog = #
    시스템 변수 이름 innodb_api_enable_binlog
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    MySQL 바이너리 로그 와 함께 InnoDB memcached 플러그인을 사용할 수 있습니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • innodb_api_enable_mdl

    도입 5.6.6
    명령 줄 형식 --innodb_api_enable_mdl = #
    시스템 변수 이름 innodb_api_enable_mdl
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB memcached 플러그인에서 사용되는 테이블을 잠급니다. 이렇게하면 SQL 인터페이스에서 DDL 에 의해 삭제 또는 변경할 수 없습니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.

  • innodb_api_trx_level

    도입 5.6.6
    명령 줄 형식 --innodb_api_trx_level = #
    시스템 변수 이름 innodb_api_trx_level
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0

    memcached 인터페이스에서 처리 된 쿼리에서 트랜잭션 격리 수준 을 제어 할 수 있습니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오. 잘 듣는 이름에 대응하는 정수는 다음과 같습니다.

    • 0 = READ UNCOMMITTED

    • 1 = READ COMMITTED

    • 2 = REPEATABLE READ

    • 3 = SERIALIZABLE

  • innodb_autoextend_increment

    명령 줄 형식 --innodb_autoextend_increment = #
    시스템 변수 이름 innodb_autoextend_increment
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.5) 유형 integer
    기본 8
    최소 1
    최대 값 1000
    허용되는 값 (> = 5.6.6) 유형 integer
    기본 64
    최소 1
    최대 값 1000

    InnoDB 의 자동 확장 시스템 테이블 스페이스 파일이 꽉 찼을 때 그 크기를 확장 할 때 증분 크기 (M 바이트)입니다. 기본값은 MySQL 5.6.6의 시점에서 64, 그 이전은 8입니다. 이 변수는 innodb_file_per_table=1 을 사용하는 경우에 작성되는 테이블마다 테이블 공간 파일은 영향을받지 않습니다. innodb_autoextend_increment 의 값에 관계없이 이러한 파일은 자동 확장됩니다. 확장은 소량으로 시작하여 확장 증분가 4MB에서 발생합니다.

  • innodb_autoinc_lock_mode

    명령 줄 형식 --innodb_autoinc_lock_mode = #
    시스템 변수 이름 innodb_autoinc_lock_mode
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 1
    유효한 값 0
    1
    2

    자동 증가 값을 생성하는 데 사용되는 잠금 모드 입니다. 허용되는 값은 "기존"를 나타내는 0 "연속"을 나타내는 1 또는 「인터리브」을 나타내는 2입니다. 섹션 14.6.5 "InnoDB에서 AUTO_INCREMENT 처리" 에서는 이러한 모드의 특성에 대해 설명합니다.

    이 변수의 기본값은 1 ( "연속"잠금 모드)입니다.

  • innodb_buffer_pool_dump_at_shutdown

    도입 5.6.3
    명령 줄 형식 --innodb_buffer_pool_dump_at_shutdown = #
    시스템 변수 이름 innodb_buffer_pool_dump_at_shutdown
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    다음 재부팅시 워밍업 과정의 시간을 단축하기 위해 MySQL 서버 종료시 InnoDB의 버퍼 풀 에 캐시 된 페이지를 기록할지 여부를 지정합니다. 일반적으로 innodb_buffer_pool_load_at_startup 와 함께 사용됩니다.

    자세한 내용은 섹션 14.13.1.5 "다시 시작을 가속화하기위한 InnoDB 버퍼 풀의 프리로드" 를 참조하십시오.

  • innodb_buffer_pool_dump_now

    도입 5.6.3
    명령 줄 형식 --innodb_buffer_pool_dump_now = #
    시스템 변수 이름 innodb_buffer_pool_dump_now
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB의 버퍼 풀 에 캐시 된 페이지를 즉시 기록합니다. 일반적으로 innodb_buffer_pool_load_now 와 함께 사용됩니다.

    자세한 내용은 섹션 14.13.1.5 "다시 시작을 가속화하기위한 InnoDB 버퍼 풀의 프리로드" 를 참조하십시오.

  • innodb_buffer_pool_filename

    도입 5.6.3
    명령 줄 형식 --innodb_buffer_pool_filename = file
    시스템 변수 이름 innodb_buffer_pool_filename
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 파일 이름
    기본 ib_buffer_pool

    innodb_buffer_pool_dump_at_shutdown 또는 innodb_buffer_pool_dump_now 에서 생성되는 테이블 스페이스 ID 및 페이지 ID의 목록을 포함하는 파일의 이름을 지정합니다. 테이블 스페이스 ID 및 페이지 ID는 space, page_id 형식으로 저장됩니다. 기본적으로이 파일은 InnoDB 데이터 디렉토리에 배치됩니다.

    자세한 내용은 섹션 14.13.1.5 "다시 시작을 가속화하기위한 InnoDB 버퍼 풀의 프리로드" 를 참조하십시오.

  • innodb_buffer_pool_instances

    명령 줄 형식 --innodb_buffer_pool_instances = #
    시스템 변수 이름 innodb_buffer_pool_instances
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (<= 5.6.5) 유형 integer
    기본 1
    최소 1
    최대 값 64
    허용되는 값 (Windows 32 비트 플랫폼,> = 5.6.6) 유형 integer
    기본 (autosized)
    최소 1
    최대 값 64
    허용되는 값 (기타> = 5.6.6) 유형 integer
    기본 8
    최소 1
    최대 값 64

    InnoDB 의 버퍼 풀 을 분할되는 영역의 수입니다. 버퍼 풀 수 G 바이트의 범위에있는 시스템에 버퍼 풀을 ​​개별 인스턴스로 분할하면 캐시 된 페이지에 다른 스레드가 읽기 및 쓰기를 할 때 충돌이 줄어들 기 때문에 동시성을 향상 경우가 있습니다. 버퍼 풀에 포함되는 각 페이지 또는 버퍼 풀에서 읽고있는 각 페이지는 해시 함수를 사용하여 버퍼 풀 인스턴스 중 하나에 무작위로 할당됩니다. 각 버퍼 풀은 자신의 여유리스트, 플래시 목록 , LRU 및 버퍼 풀에 연결된 다른 모든 데이터 구조를 관리하고 자신의 버퍼 풀 상호 배타 락 에 의해 보호됩니다.

    이 옵션은 innodb_buffer_pool_size 를 1G 바이트 이상의 크기로 설정 한 경우에만 사용할 수 있습니다. 지정한 총 크기는 모든 버퍼 풀 사이에 분할됩니다. 최고의 효율을 얻기 위해서는 innodb_buffer_pool_instances 과 innodb_buffer_pool_size 의 조합을 각 버퍼 풀 인스턴스가 적어도 1G 바이트가되도록 지정합니다.

    MySQL 5.6.6 이전에는, 기본값은 1입니다. MySQL 5.6.6의 시점에서는 기본값은 8입니다. 그러나 32 비트 Windows 시스템에서는 기본적는 innodb_buffer_pool_size 값에 따라 달라집니다.

    • innodb_buffer_pool_size 이 1.3G 바이트보다 큰 경우 innodb_buffer_pool_instances 의 기본이 innodb_buffer_pool_size / 128M 바이트입니다 청크에 대해 별도의 메모리 할당 요청을가집니다. 32 비트 Windows에서 단일 버퍼 풀에 필요한 연속적인 주소 공간을 할당 할 수 없다는 심각한 위험이 존재하는 경계로서 1.3G 바이트가 선택되었습니다.

    • 그렇지 않으면 기본값은 1입니다.

  • innodb_buffer_pool_load_abort

    도입 5.6.3
    명령 줄 형식 --innodb_buffer_pool_load_abort = #
    시스템 변수 이름 innodb_buffer_pool_load_abort
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    innodb_buffer_pool_load_at_startup 또는 innodb_buffer_pool_load_now 에서 트리거되는 InnoDB의 버퍼 풀 의 내용을 복원하는 프로세스를 중단합니다.

    자세한 내용은 섹션 14.13.1.5 "다시 시작을 가속화하기위한 InnoDB 버퍼 풀의 프리로드" 를 참조하십시오.

  • innodb_buffer_pool_load_at_startup

    도입 5.6.3
    명령 줄 형식 --innodb_buffer_pool_load_at_startup = #
    시스템 변수 이름 innodb_buffer_pool_load_at_startup
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    MySQL 서버 시작시 이전에 보유 된 것과 동일한 페이지를로드하는 것으로, InnoDB의 버퍼 풀 을 자동으로 예열 되도록 지정합니다. 일반적으로 innodb_buffer_pool_dump_at_shutdown 와 함께 사용됩니다.

    자세한 내용은 섹션 14.13.1.5 "다시 시작을 가속화하기위한 InnoDB 버퍼 풀의 프리로드" 를 참조하십시오.

  • innodb_buffer_pool_load_now

    도입 5.6.3
    명령 줄 형식 --innodb_buffer_pool_load_now = #
    시스템 변수 이름 innodb_buffer_pool_load_now
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    서버를 다시 시작 기다리지 않고 데이터 페이지 세트를로드하는 것으로, InnoDB의 버퍼 풀 을 즉시 워밍업 합니다. 벤치 마크시 캐시 메모리를 알려진 상태로 되돌 리거나 보고서 및 유지 보수를 위해 쿼리를 실행 한 후, MySQL 서버의 정상적인 작업을 재개 준비를 할 때 도움이됩니다.

    자세한 내용은 섹션 14.13.1.5 "다시 시작을 가속화하기위한 InnoDB 버퍼 풀의 프리로드" 를 참조하십시오.

  • innodb_buffer_pool_size

    명령 줄 형식 --innodb_buffer_pool_size = #
    시스템 변수 이름 innodb_buffer_pool_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (32 비트 플랫폼) 유형 integer
    기본 134217728
    최소 5242880
    최대 값 2 ** 32-1
    허용되는 값 (64 비트 플랫폼) 유형 integer
    기본 134217728
    최소 5242880
    최대 값 2 ** 64-1

    InnoDB 테이블 및 인덱스의 데이터를 캐시하는 메모리 영역 인 버퍼 풀 의 크기 (바이트)입니다. 기본값은 128M 바이트입니다. 최대 값은 CPU 아키텍처에 따라 다릅니다. 최대 값은 32 비트 시스템에서 4294967295 (2 32 -1) 64 비트 시스템에서는 18446744073709551615 (2 64 -1)입니다. 32 비트 시스템에서는 CPU 아키텍처와 운영 체제에 지정된 최대 값보다 작은 실용적인 최대 크기가 부과 될 수 있습니다. 버퍼 풀의 크기가 1G 바이트보다 큰 경우 innodb_buffer_pool_instances 를 1보다 큰 값으로 설정하면 고부하의 서버에서 확장 성을 개선 할 수 있습니다.

    이 값을 크게 설정할수록 테이블에서 동일한 데이터를 여러 번 액세스하는 데 필요한 디스크 I / O가 줄어 듭니다. 전용 데이터베이스 서버에서는이를 최대 컴퓨터의 실제 메모리 크기의 80 %까지 설정할 수 있습니다.다음과 같은 기타 문제가 발생했을 경우,이 값이 작을 준비를하십시오.

    • 실제 메모리가 충돌하면 운영 체제에서 페이징이 발생할 수 있습니다.

    • InnoDB 는 할당 된 영역의 합계가 지정된 크기보다 약 10 % 커지도록 버퍼 및 제어 구조에 추가 메모리가 예약되어 있습니다.

    • 주소 공간은 인접 해있는 연꽃입니다. 따라서 Windows 시스템에서 특정 주소에로드하는 DLL 문제가 발생할 수 있습니다.

    • 버퍼 풀을 초기화하는 시간은 거의 그 크기에 비례합니다. 대규모 설치에서는이 초기화 시간이 중요한 경우도 있습니다. 예를 들어, 최신의 Linux x86_64 서버에 10G 바이트의 버퍼 풀을 초기화하려면 약 6 초 정도 걸립니다. 섹션 8.9.1 "InnoDB 버퍼 풀" 을 참조하십시오.

  • innodb_change_buffer_max_size

    도입 5.6.2
    명령 줄 형식 --innodb_change_buffer_max_size = #
    시스템 변수 이름 innodb_change_buffer_max_size
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 25
    최소 0
    최대 값 50

    버퍼 풀 의 전체 크기의 백분율로 나타낸, InnoDB의 변경 버퍼 의 최대 크기입니다. 이 값은 MySQL 서버에 자주 삽입, 업데이트 및 삭제 활동이 발생하는 경우는 크게하고 MySQL 서버에서 보고서에 사용되는 데이터가 변경되지 않는 경우는 작게하면 좋을 것입니다. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_change_buffering

    명령 줄 형식 --innodb_change_buffering = #
    시스템 변수 이름 innodb_change_buffering
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 enumeration
    기본 all
    유효한 값 inserts
    deletes
    purges
    changes
    all
    none

    InnoDB 가 버퍼링 변경 (I / O 작업을 연속적으로 수행 할 수 있도록 보조 인덱스에 쓰기 작업을 지연시키는 최적화)를 실행할지 여부를 지정합니다. 허용되는 값은 inserts (삽입 작업 버퍼링) deletes (삭제 작업 버퍼링 엄밀히 말하면, 제거 작업시 이후에 삭제하는 인덱스 레코드에 표시를 기입) changes (삽입 조작 및 삭제 표시 작업 버퍼링) purges ( 퍼지 작업 버퍼링 삭제 된 인덱스 항목의 가비지 컬렉션을 마지막으로 실행되는 쓰기) all (삽입, 삭제 표시, 제거 작업 버퍼링) 및 none (조작 버퍼링 없음)입니다. 기본값은 all 입니다. 자세한 내용은 섹션 14.13.4 "InnoDB 변경 버퍼링 구성" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_checksum_algorithm

    도입 5.6.3
    명령 줄 형식 --innodb_checksum_algorithm = #
    시스템 변수 이름 innodb_checksum_algorithm
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.5) 유형 enumeration
    기본 innodb
    유효한 값 innodb
    crc32
    none
    strict_innodb
    strict_crc32
    strict_none
    허용되는 값 (5.6.6) 유형 enumeration
    기본 crc32
    유효한 값 innodb
    crc32
    none
    strict_innodb
    strict_crc32
    strict_none
    허용되는 값 (> = 5.6.7) 유형 enumeration
    기본 innodb
    유효한 값 innodb
    crc32
    none
    strict_innodb
    strict_crc32
    strict_none

    InnoDB 의 각 테이블 공간 의 각 디스크 블록에 저장되어있는 체크섬 을 생성 및 검증하는 방법을 지정합니다.

    MySQL 5.6.3의 시점에서 innodb_checksums 옵션은 innodb_checksum_algorithm 로 대체했습니다. 다음 값은 호환성을 위해 제공되고 있습니다.

    • innodb_checksum_algorithm = innodb 는 innodb_checksums = ON 과 같습니다.

    • innodb_checksum_algorithm = none 은 innodb_checksums = OFF 와 동일합니다.

    충돌을 방지하려면 구성 파일 및 MySQL 시작 스크립트에서 innodb_checksums 에 대한 참조를 제거합니다.

    값 innodb 는 모든 MySQL 버전과의 호환성이 있습니다. 값 crc32 에서는 더 빠르게, 변경된 모든 블록의 체크섬을 계산하고 디스크 읽기마다 체크섬을 검사하는 알고리즘이 사용됩니다. 값 none 에서는 블록 데이터에 따라 값이 계산되는 것이 아니라 체크섬 필드에 상수 값이 기록됩니다. 테이블 스페이스 내의 블록은 이전 값 새 값 및 체크섬없이 값을 혼합하여 사용할 수 있으며 데이터가 업데이트되면서 점차 업데이트됩니다. 테이블 스페이스 내의 블록이 crc32 알고리즘을 사용하도록 변경된 후에는 관련된 테이블을 이전 버전의 MySQL에서 읽을 수 없습니다.

    strict_ * 형식의 기능은 innodb , crc32 및 none 과 동일합니다. 그러나 InnoDB 는 같은 테이블 스페이스에서 체크섬 값의 혼합이 발생한 경우 중지합니다. 이 옵션을 완전히 새로운 인스턴스에서 사용하는 것만으로, 처음이라도 모든 테이블 공간을 설정할 수 있습니다. strict_ * 설정에서 디스크를 읽을 때 새로운 체크섬 값과 이전 체크섬 값을 모두 받아들이 기 위하여 그 모두를 계산할 필요가 없기 때문에 다소 빨라집니다.

    다음 표는 none , innodb , crc32 옵션 값 및 각각에 대응하는 strict_ 옵션 값 사이의 차이점을 보여줍니다. none , innodb 및 crc32 는 특정 유형의 체크섬 값이 각 데이터 블록에 기록되지만 호환성을 유지하기 위해 읽기 작업 중에 블록을 검증 할 때 다른 체크섬 값 중 또는이 허용됩니다. strict_ 형식 매개 변수는 1 종류의 체크섬 만 인식됩니다. 이렇게하면 검증이 빨라집니다 만, 인스턴스의 모든 InnoDB 데이터 파일이 같은 innodb_checksum_algorithm 값으로 생성 될 필요가 있습니다.

    표 14.7 innodb_checksum_algorithm에서 허용하는 설정

    값 생성되는 체크섬 (기입시) 허용되는 체크섬 (읽기시)
    none 상수. none , innodb 또는 crc32 에서 생성되는 체크섬 중 하나.
    innodb 소프트웨어 InnoDB 의 원래 알고리즘을 사용하여 계산 된 체크섬. none , innodb 또는 crc32 에서 생성되는 체크섬 중 하나.
    crc32 crc32 알고리즘을 사용하여 계산 된 체크섬 (하드웨어의 지원을 받아 수행 될 가능성도 있습니다). none , innodb 또는 crc32 에서 생성되는 체크섬 중 하나.
    strict_none 상수 none 에서 생성되는 체크섬 만.
    strict_innodb 소프트웨어 InnoDB 의 원래 알고리즘을 사용하여 계산 된 체크섬. innodb 에서 생성되는 체크섬 만.
    strict_crc32 crc32 알고리즘을 사용하여 계산 된 체크섬 (하드웨어의 지원을 받아 수행 될 가능성도 있습니다). crc32 에서 생성되는 체크섬 만.

    innodb_checksum_algorithm 의 기본값은 MySQL 5.6.6에서 innodb 에서 crc32 변경되었지만 이전의 MySQL 버전으로 다운 그레이드중인 InnoDB 데이터 파일의 호환성 향상을 위해, 그리고 MySQL Enterprise Backup 에서 사용하기 위해 5.6 .7에서 innodb 로 리턴되었습니다. 검출 된 제한에는 다음이 포함됩니다.

    • CRC32 체크섬을 포함 .ibd 파일은 5.6.3 이전의 MySQL 버전으로 다운 그레이드하는 동안 문제가 발생할 수 있습니다. MySQL 5.6.3 이후에는 디스크에서 블록을 읽을 때 해당 블록의 새로운 체크섬 값과 이전 체크섬 값을 모두 올바른 인식합니다. 이에 따라 알고리즘의 설정에 관계없이 업그레이드 및 다운 그레이드 중에 데이터 블록의 호환성을 보장합니다. 새로운 체크섬 값으로 기록 된 데이터가 5.6.3 이전 수준의 MySQL에 의해 처리 된 경우 손상된 것처럼보고 될 수 있습니다.

    • 3.8.0 이전 버전의 MySQL Enterprise Backup 은 CRC32 체크섬을 사용하는 테이블 스페이스의 백업을 지원하지 않습니다. MySQL Enterprise Backup 은 CRC32 체크섬 지원을 3.8.1에서 (일부 제한 사항) 추가하고 있습니다. 자세한 내용은 MySQL Enterprise Backup 3.8.1의 변경 내용을 참조하십시오.

    crc32 체크섬 알고리즘에 대한 자세한 내용은 섹션 14.13.15 "체크섬의 고속화를위한 CRC32 체크섬 알고리즘의 사용" 을 참조하십시오.

  • innodb_checksums

    비추천 5.6.3
    명령 줄 형식 --innodb_checksums
    시스템 변수 이름 innodb_checksums
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 ON

    InnoDB 는 디스크에서 읽은 모든 테이블 스페이스 페이지에서 체크섬 검증을 사용하여 하드웨어 장애 나 데이터 파일의 손상에 대한 추가적인 내결함성을 제공 할 수 있습니다. 이 검증은 기본적으로 활성화되어 있습니다. 특수한 상황 (벤치 마크 실행시 등)에서는이 같은 추가 안전 기능은 --skip-innodb-checksums 을 사용하여 해제 할 수 있습니다. innodb_checksum_algorithm 을 사용하면 체크섬을 계산하는 방법을 지정할 수 있습니다.

    MySQL 5.6.3 이후에서는이 옵션은 사용되지 않으며, innodb_checksum_algorithm 로 대체했습니다. innodb_checksum_algorithm = innodb 는 innodb_checksums = ON (기본값)와 동일합니다. innodb_checksum_algorithm = none 은 innodb_checksums = OFF 와 동일합니다. innodb_checksum_algorithm 과의 충돌을 방지하기 위해 구성 파일 및 시작 스크립트에서 모든 innodb_checksums 옵션을 제거하십시오. innodb_checksums = OFF 에 의해 자동으로 innodb_checksum_algorithm = none 이 설정되어 innodb_checksums = ON 은 무시되고 innodb_checksum_algorithm 의 기타 설정을 다시 정의됩니다.

  • innodb_cmp_per_index_enabled

    도입 5.6.7
    명령 줄 형식 --innodb_cmp_per_index_enabled = #
    시스템 변수 이름 innodb_cmp_per_index_enabled
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF
    유효한 값 OFF
    ON

    INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX 테이블에서 인덱스 당 압축 관련 통계를 사용합니다. 이러한 통계를 수집하면 부하가 높아지기 때문에이 옵션은 InnoDB 의 압축 된 테이블에 대한 성능 튜닝시에 개발, 테스트 또는 슬레이브 인스턴스에서만 사용하십시오.

  • innodb_commit_concurrency

    명령 줄 형식 --innodb_commit_concurrency = #
    시스템 변수 이름 innodb_commit_concurrency
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 1000

    동시에 커밋 할 스레드 의 수입니다. 값을 0 (기본값)하면 임의의 수의 트랜잭션 을 동시에 커밋이 허용됩니다.

    innodb_commit_concurrency 값은 런타임에 제로에서 0이 아닌 (또는 그 반대)로 변경할 수 없습니다. 0이 아닌 값에서 다른 0이 아닌 값으로 변경 할 수 있습니다.

  • innodb_compression_failure_threshold_pct

    도입 5.6.7
    명령 줄 형식 --innodb_compression_failure_threshold_pct = #
    시스템 변수 이름 innodb_compression_failure_threshold_pct
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 5
    최소 0
    최대 값 100

    고부하에서의 압축 실패 를 방지하기 위해 압축 된 페이지의 패딩 추가가 MySQL에서 시작되는 컷오프 포인트를 설정합니다. 값을 0으로하면 압축의 효율성을 모니터하는 기능이 비활성화되어 패딩의 양을 동적으로 조정됩니다.

  • innodb_compression_level

    도입 5.6.7
    명령 줄 형식 --innodb_compression_level = #
    시스템 변수 이름 innodb_compression_level
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 6
    최소 0
    최대 값 9

    InnoDB 의 압축 된 테이블 및 인덱스에 사용 된 zlib 압축 수준을 지정합니다.

  • innodb_compression_pad_pct_max

    도입 5.6.7
    명령 줄 형식 --innodb_compression_pad_pct_max = #
    시스템 변수 이름 innodb_compression_pad_pct_max
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 50
    최소 0
    최대 값 75

    압축 된 각 페이지 의 공간으로 예약 할 수있는 최대 비율을 지정합니다. 이는 압축 된 테이블 또는 인덱스가 업데이트 된 데이터가 다시 압축 될 가능성이있을 때, 페이지의 데이터 및 변경 로그를 재구성 할 여지를 얻을 수 있습니다. innodb_compression_failure_threshold_pct 가 0이 아닌 값으로 설정되어 압축 오류 의 비율이 컷오프 포인트를 초과하는 경우에만 적용됩니다.

  • innodb_concurrency_tickets

    명령 줄 형식 --innodb_concurrency_tickets = #
    시스템 변수 이름 innodb_concurrency_tickets
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.5) 유형 integer
    기본 500
    최소 1
    최대 값 4294967295
    허용되는 값 (> = 5.6.6) 유형 integer
    기본 5000
    최소 1
    최대 값 4294967295

    동시에 InnoDB 에 들어갈 수있는 스레드 의 수를 결정합니다. 스레드가 InnoDB 에 들어 가려고 할 때 이미 스레드가 병렬 실행 제한에 도달하는 경우, 그 thread가 큐에 배치됩니다. 스레드가 InnoDB 에 들어갈 수 허용되는 경우 innodb_concurrency_tickets 값에 동일한 수의 " 여유 티켓 " 이 부여 된 스레드는 그 티켓을 다 떨어질 때까지 자유롭게 InnoDB 에 출입 할 수 있습니다. 그 이후에는 스레드가 다음 InnoDB 에 들어 가려고 할 때 다시 병렬 실행 검사 대상이됩니다 (큐에 들어갈 대상이 될 가능성도 있습니다). 기본값은 MySQL 5.6.6의 시점에서는 5000 그보다 앞에서는 500입니다.

    innodb_concurrency_tickets 값을 작게하면 두 줄 밖에 처리 할 필요가없는 소규모 거래와 다수의 행을 처리하는 대규모 트랜잭션이 충돌 할 가능성이 높아집니다. innodb_concurrency_tickets 값을 작게하면 단점은 대규모 트랜잭션이 완료 될 때까지 여러 번 큐 사이를 반복 할 필요가 있기 때문에 작업을 완료하는 데 필요한 시간이 길어지는 점입니다.

    innodb_concurrency_tickets 값을 크게하면 대규모 트랜잭션 ( innodb_thread_concurrency 로 제어되는) 큐의 끝에 위치를 기다리는 시간이 단축되고 행을 검색하는 시간이 길어집니다. 또한 대규모 트랜잭션은 작업을 완료하는 데 필요한 큐 사이의 이동도 줄어 듭니다. innodb_concurrency_tickets 값을 크게하는 단점은 동시에 실행하는 대규모 트랜잭션의 수가 매우 많아지는 것으로, 소규모 트랜잭션이 실행될 때까지의 대기 시간이 길기 때문에 고갈 될 수 있다는 것이다 .

    innodb_thread_concurrency 값을 제로 이외하면 대규모 트랜잭션 및 소규모 트랜잭션 사이의 적절한 균형을 찾기 위해 innodb_concurrency_tickets 값을 상하로 조정해야하는 경우가 있습니다. SHOW ENGINE INNODB STATUS 보고서는 대기열을 통과하는 현재 실행중인 트랜잭션에 남아있는 티켓의 수가 표시됩니다. 이 데이터는 INFORMATION_SCHEMA.INNODB_TRX 테이블 TRX_CONCURRENCY_TICKETS 컬럼에서 얻을 수 있습니다.

    자세한 내용은 섹션 14.13.5 "InnoDB의 스레드 병렬성 구성" 을 참조하십시오.

  • innodb_data_file_path

    명령 줄 형식 --innodb_data_file_path = name
    시스템 변수 이름 innodb_data_file_path
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (<= 5.6.6) 유형 string
    기본 ibdata1 : 10M : autoextend
    허용되는 값 (> = 5.6.7) 유형 string
    기본 ibdata1 : 12M : autoextend

    InnoDB 의 각 데이터 파일 의 경로와 그 크기입니다. 각 데이터 파일의 전체 디렉토리 경로는 여기에 지정된 각 경로에 innodb_data_home_dir 을 결합하여 형성됩니다. 크기 값에 K , M 또는 G 를 추가하여 파일 크기가 K 바이트 M 바이트 또는 G 바이트 (1024M 바이트)로 지정됩니다. 데이터 파일의 크기를 킬로바이트 (K 바이트)로 지정하는 경우는 1024의 배수로 지정하십시오. 그렇지 않으면, K 바이트 값은 가장 가까운 메가 바이트 (M 바이트)의 경계에서 반올림됩니다. 파일 크기의 합은 약간 10M 바이트를 초과하는 크기로해야합니다. innodb_data_file_path 를 지정하지 않으면 기본 동작에 ibdata1 라는 하나의 자동 확장 데이터 파일이 12M 바이트를 조금 웃도는 크기로 만들어집니다. 각 파일의 크기 제한은 운영 체제에 의해 결정됩니다. 큰 파일을 지원하는 운영 체제는 4G 바이트보다 큰 파일 크기를 설정할 수 있습니다. 데이터 파일로 원시 디스크 파티션을 사용할 수 있습니다. InnoDB 의 테이블 공간 파일 구성에 대한 자세한 내용은 섹션 14.3 "InnoDB 구성" 을 참조하십시오.

  • innodb_data_home_dir

    명령 줄 형식 --innodb_data_home_dir = path
    시스템 변수 이름 innodb_data_home_dir
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 디렉토리 이름

    시스템 테이블 스페이스 내의 모든 InnoDB 의 데이터 파일 의 디렉토리 경로에 공통되는 부분입니다. 이 설정은 innodb_file_per_table 를 활성화했을 때 file-per-table 테이블 공간의 위치는 영향을받지 않습니다. 기본값은 MySQL의 data 디렉토리입니다. 값을 빈 문자열로 지정한 경우 innodb_data_file_path 에서 전체 파일 경로를 사용할 수 있습니다.

  • innodb_disable_sort_file_cache

    도입 5.6.4
    명령 줄 형식 --innodb_disable_sort_file_cache = #
    시스템 변수 이름 innodb_disable_sort_file_cache
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    이 변수를 사용하면 병합 정렬 임시 파일 용 운영 체제 파일 시스템 캐시가 해제됩니다. 그 결과 이러한 파일이 O_DIRECT 의 동등한 함께 열립니다. 이 변수는 MySQL 5.6.4에서 추가되었습니다.

  • innodb_doublewrite

    명령 줄 형식 --innodb-doublewrite
    시스템 변수 이름 innodb_doublewrite
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 ON

    이 변수를 사용하면 (기본값), InnoDB 에 모든 데이터가 2 회 (첫째 이중 쓰기 버퍼 다음 실제 데이터 파일 에) 저장됩니다. 데이터의 무결성과 실패의 가능성에 대한 우려보다 벤치마킹과 최고의 성능이 필요한 경우에는 --skip-innodb_doublewrite 를 사용하면이 변수를 비활성화 할 수 있습니다.

  • innodb_fast_shutdown

    명령 줄 형식 --innodb_fast_shutdown [= #]
    시스템 변수 이름 innodb_fast_shutdown
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 1
    유효한 값 0
    1
    2

    InnoDB 의 종료 모드입니다. 이 값을 0으로하면 InnoDB 는 저속 종료 완전한 제거 및 삽입 버퍼 병합을 실행 한 후 종료합니다. 이 값을 1 (기본값)하면 InnoDB 는 종료 될 때 이러한 작업을 생략합니다. 이 과정은 빠른 종료 라고합니다. 이 값을 2로하면 InnoDB 는 MySQL이 충돌 한 경우와 마찬가지로 로그를 플러시 콜드 종료를 수행합니다. 커밋되지 않은 트랜잭션은 손실되지 않지만, 충돌 복구 작업을 통해 다음 부팅 시간이 길어집니다.

    저속 종료하는 데 몇 분 정도 걸릴 수 있으며 대량의 데이터가 버퍼에 존재하는 극단적 인 경우에는 몇 시간이 걸릴 수도 있습니다. MySQL의 주요 릴리즈로 업그레이드하거나 다운 그레이드하기 전에 업그레이드 프로세스에 의해 파일 형식이 업데이트 될 경우에 대비하여 모든 데이터 파일이 완전히 준비 될 수 있도록 저속 종료 기술을 사용하여 바랍니다.

    데이터가 손상 될 위험이있는 경우에 완전한 빠른 종료하려면, 비상 사태 또는 문제 해결 상황에서 innodb_fast_shutdown = 2 를 사용하십시오.

  • innodb_file_format

    명령 줄 형식 --innodb_file_format = #
    시스템 변수 이름 innodb_file_format
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string
    기본 Antelope
    유효한 값 Antelope
    Barracuda

    새로운 InnoDB 테이블에서 사용되는 파일 형식 입니다. 현재는 Antelope 및 Barracuda 을 지원하고 있습니다. 이것은 자신의 테이블 공간 을 가진 테이블에만 적용되기 때문에이를 활성화하려면 innodb_file_per_table 가 활성화되어 있어야합니다. 테이블의 압축 등의 특정 InnoDB 기능을 사용하려면 Barracuda 파일 형식이 필요합니다.

    InnoDB 테이블 ( ALGORITHM = COPY )을 다시 만들 ALTER TABLE 작업은 현재 innodb_file_format 설정이 사용된다 (전술 상황이 적용되는) 유의하십시오.

  • innodb_file_format_check

    명령 줄 형식 --innodb_file_format_check = #
    시스템 변수 이름 innodb_file_format_check
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 ON

    이 변수를 서버를 시작할 때 1 또는 0으로 설정하면 InnoDB 가 시스템 테이블 스페이스 의 파일 형식 태그 ( Antelope 과 Barracuda 등)을 확인할지 여부를 설정하거나 해제 할 수 있습니다. 체크 된 태그가 최신 버전의 InnoDB 에서 지원되는보다 큰 경우 오류가 발생하고 InnoDB 는 시작되지 않습니다. 이 태그 분들이 크지 않은 경우는, InnoDB 에 의해 innodb_file_format_max 값이 파일 형식 태그에 설정됩니다.

    참고

    기본값이 ON 또는 OFF 로 표시 될 수 있음에도 불구하고,이 옵션을 구성 파일이나 명령 행에서 켜거나 끄려면 숫자는 항상 1 또는 0을 사용합니다.

  • innodb_file_format_max

    명령 줄 형식 --innodb_file_format_max = #
    시스템 변수 이름 innodb_file_format_max
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string
    기본 Antelope
    유효한 값 Antelope
    Barracuda

    서버가 시작될 때 InnoDB 에 의해이 변수의 값이 시스템 테이블 공간 의 파일 형식 태그 ( Antelope 과 Barracuda )으로됩니다. 서버에서 " 큰 " 파일 형식의 테이블이 생성되거나 열리거나하면 innodb_file_format_max 값이 파일 형식으로 설정됩니다.

  • innodb_file_per_table

    명령 줄 형식 --innodb_file_per_table
    시스템 변수 이름 innodb_file_per_table
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.5) 유형 boolean
    기본 OFF
    허용되는 값 (> = 5.6.6) 유형 boolean
    기본 ON

    innodb_file_per_table 이 활성화되고있다 (5.6.6 이상 기본) 경우 InnoDB 는 새롭게 생성 된 각 테이블의 데이터 및 인덱스 시스템 테이블 공간이 아닌 개별 .ibd 파일 에 저장됩니다. 이 InnoDB 테이블의 스토리지 테이블이 삭제되거나 잘린거나하면 재사용됩니다. 이렇게 설정하면 테이블의 압축 등의 기타 여러 InnoDB 기능이 활성화됩니다. 이러한 기능 및 file-per-table 테이블 공간을 사용하는 장점 및 단점에 대한 자세한 내용은 섹션 14.5.2 "InnoDB File-Per-Table 모드" 를 참조하십시오.

    ALTER TABLE 로 테이블을 재 작성되는 경우 ( ALGORITHM = COPY )에서 innodb_file_per_table 를 활성화하는 것은 ALTER TABLE 조작에 의해 InnoDB 테이블이 시스템 테이블 스페이스에서 개별 .ibd 파일로 이동하는 것을 의미하는 주의하십시오.

    innodb_file_per_table 을 해제하면 InnoDB 는 모든 테이블 및 인덱스에 대한 데이터가 시스템 테이블 스페이스 를 구성하는 ibdata 파일 에 저장됩니다. 이렇게 설정하면 DROP TABLE 이나 TRUNCATE TABLE 등의 작업에서 파일 시스템 작업의 성능 오버 헤드가 감소됩니다. 이것은 저장 장치 전체가 MySQL 데이터 전용 된 서버 환경에 적합하다. 시스템 테이블 공간은 축소되지 않고 인스턴스 의 모든 데이터베이스에서 공유되지 않기 때문에, innodb_file_per_table = OFF 의 경우 공간이 제약 된 시스템에서 임시 데이터를 대량으로로드하는 것은 피하십시오. 이러한 경우 공간을 확보하기 위해 전체 인스턴스를 제거 할 수 있도록 별도의 인스턴스를 설정합니다.

    MySQL 5.6.6의 시점에서는 기본적으로 innodb_file_per_table 이 활성화되어 있습니다. 그 이전은 무효가되어 있습니다. MySQL 5.5 또는 5.1과의 하위 호환성이 우려 사항이있는 경우이를 해제하는 것을 고려하십시오. 이렇게하면 ALTER TABLE 에 의해 InnoDB 테이블이 시스템 테이블 스페이스에서 개별 .ibd 파일로 이동하는 것이 방지됩니다.

    innodb_file_per_table 는 동적이며 SET GLOBAL 을 사용하여 ON 또는 OFF 로 설정할 수 있습니다. 이 매개 변수는 MySQL 구성 파일 ( my.cnf 또는 my.ini ) 설정할 수 있지만이를 위해서는 서버를 종료 한 후 다시 시작해야합니다.

    이 매개 변수의 값을 동적으로 변경하려면 SUPER 권한이 필요합니다. 동적으로 변경하면 모든 연결 작업이 즉시 영향을받습니다.

  • innodb_flush_log_at_timeout

    도입 5.6.6
    시스템 변수 이름 innodb_flush_log_at_timeout
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 1
    최소 1
    최대 값 2700

    로그를 N 초마다 기록하여 플래시합니다. innodb_flush_log_at_timeout 은 MySQL 5.6.6에서 도입되었습니다. 플래시를 줄이고 바이너리 로그 그룹 커밋시의 성능에 미치는 영향을 방지하기 위해 플래시 사이의 시간 초과 기간을 길게 할 수 있습니다. MySQL 5.6.6 이전에서는 플래시의 빈도는 1 초마다 1 번이었습니다. innodb_flush_log_at_timeout 의 기본 설정 1 초마다 1 회입니다.

  • innodb_flush_log_at_trx_commit

    명령 줄 형식 --innodb_flush_log_at_trx_commit [= #]
    시스템 변수 이름 innodb_flush_log_at_trx_commit
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 enumeration
    기본 1
    유효한 값 0
    1
    2

    커밋 조작에 대한 엄격한 ACID 준수와 커밋 관련 I / O 작업이 재구성 및 일괄 처리 될 때 실현 가능한 높은 성능 간의 균형을 제어합니다. 기본값을 변경하면 성능을 향상시킬 수 있지만, 충돌시 트랜잭션이 최대 1 초 동안 손실 될 수 있습니다.

    • 완전히 ACID 준수를 수행하려면 기본값 1을 사용해야합니다. 이 값을 사용하면 트랜잭션 커밋 때마다 InnoDB 의 로그 버퍼 의 내용이 로그 파일 에 기록 된 로그 파일이 디스크에 플래시 됩니다.

    • 값을 0으로하면 약 1 초마다 1 회, InnoDB 로그 버퍼의 내용이 로그 파일에 기록 된 로그 파일이 디스크에 플래시됩니다. 로그 버퍼에서 로그 파일에 기록 트랜잭션 커밋시에는 실행되지 않습니다. 프로세스 스케줄링의 문제로 인해 1 초마다 1 회 플래시가 초당 발생하는 100 % 보장은 없습니다. 디스크 연산에 대한 플러시는 약 1 초마다 1 회 밖에 발생하지 않기 때문에 모든 mysqld 프로세스가 충돌하면 트랜잭션이 최대 1 초 동안 손실 될 수 있습니다.

    • 값을 2로하면 트랜잭션 커밋 때마다 InnoDB 로그 버퍼의 내용이 로그 파일에 기록되고 약 1 초마다 1 번 로그 파일이 디스크에 플래시됩니다. 프로세스 스케줄링의 문제로 인해 1 초마다 1 회 플래시가 초당 발생하는 100 % 보장은 없습니다. 디스크 연산에 대한 플러시는 약 1 초마다 1 회 밖에 발생하지 않기 때문에 운영 체제가 충돌하거나 정전이 발생하거나하면 트랜잭션이 최대 1 초 동안 손실 될 수 있습니다.

    • MySQL 5.6.6의 시점에서는 InnoDB 의 로그 플러시 빈도가 innodb_flush_log_at_timeout 에서 제어됩니다. 이렇게하면 로그 플러시 빈도를 N 초에 설정할 수 있습니다 (여기서 N 은 1 ... 2700 에서 기본값은 1입니다). 그러나 모든 mysqld 프로세스가 충돌하면 트랜잭션이 최대 N 초간 손실 될 수 있습니다.

    • innodb_flush_log_at_trx_commit 의 설정과는 관계없이 DDL 변경 및 기타 InnoDB 활동을 통해 InnoDB 로그가 플래시됩니다.

    • InnoDB 의 충돌 복구 는 innodb_flush_log_at_trx_commit 의 설정에 관계없이 작동합니다. 트랜잭션은 완전히 적용되거나 완전히 지우거나 중 하나입니다.

    트랜잭션에서 InnoDB 가 사용되는 복제 설정의 지속성과 일관성을 유지 경우 :

    • 바이너리 로깅이 활성화되어 있다면, sync_binlog = 1 을 설정합니다.

    • 항상 innodb_flush_log_at_trx_commit = 1 을 설정합니다.

    주의

    많은 운영 체제와 일부 디스크 하드웨어는 디스크에 플래시 작업을 행했다고 속이고 있습니다. 플래시가 이루어없이 이루어 졌다고 mysqld 에 통지 할 수 있습니다. 따라서 1을 설정해도 트랜잭션의 지속성이 보장되지 않고, 최악의 경우, 정전으로 InnoDB 의 데이터가 손상 될 가능성도 있습니다. 배터리 백업 디스크 캐시를 SCSI 디스크 컨트롤러와 디스크 자체에서 사용하면 파일 플래시가 빨라 작업이 안전합니다. 하드웨어 캐시에서 디스크 쓰기 캐시를 비활성화하기 위해 Unix 명령 hdparm 을 사용하여보고, 하드웨어 벤더 고유의 추가 명령을 사용 할 수 있습니다.

  • innodb_flush_method

    명령 줄 형식 --innodb_flush_method = name
    시스템 변수 이름 innodb_flush_method
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (Unix <= 5.6.6) 유형 string
    기본 fsync
    유효한 값 fsync
    O_DSYNC
    O_DIRECT
    허용되는 값 (Unix,> = 5.6.7) 유형 string
    기본 fsync
    유효한 값 fsync
    O_DSYNC
    O_DIRECT
    O_DIRECT_NO_FSYNC
    허용되는 값 (Windows) 유형 string
    기본 async_unbuffered

    InnoDB 의 데이터 파일 과 로그 파일 에 데이터를 플래시 하는 데 사용되는 방법을 정의합니다. 이렇게하면 I / O 처리량에 영향을 줄 수 있습니다. 이 변수는 Unix 및 Linux 시스템에서만 구성 할 수 있습니다. Windows 시스템에서는 플래시 방법은 항상 async_unbuffered 이며 변경할 수 없습니다.

    innodb_flush_method 옵션의 내용은 다음과 같습니다.

    • fsync : InnoDB 는 fsync () 시스템 호출을 사용하여 데이터 파일과 로그 파일을 플러시합니다. fsync 은 기본 설정입니다.

    • O_DSYNC : InnoDB 는 O_SYNC 를 사용하여 로그 파일을 열고 플러시하고 fsync () 를 사용하여 데이터 파일을 플래시합니다. 다양한 종류의 Unix에서 문제가 발생하고 있기 때문에, InnoDB 는 직접 O_DSYNC 가 사용되지 않습니다.

    • O_DIRECT : InnoDB 는 O_DIRECT (Solaris에서는 directio () )를 사용하여 데이터 파일을 열고 fsync () 를 사용하여 데이터 파일과 로그 파일을 플러시합니다. 이 옵션은 일부 GNU / Linux 버전, FreeBSD 및 Solaris에서 사용 가능합니다.

    • O_DIRECT_NO_FSYNC : InnoDB 는 I / O의 플래시시에 O_DIRECT 를 사용하지만 후속 fsync () 시스템 호출은 생략합니다. 이 설정은 일부 유형의 파일 시스템에는 적합하지만, 그 외에는 적합하지 않습니다. 예를 들어, XFS에는 적합하지 않습니다. 예를 들어, 사용중인 파일 시스템에서 모든 파일 메타 데이터를 유지하기 위해 fsync () 가 필요인지 여부를 알 수없는 경우는 대신 O_DIRECT 를 사용하십시오. 이 옵션은 MySQL 5.6.7 (Bug # 11754304, Bug # 45892)에서 도입되었습니다.

    각 설정에 따른 성능에 미치는 영향은 하드웨어 구성 및 워크로드에 따라 다릅니다. 사용하는 설정을 결정하거나 기본 설정을 그대로할지 여부를 결정하는 특정 구성에서 벤치마킹을 실시합니다. 설정마다 fsync () 호출의 전체 수를 확인하려면 Innodb_data_fsyncs 상태 변수를 조사합니다. 워크로드에 읽기 및 쓰기 작업을 혼합하면 일부 설정의 실행에 영향을 줄 수 있습니다. 예를 들어, 하드웨어 RAID 컨트롤러 및 배터리 백업되는 쓰기 캐시가 탑재 된 시스템에서는 InnoDB 의 버퍼 풀 및 운영 체제의 파일 시스템 캐시간에 이중 버퍼링을 회피 할 때 O_DIRECT 가 도움이 있습니다. InnoDB 의 데이터 파일과 로그 파일이 SAN에 배치 된 일부 시스템에서는 대부분의 SELECT 문을 포함하는 읽기 집약적 워크로드에서 기본값 또는 O_DSYNC 의 속도가 빠를 수 있습니다. 이 매개 변수는 반드시 운영 환경이 반영 된 하드웨어 및 워크로드 테스트하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_flush_neighbors

    도입 5.6.3
    명령 줄 형식 --innodb_flush_neighbors
    시스템 변수 이름 innodb_flush_neighbors
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 enumeration
    기본 1
    유효한 값 0
    1
    2

    InnoDB의 버퍼 풀 에서 페이지를 플래시 하면 같은 범위 에서 다른 더티 페이지 도 플래시되는지 여부를 지정합니다.

    • 디폴트 값 1은 버퍼 풀에서 동일한 범위의 연속 더티 페이지가 플래시됩니다.

    • 0을 설정하면 innodb_flush_neighbors 이 꺼지고 기타 더티 페이지는 버퍼 풀에서 플래시되지 않습니다.

    • 2를 설정하면 동일한 범위 내의 더티 페이지가 버퍼 풀에서 플래시됩니다.

    테이블 데이터가 기존의 HDD 저장 장치에 저장되어있는 경우는 1 번의 작업으로 이러한 인접 페이지 를 플래시하면 다양한 시간에 개별 페이지를 플래시하는 경우와 비교하여 (주로 디스크 탐색 작업) I / O 오버 헤드가 감소됩니다. 테이블 데이터가 SSD 에 저장되어있는 경우 검색 시간이 중요한 요소가 아니기 때문에이 설정을 해제하면 쓰기 작업을 분산 할 수 있습니다. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_flushing_avg_loops

    도입 5.6.6
    명령 줄 형식 --innodb_flushing_avg_loops = #
    시스템 변수 이름 innodb_flushing_avg_loops
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 30
    최소 1
    최대 값 1000

    InnoDB가 이전에 계산 된 플래시 상태의 스냅 샷을 보존하는 반복의 수입니다. 따라서 적응 형 플래시 가 워크로드 의 변경에 대응하는 속도가 제어됩니다. 이 값을 크게하면 워크로드가 변화함에 따라 플래시 작업 속도가 원활하고 서서히 변화합니다. 이 값을 줄이면 적응 형 플래시가 워크로드의 변화에 빠르게 적응합니다. 따라서 워크로드가 갑자기 증감 한 경우 플래시 활동이 급증 할 가능성이 있습니다.

  • innodb_force_load_corrupted

    도입 5.6.3
    명령 줄 형식 --innodb_force_load_corrupted
    시스템 변수 이름 innodb_force_load_corrupted
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB 시작시 손상 마크가 붙은 테이블을로드 할 수 있습니다. 문제 해결시에 아무것도 대처해야 액세스 할 수 데이터를 복구하는 데에만 사용하십시오. 문제 해결이 완료되면이 설정을 해제 다시 서버를 다시 시작합니다.

  • innodb_force_recovery

    명령 줄 형식 --innodb_force_recovery = #
    시스템 변수 이름 innodb_force_recovery
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 6

    충돌 복구 모드입니다. 일반적으로 심각한 문제 해결 상황에서만 변경됩니다. 가능한 값은 0에서 6까지입니다. 이 값의 의미 및 innodb_force_recovery 에 대한 중요한 정보는 섹션 14.19.2 "InnoDB 복구 강제 실행" 을 참조하십시오.

    경고

    긴급 상황에서만이 변수를 0보다 큰 값으로 설정하십시오. 이렇게하면 InnoDB 를 시작하고 테이블을 덤프 할 수 있습니다. 안전 대책으로서 innodb_force_recovery 을 0보다 크게하면 InnoDB 에서 INSERT , UPDATE 또는 DELETE 조작이 방지됩니다. 또한 5.6.15 시점에서는 innodb_force_recovery 설정을 4보다 크게하면 InnoDB 가 읽기 전용 모드입니다.

    이러한 제약 때문에, --relay-log-info-repository = TABLE 과 --master-info-repository = TABLE 등의 복제 옵션은 InnoDB 의 테이블에 정보가 저장되면 복제 관리 명령 실패 오류가 발생할 수 있습니다.

  • innodb_ft_aux_table

    도입 5.6.4
    시스템 변수 이름 innodb_ft_aux_table
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string

    FULLTEXT 인덱스를 포함 InnoDB 테이블의 정규화 된 이름을 지정합니다. 이 변수는 진단을 위해 사용되며, 실행시에만 설정할 수 있습니다. 예 :

    mysql> set global innodb_ft_aux_table = 'test / t1';
    

    이 변수를 시작할 때 설정하려고하면 " mysqld : option '--innodb-ft-aux-table'can not take an argument " 오류가 발생하고 부팅이 중지됩니다. 이 변수를 db_name / table_name 형식의 이름으로 설정하면 INFORMATION_SCHEMA 테이블 INNODB_FT_INDEX_TABLE , INNODB_FT_INDEX_CACHE , INNODB_FT_CONFIG , INNODB_FT_DELETED 및 INNODB_FT_BEING_DELETED 에 지정된 테이블의 검색 인덱스에 대한 정보가 표시됩니다.

  • innodb_ft_cache_size

    도입 5.6.4
    명령 줄 형식 --innodb_ft_cache_size = #
    시스템 변수 이름 innodb_ft_cache_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (> = 5.6.4 <= 5.6.9) 유형 integer
    기본 32000000
    허용되는 값 (> = 5.6.10) 유형 integer
    기본 8000000
    최소 1600000
    최대 값 80000000

    InnoDB 의 FULLTEXT 검색 인덱스 캐시에 할당 된 메모리 량 (바이트 단위)입니다. InnoDB 의 FULLTEXT 인덱스를 만들 때이 양의 분석 된 문서가 메모리에 유지됩니다. innodb_ft_cache_size 크기 제한에 도달하면 인덱스의 삽입 및 업데이트 만 디스크에 커밋됩니다. innodb_ft_cache_size 에서는 캐시 크기가 테이블에 대해 정의됩니다. 모든 테이블에 글로벌 제한을 설정하는 방법은 innodb_ft_total_cache_size 를 참조하십시오.

  • innodb_ft_enable_diag_print

    도입 5.6.4
    명령 줄 형식 --innodb_ft_enable_diag_print = #
    시스템 변수 이름 innodb_ft_enable_diag_print
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.6) 유형 boolean
    기본 ON
    허용되는 값 (> = 5.6.7) 유형 boolean
    기본 OFF

    추가 텍스트 검색 (FTS) 진단 출력을 사용할지 여부를 지정합니다. 이 옵션은 주로 고급 FTS 디버깅을 위해 사용되며, 대부분의 사용자에게는 관심이없는 것입니다. 출력은 오류 로그에 기록 된 다음과 같은 정보가 포함되어 있습니다.

    • FTS 인덱스 동기화 진행 (FTS 캐시 제한에 도달했을 때). 예 :

      FTS SYNC for table test, deleted count : 100 size : 10000 bytes
      SYNC words : 100 
      
    • FTS 최적화 상태입니다. 예 :

      FTS start opt​​imize 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

    도입 5.6.4
    명령 줄 형식 --innodb_ft_enable_stopword = #
    시스템 변수 이름 innodb_ft_enable_stopword
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 ON

    인덱스를 만들 때 일련의 중지 단어 가 InnoDB 의 FULLTEXT 인덱스에 연관을 지정합니다. innodb_ft_user_stopword_table 옵션이 설정되어있는 경우는 그 테이블에서 중지 단어가 검색됩니다. 그렇지 않으면 innodb_ft_server_stopword_table 옵션이 설정되어있는 경우는 그 테이블에서 중지 단어가 검색됩니다. 그렇지 않으면 기본 제공 기본 불용어 세트가 사용됩니다.

  • innodb_ft_max_token_size

    도입 5.6.4
    명령 줄 형식 --innodb_ft_max_token_size = #
    시스템 변수 이름 innodb_ft_max_token_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 84
    최소 10
    최대 값 252

    InnoDB의 FULLTEXT 인덱스에 포함되는 단어의 최대 길이입니다. 이 값에 제한을 설정하면 실제 단어가 아닌 검색어가 될 가능성이 낮은 문자의 임의의 컬렉션과 긴 키워드가 생략 된 것으로, 인덱스의 크기가 감소되기 때문에 쿼리의 속도가 오릅니다.

  • innodb_ft_min_token_size

    도입 5.6.4
    명령 줄 형식 --innodb_ft_min_token_size = #
    시스템 변수 이름 innodb_ft_min_token_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 3
    최소 0
    최대 값 16

    InnoDB의 FULLTEXT 인덱스에 포함되는 단어의 최소 길이입니다. 이 값을 늘리면 검색 컨텍스트에서 중요한 될 가능성이 낮은 일반적인 단어 ( " a " 와 " to " 등의 단어)가 생략 된 것으로, 인덱스의 크기가 감소되기 때문에 쿼리의 속도가 빨라집니다. 내용으로 CJK (중국어, 일본어, 한국어) 문자 세트가 사용되는 경우, 값 1을 지정합니다.

  • innodb_ft_num_word_optimize

    도입 5.6.4
    명령 줄 형식 --innodb_ft_num_word_optimize = #
    시스템 변수 이름 innodb_ft_num_word_optimize
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 2000

    InnoDB 의 FULLTEXT 인덱스에서 각 OPTIMIZE TABLE 작업 중에 처리되는 단어 수입니다. 전체 텍스트 검색 인덱스를 포함하는 테이블에 대량 삽입 또는 대량 업데이트 작업은 모든 변경 사항을 통합하기 위해 대량의 인덱스 유지 관리가 필요할 수 있기 때문에 각각이 마지막으로 종료 한 장소에서 재개 일련의 OPTIMIZE TABLE 문을 실행하면 좋을 것입니다.

  • innodb_ft_result_cache_limit

    도입 5.6.13
    명령 줄 형식 --innodb_ft_result_cache_limit = #
    시스템 변수 이름 innodb_ft_result_cache_limit
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (> = 5.6.17) 유형 integer
    기본 2000000000
    최소 1000000
    최대 값 2 ** 32-1
    허용되는 값 (Unix 32 비트 플랫폼,> = 5.6.13 <= 5.6.16) 유형 integer
    기본 2000000000
    최소 1000000
    최대 값 2 ** 32-1
    허용되는 값 (Unix 64 비트 플랫폼,> = 5.6.13 <= 5.6.16) 유형 integer
    기본 2000000000
    최소 1000000
    최대 값 2 ** 64-1
    허용되는 값 (Windows> = 5.6.13 <= 5.6.16) 유형 integer
    기본 2000000000
    최소 1000000
    최대 값 2 ** 32-1

    FTS 쿼리마다 또는 스레드마다 (바이트 단위로 정의 된) InnoDB 의 FULLTEXT 검색 (FTS) 쿼리 결과 캐시 제한입니다. 중간 및 최종 InnoDB FTS 쿼리 결과는 메모리에서 처리됩니다. InnoDB 의 FTS 쿼리 결과가 매우 큰 (수백만과 수억의 행수 등) 경우 과도한 메모리 소모를 방지하려면 innodb_ft_result_cache_limit 를 사용하여 InnoDB 의 FTS 쿼리 결과 캐시 크기 제한 부과합니다. 메모리는 FTS 쿼리를 처리 할 때 필요에 따라 할당됩니다. 결과 캐시 크기 제한에 도달하면 쿼리에서 최대한 허용되는 메모리 양을 초과했음을 나타내는 오류가 반환됩니다.

    MySQL 5.6.17의 시점에서 모든 플랫폼 유형 및 플랫폼 비트 크기에 대응 한 innodb_ft_result_cache_limit 의 최대 값은 2 ** 32-1입니다. Bug # 71554.

  • innodb_ft_server_stopword_table

    도입 5.6.4
    명령 줄 형식 --innodb_ft_server_stopword_table = db_name / table_name
    시스템 변수 이름 innodb_ft_server_stopword_table
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string
    기본 NULL

    이 옵션은 모든 InnoDB 테이블에 대응 한 독자적인 InnoDB 의 FULLTEXT 인덱스 중지 단어 목록을 지정하는 데 사용됩니다. 특정 InnoDB 테이블에 자신의 중지 단어 목록을 구성하려면 innodb_ft_user_stopword_table 을 사용합니다.

    db_name / table_name 형식으로 innodb_ft_server_stopword_table 을 중지 단어 목록을 포함하는 테이블의 이름으로 설정합니다.

    innodb_ft_server_stopword_table 를 구성하기 전에 중지 단어 테이블이 존재해야합니다. FULLTEXT 인덱스를 작성하기 전에 innodb_ft_enable_stopword 를 사용하여 innodb_ft_server_stopword_table 옵션을 구성해야합니다.

    불용어 테이블은 VALUE 라는 하나의 VARCHAR 컬럼을 포함 InnoDB 테이블에해야합니다.

    자세한 내용은 섹션 12.9.4 "전문 스톱 워드" 를 참조하십시오.

  • innodb_ft_sort_pll_degree

    도입 5.6.4
    명령 줄 형식 --innodb_ft_sort_pll_degree = #
    시스템 변수 이름 innodb_ft_sort_pll_degree
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 2
    최소 1
    최대 값 32

    검색 색인 을 구축 할 때, InnoDB 의 FULLTEXT 인덱스의 텍스트 인덱싱 및 토큰 화를 할 때 병렬로 사용되는 스레드 수입니다. 사용법에 대한 자세한 내용은 innodb_sort_buffer_size 를 참조하십시오.

  • innodb_ft_total_cache_size

    도입 5.6.13
    명령 줄 형식 --innodb_ft_total_cache_size = #
    시스템 변수 이름 innodb_ft_total_cache_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 640000000
    최소 32000000
    최대 값 1600000000

    모든 테이블에 대응 한 InnoDB 의 FULLTEXT 검색 인덱스 캐시에 할당 된 총 메모리 량 (바이트 단위)입니다. 각각 전체 텍스트 검색 인덱스를 가지는 다수의 테이블을 만들 때 사용 가능한 메모리의 대부분을 소비 할 수 있습니다. innodb_ft_total_cache_size 에서는 과도한 메모리 소모를 방지하는 데 도움이되는 모든 텍스트 검색 인덱스에 대응 한 글로벌 메모리 제한이 정의됩니다. 인덱스 작업 글로벌 제한에 도달하면 강제 동기화가 트리거됩니다.

  • innodb_ft_user_stopword_table

    도입 5.6.4
    명령 줄 형식 --innodb_ft_user_stopword_table = db_name / table_name
    시스템 변수 이름 innodb_ft_user_stopword_table
    변수 범위 글로벌 세션
    동적 변수 예
    허용되는 값 유형 string
    기본 NULL

    이 옵션은 특정 테이블에 자신의 InnoDB 의 FULLTEXT 인덱스 중지 단어 목록을 지정하는 데 사용됩니다. 모든 InnoDB 테이블에 대한 자신의 중지 단어 목록을 구성하려면 innodb_ft_server_stopword_table 을 사용합니다.

    db_name / table_name 형식으로 innodb_ft_user_stopword_table 을 중지 단어 목록을 포함하는 테이블의 이름으로 설정합니다.

    innodb_ft_user_stopword_table 를 구성하기 전에 중지 단어 테이블이 존재해야합니다. FULLTEXT 인덱스를 작성하기 전에 innodb_ft_enable_stopword 를 사용하여 innodb_ft_user_stopword_table 옵션을 구성해야합니다.

    불용어 테이블은 VALUE 라는 하나의 VARCHAR 컬럼을 포함 InnoDB 테이블에해야합니다.

    자세한 내용은 섹션 12.9.4 "전문 스톱 워드" 를 참조하십시오.

  • innodb_io_capacity

    명령 줄 형식 --innodb_io_capacity = #
    시스템 변수 이름 innodb_io_capacity
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (32 비트 플랫폼) 유형 integer
    기본 200
    최소 100
    최대 값 2 ** 32-1
    허용되는 값 (64 비트 플랫폼) 유형 integer
    기본 200
    최소 100
    최대 값 2 ** 64-1

    innodb_io_capacity 매개 변수는 InnoDB 백그라운드 작업에서 실행되는 I / O 활동 ( 버퍼 풀 에서 페이지의 플래시 와 삽입 버퍼 에서 데이터 병합 등)에 상한을 설정합니다. 기본값은 200입니다. 높은 I / O 속도를 처리 할 수있는 높은 부하 시스템에서 서버를 시작할 때 큰 값을 설정하면 서버가 높은 비율의 행 변경과 관련된 백그라운드 유지 보수 작업을 처리 할 수 있습니다.

    innodb_io_capacity 제한은 모든 버퍼 풀 인스턴스에 대한 총 제한입니다. 더티 페이지가 플래시 될 때 innodb_io_capacity 제한 버퍼 풀 인스턴스간에 균등하게 분할됩니다.

    개별 5400 RPM 또는 7200 RPM 드라이브가 탑재 된 시스템에서는 원래 기본 100 까지 값을 작게하면 좋을 것입니다.

    이 매개 변수는 거의 시스템이 초당 수행 할 수있는 I / O 작업의 수를 설정하도록하십시오. 이상적으로는이 설정은 가능한 한 작게 유지합니다. 그러나 이러한 백그라운드 활동에 지연이 발생할 정도로 작게 마십시오. 값이 너무 큰 경우 데이터가 버퍼 풀 및 삽입 버퍼에서 즉시 제거되기 때문에 캐시를 사용하는 중요한 이점이 없습니다.

    이 값은 약 100 IOPS를 수행 할 수있는 이전 세대의 디스크 드라이브에서 실현 가능한 IOPS (I / O Operations Per Second)의 추정 비율을 나타냅니다. 현재 기본 200은 최신의 저장 장치가 더 높은 I / O 속도를 처리 할 수​​있는 것을 반영하고 있습니다.

    일반적으로 InnoDB 의 I / O에 사용되는 드라이브 (특히 높은 수치의 IOPS를 처리 할 수있는 고속 드라이브)의 수에 따라 값을 크게 할 수 있습니다. 예를 들어, InnoDB 에 대해 여러 디스크 또는 솔리드 스테이트 디스크를 사용하는 시스템에서는이 매개 변수를 제어하는 기능의 이점을 얻을 수있는 가능성이 높아집니다.

    매우 큰 수치를 지정할 수 있습니다 만, 실제로는 이러한 큰 값으로하면 이점을 얻을 수 있다고도 적습니다. 예를 들어, 100 만 매우 큰 값으로 간주합니다.

    innodb_io_capacity 값은 innodb_io_capacity_max 에 정의 된 최대 값까지 100 개 이상의 임의의 숫자로 설정할 수 있습니다. 기본값은 200 입니다. 이 매개 변수의 값은 MySQL 옵션 파일 ( my.cnf 또는 my.ini )로 설정하거나 SET GLOBAL 명령 (여기에는 SUPER 권한이 있어야합니다)에서 동적으로 변경할 수 있습니다.

    이 옵션에 대한 자세한 지침은 섹션 14.13.8 "InnoDB 마스터 스레드의 I / O 속도의 구성" 을 참조하십시오. InnoDB의 I / O 성능에 대한 일반적인 정보는 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_io_capacity_max

    도입 5.6.6
    명령 줄 형식 --innodb_io_capacity_max = #
    시스템 변수 이름 innodb_io_capacity_max
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (32 비트 플랫폼) 유형 integer
    기본 see description
    최소 2000
    최대 값 2 ** 32-1
    허용되는 값 (Unix 64 비트 플랫폼) 유형 integer
    기본 see description
    최소 2000
    최대 값 2 ** 64-1
    허용되는 값 (Windows 64 비트 플랫폼) 유형 integer
    기본 2000
    최소 2000
    최대 값 2 ** 32-1

    긴급 innodb_io_capacity 설정을 확장 할 때 InnoDB 에서 허용되는 한도입니다. 시작할 때 innodb_io_capacity 설정을 지정하고 innodb_io_capacity_max 에 값을 지정하지 않는 경우는 innodb_io_capacity_max 의 기본값이 innodb_io_capacity 의 2 배로 하한이 2000입니다. 또한 2000은 초기 기본 innodb_io_capacity_max 구성입니다.

    innodb_io_capacity_max 설정은 모든 버퍼 풀 인스턴스에 대한 총 제한입니다.

    MySQL 5.6 개발중인 단기간이 변수는 innodb_max_io_capacity 라고했습니다. MySQL 5.6.7에서는 innodb_io_capacity 옵션과의 관계를 강조하기 위해 innodb_io_capacity_max 로 이름이 ​​변경되었습니다.

  • innodb_large_prefix

    도입 5.6.3
    명령 줄 형식 --innodb_large_prefix
    시스템 변수 이름 innodb_large_prefix
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    이 옵션을 활성화하면 DYNAMIC 및 COMPRESSED 행 형식을 사용하는 InnoDB 테이블에서 767 바이트보다 긴 (최대 3072 바이트) 인덱스 키 프리픽스 가 허용됩니다. (이러한 테이블의 생성에는 innodb_file_format = barracuda 및 innodb_file_per_table = true 옵션 값도 필요합니다.) 다양한 설정에서 인덱스 키 프리픽스와 관련된 관련성의 최대 값은 섹션 14.6.7 "InnoDB 테이블에서의 제한" 을 참조하십시오.

    REDUNDANT 및 COMPACT 행 형식을 사용하여 테이블에서는이 옵션은 키 프리픽스의 길이는 영향을받지 않습니다.

  • innodb_lock_wait_timeout

    명령 줄 형식 --innodb_lock_wait_timeout = #
    시스템 변수 이름 innodb_lock_wait_timeout
    변수 범위 글로벌 세션
    동적 변수 예
    허용되는 값 유형 integer
    기본 50
    최소 1
    최대 값 1073741824

    행 잠금 이 해제 될 때까지 InnoDB 트랜잭션 이 대기하는 시간 (초)입니다. 기본값은 50 초입니다. 다른 InnoDB 트랜잭션에 잠겨있는 행에 액세스를 시도 트랜잭션이 행에 대한 쓰기 액세스를 최대로이 초 간 기다린 후 다음 오류를 발행합니다.

     ERROR 1205 (HY000) : Lock wait timeout exceeded; try restarting transaction
    

    잠금 대기 시간 초과가 발생하면 (트랜잭션 전체가 아닌) 현재 문이 롤백 됩니다. 전체 트랜잭션을 롤백하려면 --innodb_rollback_on_timeout 옵션을 사용하여 서버를 시작합니다. 섹션 14.19.4 "InnoDB 오류 처리" 를 참조하십시오.

    고도의 대화 형 응용 프로그램 또는 OLTP 시스템에서는 사용자의 피드백을 신속하게보고 나중에 처리하기 위해 업데이트를 큐에 넣거나하기 위해이 값을 작게하면 좋을 것입니다. 장시간 실행되는 백엔드 조작 (기타 대규모 삽입 또는 갱신 조작이 완료 될 때까지 대기하는 데이터웨어 하우스에서의 변환 단계 등)에서는이 값을 크게하면 좋을 것입니다.

    innodb_lock_wait_timeout 은 InnoDB 행 잠금에만 적용됩니다. MySQL의 테이블 락 은 InnoDB 내부에서는 발생하지 않고,이 시간은 테이블 잠금 대기에는 적용되지 않습니다.

    교착 상태 는 InnoDB 에 의해 즉시 감지하고 교착 상태가 된 트랜잭션 중 하나가 롤백되기 때문에 교착 상태는 잠금 대기 시간 제한이 적용되지 않습니다.

    innodb_lock_wait_timeout 는 런타임에 SET GLOBAL 또는 SET SESSION 문 함께 설정할 수 있습니다. GLOBAL 값을 변경하려면 SUPER 권한이 필요합니다. 이를 변경하면 이후에 연결된 모든 클라이언트의 작업이 영향을받습니다. 모든 클라이언트가 innodb_lock_wait_timeout 의 SESSION 설정을 변경할 수 있으며, 클라이언트 만 영향을받습니다.

  • innodb_locks_unsafe_for_binlog

    비추천 5.6.3
    명령 줄 형식 --innodb_locks_unsafe_for_binlog
    시스템 변수 이름 innodb_locks_unsafe_for_binlog
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    이 변수는 InnoDB 검색과 인덱스 스캔에서 갭 잠금 을 사용하는 방법이 영향을받습니다. MySQL 5.6.3의 시점에서는 innodb_locks_unsafe_for_binlog 는 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.

    일반적으로 InnoDB 는 인덱스 행 잠금 및 갭 잠금 을 조합 한 「넥스트 키 잠금 "이라는 알고리즘이 사용됩니다. InnoDB 는 테이블 인덱스를 검색 또는 스캔 할 때 생성 된 인덱스 레코드에 공유 락 또는 배타 락을 설정하는 방법으로 행 수준 잠금을 실행합니다.따라서 행 레벨 락은 실제로 인덱스 레코드 잠금입니다. 게다가 어느 인덱스 레코드에 넥스트 키 잠금은 인덱스 레코드 앞의 '갭'에도 영향을받습니다. 즉, 넥스트 키 잠금은 인덱스 레코드 잠금과 그 인덱스 레코드의 전의 갭에 대한 갭 잠금을 조합 한 것입니다.세션이 인덱스의 레코드 R 에 공유 락 또는 배타 락을 가지고 있다면, 다른 세션이 인덱스 순서로 R 의 직전에있는 갭에 새로운 인덱스 레코드를 삽입 할 수 없습니다. 섹션 14.2.6 "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 보다 작아 유연한 제어가 제공됩니다. 갭 락에 대한 격리 수준의 영향에 대한 추가 자세한 내용은 섹션 13.3.6 "SET TRANSACTION 구문" 을 참조하십시오.

    갭 잠금이 해제되면 다른 세션이 새 행을 간격에 포함 할 수 있습니다 innodb_locks_unsafe_for_binlog 를 사용하면 팬텀의 문제가 발생할 수 있습니다. child 테이블의 id 컬럼에 인덱스가 식별자의 값이 100보다 큰 모든 행을 테이블에서 읽기, 선택된 행의 일부 열을 나중에 업데이트하겠다는 의도 잠금한다고 가정합니다.

     SELECT * FROM child WHERE id> 100 FOR UPDATE;
    

    쿼리는 id 가 100보다 큰 첫 번째 레코드에서 인덱스가 스캔됩니다. 그 범위 내의 인덱스 레코드에 설정된 잠금은 갭에 삽입이 잠겨 있지 않은 경우는 다른 세션이 테이블에 새 행을 삽입 할 수 있습니다. 따라서 같은 트랜잭션 내에서 동일한 SELECT 를 다시 실행하면 쿼리에서 반환 된 결과 집합에 새 행을 찾을 수 있습니다. 이것은 데이터베이스에 새 항목이 추가 된 경우, InnoDB 로 직렬화 가능성이 보장되지 않는 것을 의미합니다. 따라서 innodb_locks_unsafe_for_binlog 가 유효한 경우에 InnoDB 에 의해 보증되는 최대의 분리 레벨은 READ COMMITTED 됩니다. (경쟁 직렬화 가능성은 계속 보장됩니다.) 팬텀의 추가 정보 섹션 14.2.7 "넥스트 키로 크에 의한 팬텀 문제 해결" 을 참조하십시오.

    innodb_locks_unsafe_for_binlog 를 사용하는 경우에는 다음과 같은 영향도 발생합니다.

    • UPDATE 또는 DELETE 문은 InnoDB 는 업데이트 또는 삭제의 대상이되는 행에 대해서만 잠금을 유지합니다. 일치하지 않는 행의 레코드 잠금은 MySQL에 의한 WHERE 조건의 평가 후 해제됩니다. 이로 인해 교착 상태의 가능성이 크게 낮아지고 있지만 여전히 발생할 수는 있습니다.

    • UPDATE 문 인 행이 이미 잠겨 있었을 경우, InnoDB 는 " 반 일관성 " 읽기를 수행하고 마지막으로 커밋 된 버전을 MySQL에 돌려주기 위해서, MySQL은 행이 UPDATE 의 WHERE 조건에 일치하는지 여부를 확인할 수 있습니다. 그 행이 일치하는 경우 (해당 행을 갱신 할 필요가있는 경우), 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;
    

    이 경우 테이블에 인덱스가 설정되어 있지 않기 때문에, 검색 및 인덱스 스캔은 숨겨진 클러스터 된 인덱스를 사용하여 레코드 잠금이 이루어집니다 ( 섹션 14.2.13.2 "클러스터 인덱스와 보조 인덱스 " 을 참조하십시오).

    클라이언트가 다음 문을 사용하여 UPDATE 를 실행한다고 가정합니다.

    SET autocommit = 0;
    UPDATE t SET b = 5 WHERE b = 3;
    

    또한 두 번째 클라이언트가 첫 번째 클라이언트를 실행 한 후 다음 문을 실행하여 UPDATE 를 실행한다고 가정합니다.

    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은 행이 UPDATE 의 WHERE 조건에 일치하는지 여부를 판단 할 수 합니다.

    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 = #
    시스템 변수 이름 innodb_log_buffer_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 8388608
    최소 262144
    최대 값 4294967295

    디스크의 로그 파일 에 기록 할 때 InnoDB 에서 사용되는 버퍼의 크기 (바이트)입니다. 기본값은 8M 바이트입니다. 로그 버퍼 를 크게하면 트랜잭션이 커밋 하기 전에 디스크에 로그를 기록하지 않고도 대규모 트랜잭션 을 실행할 수 있습니다. 따라서 많은 행을 갱신, 삽입 또는 삭제 트랜잭션의 경우 로그 버퍼를 늘리면 디스크 I / O를 줄일 수 있습니다. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_log_compressed_pa​​ges

    도입 5.6.11
    명령 줄 형식 --innodb_log_compressed_pa​​ges = #
    시스템 변수 이름 innodb_log_compressed_pa​​ges
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 ON

    다시 압축 된 페이지 의 이미지가 InnoDB 의 Redo 로그 에 저장되는지 여부를 지정합니다.

    이 변수는 MySQL 5.6.11에서 추가되었다.

  • innodb_log_file_size

    명령 줄 형식 --innodb_log_file_size = #
    시스템 변수 이름 innodb_log_file_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (<= 5.6.2) 유형 integer
    기본 5242880
    최소 1048576
    최대 값 4GB / innodb_log_files_in_group
    허용되는 값 (> = 5.6.3 <= 5.6.7) 유형 integer
    기본 5242880
    최소 1048576
    최대 값 512GB / innodb_log_files_in_group
    허용되는 값 (> = 5.6.8) 유형 integer
    기본 50331648
    최소 1048576
    최대 값 512GB / innodb_log_files_in_group

    로그 그룹 내의 각 로그 파일 의 크기 (바이트)입니다. 로그 파일을 결합한 크기 ( innodb_log_file_size * innodb_log_files_in_group )는 512G 바이트보다 약간 작은 최대 값을 초과 할 수 없습니다. 기본값은 48M 바이트입니다. 적절한 값의 범위는 1M 바이트에서 1 / 버퍼 풀 의 N 번째의 크기까지입니다. 여기서 N 은 그룹 내의 로그 파일의 수입니다. 값이 클수록, 버퍼 풀에서 필요한 체크 포인트 플래시 활동의 수가 줄어들 기 때문에 디스크 I / O를 줄일 수 있습니다. 또한 로그 파일을 크게하면 충돌 복구 의 속도가 느려집니다. 그러나 MySQL 5.5 이상에서는 복구 성능이 개선되고 있기 때문에 로그 파일의 크기에 대한 고려 사항도 줄어 듭니다. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

    중요

    Bug # 69477로 인해 외부에 저장된 큰 BLOB 필드에 대한 Redo 로그 기록을 통해 최신의 체크 포인트를 덮어 쓸 수 있습니다. 이 버그를 해결하기 위해 MySQL 5.6.20에서 도입 된 패치를 적용하면 BLOB 에 기록 된 Redo 로그의 크기가 Redo 로그 파일 크기의 10 %로 제한됩니다. 이러한 제한의 결과로 innodb_log_file_size 테이블의 행에서 발견 된 최대의 BLOB 데이터 크기의 10 배보다 큰 값으로 다른 변수 길이 필드 ( VARCHAR , VARBINARY 및 TEXT 형 필드)의 길이 를 더한 값으로 설정해야합니다.

    MySQL 5.6.22에서는 Redo 로그 BLOB 쓰기 제한은 총 Redo 로그 크기 ( innodb_log_file_size * innodb_log_files_in_group )의 10 %에 이완했습니다. (Bug # 19498877)

  • innodb_log_files_in_group

    명령 줄 형식 --innodb_log_files_in_group = #
    시스템 변수 이름 innodb_log_files_in_group
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 2
    최소 2
    최대 값 100

    로그 그룹 내의 로그 파일 의 수입니다. InnoDB 는 파일에 윤상에 기록합니다. 기본 (권장) 값은 2입니다. 이러한 파일의 위치는 innodb_log_group_home_dir 으로 지정됩니다. 로그 파일을 결합한 크기 ( innodb_log_file_size * innodb_log_files_in_group )는 최대 512G 바이트 수 있습니다.

  • innodb_log_group_home_dir

    명령 줄 형식 --innodb_log_group_home_dir = path
    시스템 변수 이름 innodb_log_group_home_dir
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 디렉토리 이름

    InnoDB 의 Redo 로그 파일에 대한 디렉토리 경로입니다. 이 숫자는 innodb_log_files_in_group 으로 지정됩니다. 어떤 InnoDB 로그 변수도 지정하지 않으면 기본적으로 MySQL 데이터 디렉토리에 ib_logfile0 및 ib_logfile1 라는 2 개의 파일이 생성됩니다. 이러한 크기는 innodb_log_file_size 시스템 변수의 크기로 지정됩니다.

  • innodb_lru_scan_depth

    도입 5.6.3
    명령 줄 형식 --innodb_lru_scan_depth = #
    시스템 변수 이름 innodb_lru_scan_depth
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (32 비트 플랫폼) 유형 integer
    기본 1024
    최소 100
    최대 값 2 ** 32-1
    허용되는 값 (64 비트 플랫폼) 유형 integer
    기본 1024
    최소 100
    최대 값 2 ** 64-1

    InnoDB 의 버퍼 풀 의 플래시 조작 알고리즘 및 추론 기법에 영향을 미치는 매개 변수입니다. 주로 I / O 집중 워크로드를 조정하는 성능의 전문가가 관심을 가지는 것입니다. 버퍼 풀 인스턴스에 대해 page_cleaner 스레드가 플래시 더티 페이지 를 검색 할 때 얼마나 깊이 버퍼 풀 LRU리스트를 스캔 할 것인지를 지정합니다. 이것은 1 초에 한 번씩 실행되는 백그라운드 작업입니다. 일반적인 워크로드에서 여분의 I / O 용량을 가지고있는 경우이 값을 늘립니다. 쓰기가 집중하는 워크로드에서 I / O 용량이 꽉 찬 경우이 값을 작게합니다 (특히 큰 버퍼 풀을 가지고있는 경우). 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_max_dirty_pages_pct

    명령 줄 형식 --innodb_max_dirty_pages_pct = #
    시스템 변수 이름 innodb_max_dirty_pages_pct
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 75
    최소 0
    최대 값 99

    InnoDB 는 더티 페이지 의 비율이이 값을 초과하지 않도록, 버퍼 풀 에서 데이터를 플래시 하려고 시도합니다. 기본값은 75입니다.

    innodb_max_dirty_pages_pct 설정은 플래시 활동의 대상을 설정합니다. 플래시의 빈도에 영향을주지 않습니다. 플래시 주파수 관리는 섹션 14.13.1.2 "InnoDB 버퍼 풀 플러시 빈도 구성" 을 참조하십시오.

    이 변수에 대한 자세한 내용은 섹션 14.13.1.6 "InnoDB 버퍼 풀의 플래시 튜닝" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_max_dirty_pages_pct_lwm

    도입 5.6.6
    명령 줄 형식 --innodb_max_dirty_pages_pct_lwm = #
    시스템 변수 이름 innodb_max_dirty_pages_pct_lwm
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 99

    더티 페이지의 비율을 제어하기 위해 사전 플래시가 활성화되어있는 경우 더티 페이지 의 비율을 나타내는 하위 경계 값입니다. 기본 0에서 사전 플래시 동작이 완전히 비활성화됩니다. 이 변수에 대한 자세한 내용은 섹션 14.13.1.6 "InnoDB 버퍼 풀의 플래시 튜닝" 을 참조하십시오.

  • innodb_max_purge_lag

    명령 줄 형식 --innodb_max_purge_lag = #
    시스템 변수 이름 innodb_max_purge_lag
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 4294967295

    이 변수는 제거 작업이 늦어진 때 INSERT , UPDATE 및 DELETE 작업을 지연시키는 방법을 제어합니다 ( 섹션 14.2.12 "InnoDB 멀티 버전" 을 참조하십시오). 기본값은 0 (지연 없음)입니다.

    InnoDB 트랜잭션 시스템은 UPDATE 또는 DELETE 조작으로 삭제 표시된 인덱스 레코드를 포함하는 트랜잭션의 목록을 유지합니다. purge_lag 값이 목록의 길이를 나타냅니다. purge_lag 이 innodb_max_purge_lag 를 초과하면 각 INSERT , UPDATE 및 DELETE 작업이 지연됩니다.

    purge_lag 이 매우 커질 같은 극단적 인 상황에서 과도한 지연을 방지하려면 innodb_max_purge_lag_delay 구성 옵션을 설정하면 지연의 양에 제한을 설정할 수 있습니다. 지연은 빠지밧찌을 시작할 때 계산됩니다.

    트랜잭션이 소규모 (100 바이트 정도의 크기)이며, 허용되는 미 퍼지 InnoDB 테이블 행이 100M 바이트라고 가정하면, 문제가있는 워크로드에 적합한 일반적인 설정이 100 만된다 수 있습니다.

    지연 값은 InnoDB Monitor 출력의 TRANSACTIONS 섹션에 기록 목록의 길이로 표시됩니다. 예를 들어, 출력에 다음 행이 포함되어있는 경우에는 지연 값이 20입니다.

     ------------
    TRANSACTIONS
     ------------
    Trx id counter 0 290328385
    Purge done for trx 's n : o <0 290315608 undo n : o <0 17
    History list len​​gth 20
    

    일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_max_purge_lag_delay

    도입 5.6.5
    명령 줄 형식 --innodb_max_purge_lag_delay = #
    시스템 변수 이름 innodb_max_purge_lag_delay
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0
    최소 0

    innodb_max_purge_lag 구성 옵션에 부과 된 지연의 최대 지연을 밀리 초 단위로 지정합니다. 0이 아닌 값은 innodb_max_purge_lag 의 값에 따라 공식에서 계산 된 지연 기간에 제한을 나타냅니다. 기본 제로 지연 간격에 제한이 부과되지 않는 것을 의미합니다.

    일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_mirrored_log_groups

    효과는 없습니다.이 변수는 MySQL 5.6.11 시점에서 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.

  • innodb_monitor_disable

    도입 5.6.2
    명령 줄 형식 --innodb_monitor_disable = counter | module | pattern | all]
    시스템 변수 이름 innodb_monitor_disable
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string

    INFORMATION_SCHEMA.INNODB_METRICS 테이블에서 하나 이상의 카운터 를 해제합니다. 사용법은 섹션 21.29.19 "INFORMATION_SCHEMA INNODB_METRICS 테이블" 을 참조하십시오.

  • innodb_monitor_enable

    도입 5.6.2
    명령 줄 형식 --innodb_monitor_enable = counter | module | pattern | all]
    시스템 변수 이름 innodb_monitor_enable
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string

    INFORMATION_SCHEMA.INNODB_METRICS 테이블에서 하나 이상의 카운터 를 선택합니다. 사용법은 섹션 21.29.19 "INFORMATION_SCHEMA INNODB_METRICS 테이블" 을 참조하십시오.

  • innodb_monitor_reset

    도입 5.6.2
    명령 줄 형식 --innodb_monitor_reset = counter | module | pattern | all]
    시스템 변수 이름 innodb_monitor_reset
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string

    INFORMATION_SCHEMA.INNODB_METRICS 테이블에서 하나 이상의 카운터 에 대응하는 카운트를 0으로 재설정합니다. 사용법은 섹션 21.29.19 "INFORMATION_SCHEMA INNODB_METRICS 테이블" 을 참조하십시오.

  • innodb_monitor_reset_all

    도입 5.6.2
    명령 줄 형식 --innodb_monitor_reset_all = counter | module | pattern | all]
    시스템 변수 이름 innodb_monitor_reset_all
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 string

    INFORMATION_SCHEMA.INNODB_METRICS 테이블에서 하나 이상의 카운터 에 대응하는 모든 값 (최소, 최대 등)을 재설정합니다. 사용법은 섹션 21.29.19 "INFORMATION_SCHEMA INNODB_METRICS 테이블" 을 참조하십시오.

  • innodb_old_blocks_pct

    명령 줄 형식 --innodb_old_blocks_pct = #
    시스템 변수 이름 innodb_old_blocks_pct
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 37
    최소 5
    최대 값 95

    이전 블록 하위 목록 에서 사용되는 InnoDB 의 버퍼 풀 의 예상 비율을 지정합니다. 값의 범위는 5 ~ 95입니다. 기본값은 37 (즉, 수영장 3/8)입니다. 종종 innodb_old_blocks_time 와 함께 사용됩니다. 자세한 내용은 섹션 14.13.1.3 "버퍼 풀 스캔을 견딜 수 있도록하겠다" 을 참조하십시오. LRU 알고리즘과 새우 과자 정책 등의 버퍼 풀 관리 내용은 섹션 8.9.1 "InnoDB 버퍼 풀" 을 참조하십시오.

  • innodb_old_blocks_time

    명령 줄 형식 --innodb_old_blocks_time = #
    시스템 변수 이름 innodb_old_blocks_time
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.5) 유형 integer
    기본 0
    최소 0
    최대 값 2 ** 32-1
    허용되는 값 (> = 5.6.6) 유형 integer
    기본 1000
    최소 0
    최대 값 2 ** 32-1

    0이 아닌 값으로하면 버퍼 풀 은 테이블 전체 스캔 시 등의 단기간에서만 참조되는 데이터로 가득되기 때문에 보호됩니다. 이 값을 크게하면 테이블 전체 스캔이 버퍼 풀에 캐시 된 데이터와 상호 작용할 수에서 더 보호됩니다.

    첫 번째 액세스 후 오래된 하위 목록 에 삽입되는 블록이 새 하위 목록으로 이동하기까지 거기에 머물해야하는 기간을 밀리 초 (ms) 단위로 지정합니다. 값을 0으로하면 이전 하위 목록에 삽입 된 블록은 삽입 후 얼마나 액세스가 발생하는지에 관계없이 첫 번째 액세스 직후에 새 하위 목록으로 이동합니다. 이 값이 0보다 크면 블록은 첫 번째 액세스 후 적어도 그 밀리 세컨드로 액세스가 발생할 때까지 이전 하위 목록에 남아 있습니다. 예를 들어, 1000 값은 블록을 첫 번째 액세스 후 그들이 새 하위 목록으로 이동되는 자격을 얻을 때까지 1 초 이전 하위 목록에 남아 있습니다.

    기본값은 MySQL 5.6.6의 시점에서 1000, 그 이전은 0입니다.

    대부분의 경우이 변수는 innodb_old_blocks_pct 와 함께 사용됩니다. 자세한 내용은 섹션 14.13.1.3 "버퍼 풀 스캔을 견딜 수 있도록하겠다" 을 참조하십시오. LRU 알고리즘과 새우 과자 정책 등의 버퍼 풀 관리 내용은 섹션 8.9.1 "InnoDB 버퍼 풀" 을 참조하십시오.

  • innodb_online_alter_log_max_size

    도입 5.6.6
    명령 줄 형식 --innodb_online_alter_log_max_size = #
    시스템 변수 이름 innodb_online_alter_log_max_size
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 134217728
    최소 65536
    최대 값 2 ** 64-1

    InnoDB 테이블에 대한 온라인 DDL 작업시 사용되는 임시 로그 파일 크기에 제한을 지정합니다. 생성 된 인덱스 또는 변경되는 테이블마다 이러한 로그 파일이 1 개 존재합니다. 이 로그 파일에는 DDL 작업시 테이블에 삽입, 업데이트 또는 삭제 된 데이터가 저장됩니다. 임시 로그 파일은 innodb_sort_buffer_size 값에서 필요할 때 최대 innodb_online_alter_log_max_size 에 지정된 최대 값까지 확장됩니다. 임시 로그 파일 크기 제한을 초과 한 경우 ALTER TABLE 조작에 실패하고 커밋되지 않은 병렬 DML 작업이 롤백됩니다. 따라서이 옵션의 값을 크게하면 온라인 DDL 작업시에 수행 할 수있는 DML 수는 많아집니다 만, 로그 데이터를 적용하기 위해 테이블을 잠금되면 DDL 작업 종료시의 기간도 길어집니다 .

  • innodb_open_files

    명령 줄 형식 --innodb_open_files = #
    시스템 변수 이름 innodb_open_files
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (<= 5.6.5) 유형 integer
    기본 300
    최소 10
    최대 값 4294967295
    허용되는 값 (> = 5.6.6) 유형 integer
    기본 -1 (autosized)
    최소 10
    최대 값 4294967295

    이 변수는 여러 InnoDB 테이블 스페이스 를 사용하는 경우에만 해당합니다. MySQL에서 한 번에 열려있는 .ibd 파일 의 최대 수를 지정합니다. 최소값은 10입니다. MySQL 5.6.6의 시점에서는 innodb_file_per_table 이 비활성화되어있는 경우 기본값은 300입니다. 그렇지 않으면 300보다 큰 값 및 table_open_cache 입니다. 5.6.6 이전의 기본값은 300입니다.

    .ibd 파일에 사용되는 파일 디스크립터는 InnoDB 테이블에서만 사용됩니다. 그들은 --open-files-limit 서버 옵션에 의해 지정된 것에서는 독립적 테이블 캐시 작업에 영향을주지 않습니다. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_optimize_fulltext_only

    도입 5.6.4
    명령 줄 형식 --innodb_optimize_fulltext_only = #
    시스템 변수 이름 innodb_optimize_fulltext_only
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB 테이블에서 OPTIMIZE TABLE 문 동작 방법을 변경합니다. FULLTEXT 인덱스를 포함 InnoDB 테이블의 유지 보수 작업시에 일시적으로 활성화하는 데 사용됩니다.

    기본적으로 OPTIMIZE TABLE 은 테이블의 클러스터 된 인덱스 의 데이터를 재구성합니다. 이 옵션을 활성화하면 OPTIMIZE TABLE 은이 같은 테이블 데이터의 재구성을 생략하고 대신 FULLTEXT 인덱스 용으로 새롭게 추가, 삭제 및 업데이트 된 토큰 데이터를 처리합니다. InnoDB 테이블의 FULLTEXT 인덱스에 대한 자세한 내용은 섹션 14.2.13.3 "FULLTEXT 인덱스" 를 참조하십시오.

  • innodb_page_size

    도입 5.6.4
    명령 줄 형식 --innodb_page_size = # k
    시스템 변수 이름 innodb_page_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (> = 5.6.4) 유형 enumeration
    기본 16384
    유효한 값 4k
    8k
    16k
    4096
    8192
    16384

    MySQL 인스턴스 내의 모든 InnoDB 테이블 스페이스 의 페이지 크기 를 지정합니다. 이 값은 인스턴스가 작성된 후 상수가 남아있는 경우에 설정됩니다. 페이지 크기 값 16k (기본값), 8k 또는 4k 를 사용하여 지정할 수 있습니다. 또한 바이트 (4096,8192,16384)에서 페이지 크기를 지정할 수도 있습니다.

    최대 페이지 크기는 기본이 광범위한 워크로드 (특히 테이블 스캔을 수반하는 쿼리 및 일괄 업데이트를 수반 DML 작업)에 적합합니다. 페이지 크기가 작을수록 많은 작은 기록되는 OLTP 워크로드의 효율성이 높아질 가능성이 있습니다. 반면 단일 페이지에 많은 행이 포함 된 경우 충돌 문제가 발생할 수 있습니다. 페이지를 줄이면 일반적으로 작은 블록 크기를 사용하는 SSD 저장 ​​장치의 효율성이 높아질 가능성도 있습니다. InnoDB 의 페이지 크기를 저장 장치의 블록 크기에 근접하면 디스크에 다시 기록되지 않은 변경 데이터의 양이 최소화됩니다. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_print_all_deadlocks

    도입 5.6.2
    명령 줄 형식 --innodb_print_all_deadlocks = #
    시스템 변수 이름 innodb_print_all_deadlocks
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    이 옵션을 사용하면 mysqld 오류 로그 에 InnoDB 의 사용자 트랜잭션의 모든 교착 상태 에 대한 정보가 기록됩니다. 그렇지 않으면, SHOW ENGINE INNODB STATUS 명령을 사용하면 마지막 교착 상태에 대한 정보 만 표시됩니다. 부정 기적으로 발생하는 InnoDB 의 교착 상태는 InnoDB 에 의해 즉시 상황을 감지하고 자동으로 트랜잭션 중 하나가 롤백되기 때문에 반드시 문제가되는 것은 없습니다. 응용 프로그램에 롤백을 감지하고 작업을 다시 시도하기위한 적절한 오류 처리 로직이 존재하지 않는 경우 교착 상태가 발생하는 원인에 대해 문제를 해결하는 경우에이 옵션을 사용하면 좋을 것입니다. 다수의 교착 상태가 발생하면 각 트랜잭션이 같은 순서로 테이블에 액세스하도록 (이렇게하면 교착 상태를 방지 할 수 있습니다) 여러 테이블에 대해 DML 또는 SELECT ... FOR UPDATE 문을 발행하는 트랜잭션을 재 구축 할 필요가 있음을 나타낼 수 있습니다.

  • innodb_purge_batch_size

    명령 줄 형식 --innodb_purge_batch_size = #
    시스템 변수 이름 innodb_purge_batch_size
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.2) 유형 integer
    기본 20
    최소 1
    최대 값 5000
    허용되는 값 (> = 5.6.3) 유형 integer
    기본 300
    최소 1
    최대 값 5000

    Redo 로그 레코드 단위로 표현되는 변경의 입도입니다. 그러면 퍼지 작업이 트리거되어 변경된 버퍼 풀 블록이 디스크로 플러시됩니다. 이 옵션은 innodb_purge_threads = n 설정과 함께 성능을 조정하는 데 사용되기 때문에 일반 사용자는 변경할 필요가 없습니다.

  • innodb_purge_threads

    명령 줄 형식 --innodb_purge_threads = #
    시스템 변수 이름 innodb_purge_threads
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (<= 5.6.1) 유형 integer
    기본 0
    최소 0
    최대 값 1
    허용되는 값 (> = 5.6.2 <= 5.6.4) 유형 integer
    기본 0
    최소 0
    최대 값 32
    허용되는 값 (> = 5.6.5) 유형 integer
    기본 1
    최소 1
    최대 값 32

    InnoDB의 퍼지 작업 전용 백그라운드 스레드 수입니다. MySQL 5.6.5에서의 새로운 기본 최소 값인 1은 제거 작업이 마스터 스레드 의 일부가 아니라 항상 백그라운드 스레드에서 실행되는 것을 나타냅니다. 0이 아닌 값으로하면 1 개 이상의 백그라운드 스레드에서 제거 작업이 수행되기 때문에 InnoDB의 내부 충돌을 줄일 수 있으며, 확장 성이 향상됩니다. 이 값을 1보다 크게하면 수많은 개별 퍼지 스레드가 생성되기 때문에 여러 테이블에 DML 작업이 실행되는 시스템의 효율성을 향상시킬 수 있습니다. 최대 값은 32입니다.

  • innodb_random_read_ahead

    도입 5.6.3
    명령 줄 형식 --innodb_random_read_ahead = #
    시스템 변수 이름 innodb_random_read_ahead
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB 의 I / O를 최적화하기 위해 임의의 예측 기술을 사용합니다. 랜덤 예측 기능은 InnoDB Plugin (버전 1.0.4)에서 삭제 되었기 때문에, InnoDB Plugin 이 InnoDB 의 " 내장 " 버전이 시점에서는 MySQL 5.5.0에 포함되지 않았습니다. 랜덤 예측은 innodb_random_read_ahead 구성 옵션 (기본적으로 비활성화되어 있습니다)과 함께 MySQL 5.1.59 및 5.5.16 이후에 다시 도입되었습니다.

    다양한 유형의 미리 요청에 대한 성능 고려 사항에 대한 자세한 내용은 섹션 14.13.1.1 "InnoDB 버퍼 풀의 인출 (미리 읽기) 구성" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_read_ahead_threshold

    명령 줄 형식 --innodb_read_ahead_threshold = #
    시스템 변수 이름 innodb_read_ahead_threshold
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 56
    최소 0
    최대 값 64

    버퍼 풀 페이지를 프리 페치 할 때 InnoDB 에서 사용되는 선형 예측 의 민감도를 제어합니다. InnoDB 가 적어도 innodb_read_ahead_threshold 페이지 범위 (64 페이지)에서 연속해서 읽을 경우, 다음의 범위 전체 비동기 읽기가 시작됩니다. 허용되는 값의 범위는 0에서 64까지입니다. MySQL 5.6.1의 시점에서는 값을 0으로하면 예측이 해제됩니다. 5.6.1 이전에서는 값을 0으로하면 64 페이지의 범위의 경계 페이지를 읽을 때 미리 읽기가 트리거되었습니다. 기본 56에서 InnoDB 는 다음의 범위 전체 비동기 읽기를 시작하는 데 적어도 56 페이지 범위에서 연속적으로 읽어야합니다.

    이 예측 메커니즘을 통해 읽은 페이지 수 및 그 중에서 사용되지 않고 버퍼 풀에서 제거되는 수를 파악하면 innodb_read_ahead_threshold 매개 변수를 미세 조정하는 데 도움이됩니다. MySQL 5.5의 시점에서는 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 섹션에 표시됩니다.

    자세한 내용은 섹션 14.13.1.1 "InnoDB 버퍼 풀의 인출 (미리 읽기) 구성" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

  • innodb_read_io_threads

    명령 줄 형식 --innodb_read_io_threads = #
    시스템 변수 이름 innodb_read_io_threads
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 4
    최소 1
    최대 값 64

    InnoDB 에서의 읽기 작업에 사용되는 I / O 스레드 수입니다. 기본값은 4입니다. 쓰기 스레드에 대응하는 것은 innodb_write_io_threads 입니다. 자세한 내용은 섹션 14.13.6 "InnoDB 백그라운드 I / O 스레드 수 구성" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

    참고

    Linux 시스템에서는 기본 innodb_read_io_threads 설정에서 여러 (일반적으로 12 대보다 많은)의 MySQL 서버를 실행하면 innodb_write_io_threads 및 Linux의 aio-max-nr 설정이 시스템의 제한을 초과 할 가능성이 있습니다. 이상적으로 aio-max-nr 설정을 늘립니다. 해결 방법은 MySQL 구성 옵션 중 하나 또는 모두의 설정을 작게하면 좋을 것입니다.

  • innodb_read_only

    도입 5.6.7
    명령 줄 형식 --innodb_read_only = #
    시스템 변수 이름 innodb_read_only
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    서버를 읽기 전용 모드로 시작합니다. 읽기 전용 미디어에서 데이터베이스 응용 프로그램 또는 데이터 세트를 배포하는 데 사용됩니다. 여러 인스턴스에서 동일한 데이터 디렉토리를 공유 할 때 데이터웨어 하우스에서 사용할 수 있습니다. 사용 지침은 섹션 14.3.1 "읽기 전용 작업에 대한 InnoDB의 구성" 을 참조하십시오.

  • innodb_replication_delay

    명령 줄 형식 --innodb_replication_delay = #
    시스템 변수 이름 innodb_replication_delay
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 4294967295

    innodb_thread_concurrency 에 도달하면 슬레이브 서버에서 복제 스레드의 지연 (밀리 초)입니다.

  • innodb_rollback_on_timeout

    명령 줄 형식 --innodb_rollback_on_timeout
    시스템 변수 이름 innodb_rollback_on_timeout
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 OFF

    MySQL 5.6에서 InnoDB 는 기본적으로 트랜잭션 시간 초과 마지막 문만 롤백 합니다. --innodb_rollback_on_timeout 을 지정하면 트랜잭션 시간 제한에 따라 InnoDB 는 트랜잭션 전체를 중지 롤 (MySQL 4.1과 같은 방식이다).

  • innodb_rollback_segments

    도입 5.6.2
    명령 줄 형식 --innodb_rollback_segments = #
    시스템 변수 이름 innodb_rollback_segments
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 128
    최소 1
    최대 값 128

    트랜잭션 내에서 InnoDB를 사용하는 시스템 테이블 스페이스 에있는 롤백 세그먼트 의 수를 정의합니다. 이 설정은 계속 유효하지만 innodb_undo_logs 으로 바뀝니다.

  • innodb_sort_buffer_size

    도입 5.6.4
    명령 줄 형식 --innodb_sort_buffer_size = #
    시스템 변수 이름 innodb_sort_buffer_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 (5.6.4) 유형 integer
    기본 1048576
    최소 524288
    최대 값 67108864
    허용되는 값 (> = 5.6.5) 유형 integer
    기본 1048576
    최소 65536
    최대 값 67108864

    InnoDB 인덱스를 만들 때 데이터를 저장하는 데 사용되는 정렬 버퍼의 크기를 지정합니다. 지정된 크기는 내부 정렬 용 메모리에 입력 된 디스크에 기록 된 데이터의 양이 정의됩니다. 이것은 " 실행 " 이라는 것도 있습니다. 병합 단계 동안 지정된 크기의 버퍼 쌍을 " 읽어 " 병합됩니다. 설정이 높을수록, " 실행 " 수 및 병합 수가 적습니다. 이 것은 튜닝의 관점에서 이해하는 데 중요합니다.

    이 정렬 영역은 후속 인덱스 유지 관리 작업시이 아니라 인덱스를 만들 때 병합 정렬에서만 사용됩니다. 인덱싱이 완료되면 버퍼의 할당이 해제됩니다.

    이 옵션의 값은 온라인 DDL 작업시 병렬 DML을 기록하기 위해 임시 로그 파일이 확장되는 양을 제어 할 수 있습니다.

    이 설정을 구성 가능해질는 크기가 1048576 바이트 (1M 바이트) 하드 코딩되어있었습니다. 그 값은 현재도 기본 남아 있습니다.

    인덱스를 작성하는 ALTER TABLE 또는 CREATE TABLE 문이 실행될 때 각각이 옵션에 정의 된 크기를 가진 3 개의 버퍼가 할당됩니다. 또한 포인터에서 정렬을 수행 할 수 있도록 정렬 버퍼의 행에 보조 포인터가 할당됩니다 (이것은 정렬 작업시의 행의 이동과 다릅니다).

    일반적인 정렬 작업은 다음과 같은 공식을 사용하여 메모리 사용량을 예측할 수 있습니다.

    (6 / * FTS_NUM_AUX_INDEX * / *
    (3 * @@ global.innodb_sort_buffer_size) + 2 * (
    @@ global.innodb_sort_buffer_size / dict_index_get_min_size (index) * /) 
    * 8 / * 64-bit sizeof * buf-> tuples * / ")
    

    " @@ global.innodb_sort_buffer_size / dict_index_get_min_size (index) " 는 유지되는 최대 튜플 수를 나타냅니다. " 2 * (@@ global.innodb_sort_buffer_size / * dict_index_get_min_size (index) * /) * 8 / * 64-bit size of * buf-> tuples * / 는 할당 된 보조 포인터 수를 나타냅니다 " .

    참고

    32 비트의 경우 8 대신에 4를 곱합니다.

    전체 인덱스에서 병렬 정렬에서는 innodb_ft_sort_pll_degree 설정에 곱합니다.

    (6 / * FTS_NUM_AUX_INDEX * / @@ global.innodb_ft_sort_pll_degree)
    
  • innodb_spin_wait_delay

    명령 줄 형식 --innodb_spin_wait_delay = #
    시스템 변수 이름 innodb_spin_wait_delay
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 6
    최소 0
    최대 값 4294967295

    스핀 락으로 폴링 사이의 최대 지연입니다. 이 메커니즘의 낮은 수준의 구현은 하드웨어와 운영 체제의 조합에 따라 다르기 때문에 지연은 일정한 시간 간격에 대응하지 않습니다. 기본값은 6입니다. 자세한 내용은 섹션 14.13.10 "스핀 록 폴링 구성" 을 참조하십시오.

  • innodb_stats_auto_recalc

    도입 5.6.6
    명령 줄 형식 --innodb_stats_auto_recalc = #
    시스템 변수 이름 innodb_stats_auto_recalc
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 ON

    테이블의 데이터가 크게 변경된 후에는 InnoDB 에 의해 자동으로 영구 통계 가 다시 계산됩니다. 현재 임계 값은 테이블의 행의 10 %입니다. 이 설정은 innodb_stats_persistent 옵션이 활성화되어 있거나 CREATE TABLE 또는 ALTER TABLE 문에서 STATS_PERSISTENT = 1 구가 설정되어있는 경우, 생성 된 테이블에 적용됩니다. 통계를 생성하기 위해 샘플로 검색되는 데이터의 양은 innodb_stats_persistent_sample_pages 구성 옵션으로 제어됩니다.

    innodb_stats_auto_recalc 에 대한 자세한 내용은 섹션 14.13.16.1 "영구 옵티 마이저 통계 매개 변수 구성" 을 참조하십시오.

  • innodb_stats_method

    도입 5.6.2
    명령 줄 형식 --innodb_stats_method = name
    시스템 변수 이름 innodb_stats_method
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 enumeration
    기본 nulls_equal
    유효한 값 nulls_equal
    nulls_unequal
    nulls_ignored

    InnoDB 테이블의 인덱스 값의 분포에 대한 통계 를 수집 할 때 서버가 NULL 값을 처리하는 방법입니다. 이 변수는 nulls_equal , nulls_unequal 및 nulls_ignored 의 3 개의 값을 지정할 수 있습니다. nulls_equal 의 경우 모든 NULL 인덱스 값을 동일한 값으로 간주, NULL 값의 숫자와 동일한 크기를 갖는 단일 값 그룹을 생성합니다. nulls_unequal 의 경우 NULL 값끼리를 동일하게 취급하고, 각각의 NULL 은 크기가 1 인 별도의 그룹을 생성합니다. nulls_ignored 의 경우 NULL 값은 무시됩니다.

    테이블 통계를 생성하기 위해 사용하는 방법은 섹션 8.3.7 "InnoDB와 MyISAM 인덱스 통계 컬렉션」 에 기재되어있는 바와 같이, 최적화 프로그램이 쿼리 실행을위한 인덱스를 선택하는 방법에 영향을 미칩니다.

  • innodb_stats_on_metadata

    명령 줄 형식 --innodb_stats_on_metadata
    시스템 변수 이름 innodb_stats_on_metadata
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (<= 5.6.5) 유형 boolean
    기본 ON
    허용되는 값 (> = 5.6.6) 유형 boolean
    기본 OFF

    이 변수를 사용하면 SHOW TABLE STATUS 와 SHOW INDEX 와 같은 메타 데이터 문이 실행될 때 또는 INFORMATION_SCHEMA 테이블 TABLES 또는 STATISTICS 에 액세스 할 때 InnoDB 에 의해 통계 가 업데이트됩니다. (이 업데이트는 ANALYZE TABLE 에서 실행되는 것과 비슷합니다.) 해제하면 이러한 작업시 InnoDB 에 의해 통계가 업데이트되지 않습니다. 이 설정을 영구적으로 비활성화하면 다수의 테이블 또는 인덱스를 가지는 스키마의 액세스 속도를 높일 수 있습니다. InnoDB 테이블이 관여하는 쿼리 실행 계획 의 안정성도 높일 수 있습니다.

    설정을 변경하려면 SET GLOBAL innodb_stats_on_metadata = mode 문을 발행합니다. 여기서 mode 는 ON 과 OFF 중 하나 (또는 1 과 0 중 하나)입니다. 이 설정을 변경하려면 SUPER 권한이 필요합니다. 변경하면 모든 연결 작업이 즉시 영향을받습니다.

    MySQL 5.6.6의 시점에서는이 변수는 기본적으로 비활성화되어 있습니다. 그 이전은 활성화되어 있습니다.

  • innodb_stats_persistent

    도입 5.6.6
    명령 줄 형식 --innodb_stats_persistent = setting
    시스템 변수 이름 innodb_stats_persistent
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 ON
    유효한 값 OFF
    ON
    0
    1

    InnoDB 인덱스 통계가 디스크에 유지되는지 여부를 지정합니다. 그렇지 않으면 자주 통계가 다시 계산 될 가능성이 있습니다. 그러면 쿼리의 실행 계획 이 변경 될 수 있습니다. 테이블이 생성되면이 설정이 각 테이블과 함께 저장됩니다. 테이블을 작성하기 전에 글로벌 수준에서 innodb_stats_persistent 을 설정하거나 CREATE TABLE 및 ALTER TABLE 문에서 STATS_PERSISTENT 절을 사용하여 시스템 전체의 설정을 무시하고 개별 테이블의 영구 통계를 구성 할 수도 수 있습니다.

    이 옵션에 대한 자세한 내용은 섹션 14.13.16.1 "영구 옵티 마이저 통계 매개 변수 구성" 을 참조하십시오.

  • innodb_stats_persistent_sample_pages

    도입 5.6.2
    명령 줄 형식 --innodb_stats_persistent_sample_pages = #
    시스템 변수 이름 innodb_stats_persistent_sample_pages
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 20

    인덱스 컬럼의 중요도 및 기타 통계 ( ANALYZE TABLE 에서 계산 된 통계 등)를 추정 할 때 샘플로 취득되는 인덱스 페이지 의 수입니다. 값을 크게하면 쿼리의 실행 계획 을 개선하는 인덱스 통계의 정확도가 개선되고 있지만 InnoDB 테이블에 ANALYZE TABLE 을 실행할 때 I / O가 증가하게됩니다. 추가 정보는 섹션 14.13.16.1 "영구 옵티 마이저 통계 매개 변수 구성" 을 참조하십시오.

    참고

    innodb_stats_persistent_sample_pages 에 큰 값을 설정하면 ANALYZE TABLE 의 실행 시간이 길어질 수 있습니다. 액세스되는 데이터베이스 페이지 수를 추정하는 방법은 섹션 14.13.17 "InnoDB 테이블에 ANALYZE TABLE의 복잡성 추정" 을 참조하십시오.

    이 옵션은 테이블에서 innodb_stats_persistent 설정이 켜져있는 경우에만 적용됩니다. 이 옵션이 테이블에서 꺼져 있다면, 대신 innodb_stats_transient_sample_pages 설정이 적용됩니다.

  • innodb_stats_sample_pages

    비추천 5.6.3
    명령 줄 형식 --innodb_stats_sample_pages = #
    시스템 변수 이름 innodb_stats_sample_pages
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 8
    최소 1
    최대 값 2 ** 64-1

    비추천입니다. 대신 innodb_stats_transient_sample_pages 을 사용하십시오.

  • innodb_stats_transient_sample_pages

    도입 5.6.2
    명령 줄 형식 --innodb_stats_transient_sample_pages = #
    시스템 변수 이름 innodb_stats_transient_sample_pages
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 8

    인덱스 컬럼의 중요도 및 기타 통계 ( ANALYZE TABLE 에서 계산 된 통계 등)를 추정 할 때 샘플로 취득되는 인덱스 페이지 의 수입니다. 기본값은 8입니다. 값을 크게하면 인덱스 통계의 정확성이 개선됩니다. 그러면 쿼리의 실행 계획 을 개선 할 수 있지만, InnoDB 테이블을 열거 나 통계를 다시 계산할 때 I / O가 증가하는 희생이 따릅니다. 자세한 내용은 섹션 14.13.16.2 "비 영구 옵티 마이저 통계 매개 변수 구성" 을 참조하십시오.

    참고

    innodb_stats_transient_sample_pages 에 큰 값을 설정하면 ANALYZE TABLE 의 실행 시간이 길어질 수 있습니다. 액세스되는 데이터베이스 페이지 수를 추정하는 방법은 섹션 14.13.17 "InnoDB 테이블에 ANALYZE TABLE의 복잡성 추정" 을 참조하십시오.

    이 옵션은 테이블에서 innodb_stats_persistent 설정이 꺼져있는 경우에만 적용됩니다. 이 옵션이 테이블에서 선택되어 있다면, 대신 innodb_stats_persistent_sample_pages 설정이 적용됩니다. innodb_stats_sample_pages 옵션의 위치를 가져옵니다.

  • innodb_status_output

    도입 5.6.16
    명령 줄 형식 --innodb_status_output
    시스템 변수 이름 innodb_status_output
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    표준 InnoDB Monitor의 정기적 인 출력을 활성화하거나 비활성화하는 데 사용됩니다. 또한 InnoDB Lock Monitor의 정기적 인 출력을 활성화하거나 비활성화 할 때 innodb_status_output_locks 와 함께 사용됩니다. 자세한 내용은 섹션 14.15 "InnoDB 모니터" 를 참조하십시오.

  • innodb_status_output_locks

    도입 5.6.16
    명령 줄 형식 --innodb_status_output_locks
    시스템 변수 이름 innodb_status_output_locks
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    InnoDB Lock Monitor의 정기적 인 출력을 활성화하거나 비활성화하는 데 사용됩니다. innodb_status_output 와 함께 사용해야합니다. 자세한 내용은 섹션 14.15 "InnoDB 모니터" 를 참조하십시오.

  • innodb_strict_mode

    명령 줄 형식 --innodb_strict_mode = #
    시스템 변수 이름 innodb_strict_mode
    변수 범위 글로벌 세션
    동적 변수 예
    허용되는 값 유형 boolean
    기본 OFF

    innodb_strict_mode 을 ON 하면 InnoDB 는 특정 조건에 해당하는 경고가 아니라 오류를 반환합니다. 기본값은 OFF 입니다.

    엄격 모드 는 SQL의 무시할 수있는 오타 나 문법 오류 또는 조작 모드와 SQL 문의 다양한 조합에 의한 의도하지 않은 다른 결과으로부터 보호하는 데 도움이됩니다. innodb_strict_mode 을 ON 하면 InnoDB 는 경고를 발행하여 지정된 문을 처리하는 (의도하지 않은 동작을 수반 할 가능성이 있습니다) 것이 아니라, 특정한 경우에 오류 상황이 발생합니다. 이것은 MySQL에서 허용되는 SQL 구문을 제어 경고없이 오류를 무시하거나 입력 구문과 데이터 값을 검증 할 것인가를 결정하는 MySQL의 sql_mode 와 비슷합니다.

    innodb_strict_mode 설정하여 CREATE TABLE , ALTER TABLE 및 CREATE INDEX 문 구문 오류 처리가 영향을받습니다. innodb_strict_mode 에서 선택한 페이지 크기에 레코드가 너무 큽니다 것이 원인으로, INSERT 또는 UPDATE 가 실패하지 않도록 레코드 크기의 체크도 사용할 수 있습니다.

    오라클은 CREATE TABLE , ALTER TABLE 및 CREATE INDEX 문에서 ROW_FORMAT 및 KEY_BLOCK_SIZE 절을 사용할 때, innodb_strict_mode 를 사용하는 것이 추천되고 있습니다. innodb_strict_mode 를 OFF 하면 InnoDB 는 경쟁 어구를 무시하고 테이블이나 인덱스를 만들고 메시지 로그에 경고 만 표시됩니다. 결과로 생성 된 테이블에서는 압축 된 테이블을 만들려고해도 압축되지 않는 등 의도 한 것과 다른 동작이 발생할 수 있습니다. innodb_strict_mode 을 ON 하면 이러한 문제가 발생하면 즉시 오류가 생성 된 테이블 또는 인덱싱되지 않기 때문에 이후의 문제 해결 세션이 방지됩니다.

    mysqld 를 시작할 때 명령 행에서 또는 my.cnf 또는 my.ini 구성 파일 에서 innodb_strict_mode 의 ON 과 OFF 를 전환 할 수 있습니다. SET [GLOBAL | SESSION] innodb_strict_mode = mode 문을 사용하면 런타임에 innodb_strict_mode 을 활성화하거나 비활성화 할 수 있습니다. 여기서 mode 는 ON 과 OFF 중 하나입니다. GLOBAL 값을 변경하려면 SUPER 권한이 필요합니다. 이를 변경하면 이후에 연결된 모든 클라이언트의 작업이 영향을받습니다. 모든 클라이언트가 innodb_strict_mode 의 SESSION 설정을 변경할 수 있으며, 클라이언트 만 설정의 영향을받습니다.

  • innodb_support_xa

    명령 줄 형식 --innodb_support_xa
    시스템 변수 이름 innodb_support_xa
    변수 범위 글로벌 세션
    동적 변수 예
    허용되는 값 유형 boolean
    기본 TRUE

    XA 트랜잭션 2 단계 커밋에서 InnoDB 지원을 활성화합니다. 그러면 트랜잭션을 준비 할 때 추가 디스크 플래시가 발생합니다. 이 설정은 기본입니다. XA 메커니즘은 내부에서 사용되므로 바이너리 로그가 켜져 있고 여러 스레드에서 데이터의 변경이 허용되는 모든 서버에서 중요합니다. 해제하면 라이브 데이터베이스가 커밋 할 때와는 다른 순서로 트랜잭션이 바이너리 로그에 기록 될 수 있습니다. 이렇게하면 재해 복구시와 복제 슬레이브에서 바이너리 로그가 재현 될 때 다른 데이터가 생성 될 수 있습니다. 하나의 스레드 만 데이터를 변경할 수없는 예외적 인 설정을 사용하는 경우를 제외하고 복제 마스터 서버는 해제하지 마십시오.

    하나의 스레드에서 데이터 변경 만 허용되는 서버에서는 InnoDB 테이블의 성능을 개선하기 위해이 옵션을 선택하는 것이 안전하며 권장하고 있습니다. 예를 들어, 복제 SQL 스레드 만 데이터를 변경하는 리플리케이션 슬레이브는 해제 할 수 있습니다.

    또한 안전한 바이너리 로깅 또는 복제에 필요 아니라 외부의 XA 트랜잭션 관리자를 사용하지 않는 경우에도이 옵션을 해제 할 수 있습니다.

  • innodb_sync_array_size

    도입 5.6.3
    명령 줄 형식 --innodb_sync_array_size = #
    시스템 변수 이름 innodb_sync_array_size
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 1
    최소 1
    최대 값 1024

    대량의 대기 thread를 포함한 워크로드의 동시성을 높이기 위해 스레드의 조정에 사용되는 내부 데이터 구조를 나눕니다. 이 설정은 MySQL 인스턴스 시작시 구성해야 나중에 수정할 수 없습니다. 대량의 (일반적으로 768 이상) 대기중인 스레드가 빈번하게 생성되는 워크로드에서는이 옵션 값을 크게하는 것이 좋습니다.

  • innodb_sync_spin_loops

    명령 줄 형식 --innodb_sync_spin_loops = #
    시스템 변수 이름 innodb_sync_spin_loops
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 30
    최소 0
    최대 값 4294967295

    스레드가 중단되기 전에 InnoDB 상호 배타적 잠금이 해제 될 때까지 스레드가 대기하는 횟수입니다. 기본값은 30입니다.

  • innodb_table_locks

    명령 줄 형식 --innodb_table_locks
    시스템 변수 이름 innodb_table_locks
    변수 범위 글로벌 세션
    동적 변수 예
    허용되는 값 유형 boolean
    기본 TRUE

    autocommit = 0 의 경우, InnoDB 는 LOCK TABLES 의 요구를 받아들입니다. MySQL은 모든 스레드가 테이블에 대한 모든 잠금을 해제 할 때까지 LOCK TABLES ... WRITE 에서 돌아 가지 않습니다. innodb_table_locks 의 디폴트 값은 1입니다. 이것은 autocommit = 0 .의 경우, LOCK TABLES 에 의해 InnoDB 테이블을 내부적으로 잠글 것을 의미합니다.

    MySQL 5.6에서는 LOCK TABLES ... WRITE 를 사용하여 명시 적으로 잠긴 테이블에는 innodb_table_locks = 0 이 잘못되었습니다. LOCK TABLES ... WRITE 암시 적으로 (예를 들어, 트리거를 사용하여) 또는 LOCK TABLES ... READ 하여 읽기 또는 쓰기에 잠긴 테이블은 유효합니다.

  • innodb_thread_concurrency

    명령 줄 형식 --innodb_thread_concurrency = #
    시스템 변수 이름 innodb_thread_concurrency
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 1000

    InnoDB 는이 변수에서 지정된 제한 이하의 숫자 운영 체제 스레드를 동시에 InnoDB 내부에 유지하려고 시도합니다 ( InnoDB 는 사용자 트랜잭션을 처리 할 때 운영 체제 스레드가 사용됩니다). 스레드 수가이 제한에 도달하면 이후 스레드는 실행 때까지 " 선입 선출 " (FIFO) 큐에서 대기합니다. 락을 대기하고있는 thread는 병렬 실행중인 스레드 수에 포함되지 않습니다.

    이 변수의 범위는 0에서 1000까지입니다. 값 0 (기본값)은 무제한의 병렬성 (병렬 검사 없음)로 해석됩니다. 스레드 동시성 체크를 해제하면 InnoDB 는 필요한만큼의 스레드를 만들 수 있습니다. 값을 0으로하면 InnoDB 내부 쿼리 및 SHOW ENGINE INNODB STATUS 출력의 ROW OPERATIONS 섹션에있는 큐 카운터의 쿼리 도 해제됩니다.

    MySQL 인스턴스와 다른 응용 프로그램에서 CPU 리소스를 공유하고 있거나 워크로드 또는 병렬 사용자 수가 증가하는 경우이 변수를 설정하는 것을 고려하십시오. 적절한 설정은 워크로드 컴퓨팅 환경 및 실행중인 MySQL 버전에 따라 다릅니다. 최적의 성능을 제공하는 설정을 결정하려면 다양한 값을 테스트해야합니다. innodb_thread_concurrency 는 동적 변수이기 때문에 이것을 사용하면 실시간 테스트 시스템에서 다양한 설정을 시도 할 수 있습니다. 특정 설정에 성능이 저하 된 경우에는 즉시 innodb_thread_concurrency 를 0으로 설정하십시오.

    다음 지침에 따라 적절한 설정을 찾아 유지하는 데 도움이됩니다.

    • 워크로드에 대한 병렬 사용자 스레드의 수가 64보다 적은 경우는 innodb_thread_concurrency = 0 을 설정합니다.

    • 워크로드의 부하가 항상 많거나 가끔 급상승하는 경우는 처음에 innodb_thread_concurrency = 128 을 설정하고 최적의 성능을 제공하는 스레드 수를 찾을 때까지 값을 96,80,64과 작게 하십시오. 예를 들어, 시스템에 일반적으로 40 - 50의 사용자가 존재하지만 정기적으로 그 수가 60,70, 심지어 200까지 상승한다고 가정합니다. 성능은 병렬 사용자가 80 일 때는 안정되어 있지만,이 수를 상회 할 것으로 저하가 보이기 시작합니다. 이 경우 성능에 영향을 회피하려면 innodb_thread_concurrency = 80 를 설정합니다.

    • InnoDB 에서 사용자 스레드에 대해 특정 수보다 vCPU (예를 들어, 20 개의 vCPU)가 사용되지 않도록하려면 innodb_thread_concurrency 을 그 수 (또는 실적에 따라 더 작은 숫자)로 설정합니다. MySQL을 다른 응용 프로그램에서 분리하는 것이 목적인 경우는 독점적으로 mysqld 프로세스를 vCPU에 바인딩하는 것을 고려해보십시오. 그러나 mysqld 프로세스의 부하가 항상 높은 것은 아니다 경우 독점 바인딩에 따라 최적의 하드웨어의 사용이 실현되지 않을 수 있습니다. 이 경우, mysqld 프로세스를 vCPU에 바인딩이 다른 응용 프로그램도 vCPU의 일부 또는 전부를 사용할 수 있습니다.

      참고

      운영 체제의 관점에서 보면, mysqld 프로세스를 바인딩하는 것보다 자원 관리 솔루션을 사용하여 (사용 가능한 경우) 응용 프로그램간에 CPU 시간을 공유하는 방법을 관리하는 것이 적절한 경우가 있습니다. 예를 들어, 다른 중요한 프로세스가 실행되고 있지 않은 경우 vCPU 시간의 90 %를 특정 응용 프로그램에 할당하고 다른 중요한 프로세스가 실행되고 있는 경우는 그 값을 40 %로 되돌립니다.

    • innodb_thread_concurrency 값이 너무 크면 시스템 내부 및 자원에 대한 경합이 증가하기 때문에 성능이 저하 될 수 있습니다.

    • 경우에 따라 최적의 innodb_thread_concurrency 가 vCPU 수보다 적을 수도 있습니다.

    • 정기적으로 시스템을 모니터링하고 분석합니다. 워크로드, 사용자 수 또는 컴퓨팅 환경을 변경하기 위해 innodb_thread_concurrency 설정 조정이 필요할 수 있습니다.

    자세한 내용은 섹션 14.13.5 "InnoDB의 스레드 병렬성 구성" 을 참조하십시오.

  • innodb_thread_sleep_delay

    명령 줄 형식 --innodb_thread_sleep_delay = #
    시스템 변수 이름 innodb_thread_sleep_delay
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 (> = 5.6.17) 유형 integer
    기본 10000
    최소 0
    최대 값 1000000
    허용되는 값 (32 비트 플랫폼, <= 5.6.16) 유형 integer
    기본 10000
    최소 0
    최대 값 4294967295
    허용되는 값 (64 비트 플랫폼, <= 5.6.16) 유형 integer
    기본 10000
    최소 0
    최대 값 18446744073709551615

    InnoDB 큐에 참여하기까지, InnoDB 쓰레드가 잠들기 기간 (마이크로 초)입니다. 기본값은 10000입니다. 0의 값은 절전 모드를 해제합니다. MySQL 5.6.3 이후에서는 구성 옵션 innodb_adaptive_max_sleep_delay 을 innodb_thread_sleep_delay 에서 허용되는 최대 값으로 설정할 수있어 InnoDB에 의해 자동으로 현재의 thread 스케줄링 활동에 따라 innodb_thread_sleep_delay 가 상하로 조정됩니다. 이 동적 조정 시스템에 걸리는 부하가 적은 기간이나 시스템이 거의 가득 찬 용량으로 작동하는 기간 스레드 스케줄링 메커니즘이 원활하게 작동하는 데 도움이됩니다.

    자세한 내용은 섹션 14.13.5 "InnoDB의 스레드 병렬성 구성" 을 참조하십시오.

  • innodb_undo_directory

    도입 5.6.3
    명령 줄 형식 --innodb_undo_directory = dir_name
    시스템 변수 이름 innodb_undo_directory
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 디렉토리 이름
    기본 .

    InnoDB 가 Undo 로그에 대한 별도의 테이블 스페이스를 작성하는 디렉토리의 상대 경로 나 절대 경로입니다. 일반적으로 이러한 로그를 다른 저장 장치에 배치하는 데 사용됩니다. innodb_undo_logs 및 innodb_undo_tablespaces 와 함께 사용하면 시스템 테이블 스페이스 외부의 Undo 로그 디스크 레이아웃이 결정됩니다. 기본값 . 은 InnoDB 가 기본으로 다른 로그 파일을 작성하는 디렉토리와 같은임을 나타냅니다.

  • innodb_undo_logs

    도입 5.6.3
    명령 줄 형식 --innodb_undo_logs = #
    시스템 변수 이름 innodb_undo_logs
    변수 범위 글로벌
    동적 변수 예
    허용되는 값 유형 integer
    기본 128
    최소 0
    최대 값 128

    트랜잭션 내에서 InnoDB 를 사용하는 시스템 테이블 스페이스 에있는 롤백 세그먼트 의 수를 정의합니다. 이 설정은 Undo 로그 관련 상호 배타적 경쟁이 관찰 된 경우의 성능 튜닝에 적합합니다. innodb_rollback_segments 설정에서 대체되었습니다. 활성 Undo 로그가 아닌 사용 가능한 Undo 로그의 총 수는 Innodb_available_undo_logs 상태 변수를 참조하십시오.

    트랜잭션에서 사용되는 롤백 세그먼트의 수는 크게하거나 작게 할 수 있지만 시스템에 물리적으로 존재하는 롤백 세그먼트의 수는 감소하지 않습니다. 따라서 나중에 필요하지 않으면 롤백 세그먼트가 할당되는 것을 방지하기 위해이 매개 변수는 작은 값에서 시작하여 점차 증가하는 것이 좋습니다. innodb_undo_logs 가 설정되어 있지 않으면 기본 최대 값이 128입니다. 롤백 세그먼트의 관리 내용은 섹션 14.2.12 "InnoDB 멀티 버전" 을 참조하십시오.

  • innodb_undo_tablespaces

    도입 5.6.3
    명령 줄 형식 --innodb_undo_tablespaces = #
    시스템 변수 이름 innodb_undo_tablespaces
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 0
    최소 0
    최대 값 126

    제로 이외의 innodb_undo_logs 설정을 사용하는 경우 Undo 로그 가 분할되는 테이블 공간 파일의 수입니다. 기본적으로 모든 Undo 로그는 시스템 테이블 공간 의 일부이며, 시스템 테이블 스페이스는 innodb_undo_tablespaces 로 구성된 것 이외에 항상 하나의 Undo 테이블 스페이스가 포함되어 있습니다. 장기 실행 트랜잭션 중에 Undo 로그가 커질 가능성이 있기 때문에 Undo 로그를 여러 테이블 스페이스에 분할하면 어떤 하나의 테이블 스페이스의 최대 크기가 줄어 듭니다. 테이블 공간 파일은 innodb_undo_directory 에서 정의 된 위치에 undo N 형식의 이름으로 작성됩니다. 여기서 N 은 선행 0을 포함 일련의 연속하는 정수입니다. Undo 테이블 스페이스 파일의 기본 크기는 10M입니다. 처음 InnoDB 를 초기화 할 때 innodb_undo_tablespaces 수를 설정해야합니다. 먼저 데이터베이스를 만들 때 지정한 경우보다 많은 수의 Undo 테이블 스페이스를 가진 InnoDB 를 다시 시작하려고하면 시작에 실패하고 InnoDB 에서 예상 된 수의 Undo 테이블 스페이스가 찾지 못했음 라는 오류가 표시됩니다.

  • innodb_use_native_aio

    명령 줄 형식 --innodb_use_native_aio = #
    시스템 변수 이름 innodb_use_native_aio
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 ON

    Linux 비동기 I / O 서브 시스템을 사용할지 여부를 지정합니다. 이 변수는 Linux 시스템에만 적용되며, 서버의 실행 중은 변경할 수 없습니다. 이 옵션은 기본적으로 활성화되어 있기 때문에 일반적으로 만질 필요가 없습니다.

    MySQL 5.5의 시점에서는 Windows 시스템에서 InnoDB 에 제공되는 비동기 I / O 기능이 Linux 시스템에서도 사용할 수 있습니다. (기타 Unix와 유사한 시스템에서 계속 동기화 I / O 호출이 사용됩니다.)이 기능은 I / O 부하가 높은 시스템의 확장 성이 향상됩니다. 일반적으로 SHOW ENGINE INNODB STATUS \ G 명령의 출력에 수많은 중단 된 읽기 / 쓰기가 표시됩니다.

    대량의 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 을 해제하고 (옵션 파일에서 innodb_use_native_aio = 0 을 사용합니다) 서버를 시작하십시오. 또한 InnoDB 에서 tmpdir 위치, tmpfs 파일 시스템 및 tmpfs 에서 AIO를 지원하지 않는 Linux 커널 등을 조합 한 잠재적 인 문제가 발견 된 경우이 옵션이 부팅 중에 자동으로 꺼 될 가능성도 있습니다.

  • innodb_use_sys_malloc

    비추천 5.6.3
    명령 줄 형식 --innodb_use_sys_malloc = #
    시스템 변수 이름 innodb_use_sys_malloc
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 boolean
    기본 ON

    InnoDB 가 운영 체제의 메모리 할당을 사용할 것인지 ( ON ) 자신의 것을 사용할 것인지 ( OFF )를 지정합니다. 기본값은 ON 입니다. 자세한 내용은 섹션 14.13.3 "InnoDB를위한 메모리 할당 구성" 을 참조하십시오.

    MySQL 5.6.3의 시점에서는 innodb_use_sys_malloc 는 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.

  • innodb_version

    InnoDB 의 버전 번호입니다. 5.6.11 이후에서는 InnoDB 마다 고유 번호 부여가 폐지되고이 값은 version 변수의 번호와 동일합니다.

  • innodb_write_io_threads

    명령 줄 형식 --innodb_write_io_threads = #
    시스템 변수 이름 innodb_write_io_threads
    변수 범위 글로벌
    동적 변수 아니오
    허용되는 값 유형 integer
    기본 4
    최소 1
    최대 값 64

    InnoDB 쓰기 작업에 사용되는 I / O 스레드 수입니다. 기본값은 4입니다. 읽기 스레드에 대응하는 것은 innodb_read_io_threads 입니다. 자세한 내용은 섹션 14.13.6 "InnoDB 백그라운드 I / O 스레드 수 구성" 을 참조하십시오. 일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

    참고

    Linux 시스템에서는 기본 innodb_read_io_threads 설정에서 여러 (일반적으로 12 대보다 많은)의 MySQL 서버를 실행하면 innodb_write_io_threads 및 Linux의 aio-max-nr 설정이 시스템의 제한을 초과 할 가능성이 있습니다. 이상적으로 aio-max-nr 설정을 늘립니다. 해결 방법은 MySQL 구성 옵션 중 하나 또는 모두의 설정을 작게하면 좋을 것입니다.

또한 디스크에 바이너리 로그의 동기화 제어 sync_binlog 값도 고려하도록하십시오.

일반적인 I / O 튜닝의 조언은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved