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
- 可以在运行时更改许多系统变量(请参见“动态系统变量”)。
- 有关变量范围修饰符
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
有效值 OFF
ON
FORCE
InnoDB
如果服务器是在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.pid
SHOW ENGINE INNODB STATUS
默认情况下未创建该文件。要创建它,请使用选项启动mysqld。正常关闭服务器后删除文件。如果发生异常关闭,则可能必须手动删除状态文件。
innodb_status.pid
--innodb-status-file
InnoDB
该
--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
在主服务器上启用此选项,以将
InnoDB
memcached插件(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
指定实现
InnoDB
memcached插件的共享库。有关更多信息,请参见“设置InnoDB memcached插件”。
daemon_memcached_engine_lib_path
属性 值 命令行格式 --daemon-memcached-engine-lib-path=dir_name
系统变量 daemon_memcached_engine_lib_path
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 目录名 默认值 NULL
目录的路径,其中包含实现
InnoDB
memcached插件的共享库。默认值为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_delay
up或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
自动提交使用
InnoDB
memcached接口的空闲连接的频率,以秒为单位。有关更多信息,请参见“控制InnoDB memcached插件的事务行为”。innodb_api_disable_rowlock
属性 值 命令行格式 --innodb-api-disable-rowlock[={OFF|ON}]
系统变量 innodb_api_disable_rowlock
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 布尔型 默认值 OFF
当
InnoDB
memcached执行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
使您可以将
InnoDB
memcached插件与MySQL 二进制日志一起使用。有关更多信息,请参阅启用InnoDB memcached二进制日志。innodb_api_enable_mdl
属性 值 命令行格式 --innodb-api-enable-mdl[={OFF|ON}]
系统变量 innodb_api_enable_mdl
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 布尔型 默认值 OFF
锁定
InnoDB
memcached插件使用的表,以便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
有效值 0
1
2
用于生成自动增量值的锁定模式。对于传统的,连续的或交错的,允许的值分别为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_instances
innodb_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_DEBUG
innodb_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
最大值 64
InnoDB
缓冲池划分为的区域数。对于缓冲池在数千兆字节范围内的系统,将缓冲池划分为多个单独的实例可以通过减少争用不同线程读写缓存页面的争用来提高并发性。使用哈希函数将存储在缓冲池中或从缓冲池读取的每个页面随机分配给其中一个缓冲池实例。每个缓冲池管理自己的空闲列表,刷新列表, LRU和连接到缓冲池的所有其他数据结构,并受其自己的缓冲池互斥量保护。此选项仅在设置
innodb_buffer_pool_size
为1GB或更大时才生效。总缓冲池大小在所有缓冲池之间分配。为了获得最佳效率,指定的组合innodb_buffer_pool_instances
和innodb_buffer_pool_size
,使得每个缓冲池实例是至少为1GB。32位Windows系统上的默认值取决于的值
innodb_buffer_pool_size
,如下所述:- 如果
innodb_buffer_pool_size
大于1.3GB,则默认innodb_buffer_pool_instances
值为innodb_buffer_pool_size
/ 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_startup
innodb_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
最大值 50
InnoDB
更改缓冲区的最大大小,占缓冲池总大小的百分比。对于具有大量插入,更新和删除活动的MySQL服务器,您可以增加此值,而对于具有不变的用于报告的数据的MySQL服务器,则可以减小此值。有关更多信息,请参见“InnoDB更改缓冲区”。有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。innodb_change_buffering
属性 值 命令行格式 --innodb-change-buffering=value
系统变量 innodb_change_buffering
范围 Global 动态 是 SET_VAR
提示适用没有 类型 列举 默认值 all
有效值 none
inserts
deletes
changes
purges
all
是否
InnoDB
执行更改缓冲,这种优化会延迟对二级索引的写操作,以便可以顺序执行I / O操作。下表中描述了允许的值。值也可以通过数字指定。innodb_change_buffering的允许值
值 数值 描述 none
0
不要缓冲任何操作。 inserts
1
缓冲区插入操作。 deletes
2
缓冲区删除标记操作;严格来说,标记索引记录的写操作将在清除操作期间稍后删除。 changes
3
缓冲区插入和删除标记操作。 purges
4
缓冲在后台发生的物理删除操作。 all
5
默认值。缓冲区插入,删除标记操作和清除。 有关更多信息,请参见“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_DEBUG
innodb_checkpoint_disabled
属性 值 命令行格式 --innodb-checkpoint-disabled[={OFF|ON}]
系统变量 innodb_checkpoint_disabled
范围 Global 动态 是 SET_VAR
提示适用没有 类型 布尔型 默认值 OFF
这是一个调试选项,仅供专家调试使用。它禁用检查点,以便有意的服务器出口始终启动
InnoDB
恢复。仅应在短时间内启用它,通常是在运行DML操作之前,该操作将写入重做日志条目,而这些操作在服务器退出后需要恢复。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUG
innodb_checksum_algorithm
属性 值 命令行格式 --innodb-checksum-algorithm=value
系统变量 innodb_checksum_algorithm
范围 Global 动态 是 SET_VAR
提示适用没有 类型 列举 默认值 crc32
有效值 innodb
crc32
none
strict_innodb
strict_crc32
strict_none
指定如何生成和验证存储在表空间的磁盘块中的校验和。其缺省值是。
InnoDB
innodb_checksum_algorithm
crc32
MySQL 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
有效值 none
zlib
lz4
lz4hc
使用指定的压缩算法压缩所有表,而不必
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_DEBUG
innodb_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_size
innodb_log_file_size
innodb_flush_method
仅当您的MySQL实例在专用服务器上运行时才考虑启用此选项,在该专用服务器上MySQL服务器能够消耗所有可用的系统资源。如果您的MySQL实例与其他应用程序共享系统资源,则不建议启用此选项。
有关更多信息,请参见“为专用的MySQL服务器启用自动配置”。
innodb_default_row_format
属性 值 命令行格式 --innodb-default-row-format=value
系统变量 innodb_default_row_format
范围 Global 动态 是 SET_VAR
提示适用没有 类型 列举 默认值 DYNAMIC
有效值 DYNAMIC
COMPACT
REDUNDANT
该
innodb_default_row_format
选项定义InnoDB
表和用户创建的临时表的默认行格式。默认设置为DYNAMIC
。其他允许的值为COMPACT
和REDUNDANT
。系统表空间中COMPRESSED
不支持使用的行格式不能定义为默认格式。新创建的表使用未明确指定选项或使用选项
innodb_default_row_format
时定义的行格式。ROW_FORMAT
ROW_FORMAT=DEFAULT
当
ROW_FORMAT
未明确指定选项或ROW_FORMAT=DEFAULT
使用时,任何重建表的操作也将默默地将表的行格式更改为定义的格式innodb_default_row_format
。有关更多信息,请参见定义表的行格式。InnoDB
由服务器创建的用于处理查询的内部临时表使用DYNAMIC
行格式,而不管innodb_default_row_format
设置如何。innodb_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
有效值 0
1
2
在
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_DEBUG
innodb_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
最大值 100
InnoDB
在创建或重建索引时执行批量加载。这种创建索引的方法称为“排序索引构建”。innodb_fill_factor
定义在已排序索引构建期间填充的每个B树页面上的空间百分比,剩余空间保留给将来的索引增长。例如,设置innodb_fill_factor
为80将在每个B树页面上保留20%的空间用于将来的索引增长。实际百分比可能有所不同。该innodb_fill_factor
设置被解释为提示而不是硬限制。一个
innodb_fill_factor
100个叶子在聚簇索引页的空间1/16的设置免费为未来的指数增长。innodb_fill_factor
适用于B树叶子页面和非叶子页面。它不适用于用于TEXT
或BLOB
条目的外部页面。有关更多信息,请参见“排序索引构建”。
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
有效值 0
1
2
控制提交操作的严格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) unbuffered
normal
有效值(Unix) fsync
O_DSYNC
littlesync
nosync
O_DIRECT
O_DIRECT_NO_FSYNC
定义用于将数据刷新到
InnoDB
数据文件和日志文件的方法,这会影响I / O吞吐量。在类似Unix的系统上,默认值为
fsync
。在Windows上,默认值为unbuffered
。注意
在MySQL 8.0中,
innodb_flush_method
选项可以用数字指定。类似
innodb_flush_method
Unix的系统的选项包括: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_method
Windows系统的选项包括: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
有效值 0
1
2
指定是否冲洗从一个页面
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
提示适用没有 类型 布尔型 默认值 ON
innodb_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_name
INFORMATION_SCHEMA
INNODB_FT_INDEX_TABLE
INNODB_FT_INDEX_CACHE
INNODB_FT_CONFIG
INNODB_FT_DELETED
INNODB_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
分配给
InnoDB
FULLTEXT
搜索索引缓存的内存(以字节为单位),该索引在创建InnoDB
FULLTEXT
索引时将已解析的文档保存在内存中。只有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
指定在创建索引时将一组停用词与
InnoDB
FULLTEXT
索引关联。如果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
最大值 84
InnoDB
FULLTEXT
索引中存储的单词的最大字符长度。对此值设置限制会减少索引的大小,从而通过省略长关键字或不是真实单词且不太可能是搜索词的字母的任意集合来加快查询速度。有关更多信息,请参见“微调MySQL全文搜索”。
innodb_ft_min_token_size
属性 值 命令行格式 --innodb-ft-min-token-size=#
系统变量 innodb_ft_min_token_size
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 整数 默认值 3
最低值 0
最大值 16
InnoDB
FULLTEXT
索引中存储的单词的最小长度。增大此值可减少索引的大小,从而通过省略在搜索上下文中不太可能有意义的常见单词(例如英语单词“ a ”和“ to ”)来加快查询速度。对于使用CJK(中文,日文,韩文)字符集的内容,请将值指定为1。有关更多信息,请参见“微调MySQL全文搜索”。
innodb_ft_num_word_optimize
属性 值 命令行格式 --innodb-ft-num-word-optimize=#
系统变量 innodb_ft_num_word_optimize
范围 Global 动态 是 SET_VAR
提示适用没有 类型 整数 默认值 2000
OPTIMIZE TABLE
在InnoDB
FULLTEXT
索引上的每次操作期间要处理的字数。由于对包含全文搜索索引的表进行批量插入或更新操作可能需要大量索引维护才能合并所有更改,因此您可能需要执行一系列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
此选项用于
InnoDB
FULLTEXT
为所有InnoDB
表指定您自己的索引停用词列表。要为特定InnoDB
表配置自己的停用词列表,请使用innodb_ft_user_stopword_table
。设置
innodb_ft_server_stopword_table
为包含停用词列表的表的名称,格式为。db_name/table_name
在配置之前,停用词表必须存在
innodb_ft_server_stopword_table
。在创建索引之前,innodb_ft_enable_stopword
必须先启用它并且innodb_ft_server_stopword_table
必须配置选项FULLTEXT
。停用词表必须是一个
InnoDB
表,其中包含一个VARCHAR
名为的单列value
。有关更多信息,请参见“全文停用词”。
innodb_ft_sort_pll_degree
属性 值 命令行格式 --innodb-ft-sort-pll-degree=#
系统变量 innodb_ft_sort_pll_degree
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 整数 默认值 2
最低值 1
最大值 32
InnoDB
FULLTEXT
建立搜索索引时并行用于索引索引和标记索引文本的线程数。有关相关信息,请参见“ 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
最大值 1600000000
InnoDB
为所有表的全文本搜索索引高速缓存分配的总内存(以字节为单位)。创建许多表,每个表都有一个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
此选项用于
InnoDB
FULLTEXT
在特定表上指定您自己的索引停用词列表。要为所有InnoDB
表配置自己的停用词列表,请使用innodb_ft_server_stopword_table
。设置
innodb_ft_user_stopword_table
为包含停用词列表的表的名称,格式为。db_name/table_name
在配置之前,停用词表必须存在
innodb_ft_user_stopword_table
。在创建索引之前innodb_ft_enable_stopword
必须启用它并且innodb_ft_user_stopword_table
必须对其进行配置FULLTEXT
。停用词表必须是一个
InnoDB
表,其中包含一个VARCHAR
名为的单列value
。有关更多信息,请参见“全文停用词”。
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_DEBUG
innodb_lock_wait_timeout
属性 值 命令行格式 --innodb-lock-wait-timeout=#
系统变量 innodb_lock_wait_timeout
范围 Global, Session 动态 是 SET_VAR
提示适用没有 类型 整数 默认值 50
最低值 1
最大值 1073741824
InnoDB
事务在放弃之前等待行锁定的时间长度(以秒为单位)。默认值为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 GLOBAL
orSET SESSION
语句设置。更改GLOBAL
设置需要足够的特权来设置全局系统变量(请参见“系统变量特权”),并且会影响随后连接的所有客户端的操作。任何客户端都可以更改的SESSION
设置innodb_lock_wait_timeout
,这只会影响该客户端。innodb_log_buffer_size
属性 值 命令行格式 --innodb-log-buffer-size=#
系统变量 innodb_log_buffer_size
范围 Global 动态 是 SET_VAR
提示适用没有 类型 整数 默认值 16777216
最低值 1048576
最大值 4294967295
InnoDB
用于写入磁盘上的日志文件的缓冲区的大小(以字节为单位)。默认值为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_DEBUG
innodb_log_checkpoint_now
属性 值 命令行格式 --innodb-log-checkpoint-now[={OFF|ON}]
系统变量 innodb_log_checkpoint_now
范围 Global 动态 是 SET_VAR
提示适用没有 类型 布尔型 默认值 OFF
启用此调试选项以强制
InnoDB
编写检查点。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUG
innodb_log_checksums
属性 值 命令行格式 --innodb-log-checksums[={OFF|ON}]
系统变量 innodb_log_checksums
范围 Global 动态 是 SET_VAR
提示适用没有 类型 布尔型 默认值 ON
启用或禁用重做日志页面的校验和。
innodb_log_checksums=ON
CRC-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),或监视状态以了解写入重做日志文件的字节数。LOG
SHOW ENGINE INNODB STATUS
Innodb_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)。指定最小值时,不会发生预写。最大值等于该值。如果为其指定的值大于该值,则该设置将被截断为该值。InnoDB
InnoDB
innodb_page_size
innodb_log_write_ahead_size
innodb_page_size
innodb_log_write_ahead_size
innodb_page_size
innodb_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.99
InnoDB
尝试从缓冲池刷新数据,以使脏页百分比不超过此值。该
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_DEBUG
innodb_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
有效值 counter
module
pattern
all
将
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
有效值 counter
module
pattern
all
重置
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
跳过表数据的重新组织,而是处理InnoDB
FULLTEXT
索引的新添加,删除和更新的令牌数据。有关更多信息,请参见优化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.conf
in 的文件/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
有效值 4096
8192
16384
32768
65536
指定页面大小的
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
启用随机预读技术以优化
InnoDB
I / 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
提示适用没有 类型 布尔型 默认值 OFF
InnoDB
以只读模式启动。用于在只读媒体上分发数据库应用程序或数据集。也可以在数据仓库中用于在多个实例之间共享同一数据目录。有关更多信息,请参见“配置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
系统数据库中的其他表使用InnoDB
MySQL 8.0中的存储引擎。将这些表设为只读会导致对其进行修改的操作受到限制。例子:- 帐户管理语句(例如
CREATE USER
和)GRANT
失败,因为授权表使用InnoDB
。 - 在
INSTALL PLUGIN
和UNINSTALL PLUGIN
插件管理报表失败,因为该plugin
表使用InnoDB
。 - 由于表使用,因此
CREATE FUNCTION
and和DROP FUNCTION
UDF-management语句失败。func
InnoDB
- 如果
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
提示适用没有 类型 布尔型 默认值 OFF
InnoDB
默认情况下,仅回滚事务超时上的最后一条语句。如果--innodb-rollback-on-timeout
指定,则事务超时导致InnoDB
中止并回滚整个事务。注意
如果start-transaction语句是
START TRANSACTION
orBEGIN
语句,则回滚不会取消该语句。进一步的SQL语句成为交易的一部分,直到发生COMMIT
,ROLLBACK
或某些SQL语句导致隐式提交。有关更多信息,请参见“ InnoDB错误处理”。
innodb_rollback_segments
属性 值 命令行格式 --innodb-rollback-segments=#
系统变量 innodb_rollback_segments
范围 Global 动态 是 SET_VAR
提示适用没有 类型 整数 默认值 128
最低值 1
最大值 128
innodb_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_DEBUG
innodb_sort_buffer_size
属性 值 命令行格式 --innodb-sort-buffer-size=#
系统变量 innodb_sort_buffer_size
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 整数 默认值 1048576
最低值 65536
最大值 67108864
指定在创建
InnoDB
索引期间用于对数据进行排序的排序缓冲区的大小。指定的大小定义了读入内存以进行内部排序然后写出到磁盘的数据量。该过程称为“运行”。在合并阶段,将读取并合并指定大小的缓冲区对。设置越大,运行和合并的次数越少。该排序区域仅在索引创建期间用于合并排序,而不在以后的索引维护操作期间用于合并排序。索引创建完成后,将释放缓冲区。
此选项的值还控制在联机DDL操作期间扩展临时日志文件以记录并发DML的数量。
在使此设置可配置之前,该大小已硬编码为1048576字节(1MB),仍为默认值。
在创建索引的
ALTER TABLE
orCREATE 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 TABLE
orALTER 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_equal
nulls_unequal
nulls_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=mode
mode
ON
OFF
1
0
innodb_stats_persistent
属性 值 命令行格式 --innodb-stats-persistent[={OFF|ON}]
系统变量 innodb_stats_persistent
范围 Global 动态 是 SET_VAR
提示适用没有 类型 布尔型 默认值 ON
指定是否将
InnoDB
索引统计信息持久保存到磁盘。否则,可能会频繁地重新计算统计信息,这可能导致查询执行计划的变化。创建表时,此设置与每个表一起存储。您可以innodb_stats_persistent
在创建表之前在全局级别进行设置,或者使用and 语句的STATS_PERSISTENT
子句覆盖系统范围的设置并为单个表配置持久性统计信息。CREATE TABLE
ALTER TABLE
有关更多信息,请参见“配置持久性优化器统计参数”。
innodb_stats_persistent_sample_pages
属性 值 命令行格式 --innodb-stats-persistent-sample-pages=#
系统变量 innodb_stats_persistent_sample_pages
范围 Global 动态 是 SET_VAR
提示适用没有 类型 整数 默认值 20
估算索引列的基数和其他统计信息时(例如由所计算出的索引页),要采样的索引页数。增加该值会提高索引统计信息的准确性,从而可以提高查询执行计划的执行过程中,在增加的I / O的费用为表。有关更多信息,请参见“配置持久性优化器统计参数”。
ANALYZE TABLE
ANALYZE TABLE
InnoDB
注意
设置较高的值
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 TABLE
InnoDB
注意
设置较高的值
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
启用或禁用标准
InnoDB
Monitor的定期输出。还与结合使用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_mode
MySQL,后者控制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=mode
mode
ON
OFF
GLOBAL
SESSION
innodb_strict_mode
innodb_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
最大值 4294967295
InnoDB
线程在挂起线程之前等待互斥量释放的次数。innodb_sync_debug
属性 值 命令行格式 --innodb-sync-debug[={OFF|ON}]
系统变量 innodb_sync_debug
范围 Global 动态 没有 SET_VAR
提示适用没有 类型 布尔型 默认值 OFF
对
InnoDB
存储引擎启用同步调试检查。仅当使用CMake选项编译了调试支持时,此选项才可用。WITH_DEBUG
innodb_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_locks
1,这意味着LOCK TABLES
InnoDB在内部锁定表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
最大值 1000
InnoDB
尝试使内部并发的操作系统线程数保持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_DEBUG
innodb_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_DEBUG
innodb_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
输出中显示许多挂起的读/写操作。使用大量
InnoDB
I / 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”。