10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/InnoDB存储引擎/ InnoDB启动选项和系统变量

15.14 InnoDB启动选项和系统变量


InnoDB命令选项

  • ——innodb [=价值

    命令行格式 ——innodb(=价值)
    弃用 是的
    类型 枚举
    默认值
    有效值

    控制加载InnoDB存储引擎,如果服务器编译InnoDB支持。此选项具有三州格式,可能的值为,或.看到InnoDB,使用——innodb =了——skip-innodb.在本例中,因为默认的存储引擎为InnoDB,服务器不会启动,除非您也使用——default-storage-engine而且——default-tmp-storage-engine将默认值设置为永久和其他引擎临时表。

    InnoDB存储引擎不能再被禁用,并且——innodb =了而且——skip-innodb选项已弃用,没有效果。它们的使用导致警告。希望在未来的MySQL版本中删除这些选项。

  • ——innodb-status-file

    命令行格式 ——innodb-status-file[={|在}]
    类型 布尔
    默认值

    ——innodb-status-file启动选项控制是否InnoDB创建一个名为innodb_status。pid在数据目录下写查看引擎innodb状态大约每15秒输出一次。

    innodb_status。pid默认情况下不会创建文件。要创建它,请开始mysqld——innodb-status-file选择。InnoDB当服务器正常关闭时,移除该文件。如果发生异常关机,可能需要手动删除状态文件。

    ——innodb-status-file选项用于临时使用,如查看引擎innodb状态输出的生成会影响性能innodb_status。pid随着时间的推移,文件可能会变得相当大。

    相关信息请参见

    ——skip-innodb

    禁用InnoDB存储引擎。参见——innodb

InnoDB系统变量

的复制设置中的持久性和一致性InnoDB事务:

有关对意外停机最具弹性的副本设置组合的信息,请参见

许多操作系统和一些磁盘硬件欺骗了flush-to-disk操作。他们可能会告诉mysqld这种同花顺已经发生了,尽管它还没有发生。在这种情况下,即使使用推荐的设置,事务的持久性也不能得到保证,在最坏的情况下,停电可能会造成破坏InnoDB数据。在SCSI磁盘控制器或磁盘本身中使用电池支持的磁盘缓存可以加速文件刷新,并使操作更安全。您还可以尝试在硬件缓存中禁用磁盘写入的缓存。

  • innodb_flush_method

    命令行格式 ——innodb-flush-method =值
    系统变量 innodb_flush_method
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 字符串
    默认值(Unix) fsync
    默认值(Windows) 无缓冲的
    有效值(Unix)

    fsync

    O_DSYNC

    littlesync

    nosync

    O_DIRECT

    O_DIRECT_NO_FSYNC

    有效值(Windows)

    无缓冲的

    正常的

    定义用于的方法InnoDBfsync.在Windows操作系统下,默认值为无缓冲的

    请注意

    在MySQL 8.0中,innodb_flush_method可以用数字指定选项。

    innodb_flush_method类unix系统的选项包括:

    • fsync0InnoDB使用fsync ()用于刷新数据和日志文件的系统调用。fsync是默认设置。

    • O_DSYNC1InnoDB使用O_SYNC打开并刷新日志文件,以及fsync ()刷新数据文件。InnoDB不使用O_DSYNC直接原因是它在许多Unix变体上都存在问题。

    • littlesync2:此选项用于内部性能测试,目前不支持。使用风险自负。

    • nosync3.:此选项用于内部性能测试,目前不支持。使用风险自负。

    • O_DIRECT4InnoDB使用O_DIRECT(或译:())打开数据文件,并使用fsync ()刷新数据和日志文件。该选项在一些GNU/Linux版本、FreeBSD和Solaris中可用。

    • O_DIRECT_NO_FSYNCInnoDB使用O_DIRECT在刷新I/O期间,但跳过fsync ()每次写操作后的系统调用。

      在MySQL 8.0.14之前,这个设置不适合XFS和EXT4这样的文件系统,它们需要一个fsync ()同步文件系统元数据更改的系统调用。如果您不确定您的文件系统是否需要fsync ()系统调用同步文件系统元数据更改,使用O_DIRECT代替。

      从MySQL 8.0.14开始,fsync ()在创建新文件、增加文件大小和关闭文件之后调用,以确保文件系统元数据更改是同步的。的fsync ()在每次写操作之后仍然跳过系统调用。

      如果重做日志文件和数据文件驻留在不同的存储设备上,并且在数据文件写入从没有电池支持的设备缓存刷新之前发生意外退出,那么数据可能丢失。如果您使用或打算为重做日志文件和数据文件使用不同的存储设备,并且您的数据文件驻留在一个没有电池支持的缓存设备上,请使用O_DIRECT代替。

    在支持fdatasync ()系统调用,innodb_use_fdatasyncMySQL 8.0.26中引入的变量允许innodb_flush_method选择使用fsync ()使用fdatasync ()代替。一个fdatasync ()除非后续的数据检索需要,否则系统调用不会刷新对文件元数据的更改,这提供了潜在的性能优势。

    innodb_flush_methodWindows系统的选项包括:

    • 无缓冲的0InnoDB使用模拟的异步I/O和非缓冲I/O。

    • 正常的1InnoDB使用模拟的异步I/O和缓冲I/O。

    每个设置如何影响性能取决于硬件配置和工作负载。对特定的配置进行基准测试,以决定使用哪个设置,或者是否保持默认设置。检查Innodb_data_fsyncs状态变量查看总数fsync ()调用(或fdatasync ()电话如果innodb_use_fdatasync为每个设置启用)。工作负载中读写操作的混合使用可能会影响设置的执行方式。例如,在一个带有硬件RAID控制器和电池支持的写缓存的系统上,O_DIRECT可以帮助避免双缓冲之间的InnoDB缓冲池和操作系统文件系统缓存。在某些系统中InnoDB数据和日志文件位于SAN上,默认值为或O_DSYNC对于读量大的工作负载,使用大多数可能更快选择语句。始终使用反映生产环境的硬件和工作负载测试此参数。有关一般I/O调优建议,请参见innodb_dedicated_server启用,innodb_flush_method值如果没有显式定义,将自动配置。有关更多信息,请参见

    innodb_flush_neighbors

    命令行格式 ——innodb-flush-neighbors = #
    系统变量 innodb_flush_neighbors
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 枚举
    默认值 0
    有效值

    0

    1

    2

    指定是否InnoDB

  • 当表数据存储在传统的

    innodb_flush_sync

    命令行格式 ——innodb-flush-sync[={|在}]
    系统变量 innodb_flush_sync
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    innodb_flush_sync变量,该变量默认启用,将导致innodb_io_capacity设置为在发生的I/O活动爆发期间被忽略innodb_io_capacity设置,禁用innodb_flush_sync

    有关配置innodb_flush_sync变量,看到

    innodb_flushing_avg_loops

    命令行格式 ——innodb-flushing-avg-loops = #
    系统变量 innodb_flushing_avg_loops
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 30.
    最小值 1
    最大值 1000

    的迭代次数InnoDB保留先前计算的刷新状态快照,控制刷新的速度

    innodb_force_load_corrupted

    命令行格式 ——innodb-force-load-corrupted[={|在}]
    系统变量 innodb_force_load_corrupted
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    许可证InnoDB在启动时加载标记为已损坏的表。仅在故障排除期间使用,以恢复数据,否则不可访问。当故障排除完成后,禁用此设置并重新启动服务器。

  • innodb_force_recovery

    命令行格式 ——innodb-force-recovery = #
    系统变量 innodb_force_recovery
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 6

    innodb_force_recovery,请参阅

    只有在紧急情况下才将此变量设置为大于0的值,以便您可以启动InnoDB扔掉你的桌子。作为安全措施,InnoDB防止插入更新,或删除操作时innodb_force_recovery大于0。一个innodb_force_recovery设置4个或更多的地方InnoDB进入只读模式。

    这些限制可能导致复制管理命令失败并出现错误,因为复制存储了副本状态登录InnoDB表。

  • innodb_fsync_threshold

    命令行格式 ——innodb-fsync-threshold = #
    介绍了 8.0.13
    系统变量 innodb_fsync_threshold
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 2 * * 64 - 1

    默认情况下,当InnoDB创建一个新的数据文件,例如新的日志文件或表空间文件,在将该文件刷新到磁盘之前,该文件将被完全写入操作系统缓存,这可能会导致一次发生大量的磁盘写活动。要强制从操作系统缓存中定期刷新较小的数据,可以使用innodb_fsync_threshold变量定义一个阈值,以字节为单位。当达到字节阈值时,操作系统缓存的内容将刷新到磁盘。默认值0强制执行默认行为,即只有在文件完全写入缓存后才将数据刷新到磁盘。

    在多个MySQL实例使用相同的存储设备的情况下,指定一个阈值来强制更小的定期刷新可能是有益的。例如,创建一个新的MySQL实例及其相关的数据文件可能会导致磁盘写活动大幅增加,从而影响使用相同存储设备的其他MySQL实例的性能。配置阈值有助于避免这种写活动激增。

  • innodb_ft_aux_table

    系统变量 innodb_ft_aux_table
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串

    的限定名InnoDB表包含一个全文索引。此变量用于诊断目的,只能在运行时设置。例如:

    SET GLOBAL innodb_ft_aux_table = 'test/t1';

    将此变量设置为格式中的名称之后db_name/table_name,INFORMATION_SCHEMAINNODB_FT_INDEX_TABLEINNODB_FT_INDEX_CACHEINNODB_FT_CONFIGINNODB_FT_DELETED,INNODB_FT_BEING_DELETED显示指定表的搜索索引信息。

    有关更多信息,请参见

    innodb_ft_cache_size

    命令行格式 ——innodb-ft-cache-size = #
    系统变量 innodb_ft_cache_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 8000000
    最小值 1600000
    最大值 80000000

    对象分配的内存,以字节为单位InnoDB全文搜索索引缓存,它在创建时将已解析的文档保存在内存中InnoDB全文索引。索引插入和更新仅在innodb_ft_cache_size已达到大小限制。innodb_ft_cache_size在每个表的基础上定义缓存大小。若要为所有表设置全局限制,请参见innodb_ft_total_cache_size

    有关更多信息,请参见

    innodb_ft_enable_diag_print

    命令行格式 ——innodb-ft-enable-diag-print[={|在}]
    系统变量 innodb_ft_enable_diag_print
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    是否启用附加的全文搜索(FTS)诊断输出。这个选项主要用于高级FTS调试,大多数用户对此不感兴趣。输出会打印到错误日志中,包括如下信息:

    • FTS索引同步进度(当达到FTS缓存限制时)。例如:

      FTS SYNC用于表测试,删除计数:100大小:10000字节同步字:100
    • FTS优化进展。例如:

      FTS_OPTIMIZE:已处理“mysql”
    • FTS指数构建进展。例如:

      文件处理数量:1000
    • 对于FTS查询,将打印查询解析树、字权重、查询处理时间和内存使用情况。例如:

      FTS搜索处理时间:1秒:100毫秒:行(s) 10000全搜索内存:245666(字节),行:10000
  • innodb_ft_enable_stopword

    命令行格式 ——innodb-ft-enable-stopword[={|在}]
    系统变量 innodb_ft_enable_stopword
    范围 全球、会话
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    指定一组InnoDB全文创建索引时的索引。如果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
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 84
    最小值 10
    最大值 84

    控件中存储的单词的最大字符长度InnoDB全文索引。对该值设置限制可以减少索引的大小,从而加快查询速度,因为可以省略长关键字或不是真正的单词且不可能是搜索词的任意字母集合。

    有关更多信息,请参见

    innodb_ft_min_token_size

    命令行格式 ——innodb-ft-min-token-size = #
    系统变量 innodb_ft_min_token_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 3.
    最小值 0
    最大值 16

    中存储的单词的最小长度InnoDB全文索引。增加这个值会减少索引的大小,从而通过省略在搜索上下文中不太重要的常用单词(比如英语单词)来加快查询速度一个而且.对于使用CJK(中文、日文、韩文)字符集的内容,请指定值1。

    有关更多信息,请参见

    innodb_ft_num_word_optimize

    命令行格式 ——innodb-ft-num-word-optimize = #
    系统变量 innodb_ft_num_word_optimize
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 2000
    最小值 1000
    最大值 10000

    每个过程中要处理的字数优化表操作在一个InnoDB全文索引。由于对包含全文搜索索引的表的批量插入或更新操作可能需要大量的索引维护来合并所有更改,因此可能需要执行一系列优化表语句,一个接一个。

    有关更多信息,请参见

    innodb_ft_result_cache_limit

    命令行格式 ——innodb-ft-result-cache-limit = #
    系统变量 innodb_ft_result_cache_limit
    范围 全球
    动态 是的
    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
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串
    默认值

    此选项用于指定您自己的选项InnoDB全文所有的索引停止词列表InnoDB表。配置您自己的停止词列表InnoDB表,使用innodb_ft_user_stopword_table

    innodb_ft_server_stopword_table转换为包含停止字列表的表的名称,格式为db_name/table_name

    停止字表必须在配置前已经存在innodb_ft_server_stopword_tableinnodb_ft_enable_stopword必须启用并且innodb_ft_server_stopword_table选项必须在创建全文索引。

    停止表必须是InnoDB表,包含一个VARCHAR列命名价值

    有关更多信息,请参见

    innodb_ft_sort_pll_degree

    命令行格式 ——innodb-ft-sort-pll-degree = #
    系统变量 innodb_ft_sort_pll_degree
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 2
    最小值 1
    最大值 32

    中并行索引和标记文本的线程数InnoDB全文在构建innodb_sort_buffer_size

  • innodb_ft_total_cache_size

    命令行格式 ——innodb-ft-total-cache-size = #
    系统变量 innodb_ft_total_cache_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 640000000
    最小值 32000000
    最大值 1600000000

    对象分配的总内存,以字节为单位InnoDB所有表的全文搜索索引缓存。创建大量的表,每个表具有全文搜索索引,可能会消耗大量可用内存。innodb_ft_total_cache_size为所有全文搜索索引定义全局内存限制,以帮助避免过多的内存消耗。如果索引操作达到了全局限制,就会触发强制同步。

    有关更多信息,请参见

    innodb_ft_user_stopword_table

    命令行格式 ——innodb-ft-user-stopword-table = db_name / table_name
    系统变量 innodb_ft_user_stopword_table
    范围 全球、会话
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串
    默认值

    此选项用于指定您自己的选项InnoDB全文在特定表上索引停止词列表。为所有人配置自己的停止词列表InnoDB表,使用innodb_ft_server_stopword_table

    innodb_ft_user_stopword_table转换为包含停止字列表的表的名称,格式为db_name/table_name

    停止字表必须在配置前已经存在innodb_ft_user_stopword_tableinnodb_ft_enable_stopword必须启用并且innodb_ft_user_stopword_table必须在创建全文索引。

    停止表必须是InnoDB表,包含一个VARCHAR列命名价值

    有关更多信息,请参见

    innodb_idle_flush_pct

    命令行格式 ——innodb-idle-flush-pct = #
    介绍了 8.0.18
    系统变量 innodb_idle_flush_pct
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 One hundred.
    最小值 0
    最大值 One hundred.

    以下情况限制页面刷新InnoDB是空闲的。的innodb_idle_flush_pct的百分比innodb_io_capacity设置,它定义了每秒可用的I/O操作数InnoDB.有关更多信息,请参见

    innodb_io_capacity

    命令行格式 ——innodb-io-capacity = #
    系统变量 innodb_io_capacity
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 200
    最小值 One hundred.
    最大值(64位平台) 2 * * 64 - 1
    最大值(32位平台) 2 * * 32-1

    innodb_io_capacity变量定义了每秒可执行的I/O操作数(IOPS)InnoDB后台任务,例如innodb_io_capacity变量,看到

    innodb_io_capacity_max

    命令行格式 ——innodb-io-capacity-max = #
    系统变量 innodb_io_capacity_max
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 看描述
    最小值 One hundred.
    最大值(32位平台) 2 * * 32-1
    最大值(Unix, 64位平台) 2 * * 64 - 1
    最大值(Windows, 64位平台) 2 * * 32-1

    如果冲水活动落后了InnoDB可以更积极地刷新,每秒I/O操作(IOPS)的速度比innodb_io_capacity变量。的innodb_io_capacity_max变量定义了执行的最大IOPS数InnoDB在这种情况下的后台任务。

    有关配置innodb_io_capacity_max变量,看到

    innodb_limit_optimistic_insert_debug

    命令行格式 ——innodb-limit-optimistic-insert-debug = #
    系统变量 innodb_limit_optimistic_insert_debug
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 2 * * 32-1

    限制每个记录的数量WITH_DEBUGCMake选择。

  • innodb_lock_wait_timeout

    命令行格式 ——innodb-lock-wait-timeout = #
    系统变量 innodb_lock_wait_timeout
    范围 全球、会话
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 50
    最小值 1
    最大值 1073741824

    时间的长度,以秒an为单位InnoDBInnoDB在发出以下错误之前,事务对该行的写访问最多等待这么多秒:

    错误1205 (HY000):锁等待超时超过;试着重新启动事务

    当锁等待超时发生时,当前语句为——innodb-rollback-on-timeout选择。另请参阅innodb_lock_wait_timeout适用于InnoDB行锁。MySQLInnoDB这个超时不适用于表锁的等待。

    锁等待超时值不适用于innodb_deadlock_detect启用(默认)是因为InnoDB立即检测死锁并回滚一个死锁事务。当innodb_deadlock_detect被禁用,InnoDB依赖于innodb_lock_wait_timeout用于发生死锁时的事务回滚。看到innodb_lock_wait_timeout可以在运行时使用集全球设置会话声明。改变了全球设置需要足够的权限来设置全局系统变量(请参见会话设置innodb_lock_wait_timeout,这只影响该客户。

  • innodb_log_buffer_size

    命令行格式 ——innodb-log-buffer-size = #
    系统变量 innodb_log_buffer_size
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 16777216
    最小值 1048576
    最大值 4294967295

    以字节为单位的缓冲区的大小InnoDB用于写入

    innodb_log_checkpoint_fuzzy_now

    命令行格式 ——innodb-log-checkpoint-fuzzy-now[={|在}]
    介绍了 8.0.13
    系统变量 innodb_log_checkpoint_fuzzy_now
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用此调试选项以强制InnoDB编写一个模糊检查点。控件编译调试支持时,此选项才可用WITH_DEBUGCMake选择。

  • innodb_log_checkpoint_now

    命令行格式 ——innodb-log-checkpoint-now[={|在}]
    系统变量 innodb_log_checkpoint_now
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用此调试选项以强制InnoDB编写检查点。控件编译调试支持时,此选项才可用WITH_DEBUGCMake选择。

  • innodb_log_checksums

    命令行格式 ——innodb-log-checksums[={|在}]
    系统变量 innodb_log_checksums
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    为重做日志页面启用或禁用校验和。

    innodb_log_checksums =对使CRC-32C重做日志页面的校验和算法。当innodb_log_checksums则重做日志页校验和字段的内容将被忽略。

    重做日志头页和重做日志检查点页上的校验和永远不会被禁用。

  • innodb_log_compressed_pages

    命令行格式 ——innodb-log-compressed-pages[={|在}]
    系统变量 innodb_log_compressed_pages
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    的图像是否为innodb_log_compressed_pages的不同版本时可能发生的损坏zlib恢复时采用压缩算法。如果你确定zlib版本不能更改,可以禁用innodb_log_compressed_pages为修改压缩数据的工作负载减少重做日志的生成。

    来衡量启用或禁用的效果innodb_log_compressed_pages,比较两个设置在相同工作负载下的重做日志生成。测量重做日志生成的选项包括观察日志序列号(LSN)日志的部分查看引擎innodb状态输出,或监视Innodb_os_log_written写入重做日志文件的字节数的状态。

    相关信息请参见

    innodb_log_file_size

    命令行格式 ——innodb-log-file-size = #
    系统变量 innodb_log_file_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 50331648
    最小值 4194304
    最大值 512 gb / innodb_log_files_in_group

    以字节为单位的大小innodb_log_file_sizeinnodb_log_files_in_group)不能超过略小于512GB的最大值。例如,一对255 GB的日志文件接近限制,但不超过限制。默认值为48MB。

    通常,日志文件的总大小应该足够大,服务器可以平滑工作负载活动中的波峰和波峰,这通常意味着有足够的重做日志空间来处理一个多小时的写活动。该值越大,缓冲池中所需的检查点刷新活动就越少,从而节省磁盘I/O。较大的日志文件也会产生innodb_log_file_size是4 mb。

    相关信息请参见innodb_dedicated_server启用,innodb_log_file_size值如果没有显式定义,将自动配置。有关更多信息,请参见

    innodb_log_files_in_group

    命令行格式 ——innodb-log-files-in-group = #
    系统变量 innodb_log_files_in_group
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 2
    最小值 2
    最大值 One hundred.

    的数量InnoDB以循环方式写入文件。缺省值为2,推荐使用。文件的位置由innodb_log_group_home_dir.日志文件的总大小(innodb_log_file_sizeinnodb_log_files_in_group)可达512GB。

    相关信息请参见innodb_dedicated_server启用,innodb_log_files_in_group如果没有显式定义,则自动配置。有关更多信息,请参见

    innodb_log_group_home_dir

    命令行格式 ——innodb-log-group-home-dir = dir_name
    系统变量 innodb_log_group_home_dir
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 目录名称

    的目录路径InnoDBinnodb_log_files_in_group.如果不指定anyInnoDB日志变量中,默认是创建两个名为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
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 80
    最小值 0
    最大值 4294967295

    定义在等待刷新重做时用户线程不再旋转的最小CPU使用量。该值表示为CPU核心利用率的总和。例如,默认值80为单核的80%。在拥有多核处理器的系统上,值150表示一个CPU核的100%使用率加上第二个CPU核的50%使用率。

    相关信息请参见

    innodb_log_spin_cpu_pct_hwm

    命令行格式 ——innodb-log-spin-cpu-pct-hwm = #
    系统变量 innodb_log_spin_cpu_pct_hwm
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 50
    最小值 0
    最大值 One hundred.

    定义在等待刷新重做时用户线程不再旋转的最大CPU使用率。该值表示为所有CPU核的总处理能力的百分比。默认值为50%。例如,两个CPU核的100%使用率是4个CPU核服务器CPU处理能力总和的50%。

    innodb_log_spin_cpu_pct_hwm变量尊重处理器亲和性。例如,如果一个服务器有48个核心,但是mysqld进程只固定在4个CPU核上,而忽略其他44个CPU核。

    相关信息请参见

    innodb_log_wait_for_flush_spin_hwm

    命令行格式 ——innodb-log-wait-for-flush-spin-hwm = #
    系统变量 innodb_log_wait_for_flush_spin_hwm
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 400
    最小值 0
    最大值(64位平台) 2 * * 64 - 1
    最大值(32位平台) 2 * * 32-1

    定义最大平均日志刷新时间,超过这个时间,用户线程在等待刷新重做时将不再旋转。缺省值是400微秒。

    相关信息请参见

    innodb_log_write_ahead_size

    命令行格式 ——innodb-log-write-ahead-size = #
    系统变量 innodb_log_write_ahead_size
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 8192
    最小值 日志文件块大小512
    最大值 等于innodb_page_size

    定义重做日志的预写块大小(以字节为单位)。为了避免read-on-write,设置innodb_log_write_ahead_size匹配操作系统或文件系统缓存块大小。默认设置为8192字节。由于重做日志的预写块大小与操作系统或文件系统的缓存块大小不匹配,当重做日志块没有完全缓存到操作系统或文件系统时,就会发生读写。

    有效值为innodb_log_write_ahead_size的倍数InnoDB日志文件块大小n).最小值为InnoDB日志文件块大小(512)。当指定最小值时,不会发生预写。最大值等于innodb_page_size价值。如果指定了一个值innodb_log_write_ahead_size它比innodb_page_size值时,innodb_log_write_ahead_size设置截断为innodb_page_size价值。

    设置innodb_log_write_ahead_size值过低相对于操作系统或文件系统缓存块大小会导致read-on-write.设置过高可能会对系统产生轻微的影响fsync由于一次写入多个块,日志文件写入的性能下降。

    相关信息请参见

    innodb_log_writer_threads

    命令行格式 ——innodb-log-writer-threads[={|在}]
    介绍了 8.0.22
    系统变量 innodb_log_writer_threads
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用专用的日志写入线程,用于将重做日志记录从日志缓冲区写入系统缓冲区,并将系统缓冲区刷新到重做日志文件。专用日志写入线程可以在高并发性系统上提高性能,但是对于低并发性系统,禁用专用日志写入线程可以提供更好的性能。

    有关更多信息,请参见

    innodb_lru_scan_depth

    命令行格式 ——innodb-lru-scan-depth = #
    系统变量 innodb_lru_scan_depth
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 1024
    最小值 One hundred.
    最大值(64位平台) 2 * * 64 - 1
    最大值(32位平台) 2 * * 32-1

    的算法和启发式的影响参数InnoDBinnodb_lru_scan_depth,从一个较低的值开始,向上配置设置,目标是很少看到零空闲页面。同时,考虑调整innodb_lru_scan_depth在更改缓冲池实例的数量时,由于innodb_lru_scan_depthinnodb_buffer_pool_instances定义页面清除器线程每秒执行的工作量。

    相关信息请参见

    innodb_max_dirty_pages_pct

    命令行格式 ——innodb-max-dirty-pages-pct = #
    系统变量 innodb_max_dirty_pages_pct
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 数字
    默认值 90
    最小值 0
    最大值 99.99

    InnoDB试图innodb_max_dirty_pages_pct设置为刷新活动建立目标。它不影响冲洗速度。有关管理刷新速度的信息,请参见

    innodb_max_dirty_pages_pct_lwm

    命令行格式 ——innodb-max-dirty-pages-pct-lwm = #
    系统变量 innodb_max_dirty_pages_pct_lwm
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 数字
    默认值 10
    最小值 0
    最大值 99.99

    定义表示百分比的低水位线innodb_max_dirty_pages_pct价值。有关更多信息,请参见

    innodb_max_purge_lag

    命令行格式 ——innodb-max-purge-lag = #
    系统变量 innodb_max_purge_lag
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    定义所需的最大清除延迟。如果超过这个值,就会施加延迟插入更新,删除为清除行动留出时间。默认值是0,这意味着没有最大清除延迟和延迟。

    有关更多信息,请参见

    innodb_max_purge_lag_delay

    命令行格式 ——innodb-max-purge-lag-delay = #
    系统变量 innodb_max_purge_lag_delay
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 10000000

    时施加的延迟的最大延迟(以微秒为单位)innodb_max_purge_lag阈值被超过。指定的innodb_max_purge_lag_delay计算出的延迟时间上限innodb_max_purge_lag公式。

    有关更多信息,请参见

    innodb_max_undo_log_size

    命令行格式 ——innodb-max-undo-log-size = #
    系统变量 innodb_max_undo_log_size
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 1073741824
    最小值 10485760
    最大值 2 * * 64 - 1

    定义undo表空间的阈值大小。如果undo表空间超过阈值,则可以将其标记为截断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
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 50
    最小值 1
    最大值 50

    为覆盖当前值的索引页定义页面全百分比值MERGE_THRESHOLD为当前在字典缓存中的所有索引设置。控件编译调试支持时,此选项才可用WITH_DEBUGCMake选择。相关信息请参见

    innodb_monitor_disable

    命令行格式 模式——innodb-monitor-disable ={计数器模块| | |所有}
    系统变量 innodb_monitor_disable
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串

    禁用InnoDBINFORMATION_SCHEMA。INNODB_METRICS表格有关使用信息,请参见innodb_monitor_disable =“门闩”禁用统计信息收集显示引擎innodb互斥.有关更多信息,请参见第13.7.7.15节," SHOW ENGINE语句"

  • innodb_monitor_enable

    命令行格式 模式——innodb-monitor-enable ={计数器模块| | |所有}
    系统变量 innodb_monitor_enable
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串

    使InnoDBINFORMATION_SCHEMA。INNODB_METRICS表格有关使用信息,请参见innodb_monitor_enable =“门闩”为以下对象启用统计信息收集显示引擎innodb互斥.有关更多信息,请参见第13.7.7.15节," SHOW ENGINE语句"

  • innodb_monitor_reset

    命令行格式 模式——innodb-monitor-reset ={计数器模块| | |所有}
    系统变量 innodb_monitor_reset
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 枚举
    默认值
    有效值

    计数器

    模块

    模式

    所有

    重置计数值InnoDBINFORMATION_SCHEMA。INNODB_METRICS表格有关使用信息,请参见innodb_monitor_reset =“门闩”重置的统计数据显示引擎innodb互斥.有关更多信息,请参见第13.7.7.15节," SHOW ENGINE语句"

  • innodb_monitor_reset_all

    命令行格式 模式——innodb-monitor-reset-all ={计数器模块| | |所有}
    系统变量 innodb_monitor_reset_all
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 枚举
    默认值
    有效值

    计数器

    模块

    模式

    所有

    重置的所有值(最小值、最大值等)InnoDBINFORMATION_SCHEMA。INNODB_METRICS表格有关使用信息,请参见

    innodb_numa_interleave

    命令行格式 ——innodb-numa-interleave[={|在}]
    系统变量 innodb_numa_interleave
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用NUMA交错内存策略来分配InnoDB缓冲池。当innodb_numa_interleave时,NUMA内存策略设置为MPOL_INTERLEAVEmysqld的过程。后InnoDB分配缓冲池时,NUMA内存策略设置为MPOL_DEFAULT.为innodb_numa_interleave选项,MySQL必须在启用numa的Linux系统上编译。

    CMake设置默认WITH_NUMA基于当前平台是否具有NUMA支持。有关更多信息,请参见

    innodb_old_blocks_pct

    命令行格式 ——innodb-old-blocks-pct = #
    系统变量 innodb_old_blocks_pct
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 37
    最小值 5
    最大值 95

    的近似百分比InnoDBinnodb_old_blocks_time

    有关更多信息,请参见

    innodb_old_blocks_time

    命令行格式 ——innodb-old-blocks-time = #
    系统变量 innodb_old_blocks_time
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 1000
    最小值 0
    最大值 2 * * 32-1

    非零值可以防止innodb_old_blocks_pct.有关更多信息,请参见

    innodb_online_alter_log_max_size

    命令行格式 ——innodb-online-alter-log-max-size = #
    系统变量 innodb_online_alter_log_max_size
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 134217728
    最小值 65536
    最大值 2 * * 64 - 1

    指定期间使用的临时日志文件大小的上限(以字节为单位)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
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 -1(意味着autosizing;不要给这个文字值赋值)
    最小值 10
    最大值 4294967295

    这个变量只有在你有很多变量的时候才有用InnoDB.ibd文件MySQL可以同时保持打开状态。最小值为10。缺省值为300innodb_file_per_table未启用,且较高的300和table_open_cache否则。

    用于的文件描述符.ibd文件为InnoDB只表。它们独立于open_files_limit系统变量,不影响表的操作缓存。有关一般I/O调优建议,请参见innodb_open_files超过限制,将阻止其他文件被打开。从MySQL 8.0.24开始,临时表空间不被算作打开的文件。

  • innodb_optimize_fulltext_only

    命令行格式 ——innodb-optimize-fulltext-only[={|在}]
    系统变量 innodb_optimize_fulltext_only
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    改变了优化表作用于InnoDB表。在对设备进行维护操作时临时启用InnoDB表与全文索引。

    默认情况下,优化表中的数据重新组织优化表跳过重组表数据,而是处理新添加、删除和更新的令牌数据InnoDB全文索引。有关更多信息,请参见

    innodb_page_cleaners

    命令行格式 ——innodb-page-cleaners = #
    系统变量 innodb_page_cleaners
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 4
    最小值 1
    最大值 64

    从缓冲池实例中刷新脏页的页清除线程数。页清除器线程执行刷新列表和LRU刷新。当有多个页清除线程时,每个缓冲池实例的缓冲池刷新任务被分派给空闲的页清除线程。的innodb_page_cleaners缺省值为4。如果页清除器线程的数量超过了缓冲池实例的数量,innodb_page_cleaners自动设置为与innodb_buffer_pool_instances

    如果在将脏页从缓冲池实例刷新到数据文件时,工作负载是写- io绑定的,并且如果系统硬件有可用容量,那么增加页清除线程的数量可能有助于提高写- io吞吐量。

    多线程页面清理器支持扩展到关闭和恢复阶段。

    setpriority ()system调用是在支持它的Linux平台上使用的mysqld执行用户授权给予page_cleaner线程优先级高于其他MySQL和InnoDB线程,以帮助页刷新与当前工作负载保持同步。setpriority ()这表明支持InnoDB公司信息:

    InnoDB:如果mysqld执行用户被授权,page cleaner线程优先级可以被修改。请参阅setpriority()的手册页。

    对于服务器启动和关闭不是由systemd管理的系统,mysqld可在中配置执行用户授权/etc/security/limits.conf.例如,如果mysqld运行在mysql用户,可以对mysql通过将这些行添加到/etc/security/limits.conf

    Mysql硬漂亮-20 Mysql软漂亮-20

    对于系统管理的系统,也可以通过指定来实现LimitNICE = -20在一个本地化的systemd配置文件中。例如,创建一个名为override.conf/etc/systemd/system/mysqld.service.d / override.conf并添加以下条目:

    [服务]LimitNICE = -20

    在创建或更改之后override.conf,重新加载systemd配置,然后告诉systemd重新启动MySQL服务:

    systemctl daemon-reload systemctl restart mysqld # RPM平台systemctl restart mysql # Debian平台

    有关使用本地化的systemd配置文件的详细信息,请参见mysqld执行用户,使用命令验证配置结果不错的限制的mysqld过程:

    壳>猫/proc/mysqld_pid/limits | grep nice最大nice优先级18446744073709551596 18446744073709551596
  • innodb_page_size

    命令行格式 ——innodb-page-size = #
    系统变量 innodb_page_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 枚举
    默认值 16384
    有效值

    4096

    8192

    16384

    32768

    65536

    指定了InnoDBinnodb_page_size只能在初始化MySQL实例之前配置,之后不能更改。如果没有指定值,则使用默认页面大小初始化实例。看到ROW_FORMAT =压缩不支持innodb_page_size设置为32KB或64KB。为innodb_page_size = 32 kb,区段大小为2MB。为innodb_page_size = 64 kb,区段大小为4MB。innodb_log_buffer_size当使用32KB或64KB的页面大小时,应该至少设置为16M(默认值)。

    默认的16KB或更大的页面大小适合于广泛的范围InnoDB接近存储设备块大小的页面大小可以最小化重写到磁盘的未更改数据量。

    第一个系统表空间数据文件的最小文件大小(ibdata1)的不同取决于innodb_page_size价值。看到innodb_data_file_path有关更多信息的选项说明。

    一个MySQL实例,使用一个特定的InnoDB页面大小不能使用来自使用不同页面大小的实例的数据文件或日志文件。

    有关一般I/O调优建议,请参见

    innodb_parallel_read_threads

    命令行格式 ——innodb-parallel-read-threads = #
    介绍了 8.0.14
    系统变量 innodb_parallel_read_threads
    范围 会话
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 4
    最小值 1
    最大值 256

    定义可用于并行聚集索引读取的线程数。MySQL 8.0.17支持分区的并行扫描。并行读线程可以改进检查表的性能。InnoDB读取聚集索引两次检查表操作。第二次读取可以并行执行。此特性不适用于二级索引扫描。的innodb_parallel_read_threads会话变量必须设置为大于1的值,才能发生并行的聚集索引读取。方法确定用于执行并行聚集索引读取的实际线程数innodb_parallel_read_threads设置或要扫描的索引子树的数量,以较小的数为准。在扫描期间读入缓冲池的页面保存在缓冲池LRU列表的尾部,以便在需要空闲缓冲池页面时快速丢弃它们。

    在MySQL 8.0.17中,最大的并行读线程数(256)是所有客户端连接的线程总数。如果达到线程限制,连接会退回到使用单个线程。

  • innodb_print_all_deadlocks

    命令行格式 ——innodb-print-all-deadlocks[={|在}]
    系统变量 innodb_print_all_deadlocks
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    当启用此选项时,所有的信息InnoDB用户事务记录在mysqld查看引擎innodb状态命令。偶尔InnoDB死锁不一定是个问题,因为InnoDB立即检测条件并自动回滚其中一个事务。如果应用程序没有适当的错误处理逻辑来检测回滚并重试操作,您可以使用此选项来排除发生死锁的原因。大量的死锁可能表明需要重新构造产生问题的事务选择……更新语句用于多个表,以便每个事务以相同的顺序访问表,从而避免死锁条件。

    相关信息请参见

    innodb_print_ddl_logs

    命令行格式 ——innodb-print-ddl-logs[={|在}]
    系统变量 innodb_print_ddl_logs
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用该选项会导致MySQL将DDL日志写入stderr.有关更多信息,请参见

    innodb_purge_batch_size

    命令行格式 ——innodb-purge-batch-size = #
    系统变量 innodb_purge_batch_size
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 300
    最小值 1
    最大值 5000

    控件中清除一个批处理中的解析和处理的撤消日志页的数目innodb_purge_batch_size通过innodb_purge_threads并将该页数分配给每个清除线程。的innodb_purge_batch_size变量还定义在通过撤消日志进行每128次迭代后清除释放的撤消日志页面的数量。

    innodb_purge_batch_size选项用于结合使用innodb_purge_threads设置。大多数用户不需要更改innodb_purge_batch_size从默认值。

    相关信息请参见

    innodb_purge_threads

    命令行格式 ——innodb-purge-threads = #
    系统变量 innodb_purge_threads
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 4
    最小值 1
    最大值 32

    对象专用的后台线程的数量InnoDB

    innodb_purge_rseg_truncate_frequency

    命令行格式 ——innodb-purge-rseg-truncate-frequency = #
    系统变量 innodb_purge_rseg_truncate_frequency
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 128
    最小值 1
    最大值 128

    根据调用清除的次数定义清除系统释放回滚段的频率。在回滚段被释放之前,撤销表空间不能被截断。通常,清除系统每调用清除128次就释放回滚段一次。默认值为128。降低这个值会增加清除线程释放回滚段的频率。

    innodb_purge_rseg_truncate_frequency是用于innodb_undo_log_truncate.有关更多信息,请参见

    innodb_random_read_ahead

    命令行格式 ——innodb-random-read-ahead[={|在}]
    系统变量 innodb_random_read_ahead
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    使随机InnoDBI / O。

    有关不同类型预读请求的性能考虑的详细信息,请参见

    innodb_read_ahead_threshold

    命令行格式 ——innodb-read-ahead-threshold = #
    系统变量 innodb_read_ahead_threshold
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 56
    最小值 0
    最大值 64

    控制灵敏度线性InnoDB用于将页面预取到InnoDB读至少innodb_read_ahead_threshold按顺序从InnoDB必须从一个区段连续读取至少56页,以启动对以下区段的异步读取。

    知道通过预读机制读取了多少页,以及在没有被访问的情况下从缓冲池中删除了多少页,这在进行微调时非常有用innodb_read_ahead_threshold设置。查看引擎innodb状态的输出显示计数器信息Innodb_buffer_pool_read_ahead而且Innodb_buffer_pool_read_ahead_evicted全局状态变量,它报告进入的页面数查看引擎innodb状态还显示读取预读页的速度以及在不被访问的情况下删除这些页的速度。的每秒平均值基于自上次调用以来收集的统计信息查看引擎innodb状态和显示在缓冲池和内存部分的查看引擎innodb状态输出。

    有关更多信息,请参见

    innodb_read_io_threads

    命令行格式 ——innodb-read-io-threads = #
    系统变量 innodb_read_io_threads
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 4
    最小值 1
    最大值 64

    中用于读操作的I/O线程数InnoDB.它对应的写线程是innodb_write_io_threads.有关更多信息,请参见

    在Linux系统中,运行多个MySQL服务器(通常超过12个),默认设置为innodb_read_io_threadsinnodb_write_io_threads,以及Linuxaio-max-nr设置可以超过系统限制。在理想的情况下,增加aio-max-nr设置;作为一种变通方法,您可以减少一个或两个MySQL变量的设置。

  • innodb_read_only

    命令行格式 ——innodb-read-only[={|在}]
    系统变量 innodb_read_only
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    开始InnoDB在只读模式。用于在只读媒体上分发数据库应用程序或数据集。也可以在数据仓库中使用,在多个实例之间共享相同的数据目录。有关更多信息,请参见innodb_read_only系统变量阻止仅为。创建和删除表InnoDB存储引擎。MySQL 8.0,启用innodb_read_only禁止对所有存储引擎进行该操作。任何存储引擎的表创建和删除操作都会修改数据字典中的表mysql系统数据库,但这些表使用InnoDB存储引擎,不能修改时innodb_read_only启用。同样的原理也适用于其他需要修改数据字典表的表操作。例子:

    此外,中的其他表mysql系统数据库使用InnoDBMySQL 8.0的存储引擎。将这些表设置为只读只会限制修改它们的操作。例子:

  • innodb_redo_log_archive_dirs

    命令行格式 ——innodb-redo-log-archive-dirs
    介绍了 8.0.17
    系统变量 innodb_redo_log_archive_dirs
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串
    默认值

    定义可以在其中创建重做日志归档文件的带标签目录。可以在分号分隔的列表中定义多个带标签的目录。例如:

    innodb_redo_log_archive_dirs = ' label1: / backups1; label2: / backups2 '

    标签可以是任何字符串,但不允许使用冒号(:)。也允许使用空标签,但是冒号(:)仍然是必需的。

    必须指定路径,且目录必须存在。路径可以包含冒号(“:”),但不允许包含分号(“;”)。

  • innodb_redo_log_encrypt

    命令行格式 ——innodb-redo-log-encrypt[={|在}]
    系统变量 innodb_redo_log_encrypt
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    控件加密的表的重做日志数据加密InnoDB

    innodb_replication_delay

    命令行格式 ——innodb-replication-delay = #
    系统变量 innodb_replication_delay
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    复制服务器上的复制线程延迟(以毫秒为单位)innodb_thread_concurrency是达到了。

  • innodb_rollback_on_timeout

    命令行格式 ——innodb-rollback-on-timeout[={|在}]
    系统变量 innodb_rollback_on_timeout
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    InnoDB——innodb-rollback-on-timeout,则事务超时会导致InnoDB终止并回滚整个事务。

    有关更多信息,请参见

    innodb_rollback_segments

    命令行格式 ——innodb-rollback-segments = #
    系统变量 innodb_rollback_segments
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 128
    最小值 1
    最大值 128

    innodb_rollback_segments定义InnoDB分配给每个事务的页面大小和撤消日志的数量。有关更多信息,请参见

    innodb_saved_page_number_debug

    命令行格式 ——innodb-saved-page-number-debug = #
    系统变量 innodb_saved_page_number_debug
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最大值 2 * * 23-1

    保存页码。设置innodb_fil_make_page_dirty_debug选项使定义的页面脏化innodb_saved_page_number_debug.的innodb_saved_page_number_debug选项仅在使用。编译调试支持时可用WITH_DEBUGCMake选择。

  • innodb_segment_reserve_factor

    命令行格式 ——innodb-segment-reserve-factor = #
    介绍了 8.0.26
    系统变量 innodb_segment_reserve_factor
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 数字
    默认值 12.5
    最小值 0.03
    最大值 40

    定义保留为空页的表空间文件段页的百分比。该设置适用于逐表文件和一般表空间。的innodb_segment_reserve_factor默认设置为12.5%,这与以前MySQL版本中保留的页面百分比相同。

    有关更多信息,请参见

    innodb_sort_buffer_size

    命令行格式 ——innodb-sort-buffer-size = #
    系统变量 innodb_sort_buffer_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 1048576
    最小值 65536
    最大值 67108864

    控件创建期间用于对数据进行排序的排序缓冲区的大小InnoDB索引。指定的大小定义为内部排序而读入内存,然后写到磁盘的数据量。这个过程被称为运行.在合并阶段,读取和合并指定大小的缓冲区对。设置越大,运行和合并的次数就越少。

    此排序区域仅用于索引创建期间的合并排序,而不是稍后的索引维护操作期间。当索引创建完成时,将释放缓冲区。

    这个选项的值还可以控制扩展临时日志文件以记录并发DML的数量ALTER 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位sizeof *buf->元组*/"))

    @@GLOBAL.innodb_sort_buffer_size / dict_index_get_min_size(指数)指示所持有的最大元组。2 * (@@GLOBAL.innodb_sort_buffer_size/*dict_index_get_min_size(index)*/) * 8 /* buf->元组的64位大小*/指示已分配的辅助指针。

    请注意

    对于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
    范围 全球
    动态 是的
    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
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 50
    最小值 1
    最大值 One hundred.

    定义一个乘数值,用于确定当线程等待获取互斥锁或rw-lock时发生的spin-wait循环中的PAUSE指令的数量。

    有关更多信息,请参见

    innodb_stats_auto_recalc

    命令行格式 ——innodb-stats-auto-recalc[={|在}]
    系统变量 innodb_stats_auto_recalc
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    原因InnoDB自动重新计算innodb_stats_persistent选择启用。也可以通过指定来配置自动统计数据重新计算STATS_PERSISTENT = 1在一个创建表ALTER TABLE声明。生成统计数据的采样数据量由innodb_stats_persistent_sample_pages变量。

    有关更多信息,请参见

    innodb_stats_include_delete_marked

    命令行格式 ——innodb-stats-include-delete-marked[={|在}]
    系统变量 innodb_stats_include_delete_marked
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    默认情况下,InnoDB在计算统计信息时读取未提交的数据。对于从表中删除行的未提交事务,InnoDB排除在计算行估计和索引统计信息时被删除标记的记录,这可能导致使用事务隔离级别以外的事务并发操作表的其他事务的非最佳执行计划读未提交.为了避免这种情况,innodb_stats_include_delete_marked可以确保吗InnoDB在计算持久优化器统计信息时包括删除标记的记录。

    innodb_stats_include_delete_marked启用,分析表在重新计算统计数据时考虑删除标记的记录。

    innodb_stats_include_delete_marked是一个影响所有人的全局设置吗InnoDB表。它只适用于持久优化器统计信息。

    相关信息请参见

    innodb_stats_method

    命令行格式 ——innodb-stats-method =值
    系统变量 innodb_stats_method
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 枚举
    默认值 nulls_equal
    有效值

    nulls_equal

    nulls_unequal

    nulls_ignored

    服务器如何处理值时收集InnoDB表。允许的值nulls_equalnulls_unequal,nulls_ignored.为nulls_equal,所有索引值被认为相等,并形成大小等于数目的单个值组值。为nulls_unequal值被认为是不相等的,并且每个形成大小为1的不同值组。为nulls_ignored值将被忽略。

    用于生成表统计信息的方法会影响优化器为查询执行选择索引的方式,如

    innodb_stats_on_metadata

    命令行格式 ——innodb-stats-on-metadata[={|在}]
    系统变量 innodb_stats_on_metadata
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    此选项仅适用于优化器innodb_stats_persistent是禁用的,还是在创建或更改单个表时使用STATS_PERSISTENT = 0.有关更多信息,请参见innodb_stats_on_metadata启用,InnoDB更新非持久性显示表状态或者当访问INFORMATION_SCHEMA。表INFORMATION_SCHEMA。统计数据表。(这些更新类似于发生的分析表)。当禁用,InnoDB在这些操作期间不更新统计数据。对于具有大量表或索引的模式,禁用该设置可以提高访问速度。它还可以提高稳定性InnoDB表。

    要更改设置,请发出声明集全球innodb_stats_on_metadata =模式,在那里模式要么是(或10).更改设置需要足够的权限来设置全局系统变量(请参见

    innodb_stats_persistent

    命令行格式 ——innodb-stats-persistent[={|在}]
    系统变量 innodb_stats_persistent
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    指定是否InnoDB索引统计信息持久化到磁盘。否则,统计数据可能会频繁地重新计算,从而导致变化innodb_stats_persistent在全局级别创建表之前,或使用STATS_PERSISTENT条款的创建表而且ALTER TABLE语句覆盖系统范围的设置并为单个表配置持久统计信息。

    有关更多信息,请参见

    innodb_stats_persistent_sample_pages

    命令行格式 ——innodb-stats-persistent-sample-pages = #
    系统变量 innodb_stats_persistent_sample_pages
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 20.

    索引数分析表.增加该值可以提高指标统计的准确性,从而提高分析表对于一个InnoDB表格有关更多信息,请参见

    设置较高的值innodb_stats_persistent_sample_pages可能会导致漫长的分析表执行时间。来估计访问的数据库页的数量分析表,请参阅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
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 8

    索引数分析表.缺省值为8。增加该值可以提高指标统计的准确性,从而提高InnoDB表或重新计算统计数据。有关更多信息,请参见

    设置较高的值innodb_stats_transient_sample_pages可能会导致漫长的分析表执行时间。来估计访问的数据库页的数量分析表,请参阅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[={|在}]
    系统变量 innodb_status_output
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用或禁用标准的周期性输出InnoDB班长。也用于与innodb_status_output_locks启用或禁用的定时输出InnoDB锁的班长。有关更多信息,请参见

    innodb_status_output_locks

    命令行格式 ——innodb-status-output-locks[={|在}]
    系统变量 innodb_status_output_locks
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    启用或禁用InnoDB锁的班长。当启用时,InnoDBLock Monitor打印关于锁的附加信息查看引擎innodb状态并在MySQL错误日志中定期输出。的周期性输出InnoDB锁监视器是打印的一部分标准InnoDB监控输出。标准的InnoDB因此,必须为InnoDB锁定监视器,定期将数据打印到MySQL错误日志。有关更多信息,请参见

    innodb_strict_mode

    命令行格式 ——innodb-strict-mode[={|在}]
    系统变量 innodb_strict_mode
    范围 全球、会话
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    innodb_strict_mode启用,InnoDB返回某些情况下的错误而不是警告。

    innodb_strict_mode启用,InnoDB在某些情况下引发错误条件,而不是发出警告并处理指定的语句(可能带有意外行为)。这类似于sql_mode它控制MySQL接受哪些SQL语法,并决定它是否静默地忽略错误,或者验证输入语法和数据值。

    innodb_strict_mode的语法错误的处理创建表ALTER TABLE创建索引,优化表语句。innodb_strict_mode还启用记录大小检查,以便插入更新不会因为记录对于所选页面大小太大而失败。

    Oracle建议使innodb_strict_mode当使用ROW_FORMAT而且KEY_BLOCK_SIZE条款创建表ALTER TABLE,创建索引语句。当innodb_strict_mode被禁用,InnoDB忽略冲突子句,并在消息日志中创建只带有警告的表或索引。生成的表可能具有与预期不同的特征,比如在尝试创建压缩表时缺乏压缩支持。当innodb_strict_mode,这样的问题会立即产生错误,并且不会创建表或索引。

    可以启用或禁用innodb_strict_mode启动时在命令行上mysqld或在MySQL中innodb_strict_mode在运行时使用语句设置全局|会话innodb_strict_mode =模式,在那里模式要么是.改变了全球设置需要足够的权限来设置全局系统变量(请参见会话设置innodb_strict_mode,该设置仅影响该客户端。

    innodb_strict_mode不适用于innodb_strict_mode.有关更多信息,请参见

    innodb_sync_array_size

    命令行格式 ——innodb-sync-array-size = #
    系统变量 innodb_sync_array_size
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 1
    最小值 1
    最大值 1024

    定义互斥锁/锁等待数组的大小。增加该值会分割用于协调线程的内部数据结构,从而在具有大量等待线程的工作负载中实现更高的并发性。该设置必须在MySQL实例启动时配置,之后不能更改。对于经常产生大量等待线程(通常大于768)的工作负载,建议增加该值。

  • innodb_sync_spin_loops

    命令行格式 ——innodb-sync-spin-loops = #
    系统变量 innodb_sync_spin_loops
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 30.
    最小值 0
    最大值 4294967295

    线程等待的次数InnoDB在线程挂起之前释放互斥锁。

  • innodb_sync_debug

    命令行格式 ——innodb-sync-debug[={|在}]
    系统变量 innodb_sync_debug
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    的同步调试检查InnoDB存储引擎。控件编译调试支持时,此选项才可用WITH_DEBUGCMake选择。

  • innodb_table_locks

    命令行格式 ——innodb-table-locks[={|在}]
    系统变量 innodb_table_locks
    范围 全球、会话
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    如果自动提交= 0InnoDB荣誉锁表;MySQL不会返回锁表……写直到所有其他线程都释放了对该表的所有锁。默认值innodb_table_locks是1,这意味着锁表导致InnoDB内部锁定一个表自动提交= 0

    innodb_table_locks = 0对显式锁定的表没有影响锁表……写.它对被锁定的表的读写有影响锁表……写隐式(例如,通过触发器)或通过锁表……读

    相关信息请参见

    innodb_temp_data_file_path

    命令行格式 ——innodb-temp-data-file-path = file_name
    系统变量 innodb_temp_data_file_path
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 字符串
    默认值 ibtmp1:12M: autoextend

    定义全局临时表空间数据文件的相对路径、名称、大小和属性。全局临时表空间存储对用户创建的临时表所做的更改的回滚段。

    如果没有指定值innodb_temp_data_file_path,默认行为是创建单个自动扩展数据文件ibtmp1innodb_data_home_dir目录中。初始文件大小略大于12MB。

    全局临时表空间数据文件规范的语法包括文件名、文件大小和autoextend而且马克斯属性:

    file_namefile_size[: autoextend[:马克斯:max_file_size]]

    全局临时表空间数据文件不能同名InnoDB数据文件。任何无法或错误创建全局临时表空间数据文件将被视为致命的,服务器启动将被拒绝。

    文件大小通过追加指定为KB、MB或GBKG为size值。文件大小之和不能超过12MB。

    单个文件的大小限制由操作系统决定。在支持大文件的操作系统上,文件大小可以超过4GB。不支持对全局临时表空间数据文件使用裸磁盘分区。

    autoextend而且马克斯属性中最后指定的数据文件只能使用innodb_temp_data_file_path设置。例如:

    (mysqld) innodb_temp_data_file_path = ibtmp1:50M; ibtmp2:12M: autoextend:马克斯:500 mb

    autoextend选项会导致数据文件在用尽可用空间时自动增加大小。的autoextendincrement默认为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

    有关更多信息,请参见

    innodb_temp_tablespaces_dir

    命令行格式 ——innodb-temp-tablespaces-dir = dir_name
    介绍了 8.0.13
    系统变量 innodb_temp_tablespaces_dir
    范围 全球
    动态 没有
    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
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最小值 0
    最大值 1000

    中允许的最大线程数InnoDB.值0(默认值)被解释为无限并发(没有限制)。此变量用于在高并发性系统上进行性能调优。

    InnoDB尽量保持线程的数量InnoDB小于等于innodb_thread_concurrency极限。一旦达到限制,就会将其他线程放入先进先出(FIFO)等待线程队列。等待锁的线程不计算在并发执行线程的数量中。

    正确的设置取决于工作负载和计算环境。如果您的MySQL实例与其他应用程序共享CPU资源,或者您的工作负载或并发用户数量正在增长,请考虑设置此变量。测试一系列值,以确定提供最佳性能的设置。innodb_thread_concurrency是一个动态变量,它允许在实时测试系统上使用不同的设置进行试验。如果某个特定设置性能不佳,可以快速设置innodb_thread_concurrency回到0。

    使用以下指导原则来帮助找到并维护一个合适的设置:

    • 如果一个工作负载的并发用户线程数一直很小,并且不影响性能,则设置innodb_thread_concurrency = 0(没有限制)。

    • 如果你的工作负载一直很重,或者偶尔会达到峰值,设置一个innodb_thread_concurrency值并进行调整,直到找到提供最佳性能的线程数。例如,假设您的系统通常有40到50个用户,但这个数字会周期性地增加到60、70或更多。通过测试,您会发现在限制为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设置可以小于虚拟cpu的数量。

    • 一个innodb_thread_concurrency值过高会导致性能下降,因为系统内部和资源的争用增加。

    • 定期监控和分析系统。对工作负载、用户数量或计算环境的更改可能需要调整innodb_thread_concurrency设置。

    值0禁用InnoDB内查询而且查询队列柜台的行操作的部分查看引擎innodb状态输出。

    相关信息请参见

    innodb_thread_sleep_delay

    命令行格式 ——innodb-thread-sleep-delay = #
    系统变量 innodb_thread_sleep_delay
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 10000
    最小值 0
    最大值 1000000

    多长时间InnoDB线程在加入InnoDB队列,在微秒。缺省值是10000。值为0则禁用睡眠。你可以设置innodb_adaptive_max_sleep_delay到你能接受的最高值innodb_thread_sleep_delay,InnoDB自动调整innodb_thread_sleep_delay取决于当前的线程调度活动。这种动态调整有助于线程调度机制在系统负载较轻或接近满负荷运行时平稳地工作。

    有关更多信息,请参见

    innodb_tmpdir

    命令行格式 ——innodb-tmpdir = dir_name
    系统变量 innodb_tmpdir
    范围 全球、会话
    动态 是的
    SET_VAR提示应用 没有
    类型 目录名称
    默认值

    用于定义联机期间创建的临时排序文件的备用目录ALTER TABLE重建表的操作。

    在线ALTER TABLE重建表的操作也会创建中间表文件与原始表在同一目录下。的innodb_tmpdir选项不适用于中间表文件。

    有效值为除MySQL数据目录路径外的任意目录路径。如果该值为NULL(默认值),则创建临时文件MySQL临时目录($ TMPDIR在Unix中,%临时%控件指定的目录——tmpdir配置选项)。如果指定了目录,则仅在以下情况下检查该目录是否存在及权限innodb_tmpdir使用声明。如果在目录字符串中提供符号链接,则符号链接将被解析并存储为绝对路径。路径不能超过512字节。一个在线ALTER TABLE操作报告错误,如果innodb_tmpdir设置为无效的目录。innodb_tmpdir覆盖了MySQLtmpdir设置,但只用于在线ALTER TABLE操作。

    文件特权需要配置innodb_tmpdir

    innodb_tmpdir控件上的临时文件目录溢出tmpfs文件系统。在线期间创建的大型临时排序文件可能会导致此类溢出ALTER TABLE重建表的操作。

    在复制环境中,只考虑复制innodb_tmpdir如果所有服务器的操作系统环境相同,则设置。否则,复制innodb_tmpdir设置可能导致在线运行时复制失败ALTER TABLE重建表的操作。如果服务器运行环境不同,建议进行配置innodb_tmpdir分别在每个服务器上。

    有关更多信息,请参见ALTER TABLE操作,看

    innodb_trx_purge_view_update_only_debug

    命令行格式 ——innodb-trx-purge-view-update-only-debug[={|在}]
    系统变量 innodb_trx_purge_view_update_only_debug
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    暂停删除标记记录的清除,同时允许更新清除视图。此选项人为地创建了一种情况,即清除视图已更新,但清除尚未执行。控件编译调试支持时,此选项才可用WITH_DEBUGCMake选择。

  • innodb_trx_rseg_n_slots_debug

    命令行格式 ——innodb-trx-rseg-n-slots-debug = #
    系统变量 innodb_trx_rseg_n_slots_debug
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 0
    最大值 1024

    设置一个限制的调试标志TRX_RSEG_N_SLOTS的给定值trx_rsegf_undo_find_free为undo日志段查找空闲槽位的函数。控件编译调试支持时,此选项才可用WITH_DEBUGCMake选择。

  • innodb_undo_directory

    命令行格式 ——innodb-undo-directory = dir_name
    系统变量 innodb_undo_directory
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 目录名称

    的路径InnoDB创建撤消表空间。通常用于将undo表空间放在不同的存储设备上。

    缺省值为NULL。如果innodb_undo_directory变量未定义,在数据目录中创建undo表空间。

    缺省的undo表空间(innodb_undo_001而且innodb_undo_002(MySQL实例初始化时创建的)总是驻留在由innodb_undo_directory变量。

    撤销使用创建的表空间创建撤消表空间方法定义的目录中创建的语法innodb_undo_directory变量,如果没有指定不同的路径。

    有关更多信息,请参见

    innodb_undo_log_encrypt

    命令行格式 ——innodb-undo-log-encrypt[={|在}]
    系统变量 innodb_undo_log_encrypt
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    控件加密的表的撤消日志数据加密InnoDB

    innodb_undo_log_truncate

    命令行格式 ——innodb-undo-log-truncate[={|在}]
    系统变量 innodb_undo_log_truncate
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    当启用时,撤销超过阈值的表空间innodb_max_undo_log_size标记为截断。只有undo表空间可以被截断。不支持截断位于系统表空间中的undo日志。要进行截断,必须至少有两个undo表空间。

    innodb_purge_rseg_truncate_frequency变量可用于加快undo表空间的截断。

    有关更多信息,请参见

    innodb_undo_tablespaces

    命令行格式 ——innodb-undo-tablespaces = #
    弃用 是的
    系统变量 innodb_undo_tablespaces
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 整数
    默认值 2
    最小值 2
    最大值 127

    定义InnoDB.缺省值和最小值为2。

    请注意

    innodb_undo_tablespaces在MySQL 8.0.14版本中,变量已被弃用,不再可配置。希望在未来的版本中删除它。

    有关更多信息,请参见

    innodb_use_fdatasync

    命令行格式 ——innodb-use-fdatasync[={|在}]
    介绍了 8.0.26
    系统变量 innodb_use_fdatasync
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    在支持fdatasync ()系统调用,启用innodb_use_fdatasync变量允许使用fdatasync ()而不是fsync ()系统调用操作系统刷新。一个fdatasync ()调用不会刷新对文件元数据的更改,除非后续的数据检索需要,这提供了潜在的性能优势。

    的一个子集innodb_flush_method设置等fsyncO_DSYNC,O_DIRECT使用fsync ()系统调用。的innodb_use_fdatasync变量在使用这些设置时适用。

  • innodb_use_native_aio

    命令行格式 ——innodb-use-native-aio[={|在}]
    系统变量 innodb_use_native_aio
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    是否使用Linux异步I/O子系统。此变量仅适用于Linux系统,不能在服务器运行时更改。通常,您不需要配置该选项,因为它在默认情况下是启用的。

    InnoDB已在Windows系统上可用在Linux系统上。(其他类unix系统继续使用同步I/O调用。)这个特性提高了大量I/ o限制的系统的可伸缩性,这些系统通常会显示许多挂起的读/写操作显示引擎innodb状态\ g输出。

    运行与大量InnoDBI/O线程,特别是在同一台服务器机器上运行多个这样的实例,可能会超过Linux系统的容量限制。在这种情况下,您可能会收到以下错误:

    指定的maxevents超过了用户对可用事件的限制。

    通常可以通过写入更高的限制来解决此错误/proc/sys/fs/aio-max-nr

    但是,如果操作系统中的异步I/O子系统出现问题,则会阻止InnoDB从开始,您可以用innodb_use_native_aio = 0.此选项也可以在启动时自动禁用,如果InnoDB检测潜在的问题,如组合tmpdir的位置,tmpfs文件系统和Linux内核不支持AIOtmpfs

    有关更多信息,请参见

    innodb_validate_tablespace_paths

    命令行格式 ——innodb-validate-tablespace-paths[={|在}]
    介绍了 8.0.21
    系统变量 innodb_validate_tablespace_paths
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    控制表空间文件路径验证。在启动时,InnoDB根据数据字典中存储的表空间文件路径验证已知表空间文件的路径,以防表空间文件被移动到不同的位置。的innodb_validate_tablespace_paths变量允许禁用表空间路径验证。这个特性适用于不移动表空间文件的环境。禁用路径验证可以提高具有大量表空间文件的系统的启动时间。

    警告

    在移动表空间文件后禁用表空间路径验证来启动服务器可能会导致未定义的行为。

    有关更多信息,请参见

    innodb_version

    InnoDB版本号。在MySQL 8.0中,单独的版本号InnoDB不应用和这个值相同版本服务器编号。

  • innodb_write_io_threads

    命令行格式 ——innodb-write-io-threads = #
    系统变量 innodb_write_io_threads
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值 4
    最小值 1
    最大值 64

    用于写入操作的I/O线程数InnoDB.缺省值为4。它对应的读线程是innodb_read_io_threads.有关更多信息,请参见

    在Linux系统中,运行多个MySQL服务器(通常超过12个),默认设置为innodb_read_io_threadsinnodb_write_io_threads,以及Linuxaio-max-nr设置可以超过系统限制。在理想的情况下,增加aio-max-nr设置;作为一种变通方法,您可以减少一个或两个MySQL变量的设置。

  • 还要考虑到的价值sync_binlog,它控制二进制日志到磁盘的同步。

    有关一般I/O调优建议,请参见