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=valuevar_name=value - 可以在运行时更改许多系统变量(请参见“动态系统变量”)。
- 有关变量范围修饰符
GLOBAL和SESSION变量范围修饰符的信息,请参见SET语句文档。 - 某些选项控制
InnoDB数据文件的位置和布局。“ InnoDB启动配置”介绍了如何使用这些选项。 - 某些最初可能不会使用的选项可帮助
InnoDB根据计算机容量和数据库工作负载调整性能特征。 - 有关指定选项和系统变量的更多信息,请参见“指定程序选项”。
InnoDB选项和变量参考
| Name | Cmd-Line | Option File | System Var | Status Var | Var Scope | Dynamic |
|---|---|---|---|---|---|---|
| daemon_memcached_enable_binlog | Yes | Yes | Yes | Global | No | |
| daemon_memcached_engine_lib_name | Yes | Yes | Yes | Global | No | |
| daemon_memcached_engine_lib_path | Yes | Yes | Yes | Global | No | |
| daemon_memcached_option | Yes | Yes | Yes | Global | No | |
| daemon_memcached_r_batch_size | Yes | Yes | Yes | Global | No | |
| daemon_memcached_w_batch_size | Yes | Yes | Yes | Global | No | |
| foreign_key_checks | Yes | Both | Yes | |||
| innodb | Yes | Yes | ||||
| innodb_adaptive_flushing | Yes | Yes | Yes | Global | Yes | |
| innodb_adaptive_flushing_lwm | Yes | Yes | Yes | Global | Yes | |
| innodb_adaptive_hash_index | Yes | Yes | Yes | Global | Yes | |
| innodb_adaptive_hash_index_parts | Yes | Yes | Yes | Global | No | |
| innodb_adaptive_max_sleep_delay | Yes | Yes | Yes | Global | Yes | |
| innodb_api_bk_commit_interval | Yes | Yes | Yes | Global | Yes | |
| innodb_api_disable_rowlock | Yes | Yes | Yes | Global | No | |
| innodb_api_enable_binlog | Yes | Yes | Yes | Global | No | |
| innodb_api_enable_mdl | Yes | Yes | Yes | Global | No | |
| innodb_api_trx_level | Yes | Yes | Yes | Global | Yes | |
| innodb_autoextend_increment | Yes | Yes | Yes | Global | Yes | |
| innodb_autoinc_lock_mode | Yes | Yes | Yes | Global | No | |
| innodb_background_drop_list_empty | Yes | Yes | Yes | Global | Yes | |
| Innodb_buffer_pool_bytes_data | Yes | Global | No | |||
| Innodb_buffer_pool_bytes_dirty | Yes | Global | No | |||
| innodb_buffer_pool_chunk_size | Yes | Yes | Yes | Global | No | |
| innodb_buffer_pool_debug | Yes | Yes | Yes | Global | No | |
| innodb_buffer_pool_dump_at_shutdown | Yes | Yes | Yes | Global | Yes | |
| innodb_buffer_pool_dump_now | Yes | Yes | Yes | Global | Yes | |
| innodb_buffer_pool_dump_pct | Yes | Yes | Yes | Global | Yes | |
| Innodb_buffer_pool_dump_status | Yes | Global | No | |||
| innodb_buffer_pool_filename | Yes | Yes | Yes | Global | Yes | |
| innodb_buffer_pool_in_core_file | Yes | Yes | Yes | Global | Yes | |
| innodb_buffer_pool_instances | Yes | Yes | Yes | Global | No | |
| innodb_buffer_pool_load_abort | Yes | Yes | Yes | Global | Yes | |
| innodb_buffer_pool_load_at_startup | Yes | Yes | Yes | Global | No | |
| innodb_buffer_pool_load_now | Yes | Yes | Yes | Global | Yes | |
| Innodb_buffer_pool_load_status | Yes | Global | No | |||
| Innodb_buffer_pool_pages_data | Yes | Global | No | |||
| Innodb_buffer_pool_pages_dirty | Yes | Global | No | |||
| Innodb_buffer_pool_pages_flushed | Yes | Global | No | |||
| Innodb_buffer_pool_pages_free | Yes | Global | No | |||
| Innodb_buffer_pool_pages_latched | Yes | Global | No | |||
| Innodb_buffer_pool_pages_misc | Yes | Global | No | |||
| Innodb_buffer_pool_pages_total | Yes | Global | No | |||
| Innodb_buffer_pool_read_ahead | Yes | Global | No | |||
| Innodb_buffer_pool_read_ahead_evicted | Yes | Global | No | |||
| Innodb_buffer_pool_read_ahead_rnd | Yes | Global | No | |||
| Innodb_buffer_pool_read_requests | Yes | Global | No | |||
| Innodb_buffer_pool_reads | Yes | Global | No | |||
| Innodb_buffer_pool_resize_status | Yes | Global | No | |||
| innodb_buffer_pool_size | Yes | Yes | Yes | Global | Yes | |
| Innodb_buffer_pool_wait_free | Yes | Global | No | |||
| Innodb_buffer_pool_write_requests | Yes | Global | No | |||
| innodb_change_buffer_max_size | Yes | Yes | Yes | Global | Yes | |
| innodb_change_buffering | Yes | Yes | Yes | Global | Yes | |
| innodb_change_buffering_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_checkpoint_disabled | Yes | Yes | Yes | Global | Yes | |
| innodb_checksum_algorithm | Yes | Yes | Yes | Global | Yes | |
| innodb_cmp_per_index_enabled | Yes | Yes | Yes | Global | Yes | |
| innodb_commit_concurrency | Yes | Yes | Yes | Global | Yes | |
| innodb_compress_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_compression_failure_threshold_pct | Yes | Yes | Yes | Global | Yes | |
| innodb_compression_level | Yes | Yes | Yes | Global | Yes | |
| innodb_compression_pad_pct_max | Yes | Yes | Yes | Global | Yes | |
| innodb_concurrency_tickets | Yes | Yes | Yes | Global | Yes | |
| innodb_data_file_path | Yes | Yes | Yes | Global | No | |
| Innodb_data_fsyncs | Yes | Global | No | |||
| innodb_data_home_dir | Yes | Yes | Yes | Global | No | |
| Innodb_data_pending_fsyncs | Yes | Global | No | |||
| Innodb_data_pending_reads | Yes | Global | No | |||
| Innodb_data_pending_writes | Yes | Global | No | |||
| Innodb_data_read | Yes | Global | No | |||
| Innodb_data_reads | Yes | Global | No | |||
| Innodb_data_writes | Yes | Global | No | |||
| Innodb_data_written | Yes | Global | No | |||
| Innodb_dblwr_pages_written | Yes | Global | No | |||
| Innodb_dblwr_writes | Yes | Global | No | |||
| innodb_ddl_log_crash_reset_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_deadlock_detect | Yes | Yes | Yes | Global | Yes | |
| innodb_dedicated_server | Yes | Yes | Yes | Global | No | |
| innodb_default_row_format | Yes | Yes | Yes | Global | Yes | |
| innodb_directories | Yes | Yes | Yes | Global | No | |
| innodb_disable_sort_file_cache | Yes | Yes | Yes | Global | Yes | |
| innodb_doublewrite | Yes | Yes | Yes | Global | No | |
| innodb_fast_shutdown | Yes | Yes | Yes | Global | Yes | |
| innodb_fil_make_page_dirty_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_file_per_table | Yes | Yes | Yes | Global | Yes | |
| innodb_fill_factor | Yes | Yes | Yes | Global | Yes | |
| innodb_flush_log_at_timeout | Yes | Yes | Yes | Global | Yes | |
| innodb_flush_log_at_trx_commit | Yes | Yes | Yes | Global | Yes | |
| innodb_flush_method | Yes | Yes | Yes | Global | No | |
| innodb_flush_neighbors | Yes | Yes | Yes | Global | Yes | |
| innodb_flush_sync | Yes | Yes | Yes | Global | Yes | |
| innodb_flushing_avg_loops | Yes | Yes | Yes | Global | Yes | |
| innodb_force_load_corrupted | Yes | Yes | Yes | Global | No | |
| innodb_force_recovery | Yes | Yes | Yes | Global | No | |
| innodb_fsync_threshold | Yes | Yes | Yes | Global | Yes | |
| innodb_ft_aux_table | Yes | Global | Yes | |||
| innodb_ft_cache_size | Yes | Yes | Yes | Global | No | |
| innodb_ft_enable_diag_print | Yes | Yes | Yes | Global | Yes | |
| innodb_ft_enable_stopword | Yes | Yes | Yes | Both | Yes | |
| innodb_ft_max_token_size | Yes | Yes | Yes | Global | No | |
| innodb_ft_min_token_size | Yes | Yes | Yes | Global | No | |
| innodb_ft_num_word_optimize | Yes | Yes | Yes | Global | Yes | |
| innodb_ft_result_cache_limit | Yes | Yes | Yes | Global | Yes | |
| innodb_ft_server_stopword_table | Yes | Yes | Yes | Global | Yes | |
| innodb_ft_sort_pll_degree | Yes | Yes | Yes | Global | No | |
| innodb_ft_total_cache_size | Yes | Yes | Yes | Global | No | |
| innodb_ft_user_stopword_table | Yes | Yes | Yes | Both | Yes | |
| Innodb_have_atomic_builtins | Yes | Global | No | |||
| innodb_idle_flush_pct | Yes | Yes | Yes | Global | Yes | |
| innodb_io_capacity | Yes | Yes | Yes | Global | Yes | |
| innodb_io_capacity_max | Yes | Yes | Yes | Global | Yes | |
| innodb_limit_optimistic_insert_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_lock_wait_timeout | Yes | Yes | Yes | Both | Yes | |
| innodb_log_buffer_size | Yes | Yes | Yes | Global | Varies | |
| innodb_log_checkpoint_fuzzy_now | Yes | Yes | Yes | Global | Yes | |
| innodb_log_checkpoint_now | Yes | Yes | Yes | Global | Yes | |
| innodb_log_checksums | Yes | Yes | Yes | Global | Yes | |
| innodb_log_compressed_pages | Yes | Yes | Yes | Global | Yes | |
| innodb_log_file_size | Yes | Yes | Yes | Global | No | |
| innodb_log_files_in_group | Yes | Yes | Yes | Global | No | |
| innodb_log_group_home_dir | Yes | Yes | Yes | Global | No | |
| innodb_log_spin_cpu_abs_lwm | Yes | Yes | Yes | Global | Yes | |
| innodb_log_spin_cpu_pct_hwm | Yes | Yes | Yes | Global | Yes | |
| innodb_log_wait_for_flush_spin_hwm | Yes | Yes | Yes | Global | Yes | |
| Innodb_log_waits | Yes | Global | No | |||
| innodb_log_write_ahead_size | Yes | Yes | Yes | Global | Yes | |
| Innodb_log_write_requests | Yes | Global | No | |||
| Innodb_log_writes | Yes | Global | No | |||
| innodb_lru_scan_depth | Yes | Yes | Yes | Global | Yes | |
| innodb_max_dirty_pages_pct | Yes | Yes | Yes | Global | Yes | |
| innodb_max_dirty_pages_pct_lwm | Yes | Yes | Yes | Global | Yes | |
| innodb_max_purge_lag | Yes | Yes | Yes | Global | Yes | |
| innodb_max_purge_lag_delay | Yes | Yes | Yes | Global | Yes | |
| innodb_max_undo_log_size | Yes | Yes | Yes | Global | Yes | |
| innodb_merge_threshold_set_all_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_monitor_disable | Yes | Yes | Yes | Global | Yes | |
| innodb_monitor_enable | Yes | Yes | Yes | Global | Yes | |
| innodb_monitor_reset | Yes | Yes | Yes | Global | Yes | |
| innodb_monitor_reset_all | Yes | Yes | Yes | Global | Yes | |
| Innodb_num_open_files | Yes | Global | No | |||
| innodb_numa_interleave | Yes | Yes | Yes | Global | No | |
| innodb_old_blocks_pct | Yes | Yes | Yes | Global | Yes | |
| innodb_old_blocks_time | Yes | Yes | Yes | Global | Yes | |
| innodb_online_alter_log_max_size | Yes | Yes | Yes | Global | Yes | |
| innodb_open_files | Yes | Yes | Yes | Global | No | |
| innodb_optimize_fulltext_only | Yes | Yes | Yes | Global | Yes | |
| Innodb_os_log_fsyncs | Yes | Global | No | |||
| Innodb_os_log_pending_fsyncs | Yes | Global | No | |||
| Innodb_os_log_pending_writes | Yes | Global | No | |||
| Innodb_os_log_written | Yes | Global | No | |||
| innodb_page_cleaners | Yes | Yes | Yes | Global | No | |
| Innodb_page_size | Yes | Global | No | |||
| innodb_page_size | Yes | Yes | Yes | Global | No | |
| Innodb_pages_created | Yes | Global | No | |||
| Innodb_pages_read | Yes | Global | No | |||
| Innodb_pages_written | Yes | Global | No | |||
| innodb_parallel_read_threads | Yes | Yes | Yes | Session | Yes | |
| innodb_print_all_deadlocks | Yes | Yes | Yes | Global | Yes | |
| innodb_print_ddl_logs | Yes | Yes | Yes | Global | Yes | |
| innodb_purge_batch_size | Yes | Yes | Yes | Global | Yes | |
| innodb_purge_rseg_truncate_frequency | Yes | Yes | Yes | Global | Yes | |
| innodb_purge_threads | Yes | Yes | Yes | Global | No | |
| innodb_random_read_ahead | Yes | Yes | Yes | Global | Yes | |
| innodb_read_ahead_threshold | Yes | Yes | Yes | Global | Yes | |
| innodb_read_io_threads | Yes | Yes | Yes | Global | No | |
| innodb_read_only | Yes | Yes | Yes | Global | No | |
| innodb_redo_log_archive_dirs | Yes | Yes | Yes | Global | Yes | |
| innodb_redo_log_encrypt | Yes | Yes | Yes | Global | Yes | |
| innodb_replication_delay | Yes | Yes | Yes | Global | Yes | |
| innodb_rollback_on_timeout | Yes | Yes | Yes | Global | No | |
| innodb_rollback_segments | Yes | Yes | Yes | Global | Yes | |
| Innodb_row_lock_current_waits | Yes | Global | No | |||
| Innodb_row_lock_time | Yes | Global | No | |||
| Innodb_row_lock_time_avg | Yes | Global | No | |||
| Innodb_row_lock_time_max | Yes | Global | No | |||
| Innodb_row_lock_waits | Yes | Global | No | |||
| Innodb_rows_deleted | Yes | Global | No | |||
| Innodb_rows_inserted | Yes | Global | No | |||
| Innodb_rows_read | Yes | Global | No | |||
| Innodb_rows_updated | Yes | Global | No | |||
| innodb_saved_page_number_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_sort_buffer_size | Yes | Yes | Yes | Global | No | |
| innodb_spin_wait_delay | Yes | Yes | Yes | Global | Yes | |
| innodb_spin_wait_pause_multiplier | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_auto_recalc | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_include_delete_marked | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_method | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_on_metadata | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_persistent | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_persistent_sample_pages | Yes | Yes | Yes | Global | Yes | |
| innodb_stats_transient_sample_pages | Yes | Yes | Yes | Global | Yes | |
| innodb-status-file | Yes | Yes | ||||
| innodb_status_output | Yes | Yes | Yes | Global | Yes | |
| innodb_status_output_locks | Yes | Yes | Yes | Global | Yes | |
| innodb_strict_mode | Yes | Yes | Yes | Both | Yes | |
| innodb_sync_array_size | Yes | Yes | Yes | Global | No | |
| innodb_sync_debug | Yes | Yes | Yes | Global | No | |
| innodb_sync_spin_loops | Yes | Yes | Yes | Global | Yes | |
| Innodb_system_rows_deleted | Yes | Global | No | |||
| Innodb_system_rows_inserted | Yes | Global | No | |||
| Innodb_system_rows_read | Yes | Global | No | |||
| innodb_table_locks | Yes | Yes | Yes | Both | Yes | |
| innodb_temp_data_file_path | Yes | Yes | Yes | Global | No | |
| innodb_temp_tablespaces_dir | Yes | Yes | Yes | Global | No | |
| innodb_thread_concurrency | Yes | Yes | Yes | Global | Yes | |
| innodb_thread_sleep_delay | Yes | Yes | Yes | Global | Yes | |
| innodb_tmpdir | Yes | Yes | Yes | Both | Yes | |
| Innodb_truncated_status_writes | Yes | Global | No | |||
| innodb_trx_purge_view_update_only_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_trx_rseg_n_slots_debug | Yes | Yes | Yes | Global | Yes | |
| innodb_undo_directory | Yes | Yes | Yes | Global | No | |
| innodb_undo_log_encrypt | Yes | Yes | Yes | Global | Yes | |
| innodb_undo_log_truncate | Yes | Yes | Yes | Global | Yes | |
| innodb_undo_tablespaces | Yes | Yes | Yes | Global | Varies | |
| Innodb_undo_tablespaces_active | Yes | Global | No | |||
| Innodb_undo_tablespaces_explicit | Yes | Global | No | |||
| Innodb_undo_tablespaces_implicit | Yes | Global | No | |||
| Innodb_undo_tablespaces_total | Yes | Global | No | |||
| innodb_use_native_aio | Yes | Yes | Yes | Global | No | |
| innodb_version | Yes | Global | No | |||
| innodb_write_io_threads | Yes | Yes | Yes | Global | No | |
| unique_checks | Yes | Both | Yes |
InnoDB命令选项
--innodb[=value]属性 值 命令行格式 --innodb[=value]不推荐使用 是 类型 列举 默认值 ON有效值 OFFONFORCEInnoDB如果服务器是在InnoDB支持下编译的,则控制存储引擎的加载。此选项有三态格式,可能值OFF,ON或FORCE。请参见“MySQL服务器插件”。要禁用
InnoDB,请使用--innodb=OFF或--skip-innodb。在这种情况下,因为默认存储引擎为InnoDB,否则服务器将不会启动,除非您还为永久表和表使用--default-storage-engine并将--default-tmp-storage-engine默认值设置为其他引擎TEMPORARY。该
InnoDB存储引擎可以不再被禁止,并且--innodb=OFF和--skip-innodb选项弃用,没有任何效果。使用它们会导致警告。这些选项将在将来的MySQL版本中删除。--innodb-status-file属性 值 命令行格式 --innodb-status-file[={OFF|ON}]类型 布尔型 默认值 OFF在
--innodb-status-file启动选项控制是否InnoDB创建一个名为文件在数据目录中,并写入输出到它每15秒,约。innodb_status.pidSHOW ENGINE INNODB STATUS默认情况下未创建该文件。要创建它,请使用选项启动mysqld。正常关闭服务器后删除文件。如果发生异常关闭,则可能必须手动删除状态文件。
innodb_status.pid--innodb-status-fileInnoDB该
--innodb-status-file选项仅供临时使用,因为SHOW ENGINE INNODB STATUS输出生成会影响性能,并且文件会随着时间变得很大。innodb_status.pid有关相关信息,请参见“启用InnoDB监视器”。
--skip-innodb禁用
InnoDB存储引擎。请参阅的说明--innodb。
InnoDB系统变量
daemon_memcached_enable_binlog属性 值 命令行格式 --daemon-memcached-enable-binlog[={OFF|ON}]系统变量 daemon_memcached_enable_binlog范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF在主服务器上启用此选项,以将
InnoDBmemcached插件(daemon_memcached)与MySQL 二进制日志一起使用。此选项只能在服务器启动时设置。您还必须使用该--log-bin选项在主服务器上启用MySQL二进制日志。有关更多信息,请参见“ InnoDB memcached插件和复制”。
daemon_memcached_engine_lib_name属性 值 命令行格式 --daemon-memcached-engine-lib-name=file_name系统变量 daemon_memcached_engine_lib_name范围 Global 动态 没有 SET_VAR提示适用没有 类型 文件名 默认值 innodb_engine.so指定实现
InnoDBmemcached插件的共享库。有关更多信息,请参见“设置InnoDB memcached插件”。
daemon_memcached_engine_lib_path属性 值 命令行格式 --daemon-memcached-engine-lib-path=dir_name系统变量 daemon_memcached_engine_lib_path范围 Global 动态 没有 SET_VAR提示适用没有 类型 目录名 默认值 NULL目录的路径,其中包含实现
InnoDBmemcached插件的共享库。默认值为NULL,代表MySQL插件目录。除非memcached为MySQL插件目录之外的其他存储引擎指定插件,否则无需修改此参数。有关更多信息,请参见“设置InnoDB memcached插件”。
daemon_memcached_option属性 值 命令行格式 --daemon-memcached-option=options系统变量 daemon_memcached_option范围 Global 动态 没有 SET_VAR提示适用没有 类型 string 默认值 用于在启动时将以空格分隔的memcached选项传递给基础的memcached内存对象缓存守护程序。例如,您可以更改memcached侦听的端口,减少同时连接的最大数量,更改键-值对的最大内存大小,或为错误日志启用调试消息。
有关用法的详细信息,请参见“设置InnoDB memcached插件”。有关memcached选项的信息,请参考memcached手册页。
daemon_memcached_r_batch_size属性 值 命令行格式 --daemon-memcached-r-batch-size=#系统变量 daemon_memcached_r_batch_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 1指定在执行启动新事务之前要执行多少个Memcached读取操作(
get操作)COMMIT。的对应daemon_memcached_w_batch_size。默认情况下,此值设置为1,因此通过SQL语句对表所做的任何更改对于memcached操作都是立即可见的。您可能会增加它,以减少仅通过memcached接口访问基础表的系统上频繁提交的开销。如果将该值设置得太大,则与任何长时间运行的事务一样,撤消或重做数据量可能会带来一些存储开销。
有关更多信息,请参见“设置InnoDB memcached插件”。
daemon_memcached_w_batch_size属性 值 命令行格式 --daemon-memcached-w-batch-size=#系统变量 daemon_memcached_w_batch_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 1指定多少memcached的写操作,如
add,set和incr,做一个前执行COMMIT,以启动新的事务。的对应daemon_memcached_r_batch_size。假定存储的数据在发生故障时对于保留数据非常重要,并且应立即提交,则默认情况下此值设置为1。当存储非关键数据时,您可以增加此值以减少频繁提交的开销。但是
N如果发生崩溃,则最后-1个未提交的写操作可能会丢失。有关更多信息,请参见“设置InnoDB memcached插件”。
innodb_adaptive_flushing属性 值 命令行格式 --innodb-adaptive-flushing[={OFF|ON}]系统变量 innodb_adaptive_flushing范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定是否动态调整冲洗速度脏页在
InnoDB缓冲池中,根据工作负载。动态调整刷新速率旨在避免I / O活动突发。默认情况下启用此设置。有关更多信息,请参见“配置缓冲池刷新”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。innodb_adaptive_flushing_lwm属性 值 命令行格式 --innodb-adaptive-flushing-lwm=#系统变量 innodb_adaptive_flushing_lwm范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 10最低值 0最大值 70定义低水位线,代表启用自适应冲洗的重做日志容量百分比。有关更多信息,请参见“配置缓冲池刷新”。
innodb_adaptive_hash_index属性 值 命令行格式 --innodb-adaptive-hash-index[={OFF|ON}]系统变量 innodb_adaptive_hash_index范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON无论是
InnoDB适应性的散列索引被启用或禁用。根据您的工作量,可能需要动态启用或禁用自适应哈希索引以提高查询性能。由于自适应哈希索引可能并非对所有工作负载都有用,因此请使用实际的工作负载来启用和禁用基准测试。有关详细信息,请参见“自适应哈希索引”。默认情况下启用此变量。您可以使用
SET GLOBAL语句修改此参数,而无需重新启动服务器。在运行时更改设置需要足够的特权来设置全局系统变量。请参见“系统变量特权”。您也可以--skip-innodb-adaptive-hash-index在服务器启动时使用它来禁用它。禁用自适应哈希索引会立即清空哈希表。清空哈希表后,正常操作可以继续,使用哈希表执行的查询将直接访问索引B树。重新启用自适应哈希索引后,将在正常操作期间再次填充哈希表。
innodb_adaptive_hash_index_parts属性 值 命令行格式 --innodb-adaptive-hash-index-parts=#系统变量 innodb_adaptive_hash_index_parts范围 Global 动态 没有 SET_VAR提示适用没有 类型 数字 默认值 8最低值 1最大值 512对自适应哈希索引搜索系统进行分区。每个索引都绑定到特定分区,每个分区都由单独的锁存器保护。
默认情况下,自适应哈希索引搜索系统分为8个部分。最大设置为512。
有关相关信息,请参见“自适应哈希索引”。
innodb_adaptive_max_sleep_delay属性 值 命令行格式 --innodb-adaptive-max-sleep-delay=#系统变量 innodb_adaptive_max_sleep_delay范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 150000最低值 0最大值 1000000允许根据当前工作负载
InnoDB自动调整innodb_thread_sleep_delayup或down 的值。任何非零值都可以自动,动态地调整该innodb_thread_sleep_delay值,直到该innodb_adaptive_max_sleep_delay选项中指定的最大值。该值表示微秒数。此选项在具有16个以上InnoDB线程的繁忙系统中很有用。(实际上,对于具有成百上千个同时连接的MySQL系统,这是最有价值的。)有关更多信息,请参见“配置InnoDB线程并发”。
innodb_api_bk_commit_interval属性 值 命令行格式 --innodb-api-bk-commit-interval=#系统变量 innodb_api_bk_commit_interval范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 5最低值 1最大值 1073741824自动提交使用
InnoDBmemcached接口的空闲连接的频率,以秒为单位。有关更多信息,请参见“控制InnoDB memcached插件的事务行为”。innodb_api_disable_rowlock属性 值 命令行格式 --innodb-api-disable-rowlock[={OFF|ON}]系统变量 innodb_api_disable_rowlock范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF当
InnoDBmemcached执行DML操作时,使用此选项禁用行锁。默认情况下,它innodb_api_disable_rowlock是禁用的,这意味着memcached请求行锁定get和set操作。当innodb_api_disable_rowlock启用时,memcached的申请表锁,而不是行锁。innodb_api_disable_rowlock不是动态的。它必须在mysqld命令行上指定或输入到MySQL配置文件中。配置在安装插件时生效,这在启动MySQL服务器时发生。有关更多信息,请参见“控制InnoDB memcached插件的事务行为”。
innodb_api_enable_binlog属性 值 命令行格式 --innodb-api-enable-binlog[={OFF|ON}]系统变量 innodb_api_enable_binlog范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF使您可以将
InnoDBmemcached插件与MySQL 二进制日志一起使用。有关更多信息,请参阅启用InnoDB memcached二进制日志。innodb_api_enable_mdl属性 值 命令行格式 --innodb-api-enable-mdl[={OFF|ON}]系统变量 innodb_api_enable_mdl范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF锁定
InnoDBmemcached插件使用的表,以便DDL无法通过SQL接口删除或更改该表。有关更多信息,请参见“控制InnoDB memcached插件的事务行为”。innodb_api_trx_level属性 值 命令行格式 --innodb-api-trx-level=#系统变量 innodb_api_trx_level范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0控制由memcached接口处理的查询的事务隔离级别。与熟悉的名称相对应的常量是:
- 0 =
READ UNCOMMITTED - 1 =
READ COMMITTED - 2 =
REPEATABLE READ - 3 =
SERIALIZABLE
有关更多信息,请参见“控制InnoDB memcached插件的事务行为”。
- 0 =
innodb_autoextend_increment属性 值 命令行格式 --innodb-autoextend-increment=#系统变量 innodb_autoextend_increment范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 64最低值 1最大值 1000当自动扩展
InnoDB系统表空间文件已满时用于扩展其大小的增量大小(以兆字节为单位)。默认值为64。有关相关信息,请参见“系统表空间”和“调整系统表空间的大小”。该
innodb_autoextend_increment设置不影响每表文件表空间文件或常规表空间文件。无论innodb_autoextend_increment设置如何,这些文件都会自动扩展。初始扩展名很少,之后扩展名以4MB为增量。innodb_autoinc_lock_mode属性 值 命令行格式 --innodb-autoinc-lock-mode=#系统变量 innodb_autoinc_lock_mode范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 2有效值 012用于生成自动增量值的锁定模式。对于传统的,连续的或交错的,允许的值分别为0、1或2。
从MySQL 8.0开始,默认设置为2(交错),在此之前为1(连续)。更改为交错锁定模式作为默认设置反映了从基于语句的复制到基于行的复制作为默认的复制类型,这是在MySQL 5.7中发生的。基于语句的复制需要连续的自动增量锁定模式,以确保为给定的SQL语句序列以可预测和可重复的顺序分配自动增量值,而基于行的复制对SQL语句的执行顺序不敏感。
有关每种锁定模式的特征,请参见 InnoDB AUTO_INCREMENT锁定模式。
innodb_background_drop_list_empty属性 值 命令行格式 --innodb-background-drop-list-empty[={OFF|ON}]系统变量 innodb_background_drop_list_empty范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用
innodb_background_drop_list_empty调试选项可通过将表创建延迟到后台放置列表为空来避免测试用例失败。例如,如果测试用例A将表t1放置在后台放置列表上,则测试用例B会等到后台放置列表为空后再创建tablet1。innodb_buffer_pool_chunk_size属性 值 命令行格式 --innodb-buffer-pool-chunk-size=#系统变量 innodb_buffer_pool_chunk_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 134217728最低值 1048576最大值 innodb_buffer_pool_size / innodb_buffer_pool_instancesinnodb_buffer_pool_chunk_size定义InnoDB缓冲池大小调整操作的块大小。该innodb_buffer_pool_size参数是动态的,它允许您在不重新启动服务器的情况下调整缓冲池的大小。为了避免在调整大小的操作期间复制所有缓冲池页面,该操作以“块”形式执行。默认情况下
innodb_buffer_pool_chunk_size为128MB(134217728字节)。块中包含的页面数取决于的值innodb_page_size。innodb_buffer_pool_chunk_size可以以1MB(1048576字节)为单位增加或减少。更改
innodb_buffer_pool_chunk_size值时,必须满足以下条件:- 如果
innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances在初始化缓冲池时大于当前缓冲池的大小,则将innodb_buffer_pool_chunk_size其截断为innodb_buffer_pool_size/innodb_buffer_pool_instances。 - 缓冲池大小必须始终等于
innodb_buffer_pool_chunk_size*或*的倍数innodb_buffer_pool_instances。如果您进行更改innodb_buffer_pool_chunk_size,innodb_buffer_pool_size则会自动舍入为等于innodb_buffer_pool_chunk_size*或*的倍数的值innodb_buffer_pool_instances。在初始化缓冲池时进行调整。
重要
更改时应注意
innodb_buffer_pool_chunk_size,因为更改此值会自动增加缓冲池的大小。在更改之前innodb_buffer_pool_chunk_size,请先计算其影响,innodb_buffer_pool_size以确保结果缓冲池大小可以接受。为避免潜在的性能问题,块(
innodb_buffer_pool_size/innodb_buffer_pool_chunk_size)的数量不应超过1000。有关更多信息,请参见“配置InnoDB缓冲池大小”。
- 如果
innodb_buffer_pool_debug属性 值 命令行格式 --innodb-buffer-pool-debug[={OFF|ON}]系统变量 innodb_buffer_pool_debug范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF如果缓冲池的大小小于1GB,则启用此选项将允许多个缓冲池实例,而忽略对施加的1GB最小缓冲池大小限制
innodb_buffer_pool_instances。innodb_buffer_pool_debug仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_buffer_pool_dump_at_shutdown属性 值 命令行格式 --innodb-buffer-pool-dump-at-shutdown[={OFF|ON}]系统变量 innodb_buffer_pool_dump_at_shutdown范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定在关闭MySQL服务器时是否记录
InnoDB缓冲池中缓存的页面,以缩短下次重启时的预热过程。通常与结合使用innodb_buffer_pool_load_at_startup。该innodb_buffer_pool_dump_pct选项定义要转储的最近使用的缓冲池页面的百分比。双方
innodb_buffer_pool_dump_at_shutdown并innodb_buffer_pool_load_at_startup默认启用。有关更多信息,请参见“保存和恢复缓冲池状态”。
innodb_buffer_pool_dump_now属性 值 命令行格式 --innodb-buffer-pool-dump-now[={OFF|ON}]系统变量 innodb_buffer_pool_dump_now范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF立即记录缓存在
InnoDB缓冲池中的页面。通常与结合使用innodb_buffer_pool_load_now。有关更多信息,请参见“保存和恢复缓冲池状态”。
innodb_buffer_pool_dump_pct属性 值 命令行格式 --innodb-buffer-pool-dump-pct=#系统变量 innodb_buffer_pool_dump_pct范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 25最低值 1最大值 100指定每个缓冲池要读取和转储的最近使用页面的百分比。范围是1到100。默认值是25。例如,如果有4个缓冲池,每个缓冲池有100页,并且
innodb_buffer_pool_dump_pct设置为25,则转储每个缓冲池中最近使用的25个页面。innodb_buffer_pool_filename属性 值 命令行格式 --innodb-buffer-pool-filename=file_name系统变量 innodb_buffer_pool_filename范围 Global 动态 是 SET_VAR提示适用没有 类型 文件名 默认值 ib_buffer_pool指定包含由
innodb_buffer_pool_dump_at_shutdown或产生的表空间ID和页ID列表的文件名innodb_buffer_pool_dump_now。表空间ID和页面ID以以下格式保存:space, page_id。默认情况下,该文件被命名ib_buffer_pool并位于InnoDB数据目录中。必须相对于数据目录指定一个非默认位置。可以在运行时使用以下
SET语句指定文件名:SET GLOBAL innodb_buffer_pool_filename='file_name';您还可以在启动时在启动字符串或MySQL配置文件中指定文件名。在启动时指定文件名时,该文件必须存在,否则
InnoDB将返回启动错误,表明没有此类文件或目录。有关更多信息,请参见“保存和恢复缓冲池状态”。
innodb_buffer_pool_in_core_file属性 值 命令行格式 --innodb-buffer-pool-in-core-file[={OFF|ON}]介绍了 8.0.14 系统变量 innodb_buffer_pool_in_core_file范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON禁用该
innodb_buffer_pool_in_core_file变量可通过排除InnoDB缓冲池页面来减少核心文件的大小。要使用此变量,core_file必须启用该变量,并且操作系统必须支持Linux 3.4及更高版本支持的的MADV_DONTDUMP非POSIX扩展madvise()。有关更多信息,请参见“从核心文件中排除缓冲池页面”。innodb_buffer_pool_instances属性 值 命令行格式 --innodb-buffer-pool-instances=#系统变量 innodb_buffer_pool_instances范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值(其他) 8(or 1 if innodb_buffer_pool_size < 1GB默认值(Windows,32位平台) (autosized)最低值 1最大值 64InnoDB缓冲池划分为的区域数。对于缓冲池在数千兆字节范围内的系统,将缓冲池划分为多个单独的实例可以通过减少争用不同线程读写缓存页面的争用来提高并发性。使用哈希函数将存储在缓冲池中或从缓冲池读取的每个页面随机分配给其中一个缓冲池实例。每个缓冲池管理自己的空闲列表,刷新列表, LRU和连接到缓冲池的所有其他数据结构,并受其自己的缓冲池互斥量保护。此选项仅在设置
innodb_buffer_pool_size为1GB或更大时才生效。总缓冲池大小在所有缓冲池之间分配。为了获得最佳效率,指定的组合innodb_buffer_pool_instances和innodb_buffer_pool_size,使得每个缓冲池实例是至少为1GB。32位Windows系统上的默认值取决于的值
innodb_buffer_pool_size,如下所述:- 如果
innodb_buffer_pool_size大于1.3GB,则默认innodb_buffer_pool_instances值为innodb_buffer_pool_size/ 128MB,每个块都有单独的内存分配请求。选择1.3GB作为边界,在该边界处32位Windows无法分配单个缓冲池所需的连续地址空间存在很大风险。 - 否则,默认值为1。
在所有其他平台上,
innodb_buffer_pool_size大于或等于1GB 时,默认值为8 。否则,默认值为1。有关相关信息,请参见“配置InnoDB缓冲池大小”。
- 如果
innodb_buffer_pool_load_abort属性 值 命令行格式 --innodb-buffer-pool-load-abort[={OFF|ON}]系统变量 innodb_buffer_pool_load_abort范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF中断恢复由或触发的
InnoDB缓冲池内容的过程。innodb_buffer_pool_load_at_startupinnodb_buffer_pool_load_now有关更多信息,请参见“保存和恢复缓冲池状态”。
innodb_buffer_pool_load_at_startup属性 值 命令行格式 --innodb-buffer-pool-load-at-startup[={OFF|ON}]系统变量 innodb_buffer_pool_load_at_startup范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定在MySQL服务器启动时,通过加载先前保存的相同页面来自动预热
InnoDB缓冲池。通常与结合使用。innodb_buffer_pool_dump_at_shutdown双方
innodb_buffer_pool_dump_at_shutdown并innodb_buffer_pool_load_at_startup默认启用。有关更多信息,请参见“保存和恢复缓冲池状态”。
innodb_buffer_pool_load_now属性 值 命令行格式 --innodb-buffer-pool-load-now[={OFF|ON}]系统变量 innodb_buffer_pool_load_now范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF马上变暖了的
InnoDB缓冲池通过装载一组数据页面,无需等待服务器重新启动。在基准测试期间使缓存内存恢复到已知状态,或者使MySQL服务器准备好在运行查询报告或维护后恢复其正常工作负载时,这可能很有用。有关更多信息,请参见“保存和恢复缓冲池状态”。
innodb_buffer_pool_size属性 值 命令行格式 --innodb-buffer-pool-size=#系统变量 innodb_buffer_pool_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 134217728最低值 5242880最大值(64位平台) 2**64-1最大值(32位平台) 2**32-1缓冲池(用于
InnoDB缓存表和索引数据的内存区域)的大小(以字节为单位)。默认值为134217728字节(128MB)。最大值取决于CPU架构;在32位系统上最大为4294967295(2 32 -1),在64位系统上最大为18446744073709551615(2 64 -1)。在32位系统上,CPU体系结构和操作系统可能会施加比规定的最大值更低的实际最大值。当缓冲池的大小大于1GB时,将其设置innodb_buffer_pool_instances为大于1的值可以改善繁忙服务器上的可伸缩性。较大的缓冲池需要较少的磁盘I / O才能多次访问同一表数据。在专用数据库服务器上,您可以将缓冲池大小设置为计算机物理内存大小的80%。配置缓冲池大小时,请注意以下潜在问题,并在必要时准备减小缓冲池的大小。
- 物理内存竞争可能导致操作系统中的页面调度。
InnoDB为缓冲区和控制结构保留额外的内存,以便分配的总空间比指定的缓冲池大小大约大10%。- 缓冲池的地址空间必须是连续的,这在带有在特定地址加载DLL的Windows系统上可能是一个问题。
- 初始化缓冲池的时间大致与其大小成正比。在具有大缓冲池的实例上,初始化时间可能很长。为了减少初始化时间,您可以在服务器关闭时保存缓冲池状态,并在服务器启动时将其恢复。请参见“保存和恢复缓冲池状态”。
当您增加或减少缓冲池大小时,该操作将按块执行。块大小由
innodb_buffer_pool_chunk_size变量定义,其默认值为128 MB。缓冲池大小必须始终等于
innodb_buffer_pool_chunk_size*或*的倍数innodb_buffer_pool_instances。如果将缓冲池大小更改为不等于innodb_buffer_pool_chunk_size*或*的倍数innodb_buffer_pool_instances,则缓冲池大小将自动调整为等于innodb_buffer_pool_chunk_size*或*的倍数innodb_buffer_pool_instances。innodb_buffer_pool_size可以动态设置,可以在不重新启动服务器的情况下调整缓冲池的大小。该Innodb_buffer_pool_resize_status状态变量报告在线缓冲池大小调整操作的状态。有关更多信息,请参见“配置InnoDB缓冲池大小”。如果
innodb_dedicated_server启用,则innodb_buffer_pool_size如果未显式定义该值,则会自动对其进行配置。有关更多信息,请参见“为专用的MySQL服务器启用自动配置”。innodb_change_buffer_max_size属性 值 命令行格式 --innodb-change-buffer-max-size=#系统变量 innodb_change_buffer_max_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 25最低值 0最大值 50InnoDB更改缓冲区的最大大小,占缓冲池总大小的百分比。对于具有大量插入,更新和删除活动的MySQL服务器,您可以增加此值,而对于具有不变的用于报告的数据的MySQL服务器,则可以减小此值。有关更多信息,请参见“InnoDB更改缓冲区”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。innodb_change_buffering属性 值 命令行格式 --innodb-change-buffering=value系统变量 innodb_change_buffering范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 all有效值 noneinsertsdeleteschangespurgesall是否
InnoDB执行更改缓冲,这种优化会延迟对二级索引的写操作,以便可以顺序执行I / O操作。下表中描述了允许的值。值也可以通过数字指定。innodb_change_buffering的允许值
值 数值 描述 none0不要缓冲任何操作。 inserts1缓冲区插入操作。 deletes2缓冲区删除标记操作;严格来说,标记索引记录的写操作将在清除操作期间稍后删除。 changes3缓冲区插入和删除标记操作。 purges4缓冲在后台发生的物理删除操作。 all5默认值。缓冲区插入,删除标记操作和清除。 有关更多信息,请参见“InnoDB更改缓冲区”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
innodb_change_buffering_debug属性 值 命令行格式 --innodb-change-buffering-debug=#系统变量 innodb_change_buffering_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最大值 2为
InnoDB更改缓冲设置调试标志。值为1会强制所有更改都进入更改缓冲区。值为2会导致合并时崩溃。默认值0表示未设置更改缓冲调试标志。仅当使用CMake选项编译调试支持时,此选项才可用。WITH_DEBUGinnodb_checkpoint_disabled属性 值 命令行格式 --innodb-checkpoint-disabled[={OFF|ON}]系统变量 innodb_checkpoint_disabled范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF这是一个调试选项,仅供专家调试使用。它禁用检查点,以便有意的服务器出口始终启动
InnoDB恢复。仅应在短时间内启用它,通常是在运行DML操作之前,该操作将写入重做日志条目,而这些操作在服务器退出后需要恢复。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_checksum_algorithm属性 值 命令行格式 --innodb-checksum-algorithm=value系统变量 innodb_checksum_algorithm范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 crc32有效值 innodbcrc32nonestrict_innodbstrict_crc32strict_none指定如何生成和验证存储在表空间的磁盘块中的校验和。其缺省值是。
InnoDBinnodb_checksum_algorithmcrc32MySQL Enterprise Backup最高为3.8.0的版本不支持备份使用CRC32校验和的表空间。 MySQL Enterprise Backup在3.8.1中添加了CRC32校验和支持,但有一些限制。有关更多信息,请参考 MySQL企业备份 3.8.1更改历史记录。
该值
innodb与MySQL的早期版本向后兼容。该值crc32使用更快的算法来计算每个修改块的校验和,并检查每个磁盘读取的校验和。它一次扫描32位块,这比innodb校验和算法快,后者一次扫描8位块。该值none在校验和字段中写入一个常量值,而不是根据块数据计算一个值。表空间中的块可以混合使用旧值,新值和无校验和值,并随着数据的修改而逐渐更新。一旦将表空间中的块修改为使用crc32的算法,关联的表不能被早期版本的MySQL读取。如果校验和算法的严格形式在表空间中遇到有效但不匹配的校验和值,则会报告错误。建议您仅在新实例中使用严格的设置来首次设置表空间。严格的设置要快一些,因为它们不需要在磁盘读取期间计算所有校验和值。
下表显示了之间的区别
none,innodb和crc32选项值,和他们同行的严格。none,,innodb然后crc32将指定类型的校验和值写入每个数据块,但是出于兼容性考虑,在读取操作期间验证块时,请接受其他校验和值。严格的设置还会接受有效的校验和值,但是当遇到有效的不匹配校验和值时会显示一条错误消息。如果InnoDB实例中的所有数据文件都以相同的innodb_checksum_algorithm值创建,则使用严格格式可以加快验证速度。允许的innodb_checksum_algorithm值
值 生成的校验和(写时) 允许的校验和(读取时) 没有 一个常数。 任何所产生的校验和 none,innodb或crc32。Innodb 使用的原始算法在软件中计算出的校验和 InnoDB。任何所产生的校验和 none,innodb或crc32。crc32 使用 crc32算法计算出的校验和,可能需要借助硬件来完成。任何所产生的校验和 none,innodb或crc32。strict_none 常数 任何所产生的校验和 none,innodb或crc32。InnoDB如果遇到有效但不匹配的校验和,则会显示一条错误消息。strict_innodb 使用的原始算法在软件中计算出的校验和 InnoDB。任何所产生的校验和 none,innodb或crc32。InnoDB如果遇到有效但不匹配的校验和,则会显示一条错误消息。strict_crc32 使用 crc32算法计算出的校验和,可能需要借助硬件来完成。任何所产生的校验和 none,innodb或crc32。InnoDB如果遇到有效但不匹配的校验和,则会显示一条错误消息。innodb_cmp_per_index_enabled属性 值 命令行格式 --innodb-cmp-per-index-enabled[={OFF|ON}]系统变量 innodb_cmp_per_index_enabled范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF在
INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX表中启用与每个索引压缩相关的统计信息。由于收集这些统计信息可能会很昂贵,因此仅在与InnoDB压缩表相关的性能调整期间在开发,测试或从属实例上启用此选项。有关更多信息,请参见“ INFORMATION_SCHEMA INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET表”和“在运行时监视InnoDB表压缩”。
innodb_commit_concurrency属性 值 命令行格式 --innodb-commit-concurrency=#系统变量 innodb_commit_concurrency范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 1000可以同时提交的线程数。值0(默认值)允许任意数量的事务同时提交。
innodb_commit_concurrency无法在运行时将值从零更改为非零,反之亦然。该值可以从一个非零值更改为另一个。innodb_compress_debug属性 值 命令行格式 --innodb-compress-debug=value系统变量 innodb_compress_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 none有效值 nonezliblz4lz4hc使用指定的压缩算法压缩所有表,而不必
COMPRESSION为每个表定义属性。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUG有关相关信息,请参见“ InnoDB页面压缩”。
innodb_compression_failure_threshold_pct属性 值 命令行格式 --innodb-compression-failure-threshold-pct=#系统变量 innodb_compression_failure_threshold_pct范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 5最低值 0最大值 100以百分比定义表格的压缩失败率阈值,届时MySQL开始在压缩页面内添加填充,以避免昂贵的压缩失败。超过此阈值后,MySQL将开始在每个新的压缩页面中保留额外的可用空间,从而动态调整可用空间量,直到所指定的页面大小的百分比
innodb_compression_pad_pct_max。零值将禁用监视压缩效率并动态调整填充量的机制。有关更多信息,请参见“ OLTP工作负载的压缩”。
innodb_compression_level属性 值 命令行格式 --innodb-compression-level=#系统变量 innodb_compression_level范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 6最低值 0最大值 9指定用于
InnoDB压缩表和索引的zlib压缩级别。较高的值可让您将更多数据放入存储设备,但要以压缩期间更多的CPU开销为代价。较低的值可以在存储空间不是很关键的情况下减少CPU开销,或者您希望数据不是特别可压缩的。有关更多信息,请参见“ OLTP工作负载的压缩”。
innodb_compression_pad_pct_max属性 值 命令行格式 --innodb-compression-pad-pct-max=#系统变量 innodb_compression_pad_pct_max范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 50最低值 0最大值 75指定可以在每个压缩页面内保留为可用空间的最大百分比,以便在更新压缩表或索引并且可能重新压缩数据时留出空间来重组页面内的数据和修改日志。仅当
innodb_compression_failure_threshold_pct设置为非零值且压缩失败率超过临界点时适用。有关更多信息,请参见“ OLTP工作负载的压缩”。
innodb_concurrency_tickets属性 值 命令行格式 --innodb-concurrency-tickets=#系统变量 innodb_concurrency_tickets范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 5000最低值 1最大值 4294967295确定可以同时进入的线程数
InnoDB。如果线程InnoDB数已达到并发限制,则在尝试输入线程时会将其置于队列中。当允许线程进入时InnoDB,会给它一个等于的值的“票证”innodb_concurrency_tickets,线程可以InnoDB自由进入和离开,直到用完票证为止。在那之后,线程在下一次尝试进入时再次受到并发检查(和可能的排队)InnoDB。默认值为5000。用一个小
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报告显示了当前通过队列的执行交易中剩余的票证数量。该数据也可以从表的TRX_CONCURRENCY_TICKETS列中获得INFORMATION_SCHEMA.INNODB_TRX。有关更多信息,请参见“配置InnoDB线程并发”。
innodb_data_file_path属性 值 命令行格式 --innodb-data-file-path=file_name系统变量 innodb_data_file_path范围 Global 动态 没有 SET_VAR提示适用没有 类型 string 默认值 ibdata1:12M:autoextend定义
InnoDB系统表空间数据文件的名称,大小和属性。如果未指定的值innodb_data_file_path,则默认行为是创建一个稍大于12MB的名为的自动扩展数据文件ibdata1。数据文件规范的完整语法包括文件名,文件大小,
autoextend属性和max属性:file_name:file_size[:autoextend[:max:max_file_size]]
文件大小是由附加在千字节,兆字节或千兆字节指定
K,M或G对大小值。如果以千字节为单位指定数据文件大小,请以1024的倍数指定。否则,KB值将四舍五入到最接近的兆字节(MB)边界。文件大小的总和至少必须大于12MB。有关其他配置信息,请参阅《系统表空间数据文件配置》。有关调整大小的说明,请参阅调整系统表空间的大小。
innodb_data_home_dir属性 值 命令行格式 --innodb-data-home-dir=dir_name系统变量 innodb_data_home_dir范围 Global 动态 没有 SET_VAR提示适用没有 类型 目录名 InnoDB系统表空间数据文件的目录路径的公共部分。启用此设置不会影响每表文件表空间的位置innodb_file_per_table。默认值为MySQLdata目录。如果将值指定为空字符串,则可以为指定绝对文件路径innodb_data_file_path。指定的值时,必须使用斜杠
innodb_data_home_dir。例如:[mysqld] innodb_data_home_dir = /path/to/myibdata/
有关相关信息,请参见“ InnoDB启动配置”。
innodb_ddl_log_crash_reset_debug属性 值 命令行格式 --innodb-ddl-log-crash-reset-debug[={OFF|ON}]系统变量 innodb_ddl_log_crash_reset_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用此调试选项可将DDL日志崩溃注入计数器重置为1。仅当使用CMake选项编译调试支持时,此选项才可用。
WITH_DEBUGinnodb_deadlock_detect属性 值 命令行格式 --innodb-deadlock-detect[={OFF|ON}]系统变量 innodb_deadlock_detect范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON此选项用于禁用死锁检测。在高并发系统上,当多个线程等待相同的锁时,死锁检测会导致速度变慢。有时,禁用死锁检测并在
innodb_lock_wait_timeout发生死锁时依靠设置进行事务回滚可能会更有效。有关相关信息,请参见“死锁检测和回滚”。
innodb_dedicated_server属性 值 命令行格式 --innodb-dedicated-server[={OFF|ON}]系统变量 innodb_dedicated_server范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF当
innodb_dedicated_server启用时,InnoDB根据所述服务器上检测到的内存量自动配置以下选项:innodb_buffer_pool_sizeinnodb_log_file_sizeinnodb_flush_method
仅当您的MySQL实例在专用服务器上运行时才考虑启用此选项,在该专用服务器上MySQL服务器能够消耗所有可用的系统资源。如果您的MySQL实例与其他应用程序共享系统资源,则不建议启用此选项。
有关更多信息,请参见“为专用的MySQL服务器启用自动配置”。
innodb_default_row_format属性 值 命令行格式 --innodb-default-row-format=value系统变量 innodb_default_row_format范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 DYNAMIC有效值 DYNAMICCOMPACTREDUNDANT该
innodb_default_row_format选项定义InnoDB表和用户创建的临时表的默认行格式。默认设置为DYNAMIC。其他允许的值为COMPACT和REDUNDANT。系统表空间中COMPRESSED不支持使用的行格式不能定义为默认格式。新创建的表使用未明确指定选项或使用选项
innodb_default_row_format时定义的行格式。ROW_FORMATROW_FORMAT=DEFAULT当
ROW_FORMAT未明确指定选项或ROW_FORMAT=DEFAULT使用时,任何重建表的操作也将默默地将表的行格式更改为定义的格式innodb_default_row_format。有关更多信息,请参见定义表的行格式。InnoDB由服务器创建的用于处理查询的内部临时表使用DYNAMIC行格式,而不管innodb_default_row_format设置如何。innodb_directories属性 值 命令行格式 --innodb-directories=dir_name系统变量 innodb_directories范围 Global 动态 没有 SET_VAR提示适用没有 类型 目录名 定义要在启动时扫描的表空间文件的目录。当服务器脱机时将表空间文件移动或还原到新位置时,将使用此选项。它还用于指定使用绝对路径创建或位于数据目录外部的表空间文件的目录。
崩溃恢复期间的表空间发现依赖于该
innodb_directories设置来标识重做日志中引用的表空间。有关更多信息,请参见崩溃恢复期间的表空间发现。由
innodb_data_home_dir,innodb_undo_directory和定义的目录datadir将自动附加到innodb_directories参数值,而不管是否innodb_directories显式指定了该选项。innodb_directories可以在启动命令或MySQL选项文件中指定为选项。在参数值周围使用引号,因为否则某些命令解释器会将分号(;)解释为特殊字符。(例如,Unix shell将其视为命令终止符。)启动命令:
mysqld --innodb-directories="directory_path_1;directory_path_2"
MySQL选项文件:
[mysqld] innodb_directories="directory_path_1;directory_path_2"
通配符表达式不能用于指定目录。
该
innodb_directories扫描还遍历指定的目录的子目录。重复的目录和子目录将从要扫描的目录列表中丢弃。有关更多信息,请参见“在服务器脱机时移动表空间文件”。
innodb_disable_sort_file_cache属性 值 命令行格式 --innodb-disable-sort-file-cache[={OFF|ON}]系统变量 innodb_disable_sort_file_cache范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF禁用操作系统文件系统缓存以进行合并排序临时文件。效果是使用等价的文件打开此类文件
O_DIRECT。innodb_doublewrite属性 值 命令行格式 --innodb-doublewrite[={OFF|ON}]系统变量 innodb_doublewrite范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 ON启用后(默认),
InnoDB将所有数据存储两次,首先存储到 doublewrite缓冲区,然后存储到实际数据文件。可以在--skip-innodb-doublewrite需要最高性能的基准测试或案例中关闭此变量,而不用担心数据完整性或可能的故障。双重写入缓冲区存储区位于系统表空间中。如果系统表空间数据文件位于支持原子写的Fusion-io设备上,则会自动禁用双写缓冲区,而改为使用Fusion-io原子写来执行数据文件写。但是,请注意该
innodb_doublewrite设置是全局的。如果禁用了doublewrite缓冲区,则对所有数据文件(包括那些不在Fusion-io硬件上的数据文件)都将禁用它。此功能仅在Fusion-io硬件上受支持,并且仅在Linux上的Fusion-io NVMFS中启用。要充分利用此功能,建议innodb_flush_method设置O_DIRECT为。有关相关信息,请参见“ Doublewrite缓冲区”。
innodb_fast_shutdown属性 值 命令行格式 --innodb-fast-shutdown=#系统变量 innodb_fast_shutdown范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 1有效值 012在
InnoDB关机模式。如果值为0,InnoDB则执行慢关机,完全清除和更改缓冲区合并,然后再关闭。如果值为1(默认值),则InnoDB在关闭时跳过这些操作,该过程称为快速关闭。如果值为2,则InnoDB刷新其日志并冷关闭,就像MySQL已经崩溃一样。不会丢失任何已提交的事务,但是崩溃恢复操作会使下次启动花费更长的时间。慢速关闭可能需要几分钟,甚至在仍然缓冲大量数据的极端情况下,甚至需要数小时。在MySQL主要版本之间进行升级或降级之前,请使用慢速关机技术,以便为所有数据文件做好充分准备,以防升级过程更新文件格式。
使用
innodb_fast_shutdown=2紧急或故障排除的情况下,获得绝对最快关机,如果数据是在损坏的风险。innodb_fil_make_page_dirty_debug属性 值 命令行格式 --innodb-fil-make-page-dirty-debug=#系统变量 innodb_fil_make_page_dirty_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最大值 2**32-1默认情况下,设置
innodb_fil_make_page_dirty_debug为表空间的ID会立即弄脏该表空间的第一页。如果innodb_saved_page_number_debug设置为非默认值,则innodb_fil_make_page_dirty_debug在指定的页面上设置污垢。innodb_fil_make_page_dirty_debug仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_file_per_table属性 值 命令行格式 --innodb-file-per-table[={OFF|ON}]系统变量 innodb_file_per_table范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON当
innodb_file_per_table启用时,在文件的每个表的表空间默认创建的表。禁用后,默认情况下在系统表空间中创建表。有关每表文件表空间的信息,请参见“每表文件表空间”。有关InnoDB系统表空间的信息,请参见“系统表空间”。所述
innodb_file_per_table变量可以在运行时使用一被配置SET GLOBAL语句,在启动时在命令行上指定,或者指定的选项的文件。运行时配置需要足够的特权来设置全局系统变量(请参见“系统变量特权”)并立即影响所有连接的操作。当驻留在每个表文件表空间中的表被截断或删除时,释放的空间将返回到操作系统。截断或删除驻留在系统表空间中的表只会释放系统表空间中的空间。系统表空间中的释放空间可再次用于
InnoDB数据,但不会返回操作系统,因为系统表空间数据文件永远不会收缩。该
innodb_file_per-table设置不影响临时表的创建。从MySQL 8.0.14开始,将在会话临时表空间以及之前的全局临时表空间中创建临时表。请参见“临时表空间”。innodb_fill_factor属性 值 命令行格式 --innodb-fill-factor=#系统变量 innodb_fill_factor范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 100最低值 10最大值 100InnoDB在创建或重建索引时执行批量加载。这种创建索引的方法称为“排序索引构建”。innodb_fill_factor定义在已排序索引构建期间填充的每个B树页面上的空间百分比,剩余空间保留给将来的索引增长。例如,设置innodb_fill_factor为80将在每个B树页面上保留20%的空间用于将来的索引增长。实际百分比可能有所不同。该innodb_fill_factor设置被解释为提示而不是硬限制。一个
innodb_fill_factor100个叶子在聚簇索引页的空间1/16的设置免费为未来的指数增长。innodb_fill_factor适用于B树叶子页面和非叶子页面。它不适用于用于TEXT或BLOB条目的外部页面。有关更多信息,请参见“排序索引构建”。
innodb_flush_log_at_timeout属性 值 命令行格式 --innodb-flush-log-at-timeout=#系统变量 innodb_flush_log_at_timeout范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 1最低值 1最大值 2700每秒钟写入并刷新日志
N。innodb_flush_log_at_timeout允许增加两次刷新之间的超时时间,以减少刷新并避免影响二进制日志组提交的性能。默认设置为innodb_flush_log_at_timeout每秒一次。innodb_flush_log_at_trx_commit属性 值 命令行格式 --innodb-flush-log-at-trx-commit=#系统变量 innodb_flush_log_at_trx_commit范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 1有效值 012控制提交操作的严格ACID遵从性与更高的性能之间的平衡,当重新安排并批量执行与提交相关的I / O操作时,可以实现更高的性能。您可以通过更改默认值来获得更好的性能,但随后可能会在崩溃中丢失事务。
- 要完全符合ACID,必须使用默认设置1。日志在每次事务提交时写入并刷新到磁盘。
- 设置为0时,每秒写入一次日志并将其刷新到磁盘。尚未刷新日志的事务可能会在崩溃中丢失。
- 设置为2时,在每次事务提交后写入日志,并每秒刷新一次到磁盘。尚未刷新日志的事务可能会在崩溃中丢失。
- 对于设置0和2,不能保证每秒刷新一次100%。由于DDL更改和
InnoDB导致日志独立于innodb_flush_log_at_trx_commit设置进行刷新的其他内部活动,刷新可能会更频繁地发生,而由于计划问题有时会更不频繁地发生。如果日志每秒刷新一次,则崩溃中最多可能丢失一秒钟的事务。如果日志刷新的频率大于或小于每秒一次,则丢失的事务量将相应变化。 - 日志刷新频率由来控制
innodb_flush_log_at_timeout,可让您将日志刷新频率设置为N秒(其中N为1 ... 2700,默认值为1)。但是,任何mysqld进程崩溃都可能擦除多达N几秒钟的事务。 - DDL更改和其他内部
InnoDB活动独立于innodb_flush_log_at_trx_commit设置刷新日志。 InnoDB无论innodb_flush_log_at_trx_commit设置如何,崩溃恢复都可以工作。事务要么全部应用,要么全部删除。
为了在
InnoDB与事务一起使用的复制设置中具有持久性和一致性,请执行以下操作:- 如果启用了二进制日志记录,请设置
sync_binlog=1。 - 始终设置
innodb_flush_log_at_trx_commit=1。
警告
许多操作系统和某些磁盘硬件使“刷新磁盘”操作变得愚蠢。他们可能告诉mysqld刷新已经发生,即使没有发生。在这种情况下,即使使用建议的设置也无法保证事务的持久性,并且在最坏的情况下,停电可能会破坏
InnoDB数据。在SCSI磁盘控制器或磁盘本身中使用电池供电的磁盘缓存可以加快文件刷新的速度,并使操作更安全。您也可以尝试禁用硬件高速缓存中磁盘写入的高速缓存。innodb_flush_method属性 值 命令行格式 --innodb-flush-method=value系统变量 innodb_flush_method范围 Global 动态 没有 SET_VAR提示适用没有 类型 string 预设值(Windows) unbuffered预设值(Unix) fsync有效值(Windows) unbufferednormal有效值(Unix) fsyncO_DSYNClittlesyncnosyncO_DIRECTO_DIRECT_NO_FSYNC定义用于将数据刷新到
InnoDB数据文件和日志文件的方法,这会影响I / O吞吐量。在类似Unix的系统上,默认值为
fsync。在Windows上,默认值为unbuffered。注意
在MySQL 8.0中,
innodb_flush_method选项可以用数字指定。类似
innodb_flush_methodUnix的系统的选项包括:fsync或0:InnoDB使用fsync()系统调用来刷新数据和日志文件。fsync是默认设置。O_DSYNC或1:InnoDB用于O_SYNC打开和刷新日志文件,以及fsync()刷新数据文件。InnoDB不能O_DSYNC直接使用,因为在许多Unix上都存在问题。littlesync或2:此选项用于内部性能测试,当前不受支持。使用风险自负。nosync或3:此选项用于内部性能测试,当前不受支持。使用风险自负。O_DIRECT或4:InnoDB使用O_DIRECT(或directio()在Solaris上)打开数据文件,并用于fsync()刷新数据和日志文件。此选项在某些GNU / Linux版本,FreeBSD和Solaris上可用。O_DIRECT_NO_FSYNC:在刷新I / O期间InnoDB使用O_DIRECT,但fsync()在每次写操作后跳过系统调用。在MySQL 8.0.14之前,此设置不适用于文件系统,例如XFS和EXT4,它们需要
fsync()系统调用来同步文件系统元数据更改。如果不确定文件系统是否需要fsync()系统调用来同步文件系统元数据更改,请O_DIRECT改用。从MySQL 8.0.14开始,
fsync()在创建新文件,增加文件大小和关闭文件后会调用该文件,以确保文件系统元数据更改同步。fsync()每次写操作后,系统调用仍然被跳过。如果重做日志文件和数据文件位于不同的存储设备上,则可能会导致数据丢失,并且在从没有电池供电的设备缓存中清除数据文件写入之前,将发生崩溃。如果您使用或打算将不同的存储设备用于重做日志文件和数据文件,并且您的数据文件位于不具有电池后备缓存的设备上,请
O_DIRECT改用。
innodb_flush_methodWindows系统的选项包括:unbuffered或0:InnoDB使用模拟异步I / O和非缓冲I / O。normal或1:InnoDB使用模拟的异步I / O和缓冲的I / O。
每个设置如何影响性能取决于硬件配置和工作负载。对您的特定配置进行基准测试,以确定使用哪个设置,或者是否保留默认设置。检查
Innodb_data_fsyncs状态变量以参见fsync()每个设置的总呼叫数。工作负载中读写操作的混合会影响设置的执行方式。例如,在具有硬件RAID控制器和电池后备写入高速缓存的系统上,O_DIRECT可以帮助避免InnoDB缓冲池和操作系统文件系统高速缓存之间的双重缓冲。在某些系统上InnoDB数据和日志文件位于SAN上,为默认值,或者O_DSYNC对于包含大量SELECT语句的读取繁重的工作负载而言可能更快。始终使用反映您的生产环境的硬件和工作负载来测试此参数。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。如果
innodb_dedicated_server启用,则innodb_flush_method如果未显式定义该值,则会自动对其进行配置。有关更多信息,请参见“为专用的MySQL服务器启用自动配置”。innodb_flush_neighbors属性 值 命令行格式 --innodb-flush-neighbors=#系统变量 innodb_flush_neighbors范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 0有效值 012指定是否冲洗从一个页面
InnoDB缓冲池也可以清空其他脏页在相同的程度。- 设置为0将禁用
innodb_flush_neighbors。同样程度的脏页也不会刷新。 - 设置为1会以相同程度刷新连续的脏页。
- 设置为2将以相同程度刷新脏页。
当表数据存储在传统的 HDD存储设备上时,与在不同时间刷新单个页面相比,在一次操作中刷新此类相邻页面可减少I / O开销(主要用于磁盘查找操作)。对于存储在SSD上的表数据,查找时间不是重要因素,您可以将此选项设置为0以分散写操作。有关相关信息,请参见“配置缓冲池刷新”。
- 设置为0将禁用
innodb_flush_sync属性 值 命令行格式 --innodb-flush-sync[={OFF|ON}]系统变量 innodb_flush_sync范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ONinnodb_flush_sync默认情况下启用的变量使innodb_io_capacity设置在检查点发生I / O活动突发时被忽略。要遵守innodb_io_capacity设置定义的I / O速率,请禁用innodb_flush_sync。有关配置
innodb_flush_sync变量的信息,请参见“配置InnoDB I / O容量”。innodb_flushing_avg_loops属性 值 命令行格式 --innodb-flushing-avg-loops=#系统变量 innodb_flushing_avg_loops范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 30最低值 1最大值 1000迭代次数
InnoDB保持先前计算的刷新状态快照,以控制自适应刷新对变化的工作负载做出响应的速度。增大该值将使刷新操作的速率随着工作负载的变化而逐渐平稳地变化。减小该值可使自适应冲洗迅速适应工作负荷的变化,如果工作负荷突然增加和减少,则可能导致冲洗活动高峰。有关相关信息,请参见“配置缓冲池刷新”。
innodb_force_load_corrupted属性 值 命令行格式 --innodb-force-load-corrupted[={OFF|ON}]系统变量 innodb_force_load_corrupted范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF允许
InnoDB在启动时加载标记为已损坏的表。仅在故障排除期间使用,以恢复原本无法访问的数据。故障排除完成后,请禁用此设置并重新启动服务器。innodb_force_recovery属性 值 命令行格式 --innodb-force-recovery=#系统变量 innodb_force_recovery范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 6在崩溃恢复模式,通常只有在认真排除故障的情况下更改。可能的值是0到6。有关这些值的含义和有关的重要信息
innodb_force_recovery,请参见“InnoDB恢复”。警告
仅在紧急情况下将此变量设置为大于0的值,以便您可以启动
InnoDB和转储表。为了安全起见,请InnoDB防止INSERT,UPDATE或DELETE在innodb_force_recovery大于0 时进行操作。innodb_force_recovery设置为4或更大的位置将InnoDB进入只读模式。这些限制可能会导致复制管理命令失败并出现错误,因为复制会将从属状态日志存储在
InnoDB表中。innodb_fsync_threshold属性 值 命令行格式 --innodb-fsync-threshold=#介绍了 8.0.13 系统变量 innodb_fsync_threshold范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 2**64-1默认情况下,当
InnoDB创建新的数据文件(例如新的日志文件或表空间文件)时,在将文件刷新到磁盘之前,该文件已完全写入操作系统缓存,这可能导致在以下位置发生大量磁盘写活动:一旦。要强制从操作系统缓存中进行较小的定期数据刷新,可以使用该innodb_fsync_threshold变量以字节为单位定义阈值。当达到字节阈值时,操作系统高速缓存的内容将刷新到磁盘。默认值0强制执行默认行为,即仅在将文件完全写入高速缓存后才将数据刷新到磁盘。在多个MySQL实例使用同一存储设备的情况下,指定阈值以强制进行较小的定期刷新可能是有益的。例如,创建一个新的MySQL实例及其关联的数据文件可能会导致大量磁盘写入活动,从而妨碍使用相同存储设备的其他MySQL实例的性能。配置阈值有助于避免写入活动激增。
innodb_ft_aux_table属性 值 系统变量 innodb_ft_aux_table范围 Global 动态 是 SET_VAR提示适用没有 类型 string 指定
InnoDB包含FULLTEXT索引的表的限定名称。此变量用于诊断目的,只能在运行时设置。例如:SET GLOBAL innodb_ft_aux_table = 'test/t1';当您在格式这个变量设置为名称的表格,,,,以及有关指定表的搜索索引中显示的信息。
db_name/table_nameINFORMATION_SCHEMAINNODB_FT_INDEX_TABLEINNODB_FT_INDEX_CACHEINNODB_FT_CONFIGINNODB_FT_DELETEDINNODB_FT_BEING_DELETED有关更多信息,请参见“ InnoDB INFORMATION_SCHEMA FULLTEXT索引表”。
innodb_ft_cache_size属性 值 命令行格式 --innodb-ft-cache-size=#系统变量 innodb_ft_cache_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 8000000最低值 1600000最大值 80000000分配给
InnoDBFULLTEXT搜索索引缓存的内存(以字节为单位),该索引在创建InnoDBFULLTEXT索引时将已解析的文档保存在内存中。只有innodb_ft_cache_size达到大小限制时,索引插入和更新才会提交到磁盘。innodb_ft_cache_size定义每个表的缓存大小。要为所有表设置全局限制,请参见innodb_ft_total_cache_size。有关更多信息,请参见 InnoDB全文索引缓存。
innodb_ft_enable_diag_print属性 值 命令行格式 --innodb-ft-enable-diag-print[={OFF|ON}]系统变量 innodb_ft_enable_diag_print范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 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属性 值 命令行格式 --innodb-ft-enable-stopword[={OFF|ON}]系统变量 innodb_ft_enable_stopword范围 Global, Session 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定在创建索引时将一组停用词与
InnoDBFULLTEXT索引关联。如果innodb_ft_user_stopword_table设置了该选项,则停用词将从该表中获取。否则,如果innodb_ft_server_stopword_table设置了该选项,则停用词将从该表中获取。否则,将使用一组内置的默认停用词。有关更多信息,请参见“全文停用词”。
innodb_ft_max_token_size属性 值 命令行格式 --innodb-ft-max-token-size=#系统变量 innodb_ft_max_token_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 84最低值 10最大值 84InnoDBFULLTEXT索引中存储的单词的最大字符长度。对此值设置限制会减少索引的大小,从而通过省略长关键字或不是真实单词且不太可能是搜索词的字母的任意集合来加快查询速度。有关更多信息,请参见“微调MySQL全文搜索”。
innodb_ft_min_token_size属性 值 命令行格式 --innodb-ft-min-token-size=#系统变量 innodb_ft_min_token_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 3最低值 0最大值 16InnoDBFULLTEXT索引中存储的单词的最小长度。增大此值可减少索引的大小,从而通过省略在搜索上下文中不太可能有意义的常见单词(例如英语单词“ a ”和“ to ”)来加快查询速度。对于使用CJK(中文,日文,韩文)字符集的内容,请将值指定为1。有关更多信息,请参见“微调MySQL全文搜索”。
innodb_ft_num_word_optimize属性 值 命令行格式 --innodb-ft-num-word-optimize=#系统变量 innodb_ft_num_word_optimize范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 2000OPTIMIZE TABLE在InnoDBFULLTEXT索引上的每次操作期间要处理的字数。由于对包含全文搜索索引的表进行批量插入或更新操作可能需要大量索引维护才能合并所有更改,因此您可能需要执行一系列OPTIMIZE TABLE语句,每个语句都从最后一个中断的地方开始。有关更多信息,请参见“微调MySQL全文搜索”。
innodb_ft_result_cache_limit属性 值 命令行格式 --innodb-ft-result-cache-limit=#系统变量 innodb_ft_result_cache_limit范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 2000000000最低值 1000000最大值 2**32-1在
InnoDB每全文搜索查询或每个线程全文搜索查询结果高速缓存限制(以字节为单位定义)。中间和最终InnoDB全文搜索查询结果在内存中处理。用于innodb_ft_result_cache_limit在全文搜索查询结果高速缓存上设置大小限制,以避免在InnoDB全文搜索查询结果非常大(例如,数百万或数亿行)的情况下占用过多的内存。处理全文搜索查询时,将根据需要分配内存。如果达到了结果高速缓存大小限制,则返回错误,指示查询超出了最大允许的内存。innodb_ft_result_cache_limit所有平台类型和位大小的最大值为2 ** 32-1。innodb_ft_server_stopword_table属性 值 命令行格式 --innodb-ft-server-stopword-table=db_name/table_name系统变量 innodb_ft_server_stopword_table范围 Global 动态 是 SET_VAR提示适用没有 类型 string 默认值 NULL此选项用于
InnoDBFULLTEXT为所有InnoDB表指定您自己的索引停用词列表。要为特定InnoDB表配置自己的停用词列表,请使用innodb_ft_user_stopword_table。设置
innodb_ft_server_stopword_table为包含停用词列表的表的名称,格式为。db_name/table_name在配置之前,停用词表必须存在
innodb_ft_server_stopword_table。在创建索引之前,innodb_ft_enable_stopword必须先启用它并且innodb_ft_server_stopword_table必须配置选项FULLTEXT。停用词表必须是一个
InnoDB表,其中包含一个VARCHAR名为的单列value。有关更多信息,请参见“全文停用词”。
innodb_ft_sort_pll_degree属性 值 命令行格式 --innodb-ft-sort-pll-degree=#系统变量 innodb_ft_sort_pll_degree范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 2最低值 1最大值 32InnoDBFULLTEXT建立搜索索引时并行用于索引索引和标记索引文本的线程数。有关相关信息,请参见“ InnoDB FULLTEXT索引”和
innodb_sort_buffer_size。innodb_ft_total_cache_size属性 值 命令行格式 --innodb-ft-total-cache-size=#系统变量 innodb_ft_total_cache_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 640000000最低值 32000000最大值 1600000000InnoDB为所有表的全文本搜索索引高速缓存分配的总内存(以字节为单位)。创建许多表,每个表都有一个FULLTEXT搜索索引,可能会消耗大量可用内存。innodb_ft_total_cache_size为所有全文搜索索引定义全局内存限制,以帮助避免过多的内存消耗。如果通过索引操作达到了全局限制,则会触发强制同步。有关更多信息,请参见 InnoDB全文索引缓存。
innodb_ft_user_stopword_table属性 值 命令行格式 --innodb-ft-user-stopword-table=db_name/table_name系统变量 innodb_ft_user_stopword_table范围 Global, Session 动态 是 SET_VAR提示适用没有 类型 string 默认值 NULL此选项用于
InnoDBFULLTEXT在特定表上指定您自己的索引停用词列表。要为所有InnoDB表配置自己的停用词列表,请使用innodb_ft_server_stopword_table。设置
innodb_ft_user_stopword_table为包含停用词列表的表的名称,格式为。db_name/table_name在配置之前,停用词表必须存在
innodb_ft_user_stopword_table。在创建索引之前innodb_ft_enable_stopword必须启用它并且innodb_ft_user_stopword_table必须对其进行配置FULLTEXT。停用词表必须是一个
InnoDB表,其中包含一个VARCHAR名为的单列value。有关更多信息,请参见“全文停用词”。
innodb_idle_flush_pct属性 值 命令行格式 --innodb-idle-flush-pct=#介绍了 8.0.18 系统变量 innodb_idle_flush_pct范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 100最低值 0最大值 100限制
InnoDB空闲时的页面刷新。该innodb_idle_flush_pct值是innodb_io_capacity设置的百分比,该设置定义了每秒可用的I / O操作数InnoDB。有关更多信息,请参见在空闲期间限制缓冲区刷新。innodb_io_capacity属性 值 命令行格式 --innodb-io-capacity=#系统变量 innodb_io_capacity范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 200最低值 100最大值(64位平台) 2**64-1最大值(32位平台) 2**32-1该
innodb_io_capacity变量定义了可用于InnoDB后台任务的每秒I / O操作数(IOPS),例如从缓冲池刷新页面和合并来自更改缓冲区的数据。有关配置
innodb_io_capacity变量的信息,请参见“配置InnoDB I / O容量”。innodb_io_capacity_max属性 值 命令行格式 --innodb-io-capacity-max=#系统变量 innodb_io_capacity_max范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 see description最低值 100最大值(Windows,64位平台) 2**32-1最大值(Unix,64位平台) 2**64-1最大值(32位平台) 2**32-1如果刷新活动落后,则
InnoDB可以以比innodb_io_capacity变量定义更高的每秒I / O操作速率(IOPS)更积极地进行刷新。该innodb_io_capacity_max变量定义InnoDB在这种情况下由后台任务执行的最大IOPS数。有关配置
innodb_io_capacity_max变量的信息,请参见“配置InnoDB I / O容量”。innodb_limit_optimistic_insert_debug属性 值 命令行格式 --innodb-limit-optimistic-insert-debug=#系统变量 innodb_limit_optimistic_insert_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 2**32-1限制每个B树页面的记录数。默认值0表示没有限制。仅当使用CMake选项编译了调试支持时,此选项才可用。
WITH_DEBUGinnodb_lock_wait_timeout属性 值 命令行格式 --innodb-lock-wait-timeout=#系统变量 innodb_lock_wait_timeout范围 Global, Session 动态 是 SET_VAR提示适用没有 类型 整数 默认值 50最低值 1最大值 1073741824InnoDB事务在放弃之前等待行锁定的时间长度(以秒为单位)。默认值为50秒。尝试访问被另一个InnoDB事务锁定的行的事务在发出以下错误之前最多要等待这么多秒才能对该行进行写访问:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
发生锁定等待超时时,将回滚当前语句(而不是整个事务)。要使整个事务回滚,请使用
--innodb-rollback-on-timeout选项启动服务器。另请参见“ InnoDB错误处理”。对于高度交互的应用程序或OLTP系统,您可以减小此值,以快速显示用户反馈或将更新放入队列中以备后用。您可以为长时间运行的后端操作(例如,数据仓库中的转换步骤等待其他大型插入或更新操作完成)增加该值。
innodb_lock_wait_timeout适用于InnoDB行锁。MySQL 表锁不会在内部发生,InnoDB并且此超时不适用于等待表锁。锁等待超时值不适用于死锁时
innodb_deadlock_detect被启用(默认),因为InnoDB检测立即锁死,并回滚死锁的交易之一。当innodb_deadlock_detect被禁用,InnoDB依赖于innodb_lock_wait_timeout对事务回滚发生死锁时。请参见“死锁检测和回滚”。innodb_lock_wait_timeout可以在运行时使用SET GLOBALorSET SESSION语句设置。更改GLOBAL设置需要足够的特权来设置全局系统变量(请参见“系统变量特权”),并且会影响随后连接的所有客户端的操作。任何客户端都可以更改的SESSION设置innodb_lock_wait_timeout,这只会影响该客户端。innodb_log_buffer_size属性 值 命令行格式 --innodb-log-buffer-size=#系统变量 innodb_log_buffer_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 16777216最低值 1048576最大值 4294967295InnoDB用于写入磁盘上的日志文件的缓冲区的大小(以字节为单位)。默认值为16MB。较大的日志缓冲区使大型事务可以运行,而无需在事务提交之前将日志写入磁盘。因此,如果您有更新,插入或删除许多行的事务,则使日志缓冲区更大可以节省磁盘I / O。有关相关信息,请参见内存配置和“优化InnoDB重做日志”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。innodb_log_checkpoint_fuzzy_now属性 值 命令行格式 --innodb-log-checkpoint-fuzzy-now[={OFF|ON}]介绍了 8.0.13 系统变量 innodb_log_checkpoint_fuzzy_now范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用此调试选项可强制
InnoDB编写模糊检查点。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_log_checkpoint_now属性 值 命令行格式 --innodb-log-checkpoint-now[={OFF|ON}]系统变量 innodb_log_checkpoint_now范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用此调试选项以强制
InnoDB编写检查点。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_log_checksums属性 值 命令行格式 --innodb-log-checksums[={OFF|ON}]系统变量 innodb_log_checksums范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON启用或禁用重做日志页面的校验和。
innodb_log_checksums=ONCRC-32C为重做日志页面启用校验和算法。如果innodb_log_checksums禁用此选项,那么将忽略重做日志页面校验和字段的内容。重做日志标题页和重做日志检查点页上的校验和永远不会被禁用。
innodb_log_compressed_pages属性 值 命令行格式 --innodb-log-compressed-pages[={OFF|ON}]系统变量 innodb_log_compressed_pages范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定是否将重新压缩的页面的图像写入重做日志。对压缩数据进行更改时,可能会发生重新压缩。
innodb_log_compressed_pages默认情况下启用此选项以防止zlib在恢复过程中使用不同版本的压缩算法时可能发生的损坏。如果确定zlib版本不会更改,则可以禁用它,innodb_log_compressed_pages以减少修改压缩数据的工作负载的重做日志生成。要衡量启用或禁用的效果
innodb_log_compressed_pages,请比较在相同工作负载下这两种设置的重做日志生成。测量重做日志生成的选项包括观察输出部分的Log sequence number(LSN),或监视状态以了解写入重做日志文件的字节数。LOGSHOW ENGINE INNODB STATUSInnodb_os_log_written有关相关信息,请参见“ OLTP工作负载的压缩”。
innodb_log_file_size属性 值 命令行格式 --innodb-log-file-size=#系统变量 innodb_log_file_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 50331648最低值 4194304最大值 512GB / innodb_log_files_in_group在每个字节大小日志文件在日志组。日志文件的总大小(
innodb_log_file_size*innodb_log_files_in_group)不能超过略小于512GB的最大值。例如,一对255 GB的日志文件已达到限制,但没有超过该限制。默认值为48MB。通常,日志文件的总大小应足够大,以使服务器可以消除工作负载活动中的高峰和低谷,这通常意味着有足够的重做日志空间来处理一个小时以上的写活动。值越大,缓冲池中需要的检查点刷新活动越少,从而节省了磁盘I / O。较大的日志文件也会使崩溃恢复变慢。
最小
innodb_log_file_size为4MB。有关相关信息,请参阅重做日志文件配置。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
如果
innodb_dedicated_server启用,则innodb_log_file_size如果未显式定义该值,则会自动对其进行配置。有关更多信息,请参见“为专用的MySQL服务器启用自动配置”。innodb_log_files_in_group属性 值 命令行格式 --innodb-log-files-in-group=#系统变量 innodb_log_files_in_group范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 2最低值 2最大值 100数日志文件中日志组。
InnoDB以循环方式写入文件。默认(推荐)值为2。文件的位置由指定innodb_log_group_home_dir。日志文件(innodb_log_file_size*innodb_log_files_in_group)的总大小最大为512GB。有关相关信息,请参阅重做日志文件配置。
innodb_log_group_home_dir属性 值 命令行格式 --innodb-log-group-home-dir=dir_name系统变量 innodb_log_group_home_dir范围 Global 动态 没有 SET_VAR提示适用没有 类型 目录名 InnoDB重做日志文件的目录路径,其编号由指定innodb_log_files_in_group。如果不指定任何InnoDB日志变量,默认的是创建一个名为两个文件ib_logfile0,并ib_logfile1在MySQL数据目录。日志文件的大小由innodb_log_file_size系统变量给定。有关相关信息,请参阅重做日志文件配置。
innodb_log_spin_cpu_abs_lwm属性 值 命令行格式 --innodb-log-spin-cpu-abs-lwm=#系统变量 innodb_log_spin_cpu_abs_lwm范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 80最低值 0最大值 4294967295定义最小CPU使用量,在该最小使用量之下,用户线程在等待刷新重做时不再旋转。该值表示为CPU内核使用量的总和。例如,默认值80是单个CPU内核的80%。在具有多核处理器的系统上,值150表示一个CPU内核的100%使用率加上第二个CPU内核的50%使用率。
有关相关信息,请参见“优化InnoDB重做日志”。
innodb_log_spin_cpu_pct_hwm属性 值 命令行格式 --innodb-log-spin-cpu-pct-hwm=#系统变量 innodb_log_spin_cpu_pct_hwm范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 50最低值 0最大值 100定义最大CPU使用量,在该最大CPU使用量之上,用户线程在等待刷新重做时不再旋转。该值表示为所有CPU内核的总处理能力的百分比。默认值为50%。例如,两个CPU内核的100%使用率是具有四个CPU内核的服务器上CPU组合处理能力的50%。
该
innodb_log_spin_cpu_pct_hwm变量遵守处理器亲和力。例如,如果服务器具有48个核心,但是mysqld进程仅固定到四个CPU核心,则其他44个CPU核心将被忽略。有关相关信息,请参见“优化InnoDB重做日志”。
innodb_log_wait_for_flush_spin_hwm属性 值 命令行格式 --innodb-log-wait-for-flush-spin-hwm=#系统变量 innodb_log_wait_for_flush_spin_hwm范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 400最低值 0最大值(64位平台) 2**64-1最大值(32位平台) 2**32-1定义最大平均日志刷新时间,超过该时间后,用户线程将在等待刷新重做时不再旋转。默认值为400微秒。
有关相关信息,请参见“优化InnoDB重做日志”。
innodb_log_write_ahead_size属性 值 命令行格式 --innodb-log-write-ahead-size=#系统变量 innodb_log_write_ahead_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 8192最低值 512(log file block size)最大值 Equal to innodb_page_size定义重做日志的预写块大小,以字节为单位。为避免“ read-on-write ”,请设置
innodb_log_write_ahead_size为与操作系统或文件系统缓存块大小匹配。默认设置为8192字节。当由于重做日志的预写块大小与操作系统或文件系统缓存块大小不匹配而导致重做日志块未完全缓存到操作系统或文件系统时,发生写时读取。有效值为日志文件块大小(2 n)的
innodb_log_write_ahead_size倍数。最小值是日志文件块大小(512)。指定最小值时,不会发生预写。最大值等于该值。如果为其指定的值大于该值,则该设置将被截断为该值。InnoDBInnoDBinnodb_page_sizeinnodb_log_write_ahead_sizeinnodb_page_sizeinnodb_log_write_ahead_sizeinnodb_page_sizeinnodb_log_write_ahead_size相对于操作系统或文件系统缓存块大小,将该值设置得太低会导致“读写时读”。将该值设置得太高可能会fsync由于一次写入多个块而对日志文件写入的性能产生轻微影响。有关相关信息,请参见“优化InnoDB重做日志”。
innodb_lru_scan_depth属性 值 命令行格式 --innodb-lru-scan-depth=#系统变量 innodb_lru_scan_depth范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 1024最低值 100最大值(64位平台) 2**64-1最大值(32位平台) 2**32-1一个影响缓冲池刷新操作的算法和启发式方法的参数。性能专家主要对调整I / O密集型工作负载感兴趣。它为每个缓冲池实例指定页面清洁程序线程扫描以查找要刷新的脏页的缓冲池LRU页列表的下行距离。这是每秒执行一次的后台操作。
InnoDB小于默认值的设置通常适用于大多数工作负载。高于必要值的值可能会影响性能。仅在典型工作负载下具有备用I / O容量时,才考虑增加该值。相反,如果写密集型工作负载使您的I / O容量饱和,请减小该值,尤其是在大型缓冲池的情况下。
调整时
innodb_lru_scan_depth,请从较低的值开始,然后向上配置设置,以极少看到零可用页面为目标。另外,innodb_lru_scan_depth在更改缓冲池实例数时,请考虑进行调整,因为innodb_lru_scan_depth*innodb_buffer_pool_instances定义了每秒页面清洁器线程执行的工作量。有关相关信息,请参见“配置缓冲池刷新”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
innodb_max_dirty_pages_pct属性 值 命令行格式 --innodb-max-dirty-pages-pct=#系统变量 innodb_max_dirty_pages_pct范围 Global 动态 是 SET_VAR提示适用没有 类型 数字 默认值 90最低值 0最大值 99.99InnoDB尝试从缓冲池刷新数据,以使脏页百分比不超过此值。该
innodb_max_dirty_pages_pct设置确定冲洗活动的目标。它不影响冲洗速度。有关管理刷新率的信息,请参见“配置缓冲池刷新”。有关相关信息,请参见“配置缓冲池刷新”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
innodb_max_dirty_pages_pct_lwm属性 值 命令行格式 --innodb-max-dirty-pages-pct-lwm=#系统变量 innodb_max_dirty_pages_pct_lwm范围 Global 动态 是 SET_VAR提示适用没有 类型 数字 默认值 10最低值 0最大值 99.99定义一个低水位线,代表脏页的百分比,启用该功能时可以进行预冲洗以控制脏页比率。值为0将完全禁用预冲洗行为。有关更多信息,请参见“配置缓冲池刷新”。
innodb_max_purge_lag属性 值 命令行格式 --innodb-max-purge-lag=#系统变量 innodb_max_purge_lag范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 4294967295定义所需的最大吹扫延迟。如果超过这个值,延迟征收
INSERT,UPDATE以及DELETE操作时间让清洗赶上。默认值为0,这意味着没有最大吹扫滞后且没有延迟。有关更多信息,请参见“清除InnoDB配置”。
innodb_max_purge_lag_delay属性 值 命令行格式 --innodb-max-purge-lag-delay=#系统变量 innodb_max_purge_lag_delay范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0指定
innodb_max_purge_lag超过阈值时施加的延迟的最大延迟(以微秒为单位)。指定innodb_max_purge_lag_delay值是由innodb_max_purge_lag公式计算的延迟时间的上限。有关更多信息,请参见“清除InnoDB配置”。
innodb_max_undo_log_size属性 值 命令行格式 --innodb-max-undo-log-size=#系统变量 innodb_max_undo_log_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 1073741824最低值 10485760最大值 2**64-1定义撤消表空间的阈值大小。如果撤消表空间超过阈值,
innodb_undo_log_truncate则启用后可以将其标记为截断。默认值为1073741824字节(1024 MiB)。有关更多信息,请参见截断撤消表空间。
innodb_merge_threshold_set_all_debug属性 值 命令行格式 --innodb-merge-threshold-set-all-debug=#系统变量 innodb_merge_threshold_set_all_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 50最低值 1最大值 50定义索引页面的页面已满百分比值,该值将覆盖
MERGE_THRESHOLD字典高速缓存中当前所有索引的当前设置。仅当使用CMake选项编译了调试支持时,此选项才可用。有关相关信息,请参见“为索引页配置合并阈值”。WITH_DEBUGinnodb_monitor_disable属性 值 命令行格式 --innodb-monitor-disable={counter|module|pattern|all}系统变量 innodb_monitor_disable范围 Global 动态 是 SET_VAR提示适用没有 类型 string 禁用
InnoDB指标计数器。可以使用该INFORMATION_SCHEMA.INNODB_METRICS表查询计数器数据。有关用法信息,请参见“ InnoDB INFORMATION_SCHEMA指标表”。innodb_monitor_disable='latch'禁用的统计信息收集SHOW ENGINE INNODB MUTEX。有关更多信息,请参见“ SHOW ENGINE语句”。innodb_monitor_enable属性 值 命令行格式 --innodb-monitor-enable={counter|module|pattern|all}系统变量 innodb_monitor_enable范围 Global 动态 是 SET_VAR提示适用没有 类型 string 启用
InnoDB指标计数器。可以使用该INFORMATION_SCHEMA.INNODB_METRICS表查询计数器数据。有关用法信息,请参见“ InnoDB INFORMATION_SCHEMA指标表”。innodb_monitor_enable='latch'启用的统计信息收集SHOW ENGINE INNODB MUTEX。有关更多信息,请参见“ SHOW ENGINE语句”。innodb_monitor_reset属性 值 命令行格式 --innodb-monitor-reset={counter|module|pattern|all}系统变量 innodb_monitor_reset范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 empty string有效值 countermodulepatternall将
InnoDB指标计数器的计数值重置为零。可以使用该INFORMATION_SCHEMA.INNODB_METRICS表查询计数器数据。有关用法信息,请参见“ InnoDB INFORMATION_SCHEMA指标表”。innodb_monitor_reset='latch'重置的报告统计信息SHOW ENGINE INNODB MUTEX。有关更多信息,请参见“ SHOW ENGINE语句”。innodb_monitor_reset_all属性 值 命令行格式 --innodb-monitor-reset-all={counter|module|pattern|all}系统变量 innodb_monitor_reset_all范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 empty string有效值 countermodulepatternall重置
InnoDB指标计数器的所有值(最小值,最大值等)。可以使用该INFORMATION_SCHEMA.INNODB_METRICS表查询计数器数据。有关用法信息,请参见“ InnoDB INFORMATION_SCHEMA指标表”。innodb_numa_interleave属性 值 命令行格式 --innodb-numa-interleave[={OFF|ON}]系统变量 innodb_numa_interleave范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用NUMA交错内存策略以分配
InnoDB缓冲池。当innodb_numa_interleave启用时,NUMA内存策略设置为MPOL_INTERLEAVE对mysqld的进程。InnoDB分配缓冲池后,将NUMA内存策略设置回MPOL_DEFAULT。为了使该innodb_numa_interleave选项可用,必须在启用NUMA的Linux系统上编译MySQL。CMake
WITH_NUMA根据当前平台是否NUMA支持来设置默认值。有关更多信息,请参见“ MySQL源配置选项”。innodb_old_blocks_pct属性 值 命令行格式 --innodb-old-blocks-pct=#系统变量 innodb_old_blocks_pct范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 37最低值 5最大值 95指定用于旧块子列表的
InnoDB缓冲池的近似百分比。值的范围是5到95。默认值是37(即池的3/8)。通常与结合使用。innodb_old_blocks_time有关更多信息,请参见“使缓冲池扫描具有抵抗力”。有关缓冲池管理, LRU算法和逐出策略的信息,请参见“InnoDB缓冲池”。
innodb_old_blocks_time属性 值 命令行格式 --innodb-old-blocks-time=#系统变量 innodb_old_blocks_time范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 1000最低值 0最大值 2**32-1非零值可防止缓冲池被仅在短时间内(例如在全表扫描期间)引用的数据填充。增大此值可提供更好的保护,以防止全表扫描干扰缓冲池中缓存的数据。
指定插入到旧子列表中的块在第一次访问后必须在此处停留多长时间,然后才能将其移动到新子列表中。如果该值为0,则无论第一次插入后多长时间,插入到旧子列表中的块都会在第一次访问时立即移到新子列表中。如果该值大于0,则块将保留在旧的子列表中,直到第一次访问后至少几毫秒内发生访问。例如,值为1000会使块在第一次访问后在旧子列表中停留1秒钟,然后才有资格移动到新的子列表中。
默认值为1000。
此变量通常与结合使用
innodb_old_blocks_pct。有关更多信息,请参见“使缓冲池扫描具有抵抗力”。有关缓冲池管理, LRU算法和逐出策略的信息,请参见“InnoDB缓冲池”。innodb_online_alter_log_max_size属性 值 命令行格式 --innodb-online-alter-log-max-size=#系统变量 innodb_online_alter_log_max_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 134217728最低值 65536最大值 2**64-1指定在表的在线DDL操作期间使用的临时日志文件的大小的上限(以字节为单位)
InnoDB。对于每个要创建的索引或要更改的表,都有一个这样的日志文件。此日志文件在DDL操作期间将插入,更新或删除的数据存储在表中。临时日志文件在需要时扩展为的值innodb_sort_buffer_size,最大扩展为innodb_online_alter_log_max_size。如果临时日志文件超出大小上限,则ALTER TABLE操作失败,并且所有未提交的并发DML操作都将回滚。因此,此选项的较大值允许在联机DDL操作期间发生更多的DML,但是当表被锁定以应用日志中的数据时,DDL操作结束时也会延长时间。innodb_open_files属性 值 命令行格式 --innodb-open-files=#系统变量 innodb_open_files范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 -1(表示自动调整大小;不分配此文字值)最低值 10最大值 4294967295仅当您使用多个
InnoDB表空间时,此变量才有意义。它指定MySQL一次可以保持打开状态的最大.ibd文件数。最小值为10。如果innodb_file_per_table未启用,则默认值为300,table_open_cache否则为300的最大值。用于文件的文件描述符仅
.ibd用于InnoDB表。它们独立于open_files_limit系统变量指定的变量,并且不影响表高速缓存的操作。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。innodb_optimize_fulltext_only属性 值 命令行格式 --innodb-optimize-fulltext-only[={OFF|ON}]系统变量 innodb_optimize_fulltext_only范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF更改表的
OPTIMIZE TABLE操作方式InnoDB。打算在InnoDB带有FULLTEXT索引的表的维护操作期间临时启用。默认情况下,
OPTIMIZE TABLE重新组织表的聚集索引中的数据。启用此选项后,将OPTIMIZE TABLE跳过表数据的重新组织,而是处理InnoDBFULLTEXT索引的新添加,删除和更新的令牌数据。有关更多信息,请参见优化InnoDB全文索引。innodb_page_cleaners属性 值 命令行格式 --innodb-page-cleaners=#系统变量 innodb_page_cleaners范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 4最低值 1最大值 64从缓冲池实例中刷新脏页面的页面清洁程序线程数。页面清洁器线程执行刷新列表和LRU刷新。当有多个页面清除程序线程时,每个缓冲池实例的缓冲池刷新任务将分派到空闲的页面清除程序线程。该
innodb_page_cleaners默认值是4,如果页面清理线程的数量超过缓冲池实例的数量,innodb_page_cleaners将自动设置为相同的值innodb_buffer_pool_instances。如果将脏页从缓冲池实例刷新到数据文件时您的工作负载受写IO约束,并且系统硬件具有可用容量,则增加页面清洁器线程数可能有助于提高写IO吞吐量。
多线程页面清理程序支持扩展到关闭和恢复阶段。
该
setpriority()系统调用在受支持的Linux平台上使用,并且已授权mysqld执行用户为page_cleaner线程提供比其他MySQL和InnoDB线程更高的优先级,以帮助页面刷新与当前工作量保持同步。setpriority()此InnoDB启动消息表示支持:[Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
对于不由systemd管理服务器启动和关闭的系统,可以在中配置mysqld执行用户授权
/etc/security/limits.conf。例如,如果mysqld在mysql用户下运行,则可以通过将以下行mysql添加到用户来授权用户/etc/security/limits.conf:mysql hard nice -20 mysql soft nice -20
对于systemd受管系统,可以通过
LimitNICE=-20在本地化的systemd配置文件中指定来实现相同目的。例如,创建一个名为override.confin 的文件/etc/systemd/system/mysqld.service.d/override.conf并添加以下条目:[Service] LimitNICE=-20
创建或更改后
override.conf,重新加载systemd配置,然后告诉systemd重新启动MySQL服务:systemctl daemon-reload systemctl restart mysqld # RPM platforms systemctl restart mysql # Debian platforms
有关使用本地化的systemd配置文件的更多信息,请参见为MySQL配置systemd。
在授权mysqld执行用户之后,使用cat命令来验证mysqld进程的配置
Nice限制:shell>
cat /proc/mysqld_pid/limits | grep nice Max nice priority 18446744073709551596 18446744073709551596innodb_page_size属性 值 命令行格式 --innodb-page-size=#系统变量 innodb_page_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 列举 默认值 16384有效值 40968192163843276865536指定页面大小的
InnoDB表空间。可以以字节或千字节为单位指定值。例如,可以将16 KB页面大小值指定为16384、16KB或16k。innodb_page_size只能在初始化MySQL实例之前进行配置,之后不能进行更改。如果未指定任何值,则使用默认页面大小初始化实例。请参见“ InnoDB启动配置”。对于32KB和64KB页面大小,最大行长度约为16000字节。设置为32KB或64KB
ROW_FORMAT=COMPRESSED时不支持innodb_page_size。对于innodb_page_size=32KB,扩展区大小为2MB。对于innodb_page_size=64KB,扩展区大小为4MB。innodb_log_buffer_size使用32KB或64KB页面大小时,应至少设置为16M(默认值)。默认的16KB页面大小或更大的页面大小适用于各种工作负载,尤其是涉及表扫描和涉及批量更新的DML操作的查询。对于涉及许多小写操作的OLTP工作负载,较小的页面大小可能更有效,当单个页面包含许多行时,争用可能成为问题。对于通常使用较小块大小的SSD存储设备,较小的页面可能也很有效。使
InnoDB页面大小接近存储设备块大小可以最大程度地减少重写到磁盘的未更改数据量。第一个系统表空间数据文件(
ibdata1)的最小文件大小取决于该innodb_page_size值。有关innodb_data_file_path更多信息,请参见选项说明。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
innodb_parallel_read_threads属性 值 命令行格式 --innodb-parallel-read-threads=#介绍了 8.0.14 系统变量 innodb_parallel_read_threads范围 Session 动态 是 SET_VAR提示适用没有 类型 整数 默认值 4最低值 1最大值 256定义可用于并行聚集索引读取的线程数。从MySQL 8.0.17开始,支持并行扫描分区。并行读取线程可以提高
CHECK TABLE性能。InnoDB在CHECK TABLE操作期间两次读取聚簇索引。可以并行执行第二次读取。此功能不适用于二级索引扫描。的innodb_parallel_read_threads并行聚簇索引读取发生会话变量必须被设置为一个大于1的值。用于执行并行聚集索引读取的实际线程数由innodb_parallel_read_threads设置或要扫描的索引子树的数量,以较小者为准。在扫描期间读入缓冲池的页面将保留在缓冲池LRU列表的末尾,以便在需要空闲缓冲池页面时可以将其快速丢弃。从MySQL 8.0.17开始,并行读取线程的最大数量(256)是所有客户端连接的线程总数。如果达到线程限制,连接将退回到使用单个线程。
innodb_print_all_deadlocks属性 值 命令行格式 --innodb-print-all-deadlocks[={OFF|ON}]系统变量 innodb_print_all_deadlocks范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF当启用该选项,所有信息死锁在
InnoDB用户交易被记录在mysqld错误日志。否则,您可以使用该SHOW ENGINE INNODB STATUS命令参见有关最后一个死锁的信息。偶尔的InnoDB死锁不一定是问题,因为InnoDB立即检测到情况并自动回滚其中一项交易。如果应用程序没有适当的错误处理逻辑来检测回滚并重试其操作,则可以使用此选项解决为什么会发生死锁。大量的死锁可能表明需要重组发布多个表的DML或SELECT ... FOR UPDATE语句的事务,以便每个事务以相同的顺序访问表,从而避免出现死锁情况。有关相关信息,请参见“ InnoDB中的死锁”。
innodb_print_ddl_logs属性 值 命令行格式 --innodb-print-ddl-logs[={OFF|ON}]系统变量 innodb_print_ddl_logs范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用此选项会使MySQL将DDL日志写入
stderr。有关更多信息,请参见参见DDL日志。innodb_purge_batch_size属性 值 命令行格式 --innodb-purge-batch-size=#系统变量 innodb_purge_batch_size范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 300最低值 1最大值 5000定义从历史记录列表中批量清除解析和处理的撤消日志页面的数量。在多线程吹扫配置中,协调器净化线程分割
innodb_purge_batch_size由innodb_purge_threads和受让人该页面的每个吹扫线程编号。该innodb_purge_batch_size变量还定义了通过撤消日志每执行128次迭代后释放的撤消日志页面的数量。该
innodb_purge_batch_size选项旨在与innodb_purge_threads设置结合使用以进行高级性能调整。大多数用户无需更改innodb_purge_batch_size其默认值。有关相关信息,请参见“清除InnoDB配置”。
innodb_purge_threads属性 值 命令行格式 --innodb-purge-threads=#系统变量 innodb_purge_threads范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 4最低值 1最大值 32专用于
InnoDB清除操作的后台线程数。缺省值为1。增加该值将创建其他清除线程,这可以提高在多个表上执行DML操作的系统上的效率。最大值为32。有关相关信息,请参见“清除InnoDB配置”。
innodb_purge_rseg_truncate_frequency属性 值 命令行格式 --innodb-purge-rseg-truncate-frequency=#系统变量 innodb_purge_rseg_truncate_frequency范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 128最低值 1最大值 128根据调用清除的次数来定义清除系统释放回滚段的频率。在释放其回滚段之前,无法将撤消表空间截断。通常,吹扫系统每执行128次吹扫就释放回滚段一次。默认值为128。减小该值会增加清除线程释放回滚段的频率。
innodb_purge_rseg_truncate_frequency适用于innodb_undo_log_truncate。有关更多信息,请参见截断撤消表空间。innodb_random_read_ahead属性 值 命令行格式 --innodb-random-read-ahead[={OFF|ON}]系统变量 innodb_random_read_ahead范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用随机预读技术以优化
InnoDBI / O。有关不同类型的预读请求的性能注意事项的详细信息,请参见“配置InnoDB缓冲池预取(预读)”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
innodb_read_ahead_threshold属性 值 命令行格式 --innodb-read-ahead-threshold=#系统变量 innodb_read_ahead_threshold范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 56最低值 0最大值 64控制线性的灵敏度预读的是
InnoDB使用预取页入缓冲器池。如果InnoDB至少innodb_read_ahead_threshold从一个扩展区(64页)中顺序读取页面,它将启动整个后续扩展区的异步读取。值的允许范围是0到64。值0禁用预读。对于默认值56,InnoDB必须从扩展区开始顺序读取至少56页,以便在以下扩展区中启动异步读取。在微调
innodb_read_ahead_threshold设置时,了解通过预读机制可以读取多少页,以及从缓冲池中逐出其中的多少页而从未访问过这些页可能会很有用。SHOW ENGINE INNODB STATUS输出显示来自Innodb_buffer_pool_read_ahead和Innodb_buffer_pool_read_ahead_evicted全局状态变量的计数器信息,它们分别报告通过预读请求带入缓冲池的页面数,以及从未访问过的从缓冲池逐出的此类页面数。自上次服务器重新启动以来,状态变量报告全局值。SHOW ENGINE INNODB STATUS还显示了读取预读页面的速率以及逐出这些页面而不被访问的速率。每秒平均值基于上次调用以来收集的统计信息,SHOW ENGINE INNODB STATUS并显示在输出BUFFER POOL AND MEMORY部分SHOW ENGINE INNODB STATUS。有关更多信息,请参见“配置InnoDB缓冲池预取(预读)”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
innodb_read_io_threads属性 值 命令行格式 --innodb-read-io-threads=#系统变量 innodb_read_io_threads范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 4最低值 1最大值 64中的读取操作的I / O线程数
InnoDB。与之对应的写线程为innodb_write_io_threads。有关更多信息,请参见“配置后台InnoDB I / O线程数”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。注意
在Linux系统中,使用默认设置运行多个MySQL服务器(通常超过12)
innodb_read_io_threads,innodb_write_io_threads以及Linux的aio-max-nr设置可以超过系统限制。理想情况下,增加aio-max-nr设置;作为一种解决方法,您可以减少一个或两个MySQL变量的设置。innodb_read_only属性 值 命令行格式 --innodb-read-only[={OFF|ON}]系统变量 innodb_read_only范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFFInnoDB以只读模式启动。用于在只读媒体上分发数据库应用程序或数据集。也可以在数据仓库中用于在多个实例之间共享同一数据目录。有关更多信息,请参见“配置InnoDB以进行只读操作”。以前,启用
innodb_read_only系统变量会阻止仅为InnoDB存储引擎创建和删除表。从MySQL 8.0开始,启用会innodb_read_only阻止所有存储引擎执行这些操作。任何存储引擎的表创建和删除操作都会修改mysql系统数据库中的数据字典表,但是这些表使用InnoDB存储引擎,并且在innodb_read_only启用后无法修改。相同的原理适用于需要修改数据字典表的其他表操作。例子:- 如果
innodb_read_only启用了系统变量,则ANALYZE TABLE可能会失败,因为它无法更新使用的数据字典中的统计表InnoDB。对于ANALYZE TABLE更新密钥分发的操作,即使该操作更新表本身(例如,如果它是MyISAM表),也可能会发生故障。要获取更新的分发统计信息,请设置information_schema_stats_expiry=0。 ALTER TABLE tbl_name ENGINE=engine_name失败,因为它更新了存储在数据字典中的存储引擎名称。
另外,
mysql系统数据库中的其他表使用InnoDBMySQL 8.0中的存储引擎。将这些表设为只读会导致对其进行修改的操作受到限制。例子:- 帐户管理语句(例如
CREATE USER和)GRANT失败,因为授权表使用InnoDB。 - 在
INSTALL PLUGIN和UNINSTALL PLUGIN插件管理报表失败,因为该plugin表使用InnoDB。 - 由于表使用,因此
CREATE FUNCTIONand和DROP FUNCTIONUDF-management语句失败。funcInnoDB
- 如果
innodb_redo_log_archive_dirs属性 值 命令行格式 --innodb-redo-log-archive-dirs介绍了 8.0.17 系统变量 innodb_redo_log_archive_dirs范围 Global 动态 是 SET_VAR提示适用没有 类型 string 默认值 NULL定义带标签的目录,可以在其中创建重做日志归档文件。您可以在以分号分隔的列表中定义多个带标签的目录。例如:
innodb_redo_log_archive_dirs='label1:/backups1;label2:/backups2'
标签可以是任何字符串,但不能使用冒号(:)。也可以使用空标签,但在这种情况下仍需要使用冒号(:)。
必须指定路径,并且目录必须存在。该路径可以包含冒号(':'),但不允许使用分号(;)。
innodb_redo_log_encrypt属性 值 命令行格式 --innodb-redo-log-encrypt[={OFF|ON}]系统变量 innodb_redo_log_encrypt范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF对于表重做日志数据的加密控制利用加密
InnoDB数据的静止加密功能。默认情况下,重做日志数据的加密是禁用的。有关更多信息,请参阅重做日志加密。innodb_replication_delay属性 值 命令行格式 --innodb-replication-delay=#系统变量 innodb_replication_delay范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 4294967295如果
innodb_thread_concurrency达到,则从属服务器上的复制线程延迟(以毫秒为单位)。innodb_rollback_on_timeout属性 值 命令行格式 --innodb-rollback-on-timeout[={OFF|ON}]系统变量 innodb_rollback_on_timeout范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFFInnoDB默认情况下,仅回滚事务超时上的最后一条语句。如果--innodb-rollback-on-timeout指定,则事务超时导致InnoDB中止并回滚整个事务。注意
如果start-transaction语句是
START TRANSACTIONorBEGIN语句,则回滚不会取消该语句。进一步的SQL语句成为交易的一部分,直到发生COMMIT,ROLLBACK或某些SQL语句导致隐式提交。有关更多信息,请参见“ InnoDB错误处理”。
innodb_rollback_segments属性 值 命令行格式 --innodb-rollback-segments=#系统变量 innodb_rollback_segments范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 128最低值 1最大值 128innodb_rollback_segments定义分配给每个撤消表空间的回滚段的数量以及用于生成撤消记录的事务的全局临时表空间的数量。每个回滚段支持的事务数取决于InnoDB页面大小和分配给每个事务的撤消日志数。有关更多信息,请参见“撤消日志”。有关相关信息,请参见“ InnoDB多版本”。有关撤消表空间的信息,请参见“撤消表空间”。
innodb_saved_page_number_debug属性 值 命令行格式 --innodb-saved-page-number-debug=#系统变量 innodb_saved_page_number_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最大值 2**23-1保存页码。设置
innodb_fil_make_page_dirty_debug选项会弄脏由定义的页面innodb_saved_page_number_debug。innodb_saved_page_number_debug仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_sort_buffer_size属性 值 命令行格式 --innodb-sort-buffer-size=#系统变量 innodb_sort_buffer_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 1048576最低值 65536最大值 67108864指定在创建
InnoDB索引期间用于对数据进行排序的排序缓冲区的大小。指定的大小定义了读入内存以进行内部排序然后写出到磁盘的数据量。该过程称为“运行”。在合并阶段,将读取并合并指定大小的缓冲区对。设置越大,运行和合并的次数越少。该排序区域仅在索引创建期间用于合并排序,而不在以后的索引维护操作期间用于合并排序。索引创建完成后,将释放缓冲区。
此选项的值还控制在联机DDL操作期间扩展临时日志文件以记录并发DML的数量。
在使此设置可配置之前,该大小已硬编码为1048576字节(1MB),仍为默认值。
在创建索引的
ALTER TABLEorCREATE TABLE语句期间,分配了3个缓冲区,每个缓冲区的大小由此选项定义。另外,辅助指针被分配给排序缓冲区中的行,以便排序可以在指针上运行(与在排序操作期间移动行相反)。对于典型的排序操作,可以使用诸如此类的公式来估计内存消耗:
(6 /*FTS_NUM_AUX_INDEX*/ * (3*@@GLOBAL.innodb_sort_buffer_size) + 2 * number_of_partitions * number_of_secondary_indexes_created * (@@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位,乘以4而不是8。
对于全文索引上的并行排序,请乘以以下
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范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 6最低值 0最大值(64位平台,<= 8.0.13) 2**64-1最大值(32位平台,<= 8.0.13) 2**32-1最大值(>= 8.0.14) 1000自旋锁定的两次轮询之间的最大延迟。此机制的底层实现取决于硬件和操作系统的组合,因此延迟不对应于固定的时间间隔。
可以与
innodb_spin_wait_pause_multiplier变量结合使用,以更好地控制自旋锁定轮询延迟的持续时间。有关更多信息,请参见“配置自旋锁定轮询”。
innodb_spin_wait_pause_multiplier属性 值 命令行格式 --innodb-spin-wait-pause-multiplier=#介绍了 8.0.16 系统变量 innodb_spin_wait_pause_multiplier范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 50最低值 1最大值 100定义一个乘数值,该值用于确定在旋转等待循环中当线程等待获取互斥量或rw-lock时发生的PAUSE指令数。
有关更多信息,请参见“配置自旋锁定轮询”。
innodb_stats_auto_recalc属性 值 命令行格式 --innodb-stats-auto-recalc[={OFF|ON}]系统变量 innodb_stats_auto_recalc范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON在表中的数据发生重大更改后,导致
InnoDB自动重新计算持久性统计信息。阈值是表中行的10%。此设置适用于innodb_stats_persistent启用该选项时创建的表。还可以通过STATS_PERSISTENT=1在CREATE TABLEorALTER TABLE语句中指定来配置自动统计信息的重新计算。产生统计数据的采样数据量由innodb_stats_persistent_sample_pages变量控制。有关更多信息,请参见“配置持久性优化器统计参数”。
innodb_stats_include_delete_marked属性 值 命令行格式 --innodb-stats-include-delete-marked[={OFF|ON}]系统变量 innodb_stats_include_delete_marked范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF默认情况下,
InnoDB在计算统计信息时读取未提交的数据。如果是未提交的事务,它会从表中删除行,InnoDB则不包括在计算行估计和索引统计信息时被删除标记的记录,这可能导致使用并发操作表的其他事务的执行计划不理想。事务隔离级别除外READ UNCOMMITTED。为避免这种情况,innodb_stats_include_delete_marked可以InnoDB在计算持久性优化器统计信息时启用以确保包括删除标记的记录。当
innodb_stats_include_delete_marked启用时,ANALYZE TABLE重新计算统计数据时,会考虑删除标记的记录。innodb_stats_include_delete_marked是会影响所有InnoDB表的全局设置。它仅适用于持久性优化器统计信息。有关相关信息,请参见“配置持久性优化器统计参数”。
innodb_stats_method属性 值 命令行格式 --innodb-stats-method=value系统变量 innodb_stats_method范围 Global 动态 是 SET_VAR提示适用没有 类型 列举 默认值 nulls_equal有效值 nulls_equalnulls_unequalnulls_ignored服务器
NULL在收集有关表的索引值分布的统计信息时如何处理值InnoDB。允许值是nulls_equal,nulls_unequal和nulls_ignored。对于nulls_equal,所有NULL索引值均视为相等,并形成一个大小等于NULL值数量的单个值组。对于nulls_unequal,NULL值被认为是不相等的,并且每个NULL值形成大小为1的不同值组。对于nulls_ignored,NULL值将被忽略。如“ InnoDB和MyISAM索引统计信息收集”中所述,用于生成表统计信息的方法会影响优化器如何选择索引以执行查询。
innodb_stats_on_metadata属性 值 命令行格式 --innodb-stats-on-metadata[={OFF|ON}]系统变量 innodb_stats_on_metadata范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF仅当优化器统计信息配置为非持久性时,此选项才适用。当
innodb_stats_persistent禁用优化器统计信息或使用创建或更改单个表时,优化器统计信息不会保留在磁盘上STATS_PERSISTENT=0。有关更多信息,请参见“配置非持久性优化器统计参数”。当
innodb_stats_on_metadata启用时,InnoDB将更新的非持久性的统计数据时,元数据语句,如SHOW TABLE STATUS访问时或INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.STATISTICS表。(这些更新与发生的情况类似ANALYZE TABLE。)禁用时,InnoDB不会在这些操作期间更新统计信息。禁用该设置可以提高具有大量表或索引的架构的访问速度。它还可以提高涉及表的查询的执行计划的稳定性InnoDB。要更改设置,请发出语句,其中是或(或或)。更改设置需要足够的特权才能设置全局系统变量(请参见“系统变量特权”),并且会立即影响所有连接的操作。
SET GLOBAL innodb_stats_on_metadata=modemodeONOFF10innodb_stats_persistent属性 值 命令行格式 --innodb-stats-persistent[={OFF|ON}]系统变量 innodb_stats_persistent范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定是否将
InnoDB索引统计信息持久保存到磁盘。否则,可能会频繁地重新计算统计信息,这可能导致查询执行计划的变化。创建表时,此设置与每个表一起存储。您可以innodb_stats_persistent在创建表之前在全局级别进行设置,或者使用and 语句的STATS_PERSISTENT子句覆盖系统范围的设置并为单个表配置持久性统计信息。CREATE TABLEALTER TABLE有关更多信息,请参见“配置持久性优化器统计参数”。
innodb_stats_persistent_sample_pages属性 值 命令行格式 --innodb-stats-persistent-sample-pages=#系统变量 innodb_stats_persistent_sample_pages范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 20估算索引列的基数和其他统计信息时(例如由所计算出的索引页),要采样的索引页数。增加该值会提高索引统计信息的准确性,从而可以提高查询执行计划的执行过程中,在增加的I / O的费用为表。有关更多信息,请参见“配置持久性优化器统计参数”。
ANALYZE TABLEANALYZE TABLEInnoDB注意
设置较高的值
innodb_stats_persistent_sample_pages可能会导致ANALYZE TABLE执行时间过长。要估计所访问的数据库页面的数量ANALYZE TABLE,请参见“估计InnoDB表的分析表复杂性”。innodb_stats_persistent_sample_pages仅在innodb_stats_persistent为表启用时适用;当innodb_stats_persistent被禁用,innodb_stats_transient_sample_pages则应该被使用。innodb_stats_transient_sample_pages属性 值 命令行格式 --innodb-stats-transient-sample-pages=#系统变量 innodb_stats_transient_sample_pages范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 8估算索引列的基数和其他统计信息时(例如由所计算出的索引页),要采样的索引页数。默认值为8。增加该值可以提高索引统计信息的准确性,从而可以改善查询执行计划,但要以打开表或重新计算统计信息时增加的I / O为代价。有关更多信息,请参见“配置非持久性优化器统计参数”。
ANALYZE TABLEInnoDB注意
设置较高的值
innodb_stats_transient_sample_pages可能会导致ANALYZE TABLE执行时间过长。要估计所访问的数据库页面的数量ANALYZE TABLE,请参见“估计InnoDB表的分析表复杂性”。innodb_stats_transient_sample_pages仅在innodb_stats_persistent禁用表时适用;当innodb_stats_persistent启用时,innodb_stats_persistent_sample_pages则应该被使用。代替innodb_stats_sample_pages。有关更多信息,请参见“配置非持久性优化器统计参数”。innodb_status_output属性 值 命令行格式 --innodb-status-output[={OFF|ON}]系统变量 innodb_status_output范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用或禁用标准
InnoDBMonitor的定期输出。还与结合使用innodb_status_output_locks以启用或禁用InnoDB锁定监视器的定期输出。有关更多信息,请参见“启用InnoDB监视器”。innodb_status_output_locks属性 值 命令行格式 --innodb-status-output-locks[={OFF|ON}]系统变量 innodb_status_output_locks范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF启用或禁用
InnoDB锁定监视器。启用后,InnoDB锁定监视器将打印有关SHOW ENGINE INNODB STATUS输出和定期输出中锁定的其他信息,这些信息将打印到MySQL错误日志中。InnoDB锁定监视器的定期输出被打印为标准InnoDB监视器输出的一部分。InnoDB因此,必须启用标准监视器,InnoDB锁定监视器才能定期将数据打印到MySQL错误日志中。有关更多信息,请参见“启用InnoDB监视器”。innodb_strict_mode属性 值 命令行格式 --innodb-strict-mode[={OFF|ON}]系统变量 innodb_strict_mode范围 Global, Session 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON当
innodb_strict_mode启用时,InnoDB将返回错误,而不是警告了一定的条件。严格模式有助于防止SQL中的拼写错误和语法错误,或操作模式和SQL语句的各种组合带来的其他意外后果。当
innodb_strict_mode启用时,InnoDB提出了在某些情况下错误条件,而不是发出警告和处理指定的声明(也许无意的行为)。这类似于sql_modeMySQL,后者控制MySQL接受的SQL语法,并确定它是否静默忽略错误或验证输入语法和数据值。该
innodb_strict_mode设置会影响语法错误的处理CREATE TABLE,ALTER TABLE,CREATE INDEX,和OPTIMIZE TABLE语句。innodb_strict_mode还启用了记录大小检查,因此由于记录对于所选页面大小而言太大而导致INSERT或UPDATE永不失败。Oracle建议使
innodb_strict_mode用时ROW_FORMAT和KEY_BLOCK_SIZE条款中CREATE TABLE,ALTER TABLE和CREATE INDEX语句。当innodb_strict_mode被禁用,InnoDB忽略了相互矛盾的条款且仅在消息日志警告创建表或索引。结果表可能具有与预期不同的特征,例如在尝试创建压缩表时缺少压缩支持。当innodb_strict_mode启用时,这些问题产生的直接错误,并且不会创建表或索引。您可以
innodb_strict_mode在启动时在命令行上mysqld或在MySQL 配置文件中启用或禁用。您还可以启用或禁用innodb_strict_mode在与语句运行,其中要么是或。更改设置需要足够的特权来设置全局系统变量(请参见“系统变量特权”),并且会影响随后连接的所有客户端的操作。任何客户端都可以更改的设置,并且该设置仅影响该客户端。SET[GLOBAL|SESSION] innodb_strict_mode=modemodeONOFFGLOBALSESSIONinnodb_strict_modeinnodb_strict_mode不适用于通用表空间。通用表空间的表空间管理规则与严格独立执行innodb_strict_mode。有关更多信息,请参见“ CREATE TABLESPACE语句”。innodb_sync_array_size属性 值 命令行格式 --innodb-sync-array-size=#系统变量 innodb_sync_array_size范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 1最低值 1最大值 1024定义互斥锁/锁定等待数组的大小。增加该值将拆分用于协调线程的内部数据结构,以在具有大量等待线程的工作负载中实现更高的并发性。必须在启动MySQL实例时配置此设置,并且此后不能更改。对于经常产生大量等待线程(通常大于768)的工作负载,建议增加该值。
innodb_sync_spin_loops属性 值 命令行格式 --innodb-sync-spin-loops=#系统变量 innodb_sync_spin_loops范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 30最低值 0最大值 4294967295InnoDB线程在挂起线程之前等待互斥量释放的次数。innodb_sync_debug属性 值 命令行格式 --innodb-sync-debug[={OFF|ON}]系统变量 innodb_sync_debug范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 OFF对
InnoDB存储引擎启用同步调试检查。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_table_locks属性 值 命令行格式 --innodb-table-locks[={OFF|ON}]系统变量 innodb_table_locks范围 Global, Session 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON如果
autocommit = 0,InnoDB荣誉LOCK TABLES;LOCK TABLES ... WRITE直到所有其他线程都释放了对表的所有锁后,MySQL才返回。默认值为innodb_table_locks1,这意味着LOCK TABLESInnoDB在内部锁定表autocommit = 0。innodb_table_locks = 0对用显式锁定的表无效LOCK TABLES ... WRITE。对于LOCK TABLES ... WRITE隐式(例如,通过触发器)或by 锁定以进行读取或写入锁定的表,它确实具有作用LOCK TABLES ... READ。有关相关信息,请参见“ InnoDB锁定和事务模型”。
innodb_temp_data_file_path属性 值 命令行格式 --innodb-temp-data-file-path=file_name系统变量 innodb_temp_data_file_path范围 Global 动态 没有 SET_VAR提示适用没有 类型 string 默认值 ibtmp1:12M:autoextend定义全局临时表空间数据文件的相对路径,名称,大小和属性。全局临时表空间存储回滚段,以用于对用户创建的临时表所做的更改。
如果未为指定任何值
innodb_temp_data_file_path,则默认行为是创建一个ibtmp1在innodb_data_home_dir目录中命名的自动扩展数据文件。初始文件大小略大于12MB。全局临时表空间数据文件规范的语法包括文件名,文件大小和
autoextend和max属性:file_name:file_size[:autoextend[:max:max_file_size]]
全局临时表空间数据文件不能与另一个
InnoDB数据文件具有相同的名称。创建全局临时表空间数据文件的任何无能力或错误将被视为致命事件,并且服务器启动将被拒绝。文件大小是通过附加在KB,MB,GB或规定
K,M或者G对大小值。文件大小的总和必须略大于12MB。单个文件的大小限制由操作系统确定。在支持大文件的操作系统上,文件大小可以大于4GB。不支持将原始磁盘分区用于全局临时表空间数据文件。
该
autoextend和max属性只能在最后一个指定的数据文件中使用innodb_temp_data_file_path的设置。例如:[mysqld] innodb_temp_data_file_path=ibtmp1:50M;ibtmp2:12M:autoextend:max:500MB
该
autoextend选项会使数据文件在可用空间不足时自动增加大小。autoextend默认情况下,增量为64MB。要修改增量,请更改innodb_autoextend_increment变量设置。全局临时表空间数据文件的目录路径是通过串联由
innodb_data_home_dir和定义的路径而形成的innodb_temp_data_file_path。在
InnoDB以只读模式运行之前,请设置innodb_temp_data_file_path到数据目录之外的位置。该路径必须相对于数据目录。例如:--innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
有关更多信息,请参见 Global Temporary Tablespace。
innodb_temp_tablespaces_dir属性 值 命令行格式 --innodb-temp-tablespaces-dir=dir_name介绍了 8.0.13 系统变量 innodb_temp_tablespaces_dir范围 Global 动态 没有 SET_VAR提示适用没有 类型 目录名 默认值 #innodb_temp定义
InnoDB启动时创建会话临时表空间池的位置。默认位置是#innodb_temp数据目录中的目录。允许使用标准路径或相对于数据目录的路径。从MySQL 8.0.16开始,会话临时表空间始终存储用户创建的临时表和优化器使用创建的内部临时表
InnoDB。(以前,内部临时表的磁盘存储引擎由internal_tmp_disk_storage_engine系统变量确定,不再受支持。请参见磁盘内部临时表的存储引擎。)有关更多信息,请参见会话临时表空间。
innodb_thread_concurrency属性 值 命令行格式 --innodb-thread-concurrency=#系统变量 innodb_thread_concurrency范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最低值 0最大值 1000InnoDB尝试使内部并发的操作系统线程数保持InnoDB小于或等于此变量给定的限制(InnoDB使用操作系统线程来处理用户事务)。一旦线程数达到此限制,额外的线程被置于等待状态一内“先入先出”(FIFO)队列以供执行。等待锁的线程不计入同时执行的线程数。此变量的范围是0到1000。值0(默认值)被解释为无限并发(不进行并发检查)。禁用线程并发检查可以
InnoDB创建所需数量的线程。值0也禁用queries inside InnoDB和queries in queue counters在ROW OPERATIONS第SHOW ENGINE INNODB STATUS输出。如果您的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为用户线程使用超过一定数量的虚拟CPU(例如20个虚拟CPU),请设置innodb_thread_concurrency为该数量(或更低,具体取决于性能结果)。如果您的目标是将MySQL与其他应用程序隔离,则可以考虑将mysqld进程专门绑定到虚拟CPU。但是请注意,如果mysqld进程不是一直忙,则排他绑定可能导致硬件使用不佳。在这种情况下,您可以绑定mysqld进程处理虚拟CPU,但也允许其他应用程序使用部分或全部虚拟CPU。注意
从操作系统的角度来看,使用资源管理解决方案来管理应用程序之间如何共享CPU时间可能比绑定
mysqld进程更好。例如,您可以在其他关键进程未运行时将90%的虚拟CPU时间分配给给定应用程序,并在其他关键进程正在运行时将该值扩展回40%。innodb_thread_concurrency太高的值可能会由于对系统内部和资源的争用增加而导致性能下降。- 在某些情况下,最佳
innodb_thread_concurrency设置可能小于虚拟CPU的数量。 - 定期监视和分析您的系统。对工作负载,用户数量或计算环境进行更改可能需要您调整
innodb_thread_concurrency设置。
有关相关信息,请参见“配置InnoDB线程并发”。
- 如果工作负载的并发用户线程数少于64,请设置
innodb_thread_sleep_delay属性 值 命令行格式 --innodb-thread-sleep-delay=#系统变量 innodb_thread_sleep_delay范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 10000最低值 0最大值 1000000多久
InnoDB线程加入睡觉前InnoDB排队,以微秒。默认值为10000。值为0将禁用睡眠。您可以设置innodb_adaptive_max_sleep_delay为允许的最大值innodb_thread_sleep_delay,并根据当前线程调度活动InnoDB自动innodb_thread_sleep_delay向上或向下调整。这种动态调整有助于线程调度机制在系统负载较轻或系统接近满负荷运行时平稳运行。有关更多信息,请参见“配置InnoDB线程并发”。
innodb_tmpdir属性 值 命令行格式 --innodb-tmpdir=dir_name系统变量 innodb_tmpdir范围 Global, Session 动态 是 SET_VAR提示适用没有 类型 目录名 默认值 NULL用于为在
ALTER TABLE重建表的在线操作期间创建的临时排序文件定义备用目录。ALTER TABLE重建表的在线操作还会在与原始表相同的目录中创建一个中间表文件。该innodb_tmpdir选项不适用于中间表文件。有效值是除MySQL数据目录路径以外的任何目录路径。如果该值为NULL(默认值),则创建临时文件MySQL临时目录(
$TMPDIR在Unix,%TEMP%Windows或--tmpdir配置选项指定的目录上)。如果指定了目录,则仅在innodb_tmpdir使用SET语句配置时检查目录和权限是否存在。如果在目录字符串中提供了符号链接,则该符号链接将被解析并存储为绝对路径。路径不应超过512个字节。如果将在线ALTER TABLE操作innodb_tmpdir设置为无效目录,则会报告错误。innodb_tmpdir覆盖MySQLtmpdir设置,但仅用于在线ALTER TABLE操作。该
FILE权限需要配置innodb_tmpdir。innodb_tmpdir引入该选项是为了帮助避免溢出tmpfs文件系统上的临时文件目录。此类溢出可能是由于在ALTER TABLE重建表的在线操作期间创建了大型临时排序文件而导致的。在复制环境中,仅
innodb_tmpdir当所有服务器具有相同的操作系统环境时,才考虑复制设置。否则,innodb_tmpdir在运行ALTER TABLE重建表的联机操作时,复制设置可能会导致复制失败。如果服务器操作环境不同,建议您分别innodb_tmpdir在每台服务器上进行配置。有关更多信息,请参见“在线DDL空间要求”。有关在线
ALTER TABLE操作的信息,请参见“ InnoDB和在线DDL”。innodb_trx_purge_view_update_only_debug属性 值 命令行格式 --innodb-trx-purge-view-update-only-debug[={OFF|ON}]系统变量 innodb_trx_purge_view_update_only_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF暂停清除已删除标记的记录,同时允许更新清除视图。此选项人为地创建了一种情况,其中清除视图已更新,但尚未执行清除。仅当使用CMake选项编译了调试支持时,此选项才可用。
WITH_DEBUGinnodb_trx_rseg_n_slots_debug属性 值 命令行格式 --innodb-trx-rseg-n-slots-debug=#系统变量 innodb_trx_rseg_n_slots_debug范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 0最大值 1024设置调试标志,该标志限制
TRX_RSEG_N_SLOTS为trx_rsegf_undo_find_free寻找用于撤消日志段的空闲插槽的函数的给定值。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUGinnodb_undo_directory属性 值 命令行格式 --innodb-undo-directory=dir_name系统变量 innodb_undo_directory范围 Global 动态 没有 SET_VAR提示适用没有 类型 目录名 InnoDB创建撤消表空间的路径。通常用于将撤消表空间放置在其他存储设备上。没有默认值(它是NULL)。如果
innodb_undo_directory未定义变量,则在数据目录中创建撤消表空间。初始化MySQL实例时创建的默认撤消表空间(
innodb_undo_001和innodb_undo_002)始终位于innodb_undo_directory变量定义的目录中。如果未指定其他路径,则
CREATE UNDO TABLESPACE在innodb_undo_directory变量定义的目录中创建使用语法创建的撤消表空间。有关更多信息,请参见“撤消表空间”。
innodb_undo_log_encrypt属性 值 命令行格式 --innodb-undo-log-encrypt[={OFF|ON}]系统变量 innodb_undo_log_encrypt范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 OFF对于表撤消日志数据的加密控制利用加密
InnoDB数据的静止加密功能。仅适用于驻留在单独的撤消表空间中的撤消日志。请参见“撤消表空间”。驻留在系统表空间中的撤消日志数据不支持加密。有关更多信息,请参阅撤消日志加密。innodb_undo_log_truncate属性 值 命令行格式 --innodb-undo-log-truncate[={OFF|ON}]系统变量 innodb_undo_log_truncate范围 Global 动态 是 SET_VAR提示适用没有 类型 布尔型 默认值 ON启用后,超过所定义的阈值的撤消表空间将
innodb_max_undo_log_size被标记为被截断。只有撤消表空间可以被截断。不支持截断系统表空间中的撤消日志。为了进行截断,必须至少有两个撤消表空间。该
innodb_purge_rseg_truncate_frequency变量可用于加快撤消表空间的截断。有关更多信息,请参见截断撤消表空间。
innodb_undo_tablespaces属性 值 命令行格式 --innodb-undo-tablespaces=#不推荐使用 是 系统变量 innodb_undo_tablespaces范围 Global 动态 是 SET_VAR提示适用没有 类型 整数 默认值 2最低值 2最大值 127定义所使用的撤消表空间的数量
InnoDB。默认和最小值为2。注意
innodb_undo_tablespaces自MySQL 8.0.14起,该变量已弃用,并且不再可配置。它将在将来的版本中删除。有关更多信息,请参见“撤消表空间”。
innodb_use_native_aio属性 值 命令行格式 --innodb-use-native-aio[={OFF|ON}]系统变量 innodb_use_native_aio范围 Global 动态 没有 SET_VAR提示适用没有 类型 布尔型 默认值 ON指定是否使用Linux异步I / O子系统。该变量仅适用于Linux系统,并且在服务器运行时无法更改。通常,您不需要配置此选项,因为默认情况下它是启用的。
Windows系统上具有的异步I / O功能
InnoDB在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。但是,如果操作系统中的异步I / O子系统出现问题而无法
InnoDB启动,则可以使用启动服务器innodb_use_native_aio=0。如果InnoDB检测到潜在问题,例如tmpdir位置,tmpfs文件系统和不支持AIO on的Linux内核的组合,则在启动过程中也可能会自动禁用此选项tmpfs。有关更多信息,请参见“在Linux上使用异步I / O”。
innodb_version该
InnoDB版本号。在MySQL 8.0中,单独的版本编号InnoDB不适用,并且该值version与服务器的编号相同。innodb_write_io_threads属性 值 命令行格式 --innodb-write-io-threads=#系统变量 innodb_write_io_threads范围 Global 动态 没有 SET_VAR提示适用没有 类型 整数 默认值 4最低值 1最大值 64中写入操作的I / O线程数
InnoDB。默认值为4。与之对应的读取线程为innodb_read_io_threads。有关更多信息,请参见“配置后台InnoDB I / O线程数”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。注意
在Linux系统中,使用默认设置运行多个MySQL服务器(通常超过12)
innodb_read_io_threads,innodb_write_io_threads以及Linux的aio-max-nr设置可以超过系统限制。理想情况下,增加aio-max-nr设置;作为一种解决方法,您可以减少一个或两个MySQL变量的设置。还应考虑的值
sync_binlog,该值控制二进制日志与磁盘的同步。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。
