为true或false的系统变量可以在服务器启动时通过命名它们来启用,或通过使用
——跳过
前缀。方法启用或禁用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插件目录。您应该不需要修改此参数,除非指定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
选择。表示微秒数。该选项在大于16的繁忙系统中非常有用InnoDB
线程。(在实践中,它对于同时有成百上千个连接的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 . txt
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
Variable是动态的,允许在服务器在线时调整缓冲池的大小。但是,缓冲池的大小必须等于或乘以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
数据目录。必须指定相对于数据目录的非默认位置。可以在运行时指定文件名,使用
集
声明:SET GLOBAL 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)
默认值(Other) 8(如果innodb_buffer_pool_size < 1GB则为1)
最小值 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架构;最大值为4294967295 (2321)在32位系统和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_buffering允许的值
价值 数值 描述 没有一个
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操作之前启用,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
不能在运行时从0更改为非0,反之亦然。该值可以从一个非零值更改为另一个非零值。 -
命令行格式 ——innodb-compress-debug =值
系统变量 innodb_compress_debug
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 没有一个
有效值 没有一个
zlib
lz4
lz4hc
使用指定的压缩算法压缩所有表,而无需定义
压缩
属性。类编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。命令行格式 ——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
到大小值。如果以千字节为单位指定数据文件大小,则使用1024的倍数。否则,KB值四舍五入到最近的兆字节(MB)边界。文件大小的总和必须至少略大于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
扫描还遍历指定目录的子目录。重复的目录和子目录将从扫描目录列表中被丢弃。命令行格式 ——innodb-disable-sort-file-cache[={|在}]
系统变量 innodb_disable_sort_file_cache
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 从
为合并排序临时文件禁用操作系统文件系统缓存。的效果是打开这样的文件
O_DIRECT
. -
命令行格式 ——innodb-doublewrite[={|在}]
系统变量 innodb_doublewrite
范围 全球 动态 没有 SET_VAR
提示应用没有 类型 布尔 默认值 在
的
innodb_doublewrite
变量控制是否启用doublwrite缓冲区。在大多数情况下默认启用。要禁用doublewrite缓冲区,请设置innodb_doublewrite
设置为0或启动服务器——skip-innodb-doublewrite
.如果您更关心性能而不是数据完整性,您可以考虑禁用doublewrite缓冲区,例如,在执行基准测试时可能会出现这种情况。如果doublewrite缓冲区位于支持原子写的Fusion-io设备上,则会自动关闭doublewrite缓冲区,并使用Fusion-io原子写执行数据文件写操作。但是,要注意
innodb_doublewrite
设置是全局的。当禁用doublewrite缓冲区时,所有数据文件(包括不在Fusion-io硬件上的数据文件)都将禁用doublewrite缓冲区。该特性仅在Fusion-io硬件上支持,且仅在Linux下的Fusion-io NVMFS上启用。为了充分利用这一特性,一个innodb_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
定义批写时每个线程的最大双写页数。如果没有指定值,
innodb_doublewrite_pages
设置为innodb_write_io_threads
价值。命令行格式 ——innodb = extend-and-initialize[={|在}]
介绍了 8.0.22 系统变量 innodb_extend_and_initialize
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
控制如何将空间分配给Linux系统上的每表文件和一般表空间。
当启用时,
InnoDB
将空值写入新分配的页。禁用时,使用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
启用时,默认情况下将在每个表文件的表空间中创建表。禁用时,默认在system表空间中创建表。有关每表文件表空间的信息,请参见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
到80在每个b树页面上保留20%的空间用于未来的索引增长。实际百分比可能有所不同。的innodb_fill_factor
设置是一种暗示,而不是硬性限制。一个
innodb_fill_factor
设置为100将在聚集索引页中留下1/16的空间供将来的索引增长使用。innodb_fill_factor
适用于b树叶页和非叶页。它不适用于用于文本
或团
条目。命令行格式 ——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
控制严格之间的平衡
默认设置为1是完全符合ACID要求的。在每次事务提交时,将日志写入并刷新到磁盘。
如果设置为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
.
有关副本上最能适应意外停止的设置组合的信息,请参见
许多操作系统和一些磁盘硬件会欺骗“刷新到磁盘”操作。他们可能会告诉你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
(或译:()
在Solaris上)打开数据文件,并使用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
代替。
的innodb_flush_method
Windows系统的选项包括:
无缓冲的
或0
:InnoDB
使用模拟异步I/O和非缓冲I/O。正常的
或1
:InnoDB
使用模拟异步I/O和缓冲I/O。
每个设置如何影响性能取决于硬件配置和工作负载。对您的特定配置进行基准测试,以决定使用哪个设置,或者是否保持默认设置。检查Innodb_data_fsyncs
查看状态变量的总数fsync ()
调用每个设置。工作负载中读写操作的混合可能会影响设置的执行方式。例如,在一个具有硬件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位或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缓存限制时)。例如:
ft同步表测试,删除计数:100大小:10000字节同步字:100
FTS优化进度。例如:
FTS_OPTIMIZE:优化“mysql”FTS_OPTIMIZE:处理“mysql”
FTS索引构建进度。例如:
处理的文档数量:1000
对于FTS查询,将打印查询解析树、单词权重、查询处理时间和内存使用情况。例如:
FTS搜索处理时间:1秒:100毫秒:行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
全文
索引stopword列表为所有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
变量定义了每秒可执行的IOPS (I /O operations per second)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 |
时间的长度以秒为单位InnoDB
InnoDB事务最多等待这么多秒来对行进行写访问,然后发出以下错误:
ERROR 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 |
最大值 | 512GB / innodb_log_files_in_group .使用实例 |
以字节为单位的大小innodb_log_file_size
*innodb_log_files_in_group
)不能超过最大值(略小于512GB)。例如,一对255 GB的日志文件接近限制,但没有超过它。默认值为48MB。
通常,日志文件的组合大小应该足够大,以便服务器能够平滑工作负载活动的高峰和低谷,这通常意味着有足够的重做日志空间来处理超过一个小时的写活动。该值越大,缓冲池中需要的检查点刷新活动就越少,从而节省磁盘I/O。较大的日志文件也使innodb_log_file_size
是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-log-group-home-dir = dir_name |
---|---|
系统变量 | innodb_log_group_home_dir |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 目录名称 |
的目录路径InnoDB
innodb_log_files_in_group
.如果您没有指定任何InnoDB
日志变量,默认是创建两个文件名ib_logfile0
而且ib_logfile1
在MySQL数据目录下。日志文件大小由innodb_log_file_size
系统变量。
命令行格式 | ——innodb-log-spin-cpu-abs-lwm = # |
---|---|
系统变量 | innodb_log_spin_cpu_abs_lwm |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 整数 |
默认值 | 80 |
最小值 | 0 |
最大值 | 4294967295 |
定义在等待刷新重做时用户线程不再旋转的最小CPU使用量。该值表示为CPU核心使用率的总和。例如,默认80为单个CPU核的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%。例如,对于一个拥有4个CPU核的服务器,两个CPU核的使用率为100%,则相当于其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
日志文件块大小(2n).最小值为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 bytes (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互斥锁
.有关更多信息,请参见
命令行格式 | 模式——innodb-monitor-enable ={计数器模块| | |所有} |
---|---|
系统变量 | innodb_monitor_enable |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
使InnoDB
INFORMATION_SCHEMA。INNODB_METRICS
表格有关使用信息,请参见innodb_monitor_enable =“门闩”
为以下对象启用统计信息收集显示引擎innodb互斥锁
.有关更多信息,请参见
命令行格式 | 模式——innodb-monitor-reset ={计数器模块| | |所有} |
---|---|
系统变量 | innodb_monitor_reset |
范围 | 全球 |
动态 | 是的 |
SET_VAR 提示应用 |
没有 |
类型 | 枚举 |
默认值 | 零 |
有效值 |
|
重置的计数值InnoDB
INFORMATION_SCHEMA。INNODB_METRICS
表格有关使用信息,请参见innodb_monitor_reset =“门闩”
重置上报的统计信息显示引擎innodb互斥锁
.有关更多信息,请参见
命令行格式 | 模式——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 ()
系统调用在Linux平台上使用,在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硬nice -20 Mysql软nice -20
对于systemd管理的系统,可以通过指定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过程:
Shell > cat /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
变量还定义了在通过undo日志进行每128次迭代后清除释放的undo日志页的数量。
的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 |
根据调用清除的次数定义清除系统释放回滚段的频率。undo表空间在其回滚段被释放之前不能被截断。通常,清除系统每调用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 |
定义保留为空页的表空间文件段页的百分比。在引入这个变量之前,保留页面的百分比被设置为恒定值12.5%。为了与以前的版本保持一致,innodb_segment_reserve_factor
默认设置也是12.5%。
为将来的增长保留一定百分比的文件段页,以便b树中的页可以连续地分配。修改保留页面百分比的能力允许解决由于保留页面百分比过高而导致的潜在碎片和存储使用效率低下的问题。
命令行格式 | ——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 /* 64bit sizeof *buf->tuples*/")
@@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时发生的自旋等待循环中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表。
要更改设置,发出该语句SET GLOBAL 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
锁监视器打印关于锁的附加信息显示引擎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中,它控制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
在运行时使用语句SET [GLOBAL|SESSION] 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或GB为单位通过追加来指定K
,米
或G
到大小值。文件大小之和必须略大于12MB。
单个文件的大小限制由操作系统决定。在支持大文件的操作系统上,文件大小可以超过4GB。不支持对全局临时表空间数据文件使用裸磁盘分区。
的autoextend
而且马克斯
属性只能用于中最后指定的数据文件innodb_temp_data_file_path
设置。例如:
(mysqld) innodb_temp_data_file_path = ibtmp1:50M; ibtmp2:12M: autoextend:马克斯:500 mb
的autoextend
选项会导致数据文件在耗尽空闲空间时自动增加大小。的autoextend
增量默认为64MB。若要修改增量,请更改innodb_autoextend_increment
变量设置。
全局临时表空间数据文件的目录路径由定义的路径连接而成innodb_data_home_dir
而且innodb_temp_data_file_path
.
在运行之前InnoDB
在只读模式下,设置innodb_temp_data_file_path
到数据目录之外的位置。该路径必须相对于数据目录。例如:
——innodb-temp-data-file-path =../../../ tmp / ibtmp1:12M: autoextend
命令行格式 | ——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时间可能比绑定
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
函数查找用于撤销日志段的空闲槽。类编译调试支持时,此选项才可用WITH_DEBUG
CMake选择。
命令行格式 | ——innodb-undo-directory = dir_name |
---|---|
系统变量 | innodb_undo_directory |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 目录名称 |
路径是InnoDB
创建undo表空间。通常用于将undo表空间放置在不同的存储设备上。
没有默认值(它是NULL)。如果innodb_undo_directory
变量未定义,则在data目录中创建undo表空间。
默认的undo表空间(innodb_undo_001
而且innodb_undo_002
)在初始化MySQL实例时创建的innodb_undo_directory
变量。
撤消使用。创建的表空间创建undo表空间
方法定义的目录中创建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 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 从 |
当启用时,InnoDB
使用fdatasync ()
而不是fsync ()
当将数据刷新到操作系统时。不像fsync ()
,默认使用,fdatasync ()
仅在必要时刷新已访问文件的元数据,在某些场景下提供性能优势。
命令行格式 | ——innodb-use-native-aio[={|在}] |
---|---|
系统变量 | innodb_use_native_aio |
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 布尔 |
默认值 | 在 |
指定是否使用Linux异步I/O子系统。此变量仅适用于Linux系统,在服务器运行时不能更改。正常情况下,不需要配置该选项,默认启用。
的InnoDB可以在Linux系统上使用。(其他类unix系统继续使用同步I/O调用。)该特性提高了重度I/ o绑定系统的可伸缩性,这些系统通常会显示许多暂挂的读/写显示引擎innodb状态\ g
输出。
用大量的跑步InnoDB
I/O线程,特别是在同一台服务器机器上运行多个这样的实例,可能会超出Linux系统的容量限制。在这种情况下,您可能会收到以下错误:
EAGAIN:指定的maxevents超出了用户的可用事件限制。
通常可以通过编写更高的限制来解决此错误/proc/sys/fs/aio-max-nr
.
但是,如果操作系统中的异步I/O子系统出现问题,则会阻止InnoDB
从开始,您可以使用innodb_use_native_aio = 0
.此选项也可以在启动过程中自动禁用InnoDB
检测潜在的问题,例如组合tmpdir
的位置,tmpfs
文件系统和不支持AIO的Linux内核tmpfs
.
命令行格式 | ——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
,它控制二进制日志到磁盘的同步。