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변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 booleanMySQL 5.1에서는이 옵션을 사용하면 서버는 내장
InnoDB가 존재하지 않는 경우와 동일하게 동작 대신InnoDB Plugin을 사용할 수있었습니다. MySQL 5.6에서InnoDB가 기본 스토리지 엔진으로 바뀌고InnoDB Plugin이 사용되지 않기 때문에이 옵션은 유효하지 않습니다. MySQL 5.6.5의 시점에서는 무시됩니다.--innodb [=value]비추천 5.6.21 명령 줄 형식 --innodb [= value]허용되는 값 유형 enumeration기본 ON유효한 값 OFFONFORCE서버가
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기본 OFFInnoDB가 MySQL 데이터 디렉토리에innodb_status.라는 파일을 작성할지 여부를 제어합니다. 활성화하면pidInnoDB는 정기적으로SHOW ENGINE INNODB STATUS의 출력을 파일에 기록합니다.이 파일은 기본적으로 생성되지 않습니다. 이를 작성하려면
--innodb-status-file=1옵션으로 mysqld를 시작합니다. 이 파일은 정상적인 종료시 삭제됩니다.--skip-innodbInnoDB스토리지 엔진을 비활성화합니다.--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.soInnoDBmemcached 플러그인을 구현하는 공유 라이브러리를 지정합니다.이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.
daemon_memcached_engine_lib_path도입 5.6.6 명령 줄 형식 --daemon_memcached_engine_lib_path = directory시스템 변수 이름 daemon_memcached_engine_lib_path변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 디렉토리 이름기본 NULLInnoDBmemcached 플러그인을 구현하는 공유 라이브러리를 포함하는 디렉토리의 경로입니다. 기본값은 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기본 1COMMIT을 실행하고 새로운 트랜잭션을 시작하기 전에 실행되는 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기본 1COMMIT을 실행하고 새로운 트랜잭션을 시작하기 전에 실행되는 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기본 ONInnoDB적응 형 해시 인덱스 가 유효하지 않을지되어 있는지를 나타냅니다. 워크로드에 따라 적응 형 해시 인덱스의 생성 을 동적으로 활성화 또는 비활성화하여 쿼리 성능을 개선하는 것이 바람직한 경우가 있습니다. 적응 형 해시 인덱스가 모든 워크로드에 도움이 아니기 때문에 현실적인 워크로드를 사용하여 활성화 및 비활성화 모두 벤치 마크를 실시합니다. 자세한 내용은 섹션 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최대 값 1073741824InnoDBmemcached 인터페이스가 사용되는 유휴 연결이 자동 확정되는 빈도 (초)입니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.innodb_api_disable_rowlock도입 5.6.6 명령 줄 형식 --innodb_api_disable_rowlock = #시스템 변수 이름 innodb_api_disable_rowlock변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean기본 OFF이 변수를 사용하면
InnoDBmemcached에서 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기본 OFFMySQL 바이너리 로그 와 함께
InnoDBmemcached 플러그인을 사용할 수 있습니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.innodb_api_enable_mdl도입 5.6.6 명령 줄 형식 --innodb_api_enable_mdl = #시스템 변수 이름 innodb_api_enable_mdl변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean기본 OFFInnoDBmemcached 플러그인에서 사용되는 테이블을 잠급니다. 이렇게하면 SQL 인터페이스에서 DDL 에 의해 삭제 또는 변경할 수 없습니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오.innodb_api_trx_level도입 5.6.6 명령 줄 형식 --innodb_api_trx_level = #시스템 변수 이름 innodb_api_trx_level변수 범위 글로벌 동적 변수 예 허용되는 값 유형 integer기본 0memcached 인터페이스에서 처리 된 쿼리에서 트랜잭션 격리 수준 을 제어 할 수 있습니다. 이 옵션 사용에 대한 자세한 내용은 섹션 14.18 "InnoDB 및 memcached의 통합" 을 참조하십시오. 잘 듣는 이름에 대응하는 정수는 다음과 같습니다.
0 =
READ UNCOMMITTED1 =
READ COMMITTED2 =
REPEATABLE READ3 =
SERIALIZABLE
innodb_autoextend_increment명령 줄 형식 --innodb_autoextend_increment = #시스템 변수 이름 innodb_autoextend_increment변수 범위 글로벌 동적 변수 예 허용되는 값 (<= 5.6.5) 유형 integer기본 8최소 1최대 값 1000허용되는 값 (> = 5.6.6) 유형 integer기본 64최소 1최대 값 1000InnoDB의 자동 확장 시스템 테이블 스페이스 파일이 꽉 찼을 때 그 크기를 확장 할 때 증분 크기 (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유효한 값 012자동 증가 값을 생성하는 데 사용되는 잠금 모드 입니다. 허용되는 값은 "기존"를 나타내는 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기본 OFFInnoDB의 버퍼 풀 에 캐시 된 페이지를 즉시 기록합니다. 일반적으로
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_poolinnodb_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최대 값 64InnoDB의 버퍼 풀 을 분할되는 영역의 수입니다. 버퍼 풀 수 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기본 OFFinnodb_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기본 OFFMySQL 서버 시작시 이전에 보유 된 것과 동일한 페이지를로드하는 것으로, 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-1InnoDB테이블 및 인덱스의 데이터를 캐시하는 메모리 영역 인 버퍼 풀 의 크기 (바이트)입니다. 기본값은 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유효한 값 insertsdeletespurgeschangesallnoneInnoDB가 버퍼링 변경 (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유효한 값 innodbcrc32nonestrict_innodbstrict_crc32strict_none허용되는 값 (5.6.6) 유형 enumeration기본 crc32유효한 값 innodbcrc32nonestrict_innodbstrict_crc32strict_none허용되는 값 (> = 5.6.7) 유형 enumeration기본 innodb유효한 값 innodbcrc32nonestrict_innodbstrict_crc32strict_noneInnoDB의 각 테이블 공간 의 각 디스크 블록에 저장되어있는 체크섬 을 생성 및 검증하는 방법을 지정합니다.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기본 ONInnoDB는 디스크에서 읽은 모든 테이블 스페이스 페이지에서 체크섬 검증을 사용하여 하드웨어 장애 나 데이터 파일의 손상에 대한 추가적인 내결함성을 제공 할 수 있습니다. 이 검증은 기본적으로 활성화되어 있습니다. 특수한 상황 (벤치 마크 실행시 등)에서는이 같은 추가 안전 기능은--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유효한 값 OFFONINFORMATION_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최대 값 9InnoDB의 압축 된 테이블 및 인덱스에 사용 된 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 : autoextendInnoDB의 각 데이터 파일 의 경로와 그 크기입니다. 각 데이터 파일의 전체 디렉토리 경로는 여기에 지정된 각 경로에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유효한 값 012InnoDB의 종료 모드입니다. 이 값을 0으로하면InnoDB는 저속 종료 완전한 제거 및 삽입 버퍼 병합을 실행 한 후 종료합니다. 이 값을 1 (기본값)하면InnoDB는 종료 될 때 이러한 작업을 생략합니다. 이 과정은 빠른 종료 라고합니다. 이 값을 2로하면InnoDB는 MySQL이 충돌 한 경우와 마찬가지로 로그를 플러시 콜드 종료를 수행합니다. 커밋되지 않은 트랜잭션은 손실되지 않지만, 충돌 복구 작업을 통해 다음 부팅 시간이 길어집니다.저속 종료하는 데 몇 분 정도 걸릴 수 있으며 대량의 데이터가 버퍼에 존재하는 극단적 인 경우에는 몇 시간이 걸릴 수도 있습니다. MySQL의 주요 릴리즈로 업그레이드하거나 다운 그레이드하기 전에 업그레이드 프로세스에 의해 파일 형식이 업데이트 될 경우에 대비하여 모든 데이터 파일이 완전히 준비 될 수 있도록 저속 종료 기술을 사용하여 바랍니다.
데이터가 손상 될 위험이있는 경우에 완전한 빠른 종료하려면, 비상 사태 또는 문제 해결 상황에서
innodb_fast_shutdown = 2를 사용하십시오.innodb_file_format명령 줄 형식 --innodb_file_format = #시스템 변수 이름 innodb_file_format변수 범위 글로벌 동적 변수 예 허용되는 값 유형 string기본 Antelope유효한 값 AntelopeBarracuda새로운
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유효한 값 AntelopeBarracuda서버가 시작될 때
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기본 ONinnodb_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유효한 값 012커밋 조작에 대한 엄격한 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유효한 값 fsyncO_DSYNCO_DIRECT허용되는 값 (Unix,> = 5.6.7) 유형 string기본 fsync유효한 값 fsyncO_DSYNCO_DIRECTO_DIRECT_NO_FSYNC허용되는 값 (Windows) 유형 string기본 async_unbufferedInnoDB의 데이터 파일 과 로그 파일 에 데이터를 플래시 하는 데 사용되는 방법을 정의합니다. 이렇게하면 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유효한 값 012InnoDB의 버퍼 풀 에서 페이지를 플래시 하면 같은 범위 에서 다른 더티 페이지 도 플래시되는지 여부를 지정합니다.
디폴트 값 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최대 값 1000InnoDB가 이전에 계산 된 플래시 상태의 스냅 샷을 보존하는 반복의 수입니다. 따라서 적응 형 플래시 가 워크로드 의 변경에 대응하는 속도가 제어됩니다. 이 값을 크게하면 워크로드가 변화함에 따라 플래시 작업 속도가 원활하고 서서히 변화합니다. 이 값을 줄이면 적응 형 플래시가 워크로드의 변화에 빠르게 적응합니다. 따라서 워크로드가 갑자기 증감 한 경우 플래시 활동이 급증 할 가능성이 있습니다.
innodb_force_load_corrupted도입 5.6.3 명령 줄 형식 --innodb_force_load_corrupted시스템 변수 이름 innodb_force_load_corrupted변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean기본 OFFInnoDB 시작시 손상 마크가 붙은 테이블을로드 할 수 있습니다. 문제 해결시에 아무것도 대처해야 액세스 할 수 데이터를 복구하는 데에만 사용하십시오. 문제 해결이 완료되면이 설정을 해제 다시 서버를 다시 시작합니다.
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변수 범위 글로벌 동적 변수 예 허용되는 값 유형 stringFULLTEXT인덱스를 포함InnoDB테이블의 정규화 된 이름을 지정합니다. 이 변수는 진단을 위해 사용되며, 실행시에만 설정할 수 있습니다. 예 :mysql> set global innodb_ft_aux_table = 'test / t1';
이 변수를 시작할 때 설정하려고하면 " mysqld : option '--innodb-ft-aux-table'can not take an argument " 오류가 발생하고 부팅이 중지됩니다. 이 변수를
형식의 이름으로 설정하면db_name/table_nameINFORMATION_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최대 값 80000000InnoDB의 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 optimize test FTS_OPTIMIZE : optimize "mysql" FTS_OPTIMIZE : processed "mysql"
FTS 인덱스 구축의 진행 상황. 예 :
Number of doc processed : 1000
FTS 쿼리는 쿼리 분석 트리 단어의 무게 쿼리 처리 시간 및 메모리 사용량이 출력됩니다. 예 :
FTS Search Processing time : 1 secs : 100 millisec : row (s) 10000 Full Search Memory : 245666 (bytes) Row : 10000
innodb_ft_enable_stopword도입 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최대 값 252InnoDB의
FULLTEXT인덱스에 포함되는 단어의 최대 길이입니다. 이 값에 제한을 설정하면 실제 단어가 아닌 검색어가 될 가능성이 낮은 문자의 임의의 컬렉션과 긴 키워드가 생략 된 것으로, 인덱스의 크기가 감소되기 때문에 쿼리의 속도가 오릅니다.innodb_ft_min_token_size도입 5.6.4 명령 줄 형식 --innodb_ft_min_token_size = #시스템 변수 이름 innodb_ft_min_token_size변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 integer기본 3최소 0최대 값 16InnoDB의
FULLTEXT인덱스에 포함되는 단어의 최소 길이입니다. 이 값을 늘리면 검색 컨텍스트에서 중요한 될 가능성이 낮은 일반적인 단어 ( " a " 와 " to " 등의 단어)가 생략 된 것으로, 인덱스의 크기가 감소되기 때문에 쿼리의 속도가 빨라집니다. 내용으로 CJK (중국어, 일본어, 한국어) 문자 세트가 사용되는 경우, 값 1을 지정합니다.innodb_ft_num_word_optimize도입 5.6.4 명령 줄 형식 --innodb_ft_num_word_optimize = #시스템 변수 이름 innodb_ft_num_word_optimize변수 범위 글로벌 동적 변수 예 허용되는 값 유형 integer기본 2000InnoDB의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-1FTS 쿼리마다 또는 스레드마다 (바이트 단위로 정의 된)
InnoDB의 FULLTEXT 검색 (FTS) 쿼리 결과 캐시 제한입니다. 중간 및 최종InnoDBFTS 쿼리 결과는 메모리에서 처리됩니다.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_nameinnodb_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_nameinnodb_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-1innodb_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_pages도입 5.6.11 명령 줄 형식 --innodb_log_compressed_pages = #시스템 변수 이름 innodb_log_compressed_pages변수 범위 글로벌 동적 변수 예 허용되는 값 유형 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-1InnoDB의 버퍼 풀 의 플래시 조작 알고리즘 및 추론 기법에 영향을 미치는 매개 변수입니다. 주로 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최대 값 99InnoDB는 더티 페이지 의 비율이이 값을 초과하지 않도록, 버퍼 풀 에서 데이터를 플래시 하려고 시도합니다. 기본값은 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 length 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최소 0innodb_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변수 범위 글로벌 동적 변수 예 허용되는 값 유형 stringINFORMATION_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변수 범위 글로벌 동적 변수 예 허용되는 값 유형 stringINFORMATION_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변수 범위 글로벌 동적 변수 예 허용되는 값 유형 stringINFORMATION_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변수 범위 글로벌 동적 변수 예 허용되는 값 유형 stringINFORMATION_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-10이 아닌 값으로하면 버퍼 풀 은 테이블 전체 스캔 시 등의 단기간에서만 참조되는 데이터로 가득되기 때문에 보호됩니다. 이 값을 크게하면 테이블 전체 스캔이 버퍼 풀에 캐시 된 데이터와 상호 작용할 수에서 더 보호됩니다.
첫 번째 액세스 후 오래된 하위 목록 에 삽입되는 블록이 새 하위 목록으로 이동하기까지 거기에 머물해야하는 기간을 밀리 초 (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-1InnoDB테이블에 대한 온라인 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기본 OFFInnoDB테이블에서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유효한 값 4k8k16k4096819216384MySQL 인스턴스 내의 모든
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최대 값 5000Redo 로그 레코드 단위로 표현되는 변경의 입도입니다. 그러면 퍼지 작업이 트리거되어 변경된 버퍼 풀 블록이 디스크로 플러시됩니다. 이 옵션은
innodb_purge_threads =설정과 함께 성능을 조정하는 데 사용되기 때문에 일반 사용자는 변경할 필요가 없습니다.ninnodb_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최대 값 32InnoDB의 퍼지 작업 전용 백그라운드 스레드 수입니다. 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기본 OFFInnoDB의 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최대 값 64InnoDB에서의 읽기 작업에 사용되는 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최대 값 4294967295innodb_thread_concurrency에 도달하면 슬레이브 서버에서 복제 스레드의 지연 (밀리 초)입니다.innodb_rollback_on_timeout명령 줄 형식 --innodb_rollback_on_timeout시스템 변수 이름 innodb_rollback_on_timeout변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean기본 OFFMySQL 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최대 값 67108864InnoDB인덱스를 만들 때 데이터를 저장하는 데 사용되는 정렬 버퍼의 크기를 지정합니다. 지정된 크기는 내부 정렬 용 메모리에 입력 된 디스크에 기록 된 데이터의 양이 정의됩니다. 이것은 " 실행 " 이라는 것도 있습니다. 병합 단계 동안 지정된 크기의 버퍼 쌍을 " 읽어 " 병합됩니다. 설정이 높을수록, " 실행 " 수 및 병합 수가 적습니다. 이 것은 튜닝의 관점에서 이해하는 데 중요합니다.이 정렬 영역은 후속 인덱스 유지 관리 작업시이 아니라 인덱스를 만들 때 병합 정렬에서만 사용됩니다. 인덱싱이 완료되면 버퍼의 할당이 해제됩니다.
이 옵션의 값은 온라인 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_equalnulls_unequalnulls_ignoredInnoDB테이블의 인덱스 값의 분포에 대한 통계 를 수집 할 때 서버가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는modeON과OFF중 하나 (또는1과0중 하나)입니다. 이 설정을 변경하려면SUPER권한이 필요합니다. 변경하면 모든 연결 작업이 즉시 영향을받습니다.MySQL 5.6.6의 시점에서는이 변수는 기본적으로 비활성화되어 있습니다. 그 이전은 활성화되어 있습니다.
innodb_stats_persistent도입 5.6.6 명령 줄 형식 --innodb_stats_persistent = setting시스템 변수 이름 innodb_stats_persistent변수 범위 글로벌 동적 변수 예 허용되는 값 유형 boolean기본 ON유효한 값 OFFON01InnoDB인덱스 통계가 디스크에 유지되는지 여부를 지정합니다. 그렇지 않으면 자주 통계가 다시 계산 될 가능성이 있습니다. 그러면 쿼리의 실행 계획 이 변경 될 수 있습니다. 테이블이 생성되면이 설정이 각 테이블과 함께 저장됩니다. 테이블을 작성하기 전에 글로벌 수준에서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표준
InnoDBMonitor의 정기적 인 출력을 활성화하거나 비활성화하는 데 사용됩니다. 또한InnoDBLock Monitor의 정기적 인 출력을 활성화하거나 비활성화 할 때innodb_status_output_locks와 함께 사용됩니다. 자세한 내용은 섹션 14.15 "InnoDB 모니터" 를 참조하십시오.innodb_status_output_locks도입 5.6.16 명령 줄 형식 --innodb_status_output_locks시스템 변수 이름 innodb_status_output_locks변수 범위 글로벌 동적 변수 예 허용되는 값 유형 boolean기본 OFFInnoDBLock Monitor의 정기적 인 출력을 활성화하거나 비활성화하는 데 사용됩니다.innodb_status_output와 함께 사용해야합니다. 자세한 내용은 섹션 14.15 "InnoDB 모니터" 를 참조하십시오.innodb_strict_mode명령 줄 형식 --innodb_strict_mode = #시스템 변수 이름 innodb_strict_mode변수 범위 글로벌 세션 동적 변수 예 허용되는 값 유형 boolean기본 OFFinnodb_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 =문을 사용하면 런타임에modeinnodb_strict_mode을 활성화하거나 비활성화 할 수 있습니다. 여기서는modeON과OFF중 하나입니다.GLOBAL값을 변경하려면SUPER권한이 필요합니다. 이를 변경하면 이후에 연결된 모든 클라이언트의 작업이 영향을받습니다. 모든 클라이언트가innodb_strict_mode의SESSION설정을 변경할 수 있으며, 클라이언트 만 설정의 영향을받습니다.innodb_support_xa명령 줄 형식 --innodb_support_xa시스템 변수 이름 innodb_support_xa변수 범위 글로벌 세션 동적 변수 예 허용되는 값 유형 boolean기본 TRUEXA 트랜잭션 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기본 TRUEautocommit = 0의 요구를 받아들입니다. MySQL은 모든 스레드가 테이블에 대한 모든 잠금을 해제 할 때까지의 경우,InnoDB는LOCK TABLESLOCK 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최대 값 1000InnoDB는이 변수에서 지정된 제한 이하의 숫자 운영 체제 스레드를 동시에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최대 값 18446744073709551615InnoDB큐에 참여하기까지,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형식의 이름으로 작성됩니다. 여기서NN은 선행 0을 포함 일련의 연속하는 정수입니다. Undo 테이블 스페이스 파일의 기본 크기는 10M입니다. 처음InnoDB를 초기화 할 때innodb_undo_tablespaces수를 설정해야합니다. 먼저 데이터베이스를 만들 때 지정한 경우보다 많은 수의 Undo 테이블 스페이스를 가진InnoDB를 다시 시작하려고하면 시작에 실패하고InnoDB에서 예상 된 수의 Undo 테이블 스페이스가 찾지 못했음 라는 오류가 표시됩니다.innodb_use_native_aio명령 줄 형식 --innodb_use_native_aio = #시스템 변수 이름 innodb_use_native_aio변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean기본 ONLinux 비동기 I / O 서브 시스템을 사용할지 여부를 지정합니다. 이 변수는 Linux 시스템에만 적용되며, 서버의 실행 중은 변경할 수 없습니다. 이 옵션은 기본적으로 활성화되어 있기 때문에 일반적으로 만질 필요가 없습니다.
MySQL 5.5의 시점에서는 Windows 시스템에서
InnoDB에 제공되는 비동기 I / O 기능이 Linux 시스템에서도 사용할 수 있습니다. (기타 Unix와 유사한 시스템에서 계속 동기화 I / O 호출이 사용됩니다.)이 기능은 I / O 부하가 높은 시스템의 확장 성이 향상됩니다. 일반적으로SHOW ENGINE INNODB STATUS \ G명령의 출력에 수많은 중단 된 읽기 / 쓰기가 표시됩니다.대량의
InnoDBI / 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기본 ONInnoDB가 운영 체제의 메모리 할당을 사용할 것인지 (ON) 자신의 것을 사용할 것인지 (OFF)를 지정합니다. 기본값은ON입니다. 자세한 내용은 섹션 14.13.3 "InnoDB를위한 메모리 할당 구성" 을 참조하십시오.MySQL 5.6.3의 시점에서는
innodb_use_sys_malloc는 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.innodb_versionInnoDB의 버전 번호입니다. 5.6.11 이후에서는InnoDB마다 고유 번호 부여가 폐지되고이 값은version변수의 번호와 동일합니다.innodb_write_io_threads명령 줄 형식 --innodb_write_io_threads = #시스템 변수 이름 innodb_write_io_threads변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 integer기본 4최소 1최대 값 64InnoDB쓰기 작업에 사용되는 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 최적화" 를 참조하십시오.