• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • InnoDB启动选项和系统变量

    • 系统变量true或false可以在服务器启动时通过命名来启用,也可以使用--skip-前缀来禁用。例如,要启用或禁用InnoDB自适应哈希索引,可以在命令行上使用--innodb-adaptive-hash-index--skip-innodb-adaptive-hash-indexinnodb_adaptive_hash_index或者skip_innodb_adaptive_hash_index在选项文件中使用。
    • 可以在命令行或选项文件中指定采用数字值的系统变量。--var_name=valuevar_name=value
    • 可以在运行时更改许多系统变量(请参见“动态系统变量”)。
    • 有关变量范围修饰符GLOBALSESSION变量范围修饰符的信息,请参见SET语句文档。
    • 某些选项控制InnoDB数据文件的位置和布局。“ InnoDB启动配置”介绍了如何使用这些选项。
    • 某些最初可能不会使用的选项可帮助InnoDB根据计算机容量和数据库工作负载调整性能特征。
    • 有关指定选项和系统变量的更多信息,请参见“指定程序选项”。

    InnoDB选项和变量参考

    NameCmd-LineOption FileSystem VarStatus VarVar ScopeDynamic
    daemon_memcached_enable_binlogYesYesYesGlobalNo
    daemon_memcached_engine_lib_nameYesYesYesGlobalNo
    daemon_memcached_engine_lib_pathYesYesYesGlobalNo
    daemon_memcached_optionYesYesYesGlobalNo
    daemon_memcached_r_batch_sizeYesYesYesGlobalNo
    daemon_memcached_w_batch_sizeYesYesYesGlobalNo
    foreign_key_checksYesBothYes
    innodbYesYes
    innodb_adaptive_flushingYesYesYesGlobalYes
    innodb_adaptive_flushing_lwmYesYesYesGlobalYes
    innodb_adaptive_hash_indexYesYesYesGlobalYes
    innodb_adaptive_hash_index_partsYesYesYesGlobalNo
    innodb_adaptive_max_sleep_delayYesYesYesGlobalYes
    innodb_api_bk_commit_intervalYesYesYesGlobalYes
    innodb_api_disable_rowlockYesYesYesGlobalNo
    innodb_api_enable_binlogYesYesYesGlobalNo
    innodb_api_enable_mdlYesYesYesGlobalNo
    innodb_api_trx_levelYesYesYesGlobalYes
    innodb_autoextend_incrementYesYesYesGlobalYes
    innodb_autoinc_lock_modeYesYesYesGlobalNo
    innodb_background_drop_list_emptyYesYesYesGlobalYes
    Innodb_buffer_pool_bytes_dataYesGlobalNo
    Innodb_buffer_pool_bytes_dirtyYesGlobalNo
    innodb_buffer_pool_chunk_sizeYesYesYesGlobalNo
    innodb_buffer_pool_debugYesYesYesGlobalNo
    innodb_buffer_pool_dump_at_shutdownYesYesYesGlobalYes
    innodb_buffer_pool_dump_nowYesYesYesGlobalYes
    innodb_buffer_pool_dump_pctYesYesYesGlobalYes
    Innodb_buffer_pool_dump_statusYesGlobalNo
    innodb_buffer_pool_filenameYesYesYesGlobalYes
    innodb_buffer_pool_in_core_fileYesYesYesGlobalYes
    innodb_buffer_pool_instancesYesYesYesGlobalNo
    innodb_buffer_pool_load_abortYesYesYesGlobalYes
    innodb_buffer_pool_load_at_startupYesYesYesGlobalNo
    innodb_buffer_pool_load_nowYesYesYesGlobalYes
    Innodb_buffer_pool_load_statusYesGlobalNo
    Innodb_buffer_pool_pages_dataYesGlobalNo
    Innodb_buffer_pool_pages_dirtyYesGlobalNo
    Innodb_buffer_pool_pages_flushedYesGlobalNo
    Innodb_buffer_pool_pages_freeYesGlobalNo
    Innodb_buffer_pool_pages_latchedYesGlobalNo
    Innodb_buffer_pool_pages_miscYesGlobalNo
    Innodb_buffer_pool_pages_totalYesGlobalNo
    Innodb_buffer_pool_read_aheadYesGlobalNo
    Innodb_buffer_pool_read_ahead_evictedYesGlobalNo
    Innodb_buffer_pool_read_ahead_rndYesGlobalNo
    Innodb_buffer_pool_read_requestsYesGlobalNo
    Innodb_buffer_pool_readsYesGlobalNo
    Innodb_buffer_pool_resize_statusYesGlobalNo
    innodb_buffer_pool_sizeYesYesYesGlobalYes
    Innodb_buffer_pool_wait_freeYesGlobalNo
    Innodb_buffer_pool_write_requestsYesGlobalNo
    innodb_change_buffer_max_sizeYesYesYesGlobalYes
    innodb_change_bufferingYesYesYesGlobalYes
    innodb_change_buffering_debugYesYesYesGlobalYes
    innodb_checkpoint_disabledYesYesYesGlobalYes
    innodb_checksum_algorithmYesYesYesGlobalYes
    innodb_cmp_per_index_enabledYesYesYesGlobalYes
    innodb_commit_concurrencyYesYesYesGlobalYes
    innodb_compress_debugYesYesYesGlobalYes
    innodb_compression_failure_threshold_pctYesYesYesGlobalYes
    innodb_compression_levelYesYesYesGlobalYes
    innodb_compression_pad_pct_maxYesYesYesGlobalYes
    innodb_concurrency_ticketsYesYesYesGlobalYes
    innodb_data_file_pathYesYesYesGlobalNo
    Innodb_data_fsyncsYesGlobalNo
    innodb_data_home_dirYesYesYesGlobalNo
    Innodb_data_pending_fsyncsYesGlobalNo
    Innodb_data_pending_readsYesGlobalNo
    Innodb_data_pending_writesYesGlobalNo
    Innodb_data_readYesGlobalNo
    Innodb_data_readsYesGlobalNo
    Innodb_data_writesYesGlobalNo
    Innodb_data_writtenYesGlobalNo
    Innodb_dblwr_pages_writtenYesGlobalNo
    Innodb_dblwr_writesYesGlobalNo
    innodb_ddl_log_crash_reset_debugYesYesYesGlobalYes
    innodb_deadlock_detectYesYesYesGlobalYes
    innodb_dedicated_serverYesYesYesGlobalNo
    innodb_default_row_formatYesYesYesGlobalYes
    innodb_directoriesYesYesYesGlobalNo
    innodb_disable_sort_file_cacheYesYesYesGlobalYes
    innodb_doublewriteYesYesYesGlobalNo
    innodb_fast_shutdownYesYesYesGlobalYes
    innodb_fil_make_page_dirty_debugYesYesYesGlobalYes
    innodb_file_per_tableYesYesYesGlobalYes
    innodb_fill_factorYesYesYesGlobalYes
    innodb_flush_log_at_timeoutYesYesYesGlobalYes
    innodb_flush_log_at_trx_commitYesYesYesGlobalYes
    innodb_flush_methodYesYesYesGlobalNo
    innodb_flush_neighborsYesYesYesGlobalYes
    innodb_flush_syncYesYesYesGlobalYes
    innodb_flushing_avg_loopsYesYesYesGlobalYes
    innodb_force_load_corruptedYesYesYesGlobalNo
    innodb_force_recoveryYesYesYesGlobalNo
    innodb_fsync_thresholdYesYesYesGlobalYes
    innodb_ft_aux_tableYesGlobalYes
    innodb_ft_cache_sizeYesYesYesGlobalNo
    innodb_ft_enable_diag_printYesYesYesGlobalYes
    innodb_ft_enable_stopwordYesYesYesBothYes
    innodb_ft_max_token_sizeYesYesYesGlobalNo
    innodb_ft_min_token_sizeYesYesYesGlobalNo
    innodb_ft_num_word_optimizeYesYesYesGlobalYes
    innodb_ft_result_cache_limitYesYesYesGlobalYes
    innodb_ft_server_stopword_tableYesYesYesGlobalYes
    innodb_ft_sort_pll_degreeYesYesYesGlobalNo
    innodb_ft_total_cache_sizeYesYesYesGlobalNo
    innodb_ft_user_stopword_tableYesYesYesBothYes
    Innodb_have_atomic_builtinsYesGlobalNo
    innodb_idle_flush_pctYesYesYesGlobalYes
    innodb_io_capacityYesYesYesGlobalYes
    innodb_io_capacity_maxYesYesYesGlobalYes
    innodb_limit_optimistic_insert_debugYesYesYesGlobalYes
    innodb_lock_wait_timeoutYesYesYesBothYes
    innodb_log_buffer_sizeYesYesYesGlobalVaries
    innodb_log_checkpoint_fuzzy_nowYesYesYesGlobalYes
    innodb_log_checkpoint_nowYesYesYesGlobalYes
    innodb_log_checksumsYesYesYesGlobalYes
    innodb_log_compressed_pagesYesYesYesGlobalYes
    innodb_log_file_sizeYesYesYesGlobalNo
    innodb_log_files_in_groupYesYesYesGlobalNo
    innodb_log_group_home_dirYesYesYesGlobalNo
    innodb_log_spin_cpu_abs_lwmYesYesYesGlobalYes
    innodb_log_spin_cpu_pct_hwmYesYesYesGlobalYes
    innodb_log_wait_for_flush_spin_hwmYesYesYesGlobalYes
    Innodb_log_waitsYesGlobalNo
    innodb_log_write_ahead_sizeYesYesYesGlobalYes
    Innodb_log_write_requestsYesGlobalNo
    Innodb_log_writesYesGlobalNo
    innodb_lru_scan_depthYesYesYesGlobalYes
    innodb_max_dirty_pages_pctYesYesYesGlobalYes
    innodb_max_dirty_pages_pct_lwmYesYesYesGlobalYes
    innodb_max_purge_lagYesYesYesGlobalYes
    innodb_max_purge_lag_delayYesYesYesGlobalYes
    innodb_max_undo_log_sizeYesYesYesGlobalYes
    innodb_merge_threshold_set_all_debugYesYesYesGlobalYes
    innodb_monitor_disableYesYesYesGlobalYes
    innodb_monitor_enableYesYesYesGlobalYes
    innodb_monitor_resetYesYesYesGlobalYes
    innodb_monitor_reset_allYesYesYesGlobalYes
    Innodb_num_open_filesYesGlobalNo
    innodb_numa_interleaveYesYesYesGlobalNo
    innodb_old_blocks_pctYesYesYesGlobalYes
    innodb_old_blocks_timeYesYesYesGlobalYes
    innodb_online_alter_log_max_sizeYesYesYesGlobalYes
    innodb_open_filesYesYesYesGlobalNo
    innodb_optimize_fulltext_onlyYesYesYesGlobalYes
    Innodb_os_log_fsyncsYesGlobalNo
    Innodb_os_log_pending_fsyncsYesGlobalNo
    Innodb_os_log_pending_writesYesGlobalNo
    Innodb_os_log_writtenYesGlobalNo
    innodb_page_cleanersYesYesYesGlobalNo
    Innodb_page_sizeYesGlobalNo
    innodb_page_sizeYesYesYesGlobalNo
    Innodb_pages_createdYesGlobalNo
    Innodb_pages_readYesGlobalNo
    Innodb_pages_writtenYesGlobalNo
    innodb_parallel_read_threadsYesYesYesSessionYes
    innodb_print_all_deadlocksYesYesYesGlobalYes
    innodb_print_ddl_logsYesYesYesGlobalYes
    innodb_purge_batch_sizeYesYesYesGlobalYes
    innodb_purge_rseg_truncate_frequencyYesYesYesGlobalYes
    innodb_purge_threadsYesYesYesGlobalNo
    innodb_random_read_aheadYesYesYesGlobalYes
    innodb_read_ahead_thresholdYesYesYesGlobalYes
    innodb_read_io_threadsYesYesYesGlobalNo
    innodb_read_onlyYesYesYesGlobalNo
    innodb_redo_log_archive_dirsYesYesYesGlobalYes
    innodb_redo_log_encryptYesYesYesGlobalYes
    innodb_replication_delayYesYesYesGlobalYes
    innodb_rollback_on_timeoutYesYesYesGlobalNo
    innodb_rollback_segmentsYesYesYesGlobalYes
    Innodb_row_lock_current_waitsYesGlobalNo
    Innodb_row_lock_timeYesGlobalNo
    Innodb_row_lock_time_avgYesGlobalNo
    Innodb_row_lock_time_maxYesGlobalNo
    Innodb_row_lock_waitsYesGlobalNo
    Innodb_rows_deletedYesGlobalNo
    Innodb_rows_insertedYesGlobalNo
    Innodb_rows_readYesGlobalNo
    Innodb_rows_updatedYesGlobalNo
    innodb_saved_page_number_debugYesYesYesGlobalYes
    innodb_sort_buffer_sizeYesYesYesGlobalNo
    innodb_spin_wait_delayYesYesYesGlobalYes
    innodb_spin_wait_pause_multiplierYesYesYesGlobalYes
    innodb_stats_auto_recalcYesYesYesGlobalYes
    innodb_stats_include_delete_markedYesYesYesGlobalYes
    innodb_stats_methodYesYesYesGlobalYes
    innodb_stats_on_metadataYesYesYesGlobalYes
    innodb_stats_persistentYesYesYesGlobalYes
    innodb_stats_persistent_sample_pagesYesYesYesGlobalYes
    innodb_stats_transient_sample_pagesYesYesYesGlobalYes
    innodb-status-fileYesYes
    innodb_status_outputYesYesYesGlobalYes
    innodb_status_output_locksYesYesYesGlobalYes
    innodb_strict_modeYesYesYesBothYes
    innodb_sync_array_sizeYesYesYesGlobalNo
    innodb_sync_debugYesYesYesGlobalNo
    innodb_sync_spin_loopsYesYesYesGlobalYes
    Innodb_system_rows_deletedYesGlobalNo
    Innodb_system_rows_insertedYesGlobalNo
    Innodb_system_rows_readYesGlobalNo
    innodb_table_locksYesYesYesBothYes
    innodb_temp_data_file_pathYesYesYesGlobalNo
    innodb_temp_tablespaces_dirYesYesYesGlobalNo
    innodb_thread_concurrencyYesYesYesGlobalYes
    innodb_thread_sleep_delayYesYesYesGlobalYes
    innodb_tmpdirYesYesYesBothYes
    Innodb_truncated_status_writesYesGlobalNo
    innodb_trx_purge_view_update_only_debugYesYesYesGlobalYes
    innodb_trx_rseg_n_slots_debugYesYesYesGlobalYes
    innodb_undo_directoryYesYesYesGlobalNo
    innodb_undo_log_encryptYesYesYesGlobalYes
    innodb_undo_log_truncateYesYesYesGlobalYes
    innodb_undo_tablespacesYesYesYesGlobalVaries
    Innodb_undo_tablespaces_activeYesGlobalNo
    Innodb_undo_tablespaces_explicitYesGlobalNo
    Innodb_undo_tablespaces_implicitYesGlobalNo
    Innodb_undo_tablespaces_totalYesGlobalNo
    innodb_use_native_aioYesYesYesGlobalNo
    innodb_versionYesGlobalNo
    innodb_write_io_threadsYesYesYesGlobalNo
    unique_checksYesBothYes

    InnoDB命令选项

    • --innodb[=value]

      属性
      命令行格式--innodb[=value]
      不推荐使用
      类型列举
      默认值ON
      有效值

      OFF

      ON

      FORCE

      InnoDB如果服务器是在InnoDB支持下编译的,则控制存储引擎的加载。此选项有三态格式,可能值OFFONFORCE。请参见“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的写操作,如addsetincr,做一个前执行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请求行锁定getset操作。当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插件的事务行为”。

    • 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会等到后台放置列表为空后再创建table t1

    • 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_sizeinnodb_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_sizeinnodb_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_instancesinnodb_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_shutdowninnodb_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_instancesinnodb_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_shutdowninnodb_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的允许值

      数值描述
      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_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

      指定如何生成和验证存储在表空间的磁盘块中的校验和。其缺省值是。InnoDBinnodb_checksum_algorithmcrc32

      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读取。

      如果校验和算法的严格形式在表空间中遇到有效但不匹配的校验和值,则会报告错误。建议您仅在新实例中使用严格的设置来首次设置表空间。严格的设置要快一些,因为它们不需要在磁盘读取期间计算所有校验和值。

      下表显示了之间的区别noneinnodbcrc32选项值,和他们同行的严格。none,,innodb然后crc32将指定类型的校验和值写入每个数据块,但是出于兼容性考虑,在读取操作期间验证块时,请接受其他校验和值。严格的设置还会接受有效的校验和值,但是当遇到有效的不匹配校验和值时会显示一条错误消息。如果InnoDB实例中的所有数据文件都以相同的innodb_checksum_algorithm值创建,则使用严格格式可以加快验证速度。

      允许的innodb_checksum_algorithm值

      生成的校验和(写时)允许的校验和(读取时)
      没有一个常数。任何所产生的校验和noneinnodbcrc32
      Innodb使用的原始算法在软件中计算出的校验和InnoDB任何所产生的校验和noneinnodbcrc32
      crc32使用crc32算法计算出的校验和,可能需要借助硬件来完成。任何所产生的校验和noneinnodbcrc32
      strict_none常数任何所产生的校验和noneinnodbcrc32InnoDB如果遇到有效但不匹配的校验和,则会显示一条错误消息。
      strict_innodb使用的原始算法在软件中计算出的校验和InnoDB任何所产生的校验和noneinnodbcrc32InnoDB如果遇到有效但不匹配的校验和,则会显示一条错误消息。
      strict_crc32使用crc32算法计算出的校验和,可能需要借助硬件来完成。任何所产生的校验和noneinnodbcrc32InnoDB如果遇到有效但不匹配的校验和,则会显示一条错误消息。

    • 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]]
      

      文件大小是由附加在千字节,兆字节或千兆字节指定KMG对大小值。如果以千字节为单位指定数据文件大小,请以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。默认值为MySQL data目录。如果将值指定为空字符串,则可以为指定绝对文件路径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。其他允许的值为COMPACTREDUNDANT。系统表空间中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_dirinnodb_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_factor100个叶子在聚簇索引页的空间1/16的设置免费为未来的指数增长。

      innodb_fill_factor适用于B树叶子页面和非叶子页面。它不适用于用于TEXTBLOB条目的外部页面。

      有关更多信息,请参见“排序索引构建”。

    • innodb_flush_log_at_timeout

      属性
      命令行格式--innodb-flush-log-at-timeout=#
      系统变量innodb_flush_log_at_timeout
      范围Global
      动态
      SET_VAR提示适用没有
      类型整数
      默认值1
      最低值1
      最大值2700

      每秒钟写入并刷新日志Ninnodb_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秒(其中N1 ... 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_methodUnix的系统的选项包括:

      • fsync0InnoDB使用fsync()系统调用来刷新数据和日志文件。fsync是默认设置。
      • O_DSYNC1InnoDB用于O_SYNC打开和刷新日志文件,以及fsync()刷新数据文件。InnoDB不能O_DSYNC直接使用,因为在许多Unix上都存在问题。
      • littlesync2:此选项用于内部性能测试,当前不受支持。使用风险自负。
      • nosync3:此选项用于内部性能测试,当前不受支持。使用风险自负。
      • O_DIRECT4InnoDB使用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系统的选项包括:

      • unbuffered0InnoDB使用模拟异步I / O和非缓冲I / O。
      • normal1InnoDB使用模拟的异步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以分散写操作。有关相关信息,请参见“配置缓冲池刷新”。

    • 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防止INSERTUPDATEDELETEinnodb_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
      最大值84

      InnoDBFULLTEXT索引中存储的单词的最大字符长度。对此值设置限制会减少索引的大小,从而通过省略长关键字或不是真实单词且不太可能是搜索词的字母的任意集合来加快查询速度。

      有关更多信息,请参见“微调MySQL全文搜索”。

    • innodb_ft_min_token_size

      属性
      命令行格式--innodb-ft-min-token-size=#
      系统变量innodb_ft_min_token_size
      范围Global
      动态没有
      SET_VAR提示适用没有
      类型整数
      默认值3
      最低值0
      最大值16

      InnoDBFULLTEXT索引中存储的单词的最小长度。增大此值可减少索引的大小,从而通过省略在搜索上下文中不太可能有意义的常见单词(例如英语单词“ 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 TABLEInnoDBFULLTEXT索引上的每次操作期间要处理的字数。由于对包含全文搜索索引的表进行批量插入或更新操作可能需要大量索引维护才能合并所有更改,因此您可能需要执行一系列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
      最大值32

      InnoDBFULLTEXT建立搜索索引时并行用于索引索引和标记索引文本的线程数。

      有关相关信息,请参见“ 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

      此选项用于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_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 GLOBALor SET 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=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_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

      定义所需的最大吹扫延迟。如果超过这个值,延迟征收INSERTUPDATE以及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_INTERLEAVEmysqld的进程。InnoDB分配缓冲池后,将NUMA内存策略设置回MPOL_DEFAULT。为了使该innodb_numa_interleave选项可用,必须在启用NUMA的Linux系统上编译MySQL。

      CMakeWITH_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。例如,如果mysqldmysql用户下运行,则可以通过将以下行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 18446744073709551596
      
    • innodb_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性能。InnoDBCHECK 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_sizeinnodb_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_aheadInnodb_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_threadsinnodb_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系统数据库中的其他表使用InnoDBMySQL 8.0中的存储引擎。将这些表设为只读会导致对其进行修改的操作受到限制。例子:

      • 帐户管理语句(例如CREATE USER和)GRANT失败,因为授权表使用InnoDB
      • INSTALL PLUGINUNINSTALL 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提示适用没有
      类型布尔型
      默认值OFF

      InnoDB默认情况下,仅回滚事务超时上的最后一条语句。如果--innodb-rollback-on-timeout指定,则事务超时导致InnoDB中止并回滚整个事务。

      注意

      如果start-transaction语句是START TRANSACTIONor BEGIN语句,则回滚不会取消该语句。进一步的SQL语句成为交易的一部分,直到发生COMMITROLLBACK或某些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_debuginnodb_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 TABLEor CREATE 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=1CREATE TABLEor ALTER 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_equalnulls_unequalnulls_ignored。对于nulls_equal,所有NULL索引值均视为相等,并形成一个大小等于NULL值数量的单个值组。对于nulls_unequalNULL值被认为是不相等的,并且每个NULL值形成大小为1的不同值组。对于nulls_ignoredNULL值将被忽略。

      如“ 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.TABLESINFORMATION_SCHEMA.STATISTICS表。(这些更新与发生的情况类似ANALYZE TABLE。)禁用时,InnoDB不会在这些操作期间更新统计信息。禁用该设置可以提高具有大量表或索引的架构的访问速度。它还可以提高涉及表的查询的执行计划的稳定性InnoDB

      要更改设置,请发出语句,其中是或(或或)。更改设置需要足够的特权才能设置全局系统变量(请参见“系统变量特权”),并且会立即影响所有连接的操作。SET GLOBAL innodb_stats_on_metadata=modemodeONOFF10

    • innodb_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 TABLEALTER TABLECREATE INDEX,和OPTIMIZE TABLE语句。innodb_strict_mode还启用了记录大小检查,因此由于记录对于所选页面大小而言太大而导致INSERTUPDATE永不失败。

      Oracle建议使innodb_strict_mode用时ROW_FORMATKEY_BLOCK_SIZE条款中CREATE TABLEALTER TABLECREATE INDEX语句。当innodb_strict_mode被禁用,InnoDB忽略了相互矛盾的条款且仅在消息日志警告创建表或索引。结果表可能具有与预期不同的特征,例如在尝试创建压缩表时缺少压缩支持。当innodb_strict_mode启用时,这些问题产生的直接错误,并且不会创建表或索引。

      您可以innodb_strict_mode在启动时在命令行上mysqld或在MySQL 配置文件中启用或禁用。您还可以启用或禁用innodb_strict_mode在与语句运行,其中要么是或。更改设置需要足够的特权来设置全局系统变量(请参见“系统变量特权”),并且会影响随后连接的所有客户端的操作。任何客户端都可以更改的设置,并且该设置仅影响该客户端。SET[GLOBAL|SESSION] innodb_strict_mode=modemodeONOFFGLOBALSESSIONinnodb_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 = 0InnoDB荣誉LOCK TABLES;LOCK TABLES ... WRITE直到所有其他线程都释放了对表的所有锁后,MySQL才返回。默认值为innodb_table_locks1,这意味着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,则默认行为是创建一个ibtmp1innodb_data_home_dir目录中命名的自动扩展数据文件。初始文件大小略大于12MB。

      全局临时表空间数据文件规范的语法包括文件名,文件大小和autoextendmax属性:

      file_name:file_size[:autoextend[:max:max_file_size]]
      

      全局临时表空间数据文件不能与另一个InnoDB数据文件具有相同的名称。创建全局临时表空间数据文件的任何无能力或错误将被视为致命事件,并且服务器启动将被拒绝。

      文件大小是通过附加在KB,MB,GB或规定KM或者G对大小值。文件大小的总和必须略大于12MB。

      单个文件的大小限制由操作系统确定。在支持大文件的操作系统上,文件大小可以大于4GB。不支持将原始磁盘分区用于全局临时表空间数据文件。

      autoextendmax属性只能在最后一个指定的数据文件中使用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 InnoDBqueries in queue countersROW OPERATIONSSHOW 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线程并发”。

    • 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覆盖MySQL tmpdir设置,但仅用于在线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_SLOTStrx_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_001innodb_undo_002)始终位于innodb_undo_directory变量定义的目录中。

      如果未指定其他路径,则CREATE UNDO TABLESPACEinnodb_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_threadsinnodb_write_io_threads以及Linux的aio-max-nr设置可以超过系统限制。理想情况下,增加aio-max-nr设置;作为一种解决方法,您可以减少一个或两个MySQL变量的设置。

      还应考虑的值sync_binlog,该值控制二进制日志与磁盘的同步。

      有关常规I / O调整建议,请参见“优化InnoDB磁盘I / O”。