为真或假的系统变量可以在服务器启动时通过命名它们来启用,或通过使用
——跳过
前缀。例如,启用或禁用InnoDB
自适应哈希索引,可以使用——innodb-adaptive-hash-index
或——skip-innodb-adaptive-hash-index
或innodb_adaptive_hash_index
或skip_innodb_adaptive_hash_index
在一个选项文件中。可以将接受数值的系统变量指定为
--
在命令行或作为var_name
=价值
在选择文件。var_name
=价值
许多系统变量可以在运行时更改(参见
和有关信息。
全球
而且会话
变量范围修饰符,请参考集
声明文档。10bet官方网站控件的位置和布局
InnoDB
数据文件。一些您最初可能不使用的选项有助于优化
InnoDB
基于机器容量和数据库的性能特征表15.24 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
创建一个名为innodb_status。
在数据目录下写pid
查看引擎innodb状态
大约每15秒输出一次。的
innodb_status。
默认情况下不会创建文件。要创建它,请开始mysqld与pid
——innodb-status-file
选择。InnoDB
当服务器正常关闭时,移除该文件。如果发生异常关机,可能需要手动删除状态文件。的
——innodb-status-file
选项用于临时使用,如查看引擎innodb状态
输出的生成会影响性能innodb_status。
随着时间的推移,文件可能会变得相当大。pid
禁用
InnoDB
存储引擎。参见——innodb
.
InnoDB系统变量
daemon_memcached_enable_binlog
命令行格式 ——daemon-memcached-enable-binlog[={|在}]
系统变量 daemon_memcached_enable_binlog
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 从
在源服务器上启用此选项以使用
InnoDB
memcached插件(daemon_memcached
)与MySQL——log-bin
选择。命令行格式 ——daemon-memcached-engine-lib-name = file_name
系统变量 daemon_memcached_engine_lib_name
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 文件名称 默认值 innodb_engine.so
方法的共享库
InnoDB
memcached插件。命令行格式 ——daemon-memcached-engine-lib-path = dir_name
系统变量 daemon_memcached_engine_lib_path
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 目录名称 默认值 零
的共享库所在目录的路径
InnoDB
memcached插件。默认值为NULL,表示MySQL插件目录。除非指定a,否则不需要修改此参数memcached
另一个存储引擎的插件,位于MySQL插件目录之外。命令行格式 ——daemon-memcached-option =选项
系统变量 daemon_memcached_option
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 字符串 默认值 用于将以空格分隔的memcached选项传递给底层memcached启动内存对象缓存守护进程。例如,您可以更改端口memcached侦听、减少同时连接的最大数量、更改键值对的最大内存大小或打开错误日志的调试消息。
-
命令行格式 ——daemon-memcached-r-batch-size = #
系统变量 daemon_memcached_r_batch_size
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 1
指定有多少memcached读操作(
得到
操作之前执行的操作提交
开始一个新的事务。对应的daemon_memcached_w_batch_size
.默认情况下,该值设置为1,因此通过SQL语句对表进行的任何更改都是立即可见的memcached操作。方法访问底层表时,可以增加它以减少频繁提交带来的开销memcached接口。如果将该值设置得太大,那么撤销或重做数据量可能会带来一些存储开销,就像任何长时间运行的事务一样。
命令行格式 ——daemon-memcached-w-batch-size = #
系统变量 daemon_memcached_w_batch_size
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 1
指定有多少memcached写操作,例如
添加
,集
,增加
在做一件事之前,先做一件事提交
开始一个新的事务。对应的daemon_memcached_r_batch_size
.默认情况下,该值设置为1,假设存储的数据在停电时很重要,应该立即提交。当存储非关键数据时,可以增加这个值以减少频繁提交的开销;但是最后
N
-1未提交的写操作可能会在意外退出时丢失。命令行格式 ——innodb-adaptive-flushing[={|在}]
系统变量 innodb_adaptive_flushing
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
指定是否动态调整刷新速率InnoDB
命令行格式 ——innodb-adaptive-flushing-lwm = #
系统变量 innodb_adaptive_flushing_lwm
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 10
最小值 0
最大值 70
命令行格式 ——innodb-adaptive-hash-index[={|在}]
系统变量 innodb_adaptive_hash_index
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
是否
InnoDB
集全球语句,无需重新启动服务器。在运行时更改设置需要足够的权限来设置全局系统变量。看到——skip-innodb-adaptive-hash-index在服务器启动时禁用它。禁用自适应哈希索引将立即清空哈希表。当哈希表被清空时,正常的操作可以继续,而使用哈希表执行的查询可以直接访问索引b树。当自适应哈希索引重新启用时,将在正常操作期间再次填充哈希表。
innodb_adaptive_hash_index_parts
命令行格式 ——innodb-adaptive-hash-index-parts = #
系统变量 innodb_adaptive_hash_index_parts
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 数字 默认值 8
最小值 1
最大值 512
对自适应哈希索引搜索系统进行分区。每个索引被绑定到一个特定的分区,每个分区由一个单独的锁存器保护。
自适应哈希索引搜索系统默认分为8个部分。最大设置为512。
命令行格式 ——innodb-adaptive-max-sleep-delay = #
系统变量 innodb_adaptive_max_sleep_delay
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 150000
最小值 0
最大值 1000000
许可证
InnoDB
的值自动调整innodb_thread_sleep_delay
根据当前的工作负载上下浮动。任何非零值都可以自动、动态地调整innodb_thread_sleep_delay
中指定的最大值innodb_adaptive_max_sleep_delay
选择。该值表示微秒数。这个选项在繁忙的系统中很有用,因为它的值大于16InnoDB
线程。(在实践中,它对于同时存在数百或数千个连接的MySQL系统最有价值。)命令行格式 ——innodb-api-bk-commit-interval = #
系统变量 innodb_api_bk_commit_interval
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 5
最小值 1
最大值 1073741824
的空闲连接的自动提交频率是多少
InnoDB
memcached接口,在几秒钟内。有关更多信息,请参见命令行格式 ——innodb-api-disable-rowlock[={|在}]
系统变量 innodb_api_disable_rowlock
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 从
使用此选项可在以下情况禁用行锁
InnoDB
memcached执行DML操作。默认情况下,innodb_api_disable_rowlock
是残疾的,这意味着什么memcached请求行锁得到
而且集
操作。当innodb_api_disable_rowlock
启用,memcached请求表锁而不是行锁。innodb_api_disable_rowlock
不是动态。必须在mysqld命令行或输入MySQL配置文件。当MySQL服务器启动时,安装了插件,配置生效。命令行格式 ——innodb-api-enable-binlog[={|在}]
系统变量 innodb_api_enable_binlog
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 从
命令行格式 ——innodb-api-enable-mdl[={|在}]
系统变量 innodb_api_enable_mdl
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 从
对象使用的表锁定
InnoDB
memcached插件,使其不能被删除或更改命令行格式 ——innodb-api-trx-level = #
系统变量 innodb_api_trx_level
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
命令行格式 ——innodb-autoextend-increment = #
系统变量 innodb_autoextend_increment
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 64
最小值 1
最大值 1000
用于扩展自动扩展的大小的增量大小(以兆字节为单位)
InnoDB
innodb_autoextend_increment
设置不影响innodb_autoextend_increment
设置。初始扩展是少量的,之后扩展以4MB的增量出现。-
命令行格式 ——innodb-autoinc-lock-mode = #
系统变量 innodb_autoinc_lock_mode
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 2
有效值 0
1
2
命令行格式 ——innodb-background-drop-list-empty[={|在}]
系统变量 innodb_background_drop_list_empty
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
使
innodb_background_drop_list_empty
调试选项通过延迟表的创建直到后台下拉列表为空来避免测试用例失败。例如,如果测试用例A放置表t1
在背景下拉列表中,测试用例B在创建表之前等待,直到背景下拉列表为空t1
. -
命令行格式 ——innodb-buffer-pool-chunk-size = #
系统变量 innodb_buffer_pool_chunk_size
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 134217728
最小值 1048576
最大值 通过innodb_buffer_pool_size / innodb_buffer_pool_instances
innodb_buffer_pool_chunk_size
的块大小定义InnoDB
缓冲池调整操作。为了避免在调整大小操作期间复制所有缓冲池页面,该操作在”块”.默认情况下,
innodb_buffer_pool_chunk_size
为128MB(134217728字节)。块中包含的页面数取决于的值innodb_page_size
.innodb_buffer_pool_chunk_size
可以以1MB(1048576字节)为单位增加或减少。更改时适用下列条件
innodb_buffer_pool_chunk_size
值:如果
innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
大于初始化缓冲池时的当前缓冲池大小,innodb_buffer_pool_chunk_size
被截断通过innodb_buffer_pool_size
/innodb_buffer_pool_instances
.缓冲池大小必须始终等于或倍数
innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
.如果你改变innodb_buffer_pool_chunk_size
,通过innodb_buffer_pool_size
自动舍入为等于或倍数的值innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
.调整发生在初始化缓冲池时。
重要的更换时要小心
innodb_buffer_pool_chunk_size
,因为更改该值会自动增加缓冲池的大小。在改变之前innodb_buffer_pool_chunk_size
,计算其影响通过innodb_buffer_pool_size
以确保产生的缓冲池大小是可接受的。为了避免潜在的性能问题,块的数量(
通过innodb_buffer_pool_size
/innodb_buffer_pool_chunk_size
)不应超过1000。的
通过innodb_buffer_pool_size
变量是动态的,这允许在服务器在线时调整缓冲池的大小。但是,缓冲池大小必须等于或的倍数innodb_buffer_pool_chunk_size
*innodb_buffer_pool_instances
,而更改这些变量中的任何一个设置都需要重新启动服务器。命令行格式 ——innodb-buffer-pool-debug[={|在}]
系统变量 innodb_buffer_pool_debug
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 从
启用此选项允许在缓冲池小于1GB时使用多个缓冲池实例,忽略施加的1GB最小缓冲池大小限制
innodb_buffer_pool_instances
.的innodb_buffer_pool_debug
选项仅在使用。编译调试支持时可用WITH_DEBUG
CMake选择。 innodb_buffer_pool_dump_at_shutdown
命令行格式 ——innodb-buffer-pool-dump-at-shutdown[={|在}]
系统变量 innodb_buffer_pool_dump_at_shutdown
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
控件中缓存的页
InnoDB
innodb_buffer_pool_load_at_startup
.的innodb_buffer_pool_dump_pct
选项定义最近使用的缓冲池页面转储的百分比。这两个
innodb_buffer_pool_dump_at_shutdown
而且innodb_buffer_pool_load_at_startup
默认启用。命令行格式 ——innodb-buffer-pool-dump-now[={|在}]
系统变量 innodb_buffer_pool_dump_now
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
立即记录缓存在
InnoDB
innodb_buffer_pool_load_now
.命令行格式 ——innodb-buffer-pool-dump-pct = #
系统变量 innodb_buffer_pool_dump_pct
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 25
最小值 1
最大值 One hundred.
指定每个缓冲池最近使用的页面的读出和转储百分比。取值范围是1 ~ 100。缺省值为25。例如,如果有4个缓冲池,每个缓冲池有100页
innodb_buffer_pool_dump_pct
设置为25,则转储每个缓冲池中最近使用的25个页面。-
命令行格式 ——innodb-buffer-pool-filename = file_name
系统变量 innodb_buffer_pool_filename
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 文件名称 默认值 ib_buffer_pool
指定保存生成的表空间id和页id列表的文件的名称
innodb_buffer_pool_dump_at_shutdown
或innodb_buffer_pool_dump_now
.表空间id和页面id的保存格式如下:空间,page_id
.缺省情况下,文件名为ib_buffer_pool
并且位于InnoDB
数据目录。必须指定相对于数据目录的非默认位置。可以在运行时使用
集
声明:集全球innodb_buffer_pool_filename =“file_name”;
您还可以在启动时指定文件名,在启动字符串或MySQL配置文件中。在启动时指定文件名时,该文件必须存在或
InnoDB
返回一个启动错误,指示没有这样的文件或目录。命令行格式 ——innodb-buffer-pool-in-core-file[={|在}]
介绍了 8.0.14 系统变量 innodb_buffer_pool_in_core_file
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
禁用
innodb_buffer_pool_in_core_file
变量通过排除来减少核心文件的大小InnoDB
缓冲池页面。要使用这个变量core_file
变量必须启用,且操作系统必须支持MADV_DONTDUMP
posix扩展madvise ()
, Linux 3.4及更高版本支持。有关更多信息,请参见命令行格式 ——innodb-buffer-pool-instances = #
系统变量 innodb_buffer_pool_instances
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值(Windows, 32位平台) (autosized)
默认值(其他) 8(或者1如果innodb_buffer_pool_size < 1GB)
最小值 1
最大值 64
区域的数量
InnoDB
通过innodb_buffer_pool_size
到1GB或更多。总的缓冲池大小分配给所有缓冲池。为获得最佳效率,请指定innodb_buffer_pool_instances
而且通过innodb_buffer_pool_size
以便每个缓冲池实例至少为1GB。在32位Windows系统上,默认值依赖于
通过innodb_buffer_pool_size
,详情如下:如果
通过innodb_buffer_pool_size
大于1.3GB,默认为innodb_buffer_pool_instances
是通过innodb_buffer_pool_size
/128MB,每个块都有单独的内存分配请求。1.3GB被选择作为边界,在这个边界上,32位Windows无法分配单个缓冲池所需的连续地址空间存在重大风险。否则,缺省值为1。
在所有其他平台上,默认值是8
通过innodb_buffer_pool_size
大于等于1GB。否则,缺省值为1。命令行格式 ——innodb-buffer-pool-load-abort[={|在}]
系统变量 innodb_buffer_pool_load_abort
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
中断恢复过程
InnoDB
innodb_buffer_pool_load_at_startup
或innodb_buffer_pool_load_now
.命令行格式 ——innodb-buffer-pool-load-at-startup[={|在}]
系统变量 innodb_buffer_pool_load_at_startup
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 在
指定在MySQL服务器启动时
InnoDB
innodb_buffer_pool_dump_at_shutdown
.这两个
innodb_buffer_pool_dump_at_shutdown
而且innodb_buffer_pool_load_at_startup
默认启用。命令行格式 ——innodb-buffer-pool-load-now[={|在}]
系统变量 innodb_buffer_pool_load_now
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
立即InnoDB
命令行格式 ——innodb-buffer-pool-size = #
系统变量 通过innodb_buffer_pool_size
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 134217728
最小值 5242880
最大值(64位平台) 2 * * 64 - 1
最大值(32位平台) 2 * * 32-1
的大小(以字节为单位)InnoDB缓存表和索引数据。默认值为134217728字节(128MB)。最大值取决于CPU架构;最大值为429496729532-1)和18446744073709551615 (264-1)在64位系统上。在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_dedicated_server
启用,通过innodb_buffer_pool_size
值如果没有显式定义,将自动配置。有关更多信息,请参见命令行格式 ——innodb-change-buffer-max-size = #
系统变量 innodb_change_buffer_max_size
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 25
最小值 0
最大值 50
命令行格式 ——innodb-change-buffering =值
系统变量 innodb_change_buffering
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 所有
有效值 没有一个
插入
删除
变化
清洗
所有
表15.25 innodb_change_buffer允许的值
价值 数值 描述 没有一个
0
不要缓冲任何操作。 插入
1
缓冲插入操作。 删除
2
缓冲区删除标记操作;严格地说,将索引记录标记为以后在清除操作期间删除的写操作。 变化
3.
缓冲区插入和删除标记操作。 清洗
4
缓冲发生在后台的物理删除操作。 所有
5
默认值。缓冲区插入、删除标记操作和清除。
命令行格式 ——innodb-change-buffering-debug = #
系统变量 innodb_change_buffering_debug
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
最大值 2
设置的调试标志
InnoDB
改变缓冲。值1将强制所有更改到更改缓冲区。值为2会导致合并时意外退出。默认值0表示没有设置更改缓冲调试标志。控件中编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。 -
命令行格式 ——innodb-checkpoint-disabled[={|在}]
系统变量 innodb_checkpoint_disabled
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
这是一个调试选项,仅供专业调试使用。它禁用检查点,以便始终启动一个故意的服务器退出
InnoDB
复苏。它应该只在短时间内启用,通常是在运行写重做日志条目的DML操作(在服务器退出后需要恢复)之前。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。 -
命令行格式 ——innodb-checksum-algorithm =值
系统变量 innodb_checksum_algorithm
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 crc32
有效值 crc32
strict_crc32
innodb
strict_innodb
没有一个
strict_none
指定如何生成和验证InnoDB
innodb_checksum_algorithm
是crc32
.校验和算法的严格形式在表空间中遇到有效但不匹配的校验和值时会报告错误。建议您只在新实例中使用严格的设置,以便第一次设置表空间。严格设置要快一些,因为它们在读取磁盘时不需要计算所有的校验和值。
下表显示了
没有一个
,innodb
,crc32
选项值,以及它们的严格对应项。没有一个
,innodb
,crc32
将指定类型的校验和值写入每个数据块,但为了兼容性,在读取操作期间验证块时接受其他校验和值。严格设置也接受有效的校验和值,但当遇到有效的、不匹配的校验和值时,会打印一条错误消息。使用严格形式可以使验证更快InnoDB
实例中的数据文件创建在相同的目录下innodb_checksum_algorithm
价值。表15.26允许的innodb_checksum_algorithm值
价值 生成的校验和(写入时) 允许校验和(读取时) 没有一个 一个常数。 由。产生的校验和 没有一个
,innodb
,或crc32
.innodb 校验和在软件中计算,使用原始算法从 InnoDB
.由。产生的校验和 没有一个
,innodb
,或crc32
.crc32 方法计算的校验和 crc32
算法,可能需要硬件辅助。由。产生的校验和 没有一个
,innodb
,或crc32
.strict_none 一个常数 由。产生的校验和 没有一个
,innodb
,或crc32
.InnoDB
如果遇到有效但不匹配的校验和,则打印错误消息。strict_innodb 校验和在软件中计算,使用原始算法从 InnoDB
.由。产生的校验和 没有一个
,innodb
,或crc32
.InnoDB
如果遇到有效但不匹配的校验和,则打印错误消息。strict_crc32 方法计算的校验和 crc32
算法,可能需要硬件辅助。由。产生的校验和 没有一个
,innodb
,或crc32
.InnoDB
如果遇到有效但不匹配的校验和,则打印错误消息。 -
命令行格式 ——innodb-cmp-per-index-enabled[={|在}]
系统变量 innodb_cmp_per_index_enabled
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
控件中与每个索引压缩相关的统计信息
INFORMATION_SCHEMA。INNODB_CMP_PER_INDEX
表格因为收集这些统计信息的开销很大,所以在相关的性能调优期间,只能在开发、测试或复制实例上启用此选项InnoDB
命令行格式 ——innodb-commit-concurrency = #
系统变量 innodb_commit_concurrency
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 0
最小值 0
最大值 1000
的数量
innodb_commit_concurrency
不能在运行时从零更改为非零,反之亦然。该值可以从一个非零值更改为另一个非零值。 -
命令行格式 ——innodb-compress-debug =值
系统变量 innodb_compress_debug
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 没有一个
有效值 没有一个
zlib
lz4
lz4hc
使用指定的压缩算法压缩所有表,而不需要定义
压缩
属性。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。相关信息请参见第15.9.2节," InnoDB页面压缩".
innodb_compression_failure_threshold_pct
命令行格式 ——innodb-compression-failure-threshold-pct = #
系统变量 innodb_compression_failure_threshold_pct
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 5
最小值 0
最大值 One hundred.
定义一个表的压缩故障率阈值(以百分比表示),在这个阈值处MySQL开始添加填充
innodb_compression_pad_pct_max
.如果值为0,则会禁用监控压缩效率和动态调整填充量的机制。命令行格式 ——innodb-compression-level = #
系统变量 innodb_compression_level
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 6
最小值 0
最大值 9
命令行格式 ——innodb-compression-pad-pct-max = #
系统变量 innodb_compression_pad_pct_max
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 50
最小值 0
最大值 75
指定可在每个压缩内保留为可用空间的最大百分比
innodb_compression_failure_threshold_pct
设置为非零值,且命令行格式 ——innodb-concurrency-tickets = #
系统变量 innodb_concurrency_tickets
范围 全球 动态 是的 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
在大交易和小交易之间找到最佳的平衡。的查看引擎innodb状态
报告显示当前通过队列的执行事务剩余的票证数。该数据也可以从TRX_CONCURRENCY_TICKETS
列的INFORMATION_SCHEMA。INNODB_TRX
表格命令行格式 ——innodb-data-file-path = file_name
系统变量 innodb_data_file_path
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 字符串 默认值 ibdata1:12M: autoextend
的名称、大小和属性
InnoDB
系统表空间数据文件。如果没有指定值innodb_data_file_path
,默认行为是创建单个自动扩展数据文件,该文件略大于12MB,名为ibdata1
.数据文件规范的完整语法包括文件名、文件大小、
autoextend
属性,马克斯
属性:file_name:file_size[: autoextend[:马克斯:max_file_size]]
通过追加来指定文件大小,单位为千字节、兆字节或千兆字节
K
,米
或G
为size值。如果以千字节为单位指定数据文件大小,则以1024的倍数为单位。否则,KB值被四舍五入到最接近兆字节的边界。文件大小之和必须大于等于12MB。命令行格式 ——innodb-data-home-dir = dir_name
系统变量 innodb_data_home_dir
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 目录名称 的目录路径的公共部分
InnoDB
数据目录中。设置与innodb_data_file_path
设置,除非该设置使用绝对路径定义。在指定值时,末尾需要一个斜杠
innodb_data_home_dir
.例如:[mysqld] innodb_data_home_dir = /path/to/myibdata/
命令行格式 ——innodb-ddl-log-crash-reset-debug[={|在}]
系统变量 innodb_ddl_log_crash_reset_debug
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
启用此调试选项可将DDL日志崩溃注入计数器重置为1。控件中编译调试支持时,此选项才可用
WITH_DEBUG
CMake选择。-
命令行格式 ——innodb-deadlock-detect[={|在}]
系统变量 innodb_deadlock_detect
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
此选项用于禁用死锁检测。在高并发性系统中,当多个线程等待同一个锁时,死锁检测可能会导致减速。有时,禁用死锁检测并依赖于
innodb_lock_wait_timeout
设置为发生死锁时的事务回滚。命令行格式 ——innodb-dedicated-server[={|在}]
系统变量 innodb_dedicated_server
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 从
当
innodb_dedicated_server
启用,InnoDB
自动配置以下变量:只考虑启用
innodb_dedicated_server
如果MySQL实例驻留在一个专用服务器上,它可以使用所有可用的系统资源。启用innodb_dedicated_server
如果MySQL实例与其他应用程序共享系统资源,则不建议使用此选项。命令行格式 ——innodb-default-row-format =值
系统变量 innodb_default_row_format
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 动态
有效值 冗余
紧凑的
动态
的
innodb_default_row_format
选项定义的默认行格式InnoDB
表和用户创建的临时表。默认设置为动态
.其他允许的值有紧凑的
而且冗余
.的压缩
行格式中不支持使用innodb_default_row_format
当一个ROW_FORMAT
选项未显式指定或何时指定ROW_FORMAT =违约
使用。当一个
ROW_FORMAT
选项未显式指定或何时指定ROW_FORMAT =违约
使用时,任何重新构建表的操作也会将表的行格式静默更改为innodb_default_row_format
.有关更多信息,请参见InnoDB服务器为处理查询而创建的临时表使用动态
行格式,而不管innodb_default_row_format
设置。 -
命令行格式 ——innodb-directories = dir_name
系统变量 innodb_directories
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 目录名称 默认值 零
定义表空间文件启动时扫描的目录。当服务器脱机时,将表空间文件移动或恢复到新位置时使用此选项。它还用于指定使用绝对路径创建的表空间文件的目录或位于数据目录之外的目录。
崩溃恢复期间的表空间发现依赖于
innodb_directories
设置以识别重做日志中引用的表空间。有关更多信息,请参见innodb_data_home_dir
,innodb_undo_directory
,datadir
总是附加到innodb_directories
参数值时InnoDB
构建启动时要扫描的目录列表。这些目录被追加,而不管是否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
Scan还可以遍历指定目录的子目录。从待扫描目录列表中删除重复目录和子目录。命令行格式 ——innodb-disable-sort-file-cache[={|在}]
系统变量 innodb_disable_sort_file_cache
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
为合并排序临时文件禁用操作系统文件系统缓存。效果是打开这样的文件与等效的
O_DIRECT
. -
命令行格式 ——innodb-doublewrite[={|在}]
系统变量 innodb_doublewrite
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 在
的
innodb_doublewrite
变量控制是否启用双写缓冲区。大多数情况下默认启用。要禁用doublewrite缓冲区,设置innodb_doublewrite
设置为0或启动服务器——skip-innodb-doublewrite
.如果您更关心性能而不是数据完整性,则可以考虑禁用doublewrite缓冲区,例如,在执行基准测试时可能会出现这种情况。如果doublewrite缓冲区位于支持原子写操作的Fusion-io设备上,doublewrite缓冲区将自动关闭,并使用Fusion-io原子写操作来执行数据文件写操作。但是,要注意
innodb_doublewrite
设置是全球性的。当关闭doublewrite缓冲区时,所有数据文件都将关闭,包括不在Fusion-io硬件上的数据文件。该特性仅在Fusion-io硬件上支持,Linux下仅在Fusion-io nvvmfs上开启。为了充分利用这一特性,aninnodb_flush_method
设置O_DIRECT
建议。命令行格式 ——innodb-doublewrite-batch-size = #
介绍了 8.0.20 系统变量 innodb_doublewrite_batch_size
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 0
最小值 0
最大值 256
定义要在批处理中写入的doublewrite页的数量。
命令行格式 ——innodb-doublewrite-dir = dir_name
介绍了 8.0.20 系统变量 innodb_doublewrite_dir
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 目录名称 定义doublewrite文件的目录。如果不指定目录,则在目录中创建doublewrite文件
innodb_data_home_dir
目录,如果未指定,默认为数据目录。命令行格式 ——innodb-doublewrite-files = #
介绍了 8.0.20 系统变量 innodb_doublewrite_files
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 innodb_buffer_pool_instances * 2
最小值 2
最大值 256
定义doublewrite文件的数量。默认情况下,为每个缓冲池实例创建两个doublewrite文件。
至少有两个doublewrite文件。最大doublewrite文件数为缓冲池实例数的两倍。(缓冲池实例的数量由
innodb_buffer_pool_instances
变量。)命令行格式 ——innodb-doublewrite-pages = #
介绍了 8.0.20 系统变量 innodb_doublewrite_pages
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 整数 默认值 innodb_write_io_threads价值
最小值 innodb_write_io_threads价值
最大值 512
定义用于批写的每个线程的最大doublewrite页数。如果没有指定值,
innodb_doublewrite_pages
设置为innodb_write_io_threads
价值。命令行格式 ——innodb = extend-and-initialize[={|在}]
介绍了 8.0.22 系统变量 innodb_extend_and_initialize
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
控制如何将空间分配给Linux系统上的逐表文件空间和一般表空间。
当启用时,
InnoDB
向新分配的页写入null值。禁用时,空间分配使用posix_fallocate ()
调用,它在不物理写入null值的情况下预留空间。命令行格式 ——innodb-fast-shutdown = #
系统变量 innodb_fast_shutdown
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
有效值 0
1
2
的
InnoDB
InnoDB一个InnoDB在关闭时跳过这些操作,这个过程称为InnoDB清空日志并冷关机,就像MySQL崩溃了一样;提交的事务不会丢失,但是innodb_fast_shutdown = 2
在紧急情况或故障排除情况下,如果数据有损坏风险,可以绝对最快地关闭。 innodb_fil_make_page_dirty_debug
命令行格式 ——innodb-fil-make-page-dirty-debug = #
系统变量 innodb_fil_make_page_dirty_debug
范围 全球 动态 是的 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
选项仅在使用。编译调试支持时可用WITH_DEBUG
CMake选择。-
命令行格式 ——innodb-file-per-table[={|在}]
系统变量 innodb_file_per_table
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
当
innodb_file_per_table
启用时,默认情况下在每个表对应的文件表空间中创建表。禁用时,默认情况下会在系统表空间中创建表。有关每个表对应的文件表空间的信息,请参见InnoDB系统表空间,看到innodb_file_per_table
变量可以在运行时使用集全球
语句,在启动时在命令行上指定,或在选项文件中指定。运行时配置需要足够的权限来设置全局系统变量(请参见InnoDB数据不会返回给操作系统,因为系统表空间数据文件永远不会收缩。的
innodb_file_per-table
设置不影响临时表的创建。在MySQL 8.0.14中,临时表创建在会话临时表空间中,在此之前创建在全局临时表空间中。看到命令行格式 ——innodb-fill-factor = #
系统变量 innodb_fill_factor
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 One hundred.
最小值 10
最大值 One hundred.
InnoDB
在创建或重建索引时执行批量加载。这种创建索引的方法被称为”排序的索引构建”.innodb_fill_factor
定义在排序索引构建期间填充的每个b -树页面上的空间百分比,剩余的空间为未来的索引增长保留。例如,设置innodb_fill_factor
to 80在每个B-tree页面上保留20%的空间,用于未来的索引增长。实际百分比可能有所不同。的innodb_fill_factor
设置被解释为一种提示,而不是硬性限制。一个
innodb_fill_factor
设置为100将使聚集索引页中的1/16空间空闲,以供未来索引增长使用。innodb_fill_factor
适用于B-tree叶子页和非叶子页。它不适用于用于的外部页面文本
或团
条目。命令行格式 ——innodb-flush-log-at-timeout = #
系统变量 innodb_flush_log_at_timeout
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 1
最大值 2700
每次写入和刷新日志
N
秒。innodb_flush_log_at_timeout
允许增加刷新之间的超时时间,以减少刷新并避免影响二进制日志组提交的性能。的默认设置innodb_flush_log_at_timeout
是每秒一次。 innodb_flush_log_at_trx_commit
命令行格式 ——innodb-flush-log-at-trx-commit = #
系统变量 innodb_flush_log_at_trx_commit
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 1
有效值 0
1
2
严格控制之间的平衡
为了完全符合ACID,需要使用默认设置1。在每次事务提交时,将日志写入并刷新到磁盘。
如果设置为0,则每秒将日志写入磁盘并刷新一次。未刷新日志的事务可能在崩溃时丢失。
如果设置为2,则在每个事务提交后写入日志,并每秒将日志刷新到磁盘一次。未刷新日志的事务可能在崩溃时丢失。
对于设置0和2,不能100%保证每秒刷新一次。由于DDL更改和其他内部原因,刷新可能会发生得更频繁
InnoDB
导致独立于innodb_flush_log_at_trx_commit
设置,有时不太频繁,因为日程安排问题。如果每秒刷新一次日志,那么在崩溃时最多可能会丢失一秒的事务。如果刷新日志的频率高于或低于每秒一次,则可能丢失的事务量会相应变化。日志冲洗频率由
innodb_flush_log_at_timeout
,它允许您将日志刷新频率设置为N
秒(N
是1……2700
,默认值为1)。然而,任何意外mysqld进程退出可以删除到N
秒的交易。DDL和其他内部更改
InnoDB
活动独立地刷新日志innodb_flush_log_at_trx_commit
设置。InnoDB
innodb_flush_log_at_trx_commit
设置。事务要么被完全应用,要么被完全删除。
的复制设置中的持久性和一致性InnoDB
事务:
如果启用了二进制日志记录,则设置
sync_binlog = 1
.
有关对意外停机最具弹性的副本设置组合的信息,请参见
许多操作系统和一些磁盘硬件欺骗了flush-to-disk操作。他们可能会告诉mysqld这种同花顺已经发生了,尽管它还没有发生。在这种情况下,即使使用推荐的设置,事务的持久性也不能得到保证,在最坏的情况下,停电可能会造成破坏InnoDB
数据。在SCSI磁盘控制器或磁盘本身中使用电池支持的磁盘缓存可以加速文件刷新,并使操作更安全。您还可以尝试在硬件缓存中禁用磁盘写入的缓存。
命令行格式 | ——innodb-flush-method =值 |
---|---|
系统变量 | innodb_flush_method |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
默认值(Unix) | fsync |
默认值(Windows) | 无缓冲的 |
有效值(Unix) |
|
有效值(Windows) |
|
定义用于的方法InnoDBfsync.在Windows操作系统下,默认值为无缓冲的
.
在MySQL 8.0中,innodb_flush_method
可以用数字指定选项。
的innodb_flush_method
类unix系统的选项包括:
fsync
或0
:InnoDB
使用fsync ()
用于刷新数据和日志文件的系统调用。fsync
是默认设置。O_DSYNC
或1
:InnoDB
使用O_SYNC
打开并刷新日志文件,以及fsync ()
刷新数据文件。InnoDB
不使用O_DSYNC
直接原因是它在许多Unix变体上都存在问题。littlesync
或2
:此选项用于内部性能测试,目前不支持。使用风险自负。nosync
或3.
:此选项用于内部性能测试,目前不支持。使用风险自负。O_DIRECT
或4
:InnoDB
使用O_DIRECT
(或译:()
)打开数据文件,并使用fsync ()
刷新数据和日志文件。该选项在一些GNU/Linux版本、FreeBSD和Solaris中可用。O_DIRECT_NO_FSYNC
:InnoDB
使用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_fdatasync
MySQL 8.0.26中引入的变量允许innodb_flush_method
选择使用fsync ()
使用fdatasync ()
代替。一个fdatasync ()
除非后续的数据检索需要,否则系统调用不会刷新对文件元数据的更改,这提供了潜在的性能优势。
的innodb_flush_method
Windows系统的选项包括:
无缓冲的
或0
:InnoDB
使用模拟的异步I/O和非缓冲I/O。正常的
或1
:InnoDB
使用模拟的异步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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 枚举 |
默认值 | 0 |
有效值 |
|
指定是否InnoDB
设置为0则禁用 设置为1则在相同的范围内刷新连续的脏页。 设置为2会在相同的范围内刷新脏页。
innodb_flush_neighbors
.同一区段中的脏页不会刷新。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 30. |
最小值 | 1 |
最大值 | 1000 |
的迭代次数InnoDB
保留先前计算的刷新状态快照,控制刷新的速度
命令行格式 | ——innodb-force-load-corrupted[={|在}] |
---|---|
系统变量 | innodb_force_load_corrupted |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
许可证InnoDB
在启动时加载标记为已损坏的表。仅在故障排除期间使用,以恢复数据,否则不可访问。当故障排除完成后,禁用此设置并重新启动服务器。
命令行格式 | ——innodb-force-recovery = # |
---|---|
系统变量 | innodb_force_recovery |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 6 |
的 只有在紧急情况下才将此变量设置为大于0的值,以便您可以启动 这些限制可能导致复制管理命令失败并出现错误,因为复制存储了副本状态登录innodb_force_recovery
,请参阅
InnoDB
扔掉你的桌子。作为安全措施,InnoDB
防止插入
,更新
,或删除
操作时innodb_force_recovery
大于0。一个innodb_force_recovery
设置4个或更多的地方InnoDB
进入只读模式。InnoDB
表。
命令行格式 | ——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 |
---|---|
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
的限定名InnoDB
表包含一个全文
索引。此变量用于诊断目的,只能在运行时设置。例如:
SET GLOBAL innodb_ft_aux_table = 'test/t1';
将此变量设置为格式中的名称之后
,db_name
/table_name
INFORMATION_SCHEMA
表INNODB_FT_INDEX_TABLE
,INNODB_FT_INDEX_CACHE
,INNODB_FT_CONFIG
,INNODB_FT_DELETED
,INNODB_FT_BEING_DELETED
显示指定表的搜索索引信息。
命令行格式 | ——innodb-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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球、会话 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
指定一组InnoDB全文
创建索引时的索引。如果innodb_ft_user_stopword_table
选项,停止字将从该表中提取。其他的,如果innodb_ft_server_stopword_table
选项,停止字将从该表中提取。否则,将使用一组内置的默认停止字。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 3. |
最小值 | 0 |
最大值 | 16 |
中存储的单词的最小长度InnoDB
全文
索引。增加这个值会减少索引的大小,从而通过省略在搜索上下文中不太重要的常用单词(比如英语单词)来加快查询速度”一个”而且”来”.对于使用CJK(中文、日文、韩文)字符集的内容,请指定值1。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
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_table
.innodb_ft_enable_stopword
必须启用并且innodb_ft_server_stopword_table
选项必须在创建全文
索引。
停止表必须是InnoDB
表,包含一个VARCHAR
列命名价值
.
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 640000000 |
最小值 | 32000000 |
最大值 | 1600000000 |
对象分配的总内存,以字节为单位InnoDB
所有表的全文搜索索引缓存。创建大量的表,每个表具有全文
搜索索引,可能会消耗大量可用内存。innodb_ft_total_cache_size
为所有全文搜索索引定义全局内存限制,以帮助避免过多的内存消耗。如果索引操作达到了全局限制,就会触发强制同步。
命令行格式 | ——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_table
.innodb_ft_enable_stopword
必须启用并且innodb_ft_user_stopword_table
必须在创建全文
索引。
停止表必须是InnoDB
表,包含一个VARCHAR
列命名价值
.
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 2 * * 32-1 |
限制每个记录的数量WITH_DEBUG
CMake选择。
命令行格式 | ——innodb-lock-wait-timeout = # |
---|---|
系统变量 | innodb_lock_wait_timeout |
范围 | 全球、会话 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 50 |
最小值 | 1 |
最大值 | 1073741824 |
时间的长度,以秒an为单位InnoDB
InnoDB在发出以下错误之前,事务对该行的写访问最多等待这么多秒:
错误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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 16777216 |
最小值 | 1048576 |
最大值 | 4294967295 |
命令行格式 | ——innodb-log-checkpoint-fuzzy-now[={|在}] |
---|---|
介绍了 | 8.0.13 |
系统变量 | innodb_log_checkpoint_fuzzy_now |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
启用此调试选项以强制InnoDB
编写一个模糊检查点。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。
命令行格式 | ——innodb-log-checkpoint-now[={|在}] |
---|---|
系统变量 | innodb_log_checkpoint_now |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
启用此调试选项以强制InnoDB
编写检查点。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。
命令行格式 | ——innodb-log-checksums[={|在}] |
---|---|
系统变量 | innodb_log_checksums |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
为重做日志页面启用或禁用校验和。
innodb_log_checksums =对
使CRC-32C
重做日志页面的校验和算法。当innodb_log_checksums
则重做日志页校验和字段的内容将被忽略。
重做日志头页和重做日志检查点页上的校验和永远不会被禁用。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 50331648 |
最小值 | 4194304 |
最大值 | 512 gb / innodb_log_files_in_group |
以字节为单位的大小innodb_log_file_size
*innodb_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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 2 |
最小值 | 2 |
最大值 | One hundred. |
的数量InnoDB以循环方式写入文件。缺省值为2,推荐使用。文件的位置由innodb_log_group_home_dir
.日志文件的总大小(innodb_log_file_size
*innodb_log_files_in_group
)可达512GB。
相关信息请参见innodb_dedicated_server
启用,innodb_log_files_in_group
如果没有显式定义,则自动配置。有关更多信息,请参见
命令行格式 | ——innodb-log-group-home-dir = dir_name |
---|---|
系统变量 | innodb_log_group_home_dir |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 目录名称 |
的目录路径InnoDB
innodb_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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 400 |
最小值 | 0 |
最大值(64位平台) | 2 * * 64 - 1 |
最大值(32位平台) | 2 * * 32-1 |
定义最大平均日志刷新时间,超过这个时间,用户线程在等待刷新重做时将不再旋转。缺省值是400微秒。
命令行格式 | ——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[={|在}] |
---|---|
介绍了 | 8.0.22 |
系统变量 | innodb_log_writer_threads |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
启用专用的日志写入线程,用于将重做日志记录从日志缓冲区写入系统缓冲区,并将系统缓冲区刷新到重做日志文件。专用日志写入线程可以在高并发性系统上提高性能,但是对于低并发性系统,禁用专用日志写入线程可以提供更好的性能。
命令行格式 | ——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_depth
*innodb_buffer_pool_instances
定义页面清除器线程每秒执行的工作量。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 数字 |
默认值 | 10 |
最小值 | 0 |
最大值 | 99.99 |
定义表示百分比的低水位线innodb_max_dirty_pages_pct
价值。有关更多信息,请参见
命令行格式 | ——innodb-max-purge-lag = # |
---|---|
系统变量 | innodb_max_purge_lag |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 4294967295 |
定义所需的最大清除延迟。如果超过这个值,就会施加延迟插入
,更新
,删除
为清除行动留出时间。默认值是0,这意味着没有最大清除延迟和延迟。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 50 |
最小值 | 1 |
最大值 | 50 |
为覆盖当前值的索引页定义页面全百分比值MERGE_THRESHOLD
为当前在字典缓存中的所有索引设置。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。相关信息请参见
命令行格式 | 模式——innodb-monitor-disable ={计数器模块| | |所有} |
---|---|
系统变量 | innodb_monitor_disable |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
禁用InnoDB
INFORMATION_SCHEMA。INNODB_METRICS
表格有关使用信息,请参见innodb_monitor_disable =“门闩”
禁用统计信息收集显示引擎innodb互斥
.有关更多信息,请参见第13.7.7.15节," SHOW ENGINE语句".
命令行格式 | 模式——innodb-monitor-enable ={计数器模块| | |所有} |
---|---|
系统变量 | innodb_monitor_enable |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
使InnoDB
INFORMATION_SCHEMA。INNODB_METRICS
表格有关使用信息,请参见innodb_monitor_enable =“门闩”
为以下对象启用统计信息收集显示引擎innodb互斥
.有关更多信息,请参见第13.7.7.15节," SHOW ENGINE语句".
命令行格式 | 模式——innodb-monitor-reset ={计数器模块| | |所有} |
---|---|
系统变量 | innodb_monitor_reset |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 枚举 |
默认值 | 零 |
有效值 |
|
重置计数值InnoDB
INFORMATION_SCHEMA。INNODB_METRICS
表格有关使用信息,请参见innodb_monitor_reset =“门闩”
重置的统计数据显示引擎innodb互斥
.有关更多信息,请参见第13.7.7.15节," SHOW ENGINE语句".
命令行格式 | 模式——innodb-monitor-reset-all ={计数器模块| | |所有} |
---|---|
系统变量 | innodb_monitor_reset_all |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 枚举 |
默认值 | 零 |
有效值 |
|
重置的所有值(最小值、最大值等)InnoDB
INFORMATION_SCHEMA。INNODB_METRICS
表格有关使用信息,请参见
命令行格式 | ——innodb-numa-interleave[={|在}] |
---|---|
系统变量 | innodb_numa_interleave |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
启用NUMA交错内存策略来分配InnoDB
缓冲池。当innodb_numa_interleave
时,NUMA内存策略设置为MPOL_INTERLEAVE
为mysqld的过程。后InnoDB
分配缓冲池时,NUMA内存策略设置为MPOL_DEFAULT
.为innodb_numa_interleave
选项,MySQL必须在启用numa的Linux系统上编译。
CMake设置默认WITH_NUMA
基于当前平台是否具有NUMA
支持。有关更多信息,请参见
命令行格式 | ——innodb-old-blocks-pct = # |
---|---|
系统变量 | innodb_old_blocks_pct |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 37 |
最小值 | 5 |
最大值 | 95 |
的近似百分比InnoDB
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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 没有 |
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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
改变了优化表
作用于InnoDB
表。在对设备进行维护操作时临时启用InnoDB
表与全文
索引。
默认情况下,优化表
中的数据重新组织优化表
跳过重组表数据,而是处理新添加、删除和更新的令牌数据InnoDB
全文
索引。有关更多信息,请参见
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 枚举 |
默认值 | 16384 |
有效值 |
|
指定了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
页面大小不能使用来自使用不同页面大小的实例的数据文件或日志文件。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
当启用此选项时,所有的信息InnoDB用户事务记录在mysqld
查看引擎innodb状态命令。偶尔InnoDB
死锁不一定是个问题,因为InnoDB
立即检测条件并自动回滚其中一个事务。如果应用程序没有适当的错误处理逻辑来检测回滚并重试操作,您可以使用此选项来排除发生死锁的原因。大量的死锁可能表明需要重新构造产生问题的事务选择……更新语句用于多个表,以便每个事务以相同的顺序访问表,从而避免死锁条件。
命令行格式 | ——innodb-print-ddl-logs[={|在}] |
---|---|
系统变量 | innodb_print_ddl_logs |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
启用该选项会导致MySQL将DDL日志写入stderr
.有关更多信息,请参见
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 4 |
最小值 | 1 |
最大值 | 32 |
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
使随机InnoDBI / O。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 4 |
最小值 | 1 |
最大值 | 64 |
中用于读操作的I/O线程数 在Linux系统中,运行多个MySQL服务器(通常超过12个),默认设置为InnoDB
.它对应的写线程是innodb_write_io_threads
.有关更多信息,请参见
innodb_read_io_threads
,innodb_write_io_threads
,以及Linuxaio-max-nr
设置可以超过系统限制。在理想的情况下,增加aio-max-nr
设置;作为一种变通方法,您可以减少一个或两个MySQL变量的设置。
命令行格式 | ——innodb-read-only[={|在}] |
---|---|
系统变量 | innodb_read_only |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
开始InnoDB
在只读模式。用于在只读媒体上分发数据库应用程序或数据集。也可以在数据仓库中使用,在多个实例之间共享相同的数据目录。有关更多信息,请参见innodb_read_only
系统变量阻止仅为。创建和删除表InnoDB
存储引擎。MySQL 8.0,启用innodb_read_only
禁止对所有存储引擎进行该操作。任何存储引擎的表创建和删除操作都会修改数据字典中的表mysql
系统数据库,但这些表使用InnoDB
存储引擎,不能修改时innodb_read_only
启用。同样的原理也适用于其他需要修改数据字典表的表操作。例子:
如果
innodb_read_only
系统变量已启用,分析表
可能会失败,因为它不能更新数据字典中的统计表,哪些使用InnoDB
.为分析表
更新键分布的操作,即使更新表本身(例如,如果它是一个MyISAM
表)。若要获取更新后的分布统计信息,请设置information_schema_stats_expiry = 0
.ALTER TABLE
失败是因为它更新存储引擎名称,存储在数据字典中。tbl_name
引擎=engine_name
此外,中的其他表mysql
系统数据库使用InnoDB
MySQL 8.0的存储引擎。将这些表设置为只读只会限制修改它们的操作。例子:
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
命令行格式 | ——innodb-replication-delay = # |
---|---|
系统变量 | innodb_replication_delay |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 4294967295 |
复制服务器上的复制线程延迟(以毫秒为单位)innodb_thread_concurrency
是达到了。
命令行格式 | ——innodb-rollback-on-timeout[={|在}] |
---|---|
系统变量 | innodb_rollback_on_timeout |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
InnoDB
——innodb-rollback-on-timeout
,则事务超时会导致InnoDB
终止并回滚整个事务。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 0 |
最大值 | 2 * * 23-1 |
保存页码。设置innodb_fil_make_page_dirty_debug
选项使定义的页面脏化innodb_saved_page_number_debug
.的innodb_saved_page_number_debug
选项仅在使用。编译调试支持时可用WITH_DEBUG
CMake选择。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 没有 |
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 |
范围 | 全球 |
动态 | 是的 |
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 = # |
---|---|
介绍了 | 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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 枚举 |
默认值 | nulls_equal |
有效值 |
|
用于生成表统计信息的方法会影响优化器为查询执行选择索引的方式,如
命令行格式 | ——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 =
,在那里模式
要么是模式
在
或从
(或1
或0
).更改设置需要足够的权限来设置全局系统变量(请参见
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
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 |
索引数 设置较高的值 启用或禁用标准的周期性输出 启用或禁用 当 的 Oracle建议使 可以启用或禁用 定义互斥锁/锁等待数组的大小。增加该值会分割用于协调线程的内部数据结构,从而在具有大量等待线程的工作负载中实现更高的并发性。该设置必须在MySQL实例启动时配置,之后不能更改。对于经常产生大量等待线程(通常大于768)的工作负载,建议增加该值。分析表
.缺省值为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
范围
全球
动态
是的
SET_VAR
提示应用没有
类型
布尔
默认值
从
InnoDB
班长。也用于与innodb_status_output_locks
启用或禁用的定时输出InnoDB
锁的班长。有关更多信息,请参见
命令行格式
——innodb-status-output-locks[={|在}]
系统变量
innodb_status_output_locks
范围
全球
动态
是的
SET_VAR
提示应用没有
类型
布尔
默认值
从
InnoDB
锁的班长。当启用时,InnoDB
Lock Monitor打印关于锁的附加信息查看引擎innodb状态
并在MySQL错误日志中定期输出。的周期性输出InnoDB
锁监视器是打印的一部分标准InnoDB
监控输出。标准的InnoDB
因此,必须为InnoDB
锁定监视器,定期将数据打印到MySQL错误日志。有关更多信息,请参见
命令行格式
——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
还启用记录大小检查,以便插入
或更新
不会因为记录对于所选页面大小太大而失败。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
范围
全球
动态
没有
SET_VAR
提示应用没有
类型
整数
默认值
1
最小值
1
最大值
1024
命令行格式 | ——innodb-sync-spin-loops = # |
---|---|
系统变量 | innodb_sync_spin_loops |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 30. |
最小值 | 0 |
最大值 | 4294967295 |
线程等待的次数InnoDB
在线程挂起之前释放互斥锁。
命令行格式 | ——innodb-sync-debug[={|在}] |
---|---|
系统变量 | innodb_sync_debug |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
的同步调试检查InnoDB
存储引擎。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。
命令行格式 | ——innodb-table-locks[={|在}] |
---|---|
系统变量 | innodb_table_locks |
范围 | 全球、会话 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
如果自动提交= 0
,InnoDB
荣誉锁表
;MySQL不会返回锁表……写
直到所有其他线程都释放了对该表的所有锁。默认值innodb_table_locks
是1,这意味着锁表
导致InnoDB内部锁定一个表自动提交= 0
.
innodb_table_locks = 0
对显式锁定的表没有影响锁表……写
.它对被锁定的表的读写有影响锁表……写
隐式(例如,通过触发器)或通过锁表……读
.
命令行格式 | ——innodb-temp-data-file-path = file_name |
---|---|
系统变量 | innodb_temp_data_file_path |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
默认值 | ibtmp1:12M: autoextend |
定义全局临时表空间数据文件的相对路径、名称、大小和属性。全局临时表空间存储对用户创建的临时表所做的更改的回滚段。
如果没有指定值innodb_temp_data_file_path
,默认行为是创建单个自动扩展数据文件ibtmp1
在innodb_data_home_dir
目录中。初始文件大小略大于12MB。
全局临时表空间数据文件规范的语法包括文件名、文件大小和autoextend
而且马克斯
属性:
file_name:file_size[: autoextend[:马克斯:max_file_size]]
全局临时表空间数据文件不能同名InnoDB
数据文件。任何无法或错误创建全局临时表空间数据文件将被视为致命的,服务器启动将被拒绝。
文件大小通过追加指定为KB、MB或GBK
,米
或G
为size值。文件大小之和不能超过12MB。
单个文件的大小限制由操作系统决定。在支持大文件的操作系统上,文件大小可以超过4GB。不支持对全局临时表空间数据文件使用裸磁盘分区。
的autoextend
而且马克斯
属性中最后指定的数据文件只能使用innodb_temp_data_file_path
设置。例如:
(mysqld) innodb_temp_data_file_path = ibtmp1:50M; ibtmp2:12M: autoextend:马克斯:500 mb
的autoextend
选项会导致数据文件在用尽可用空间时自动增加大小。的autoextend
increment默认为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 = 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 |
范围 | 全球 |
动态 | 是的 |
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 |
范围 | 全球 |
动态 | 是的 |
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 = 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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
暂停删除标记记录的清除,同时允许更新清除视图。此选项人为地创建了一种情况,即清除视图已更新,但清除尚未执行。控件编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。
命令行格式 | ——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_DEBUG
CMake选择。
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
命令行格式 | ——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 |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 2 |
最小值 | 2 |
最大值 | 127 |
的innodb_undo_tablespaces
在MySQL 8.0.14版本中,变量已被弃用,不再可配置。希望在未来的版本中删除它。
命令行格式 | ——innodb-use-fdatasync[={|在}] |
---|---|
介绍了 | 8.0.26 |
系统变量 | innodb_use_fdatasync |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
在支持fdatasync ()
系统调用,启用innodb_use_fdatasync
变量允许使用fdatasync ()
而不是fsync ()
系统调用操作系统刷新。一个fdatasync ()
调用不会刷新对文件元数据的更改,除非后续的数据检索需要,这提供了潜在的性能优势。
的一个子集innodb_flush_method
设置等fsync
,O_DSYNC
,O_DIRECT
使用fsync ()
系统调用。的innodb_use_fdatasync
变量在使用这些设置时适用。
命令行格式 | ——innodb-use-native-aio[={|在}] |
---|---|
系统变量 | innodb_use_native_aio |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
是否使用Linux异步I/O子系统。此变量仅适用于Linux系统,不能在服务器运行时更改。通常,您不需要配置该选项,因为它在默认情况下是启用的。
运行与大量InnoDB
I/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[={|在}] |
---|---|
介绍了 | 8.0.21 |
系统变量 | innodb_validate_tablespace_paths |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
控制表空间文件路径验证。在启动时,InnoDB
根据数据字典中存储的表空间文件路径验证已知表空间文件的路径,以防表空间文件被移动到不同的位置。的innodb_validate_tablespace_paths
变量允许禁用表空间路径验证。这个特性适用于不移动表空间文件的环境。禁用路径验证可以提高具有大量表空间文件的系统的启动时间。
在移动表空间文件后禁用表空间路径验证来启动服务器可能会导致未定义的行为。
的InnoDB
版本号。在MySQL 8.0中,单独的版本号InnoDB
不应用和这个值相同版本
服务器编号。
命令行格式 | ——innodb-write-io-threads = # |
---|---|
系统变量 | innodb_write_io_threads |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 4 |
最小值 | 1 |
最大值 | 64 |
用于写入操作的I/O线程数 在Linux系统中,运行多个MySQL服务器(通常超过12个),默认设置为InnoDB
.缺省值为4。它对应的读线程是innodb_read_io_threads
.有关更多信息,请参见
innodb_read_io_threads
,innodb_write_io_threads
,以及Linuxaio-max-nr
设置可以超过系统限制。在理想的情况下,增加aio-max-nr
设置;作为一种变通方法,您可以减少一个或两个MySQL变量的设置。
还要考虑到的价值sync_binlog
,它控制二进制日志到磁盘的同步。