??官网地址:MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
命令行格式 | --max-write-lock-count=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值(Windows) | 4294967295 |
默认值(其他,64 位平台) | 18446744073709551615 |
默认值(其他,32 位平台) | 4294967295 |
最小值 | 1 |
最大值 (Windows) | 4294967295 |
最大值(其他,64 位平台) | 18446744073709551615 |
最大值(其他,32 位平台) | 4294967295 |
在这么多写入锁定之后,允许在其间处理一些挂起的读取锁定请求。写锁请求的优先级高于读锁请求。然而,如果?max_write_lock_count设置为某个较低值(例如 10),并且读锁定请求已被传递以支持 10 个写锁定请求,则读锁定请求可能会优先于挂起的写锁定请求。通常不会发生此行为,因为?max_write_lock_count默认情况下具有非常大的值。
命令行格式 | --mecab-rc-file=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
mecab_rc_file
设置 MeCab 全文解析器时使用?该选项。
该mecab_rc_file
选项定义配置文件的路径mecabrc
,即 MeCab 的配置文件。该选项是只读的,只能在启动时设置。mecabrc
初始化 MeCab 需要配置文件?。
有关 MeCab 全文解析器的信息,请参阅?第 12.9.9 节 “MeCab 全文解析器插件”。
有关可在 MeCabmecabrc
配置文件中指定的选项的信息,请参阅?Google Developers站点上的?MeCab 文档。
命令行格式 | --metadata-locks-cache-size=# |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 1024 |
最小值 | 1 |
最大值 | 1048576 |
单元 | 字节 |
元数据锁缓存的大小。服务器使用此缓存来避免同步对象的创建和销毁。这对于此类操作成本高昂的系统(例如 Windows XP)特别有用。
在 MySQL 5.7.4 中,元数据锁定实现的更改使该变量变得不必要,因此已弃用;预计它会在 MySQL 的未来版本中被删除。
命令行格式 | --metadata-locks-hash-instances=# |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 8 |
最小值 | 1 |
最大值 | 1024 |
元数据锁集可以划分为单独的哈希值,以允许访问不同对象的连接使用不同的锁定哈希值并减少争用。系统?metadata_locks_hash_instances?变量指定哈希值的数量(默认为 8)。
在 MySQL 5.7.4 中,元数据锁定实现的更改使该变量变得不必要,因此已弃用;预计它会在 MySQL 的未来版本中被删除。
命令行格式 | --min-examined-row-limit=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
检查少于此行数的查询不会记录到慢查询日志中。
命令行格式 | --multi-range-count=# |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 256 |
最小值 | 1 |
最大值 | 4294967295 |
该变量没有任何影响。它已被弃用并在 MySQL 8.0 中被删除。
命令行格式 | --myisam-data-pointer-size=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 6 |
最小值 | 2 |
最大值 | 7 |
单元 | 字节 |
CREATE TABLE默认指针大小(以字节为 单位),MyISAM
在未?MAX_ROWS
指定选项时?用于表 。该变量不能小于 2 或大于 7。默认值为 6。请参见第 B.3.2.10 节“表已满”。
命令行格式 | --myisam-max-sort-file-size=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值(Windows) | 2146435072 |
默认值(其他,64 位平台) | 9223372036853727232 |
默认值(其他,32 位平台) | 2147483648 |
最小值 | 0 |
最大值 (Windows) | 2146435072 |
最大值(其他,64 位平台) | 9223372036853727232 |
最大值(其他,32 位平台) | 2147483648 |
单元 | 字节 |
MyISAM
重新创建索引时(在REPAIR TABLE、?ALTER TABLE或 期间)?MySQL 允许使用的临时文件的最大大小LOAD DATA。如果文件大小大于此值,则会使用键缓存创建索引,但速度较慢。该值以字节为单位给出。
如果MyISAM
索引文件超过此大小并且磁盘空间可用,则增加该值可能会提高性能。包含原始索引文件所在目录的文件系统中必须有可用空间。
命令行格式 | --myisam-mmap-size=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值(64 位平台) | 18446744073709551615 |
默认值(32 位平台) | 4294967295 |
最小值 | 7 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
单元 | 字节 |
用于内存映射压缩MyISAM文件的最大内存量。MyISAM
如果使用?许多压缩表,则可以减小该值以减少内存交换问题的可能性。
命令行格式 | --myisam-recover-options[=list] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 枚举 |
默认值 | OFF |
有效值 |
|
设置MyISAM
存储引擎恢复模式。OFF
变量值是、DEFAULT
、?BACKUP
、FORCE
、 或?值的任意组合?QUICK
。如果指定多个值,请用逗号分隔它们。在服务器启动时指定没有值的变量与指定 相同?DEFAULT
,并且使用显式值指定""
将禁用恢复(与 值相同OFF
)。如果启用恢复,每次mysqld打开一个?MyISAM
表,它检查表是否被标记为崩溃或未正确关闭。(最后一个选项仅在禁用外部锁定的情况下运行时才有效。)如果是这种情况,mysqld会对表运行检查。如果表被损坏,?mysqld会尝试修复它。
以下选项会影响修复的工作方式。
选项 | 描述 |
---|---|
OFF | 没有恢复。 |
DEFAULT | 无需备份、强制或快速检查即可恢复。 |
BACKUP | 如果数据文件在恢复期间发生更改,请将? ?文件的备份保存为? . |
FORCE | 即使我们会从文件中丢失不止一行,也要运行恢复?.MYD 。 |
QUICK | 如果表中没有任何删除块,则不要检查表中的行。 |
在服务器自动修复表之前,它会将有关修复的注释写入错误日志。如果您希望能够在没有用户干预的情况下从大多数问题中恢复,则应该使用选项BACKUP,FORCE
。即使某些行被删除,这也会强制修复表,但它会保留旧数据文件作为备份,以便您以后可以检查发生了什么。
命令行格式 | --myisam-repair-threads=# |
---|---|
已弃用 | 5.7.38(在 5.7.39 中删除) |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 1 |
最小值 | 1 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
笔记
该系统变量在 MySQL 5.7 中已弃用;预计它会在 MySQL 的未来版本中被删除。
从 MySQL 5.7.38 开始,1 以外的值会产生警告。
如果该值大于 1,则MyISAM
?在此过程中并行创建表索引(每个索引在其自己的线程中)Repair by sorting
?。默认值为 1。
笔记
多线程修复是测试版质量的?代码。
命令行格式 | --myisam-sort-buffer-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 8388608 |
最小值 | 4096 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
单元 | 字节 |
在a?MyISAM
期间对索引 进行排序REPAIR TABLE或使用 或 创建索引时?分配的缓冲区大小?。?CREATE INDEXALTER TABLE
命令行格式 | --myisam-stats-method=name |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | nulls_unequal |
有效值 |
|
服务器NULL
在收集有关表索引值分布的统计信息时如何处理值MyISAM
。该变量具有三个可能的值:nulls_equal
、?nulls_unequal
和?nulls_ignored
。对于?nulls_equal
,所有NULL
?索引值都被视为相等,并形成一个大小等于值数量的单个值组?NULL
。对于?nulls_unequal
,NULL
?值被视为不相等,并且每个值?NULL
形成大小为 1 的不同值组。对于nulls_ignored
,?NULL
值将被忽略。
用于生成表统计信息的方法会影响优化器如何选择查询执行的索引,如第 8.3.7 节“InnoDB 和 MyISAM 索引统计信息收集”中所述。
命令行格式 | --myisam-use-mmap[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
使用内存映射来读取和写入?MyISAM
表。
mysql_native_password_proxy_users
命令行格式 | --mysql-native-password-proxy-users[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
该变量控制?mysql_native_password
内置身份验证插件是否支持代理用户。check_proxy_users?除非启用系统变量,否则它不会产生任何影响。有关用户代理的信息,请参阅第 6.2.14 节 “代理用户”。
命令行格式 | --named-pipe[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
平台特定 | 视窗 |
类型 | 布尔值 |
默认值 | OFF |
(仅限 Windows。)指示服务器是否支持通过命名管道的连接。
命令行格式 | --named-pipe-full-access-group=value |
---|---|
介绍 | 5.7.25 |
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
平台特定 | 视窗 |
类型 | 细绳 |
默认值 | empty string |
有效值 |
|
named_pipe(仅限 Windows。)当启用系统变量以支持命名管道连接?时,授予 MySQL 服务器创建的命名管道上的客户端的访问控制将设置为成功通信所需的最低限度 。一些MySQL客户端软件无需任何额外配置即可打开命名管道连接;但是,其他客户端软件可能仍然需要完全访问权限才能打开命名管道连接。
此变量设置 Windows 本地组的名称,MySQL 服务器授予其成员足够的访问权限以使用命名管道客户端。从 MySQL 5.7.34 开始,默认值设置为空字符串,这意味着没有 Windows 用户被授予对命名管道的完全访问权限。
可以在 Windows 中创建新的 Windows 本地组名称(例如?mysql_access_client_users
),然后在绝对需要访问时使用它来替换默认值。在这种情况下,请将组成员限制为尽可能少的用户,并在升级客户端软件时将用户从组中删除。尝试使用受影响的命名管道客户端打开与 MySQL 的连接的非组成员将被拒绝访问,直到 Windows 管理员将该用户添加到该组中。新添加的用户必须注销并重新登录才能加入该组(Windows 要求)。
将值设置为'*everyone*'
提供了一种独立于语言的方式来引用 Windows 上的Everyone 组。默认情况下,Everyone 组并不安全。
命令行格式 | --net-buffer-length=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 16384 |
最小值 | 1024 |
最大值 | 1048576 |
单元 | 字节 |
块大小 | 1024 |
每个客户端线程都与一个连接缓冲区和结果缓冲区相关联。两者都以给定的大小开始, 但根据需要net_buffer_length动态放大到 字节。max_allowed_packet结果缓冲区缩小到?net_buffer_length每个 SQL 语句之后。
通常不应更改此变量,但如果内存很少,则可以将其设置为客户端发送的语句的预期长度。如果语句超过此长度,连接缓冲区会自动扩大。net_buffer_length可设置的?最大值 为 1MB。
该变量的会话值是只读的。
命令行格式 | --net-read-timeout=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 30 |
最小值 | 1 |
最大值 | 31536000 |
单元 | 秒 |
在中止读取之前等待来自连接的更多数据的秒数。当服务器从客户端读取数据时,net_read_timeout超时值控制何时中止。当服务器向客户端写入时,?net_write_timeout
超时值控制何时中止。也可以看看?slave_net_timeout。
命令行格式 | --net-retry-count=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 10 |
最小值 | 1 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
如果通信端口上的读取或写入被中断,请在放弃之前重试多次。在 FreeBSD 上该值应该设置得相当高,因为内部中断会发送到所有线程。
命令行格式 | --net-write-timeout=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 60 |
最小值 | 1 |
最大值 | 31536000 |
单元 | 秒 |
在中止写入之前等待块写入连接的秒数。也可以看看?net_read_timeout。
命令行格式 | --new[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
禁用于 | skip-new |
类型 | 布尔值 |
默认值 | OFF |
该变量在 MySQL 4.0 中用于打开某些 4.1 行为,并保留用于向后兼容。其价值始终为OFF
.
在 NDB Cluster 中,设置此变量可以ON
?使用表以外的分区类型?KEY
或LINEAR KEY
与?NDB表一起使用的分区类型。此实验性功能在生产中不受支持,现已弃用,因此可能会在未来版本中删除。有关其他信息,请参阅?用户定义的分区和 NDB 存储引擎(NDB Cluster)。
命令行格式 | --ngram-token-size=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 2 |
最小值 | 1 |
最大值 | 10 |
定义 n-gram 全文解析器的 n-gram 标记大小。该ngram_token_size
选项是只读的,只能在启动时修改。默认值为 2(二元组)。最大值为 10。
有关如何配置此变量的更多信息,请参阅?第 12.9.8 节 “ngram 全文解析器”。
命令行格式 | --offline-mode[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
服务器是否处于“离线模式”,其具有以下特征:
没有该?SUPER权限的已连接客户端用户将在下一个请求时断开连接,并出现相应的错误。断开连接包括终止正在运行的语句和释放锁。此类客户端也无法发起新连接,并收到相应的错误。
具有该?SUPER权限的客户端用户不会断开连接,并且可以发起新的连接来管理服务器。
副本线程被允许继续向服务器应用数据。
只有具有SUPER?权限的用户才能控制离线模式。要将服务器置于脱机模式,请将?offline_mode系统变量的值从更改OFF
为ON
。要恢复正常操作,请?offline_mode从 更改ON
为OFF
。在离线模式下,被拒绝访问的客户端会收到错误?ER_SERVER_OFFLINE_MODE。
命令行格式 | --old[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 布尔值 |
默认值 | OFF |
old是一个兼容性变量。默认情况下它是禁用的,但可以在启动时启用以将服务器恢复到旧版本中存在的行为。
启用后old,会将索引提示的默认范围更改为 MySQL 5.1.17 之前使用的范围。也就是说,不带?FOR
子句的索引提示仅适用于如何使用索引进行行检索,而不适用于ORDER BY
orGROUP BY
子句的解析。(请参阅?第 8.9.4 节“索引提示”。)请注意在复制设置中启用此功能。对于基于语句的二进制日志记录,源和副本具有不同的模式可能会导致复制错误。
命令行格式 | --old-alter-table[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
启用此变量后,服务器不会使用处理ALTER TABLE操作的优化方法。它恢复为使用临时表,复制数据,然后将临时表重命名为原始表,如 MySQL 5.0 及更早版本所使用的那样。有关操作的更多信息?ALTER TABLE,请参见?第 13.1.8 节“ALTER TABLE 语句”。
命令行格式 | --old-passwords=value |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | 0 |
有效值 |
|
笔记
该系统变量在 MySQL 5.7 中已弃用;预计它会在 MySQL 的未来版本中被删除。
该变量控制函数使用的密码哈希方法?PASSWORD()。它还影响?使用子句指定密码的CREATE USER和 语句执行的密码散列。?GRANTIDENTIFIED BY
下表显示了每种密码哈希方法的允许值old_passwords
以及哪些身份验证插件使用该哈希方法。
密码哈希方法 | 旧密码值 | 关联身份验证插件 |
---|---|---|
MySQL 4.1 原生哈希 | 0 | mysql_native_password |
SHA-256 哈希 | 2 | sha256_password |
如果设置,请按照第 6.4.1.5 节 “SHA-256 可插入身份验证”中的插件?old_passwords=2使用说明进行操作?。?sha256_password
服务器?old_passwords在启动时设置全局值,使其与系统变量指示的身份验证插件所需的密码哈希方法一致?default_authentication_plugin?。
当客户端成功连接到服务器时,服务器会?old_passwords为帐户身份验证方法设置适当的会话值。例如,如果帐户使用?sha256_password
身份验证插件,则服务器设置old_passwords=2
.
有关身份验证插件和哈希格式的其他信息,请参阅?第 6.2.13 节“可插入身份验证”和?第 6.1.2.4 节“MySQL 中的密码哈希”。
命令行格式 | --open-files-limit=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 5000, with possible adjustment |
最小值 | 0 |
最大值 | platform dependent |
操作系统中?mysqld?可用的文件描述符数量 :
启动时,mysqldsetrlimit()
使用通过直接设置此变量或使用mysqld_safe--open-files-limit?选项请求的值来保留描述符。如果?mysqld产生错误,请尝试增加该?值。在内部,该变量的最大值是最大无符号整数值,但实际最大值取决于平台。?Too many open files
open_files_limit
在运行时, 的值 表示操作系统实际允许mysqldopen_files_limit?的文件描述符的数量,这可能与启动时请求的值不同。如果无法分配启动期间请求的文件描述符数量,?mysqld将向错误日志写入警告。
有效值?open_files_limit基于系统启动时指定的值(如果有)以及max_connections?和的值table_open_cache
,使用以下公式:
10 + max_connections + (table_open_cache * 2)
max_connections * 5
操作系统限制(如果该限制为正但不是无穷大)。
如果操作系统限制为 Infinity:?open_files_limit
如果在启动时指定则为该值,否则为 5000。
服务器尝试使用这些值中的最大值来获取文件描述符的数量。如果无法获取那么多描述符,服务器将尝试获取系统允许的尽可能多的描述符。
在 MySQL 无法更改打开文件数的系统上,有效值为 0。
在 Unix 上,该值不能设置为大于ulimit -n命令显示的值。在使用 的 Linux 系统上systemd
,该值不能设置为大于LimitNOFile
?(如果未设置DefaultLimitNOFILE
, 则为 );LimitNOFile
否则,在 Linux 上, 的值open_files_limit
不能超过ulimit -n。
命令行格式 | --optimizer-prune-level=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 1 |
最小值 | 0 |
最大值 | 1 |
控制查询优化期间应用的启发式方法,以从优化器搜索空间中删除前景较差的部分计划。值为 0 会禁用启发式算法,以便优化器执行详尽的搜索。值为 1 会导致优化器根据中间计划检索的行数来修剪计划。
命令行格式 | --optimizer-search-depth=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 62 |
最小值 | 0 |
最大值 | 62 |
查询优化器执行的最大搜索深度。大于查询中关系数量的值会产生更好的查询计划,但生成查询的执行计划需要更长的时间。小于查询中关系数量的值会更快地返回执行计划,但生成的计划可能远非最佳。如果设置为 0,系统会自动选择一个合理的值。
命令行格式 | --optimizer-switch=value |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 放 |
有效值 (≥ 5.7.33) |
|
有效值(≤ 5.7.32) |
|
系统optimizer_switch变量可以控制优化器的行为。该变量的值是一组标志,每个标志都有一个值?on
或off
来指示相应的优化器行为是启用还是禁用。该变量具有全局值和会话值,并且可以在运行时更改。全局默认值可以在服务器启动时设置。
要查看当前的优化器标志集,请选择变量值:
mysql> SELECT @@optimizer_switch\G
*************************** 1. row ***************************
@@optimizer_switch: index_merge=on,index_merge_union=on,
index_merge_sort_union=on,
index_merge_intersection=on,
engine_condition_pushdown=on,
index_condition_pushdown=on,
mrr=on,mrr_cost_based=on,
block_nested_loop=on,batched_key_access=off,
materialization=on,semijoin=on,loosescan=on,
firstmatch=on,duplicateweedout=on,
subquery_materialization_cost_based=on,
use_index_extensions=on,
condition_fanout_filter=on,derived_merge=on,
prefer_ordering_index=on
有关此变量的语法及其控制的优化器行为的更多信息,请参阅?第 8.9.2 节 “可切换优化”。
命令行格式 | --optimizer-trace=value |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 细绳 |
该变量控制优化器跟踪。有关详细信息,请参阅?MySQL 内部:跟踪优化器。
命令行格式 | --optimizer-trace-features=value |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 细绳 |
该变量启用或禁用选定的优化器跟踪功能。有关详细信息,请参阅?MySQL 内部:跟踪优化器。
命令行格式 | --optimizer-trace-limit=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 1 |
最小值 | 0 |
最大值 | 2147483647 |
要显示的优化器跟踪的最大数量。有关详细信息,请参阅?MySQL 内部:跟踪优化器。
命令行格式 | --optimizer-trace-max-mem-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 16384 |
最小值 | 0 |
最大值 | 4294967295 |
单元 | 字节 |
存储的优化器跟踪的最大累积大小。有关详细信息,请参阅?MySQL 内部:跟踪优化器。
命令行格式 | --optimizer-trace-offset=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | -1 |
最小值 | -2147483647 |
最大值 | 2147483647 |
要显示的优化器跟踪的偏移量。有关详细信息,请参阅?MySQL 内部:跟踪优化器。
performance_schema_
xxx
性能模式系统变量在第 25.15 节“性能模式系统变量”?中列出?。这些变量可用于配置性能模式操作。
命令行格式 | --parser-max-mem-size=# |
---|---|
介绍 | 5.7.12 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值(64 位平台) | 18446744073709551615 |
默认值(32 位平台) | 4294967295 |
最小值 | 10000000 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
单元 | 字节 |
解析器可用的最大内存量。默认值对可用内存没有限制。可以减小该值以防止因解析长或复杂的 SQL 语句而导致内存不足的情况。
命令行格式 | --pid-file=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
服务器在其中写入其进程 ID 的文件的路径名。除非给出绝对路径名来指定不同的目录,否则服务器会在数据目录中创建文件。如果指定此变量,则必须指定一个值。如果不指定此变量,MySQL 将使用默认值?
,其中host_name
.pidhost_name
是主机的名称。
进程 ID 文件由其他程序(例如?mysqld_safe)使用来确定服务器的进程 ID。在 Windows 上,此变量还会影响默认错误日志文件名。请参见第 5.4.2 节“错误日志”。
命令行格式 | --plugin-dir=dir_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 目录名称 |
默认值 | BASEDIR/lib/plugin |
插件目录的路径名。
如果服务器可写入插件目录,则用户可以使用 .txt 将可执行代码写入目录中的文件SELECT ... INTO DUMPFILE。可以通过将?plugin_dir服务器设置为只读或设置 为可以安全写入的?secure_file_priv
目录来防止这种情况。SELECT
命令行格式 | --port=port_num |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 3306 |
最小值 | 0 |
最大值 | 65535 |
服务器侦听 TCP/IP 连接的端口号。该变量可以使用?--port选项进行设置。
命令行格式 | --preload-buffer-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 32768 |
最小值 | 1024 |
最大值 | 1073741824 |
单元 | 字节 |
预加载索引时分配的缓冲区大小。
如果设置为 0 或OFF
(默认值),则禁用语句分析。如果设置为 1 或ON
,则启用语句分析,并且?SHOW PROFILE和?SHOW PROFILES语句提供对分析信息的访问。请参见?第 13.7.5.31 节“SHOW PROFILES 语句”。
该变量已被弃用;预计它会在 MySQL 的未来版本中被删除。
启用后维护分析信息的语句数profiling。默认值为 15。最大值为 100。将该值设置为 0 可有效禁用分析。请参见?第 13.7.5.31 节“SHOW PROFILES 语句”。
该变量已被弃用;预计它会在 MySQL 的未来版本中被删除。
系统变量 |
|
---|---|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 10 |
最小值 | 0 |
最大值 | 4294967295 |
MySQL 服务器使用的客户端/服务器协议的版本。
系统变量 |
|
---|---|
范围 | 会议 |
动态的 | 不 |
类型 | 细绳 |
如果当前客户端是另一个用户的代理,则此变量是代理用户帐户名。否则,该变量为NULL
。请参见?第 6.2.14 节“代理用户”。
系统变量 |
|
---|---|
范围 | 会议 |
动态的 | 是的 |
类型 | 布尔值 |
该系统变量供内部服务器使用。?pseudo_slave_mode协助正确处理源自较旧或较新服务器(比当前处理它们的服务器)的事务。mysqlbinlog在执行任何 SQL 语句之前将 的值设置?pseudo_slave_mode为 true。
pseudo_slave_mode对准备好的 XA 事务的处理有以下影响,这些事务可以附加到处理会话(默认情况下,发出 的会话?XA START)或从处理会话中分离:
如果为 true,并且处理会话已执行内部使用BINLOG?语句,则一旦事务的第一部分完成,XA 事务就会自动从会话中分离XA PREPARE,因此任何具有该事务的会话都可以提交或回滚它们?XA_RECOVER_ADMIN特权。
如果为 false,则只要该会话处于活动状态,XA 事务就会附加到处理会话,在此期间没有其他会话可以提交该事务。仅当会话断开或服务器重新启动时,准备好的事务才会分离。
系统变量 |
|
---|---|
范围 | 会议 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 2147483647 |
最小值 | 0 |
最大值 | 2147483647 |
该变量供内部服务器使用。
警告
更改系统变量的会话值?pseudo_thread_id会更改函数返回的值?CONNECTION_ID()。
命令行格式 | --query-alloc-block-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 8192 |
最小值 | 1024 |
最大值 | 4294966272 |
单元 | 字节 |
块大小 | 1024 |
为语句解析和执行期间创建的对象分配的内存块的分配大小(以字节为单位)。如果您遇到内存碎片问题,增加此参数可能会有所帮助。
字节数的块大小为 1024。如果值不是块大小的精确倍数,则在存储系统变量的值之前,MySQL 服务器将向下舍入为块大小的下一个较小倍数。解析器允许的值最大为平台的最大无符号整数值(对于 32 位系统为4294967295 或 2?32 ?1,对于 64 位系统为 18446744073709551615 或 2?64??1),但实际最大值比块大小小。
命令行格式 | --query-cache-limit=# |
---|---|
已弃用 | 5.7.20 |
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 1048576 |
最小值 | 0 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
单元 | 字节 |
不要缓存大于此字节数的结果。默认值为 1MB。
笔记
从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。弃用包括?query_cache_limit.
命令行格式 | --query-cache-min-res-unit=# |
---|---|
已弃用 | 5.7.20 |
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 4096 |
最小值 | 512 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
单元 | 字节 |
查询缓存分配的块的最小大小(以字节为单位)。默认值为 4096 (4KB)。该变量的调整信息在第 8.10.3.3 节“查询缓存配置”中给出?。
笔记
从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。弃用包括?query_cache_min_res_unit.
命令行格式 | --query-cache-size=# |
---|---|
已弃用 | 5.7.20 |
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 1048576 |
最小值 | 0 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
单元 | 字节 |
分配用于缓存查询结果的内存量。默认情况下,查询缓存是禁用的。这是使用默认值 1M 和默认值?query_cache_type0 来实现的。(如果将大小设置为 0,为了显着减少开销,您还应该使用?query_cache_type=0.
允许的值为 1024 的倍数;其他值向下舍入到最接近的倍数。对于 的非零值?query_cache_size,即使 也分配了那么多字节的内存?query_cache_type=0
。有关更多信息,请参见?第 8.10.3.3 节 “查询缓存配置”。
查询缓存需要至少约 40KB 的大小来分配其结构。(确切的大小取决于系统体系结构。)如果将 的值设置?query_cache_size得太小,则会出现警告,如?第 8.10.3.3 节 “查询缓存配置”中所述。
笔记
从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。弃用包括?query_cache_size.
命令行格式 | --query-cache-type=# |
---|---|
已弃用 | 5.7.20 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | 0 |
有效值 |
|
设置查询缓存类型。设置该?GLOBAL
值会设置此后连接的所有客户端的类型。各个客户端可以设置该?SESSION
值来影响自己对查询缓存的使用。可能的值如下表所示。
选项 | 描述 |
---|---|
0 或者OFF | 不要在查询缓存中缓存结果或从查询缓存中检索结果。请注意,这不会释放查询缓存缓冲区。为此,您应该设置?query_cache_size为 0。 |
1 或者ON | 缓存所有可缓存的查询结果,以 开头的查询结果除外?SELECT SQL_NO_CACHE 。 |
2 或者DEMAND | 仅缓存以 开头的可缓存查询的结果SELECT SQL_CACHE 。 |
该变量默认为OFF
.
如果服务器启动时?query_cache_type
设置为 0,则它根本不获取查询缓存互斥体,这意味着查询缓存无法在运行时启用,并且会减少查询执行的开销。
笔记
从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。弃用包括?query_cache_type.
命令行格式 | --query-cache-wlock-invalidate[={OFF|ON}] |
---|---|
已弃用 | 5.7.20 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
通常,当一个客户端获取WRITE
?表上的锁时,如果查询结果存在于查询缓存中,则不会阻止其他客户端发出从表中读取的语句。将此变量设置为 1 会导致获取WRITE
表的锁,从而使查询缓存中引用该表的任何查询无效。这会强制尝试访问该表的其他客户端在锁生效时等待。
笔记
从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。弃用包括?query_cache_wlock_invalidate.
命令行格式 | --query-prealloc-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 8192 |
最小值 | 8192 |
最大值(64 位平台) | 18446744073709550592 |
最大值(32 位平台) | 4294966272 |
单元 | 字节 |
块大小 | 1024 |
用于语句解析和执行的持久缓冲区的大小(以字节为单位)。该缓冲区在语句之间不会被释放。如果您正在运行复杂的查询,较大的?query_prealloc_size值可能有助于提高性能,因为它可以减少服务器在查询执行操作期间执行内存分配的需要。您应该意识到,这样做并不一定完全消除分配;而是需要注意。在某些情况下,服务器仍然可以分配内存,例如用于与事务或存储的程序相关的操作。
系统变量 |
|
---|---|
范围 | 会议 |
动态的 | 是的 |
类型 | 整数 |
默认值 | N/A |
最小值 | 0 |
最大值 | 4294967295 |
和变量仅rand_seed1作为?rand_seed2会话变量存在,并且可以设置但不能读取。变量(但不是它们的值)显示在 的输出中SHOW VARIABLES。
这些变量的目的是支持函数的复制RAND()。对于调用 的语句RAND(),源将两个值传递给副本,在副本中它们用于为随机数生成器提供种子。副本使用这些值来设置会话变量?rand_seed1,?rand_seed2
以便?RAND()在副本上生成与源上相同的值。
请参阅 的说明?rand_seed1。
命令行格式 | --range-alloc-block-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 4096 |
最小值 | 4096 |
最大值(64 位平台) | 18446744073709550592 |
最大值 | 4294966272 |
单元 | 字节 |
块大小 | 1024 |
进行范围优化时分配的块的大小(以字节为单位)。
字节数的块大小为 1024。如果值不是块大小的精确倍数,则在存储系统变量的值之前,MySQL 服务器将向下舍入为块大小的下一个较小倍数。解析器允许的值最大为平台的最大无符号整数值(对于 32 位系统为4294967295 或 2?32 ?1,对于 64 位系统为 18446744073709551615 或 2?64??1),但实际最大值比块大小小。
命令行格式 | --range-optimizer-max-mem-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值(≥ 5.7.12) | 8388608 |
默认值(≤ 5.7.11) | 1536000 |
最小值 | 0 |
最大值 | 18446744073709551615 |
单元 | 字节 |
范围优化器的内存消耗限制。值 0 表示“没有限制”。如果优化器考虑的执行计划使用范围访问方法,但优化器估计该方法所需的内存量将超过限制,则会放弃该计划并考虑其他计划。有关详细信息,请参阅?限制范围优化的内存使用。
系统变量 |
|
---|---|
范围 | 会议 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | STRICT |
有效值 |
|
供mysqlbinlog内部使用。IDEMPOTENT
该变量在模式和 模式之间切换服务器?STRICT
。mode 会导致抑制mysqlbinlog生成的语句IDEMPOTENT
?中的重复键和未找到键错误。当在服务器上重播基于行的二进制日志导致与现有数据发生冲突时,此模式非常有用。?当您通过将以下内容写入输出来指定选项 时,?mysqlbinlog设置此模式:BINLOG--idempotent
SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
命令行格式 | --read-buffer-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 131072 |
最小值 | 8192 |
最大值 | 2147479552 |
单元 | 字节 |
块大小 | 4096 |
对表进行顺序扫描的每个线程都会为其?MyISAM
扫描的每个表分配一个此大小(以字节为单位)的缓冲区。如果执行多次顺序扫描,您可能需要增加该值,默认为 131072。该变量的值应该是 4KB 的倍数。如果它设置的值不是 4KB 的倍数,则其值将向下舍入到最接近的 4KB 倍数。
此选项还用于所有存储引擎的以下上下文中:
用于在对ORDER BY
.
用于批量插入分区。
用于缓存嵌套查询的结果。
read_buffer_size还以另一种特定于存储引擎的方式使用:确定MEMORY?表的内存块大小。
有关不同操作期间内存使用的更多信息,请参阅第 8.12.4.1 节“MySQL 如何使用内存”。
命令行格式 | --read-only[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
如果read_only启用该系统变量,则服务器不允许除具有该?SUPER权限的用户之外的任何客户端更新。默认情况下禁用此变量。
服务器还支持?super_read_only系统变量(默认情况下禁用),它具有以下效果:
如果super_read_only启用,服务器将禁止客户端更新,即使是具有该SUPER?权限的用户也是如此。
设置super_read_only?为ON
隐式?read_only强制?ON
.
设置read_only为?OFF
隐式?super_read_only强制?OFF
.
即使read_only启用,服务器也允许以下操作:
如果服务器是副本,则由复制线程执行更新。read_only在复制设置中,在副本服务器上启用以确保副本仅接受来自源服务器而不是来自客户端的更新?非常有用。
使用ANALYZE TABLEor?OPTIMIZE TABLE语句。只读模式的目的是防止表结构或内容发生更改。分析和优化不属于此类更改。例如,这意味着可以使用mysqlcheck?对只读副本执行一致性检查。?--all-databases?--analyze
使用FLUSH STATUS?语句,这些语句始终写入二进制日志。
对表的操作TEMPORARY
。
插入日志表(mysql.general_log
和?mysql.slow_log
);请参见?第 5.4.1 节“选择通用查询日志和慢查询日志输出目的地”。
从 MySQL 5.7.16 开始,更新了 Performance Schema 表,例如UPDATEor?TRUNCATE TABLE操作。
复制源服务器上的更改read_only不会复制到副本服务器。可以在副本上设置该值,而与源上的设置无关。
以下条件适用于尝试启用?read_only(包括因启用而导致的隐式尝试?super_read_only
):
LOCK TABLES如果您有任何显式锁定(通过 获取)或有挂起的事务,?则尝试失败并发生错误。
当其他客户端有任何正在进行的语句、活动或正在进行的提交时,尝试会阻塞LOCK TABLES WRITE
,直到锁被释放并且语句和事务结束。当启用尝试read_only挂起时,其他客户端对表锁或开始事务的请求也会阻塞,直到?read_only设置完成。
如果存在持有元数据锁的活动事务,则尝试会阻塞,直到这些事务结束。
read_only可以在持有全局读锁(通过 获取?FLUSH TABLES WITH READ LOCK)时启用,因为这不涉及表锁。
命令行格式 | --read-rnd-buffer-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 262144 |
最小值 | 1 |
最大值 | 2147483647 |
单元 | 字节 |
该变量用于从MyISAM
?表中读取,并且对于任何存储引擎,用于多范围读取优化。
当在MyISAM
键排序操作之后按排序顺序从表中读取行时,将通过此缓冲区读取行以避免磁盘查找。请参见?第 8.2.1.14 节“ORDER BY 优化”。将变量设置为较大的值可以显ORDER BY
?着提高性能。但是,这是为每个客户端分配的缓冲区,因此不应将全局变量设置为较大的值。相反,仅从需要运行大型查询的客户端内更改会话变量。
有关不同操作期间内存使用的更多信息,请参阅第 8.12.4.1 节“MySQL 如何使用内存”。有关多范围读取优化的信息,请参阅?第 8.2.1.10 节“多范围读取优化”。
命令行格式 | --require-secure-transport[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
客户端与服务器的连接是否需要使用某种形式的安全传输。启用此变量后,服务器仅允许使用 TLS/SSL 加密的 TCP/IP 连接,或使用套接字文件(在 Unix 上)或共享内存(在 Windows 上)的连接。服务器拒绝非安全连接尝试,该连接尝试会失败并出现?ER_SECURE_TRANSPORT_REQUIRED?错误。
此功能补充了优先考虑的每帐户 SSL 要求。例如,如果使用 定义帐户REQUIRE SSL
,则启用后?require_secure_transport无法使用该帐户通过 Unix 套接字文件进行连接。
服务器可能没有可用的安全传输。例如,如果 Windows 上的服务器在启动时未指定任何 SSL 证书或密钥文件并且?shared_memory
禁用系统变量,则不支持安全传输。在这些情况下,尝试在启动时启用会?require_secure_transport导致服务器将消息写入错误日志并退出。尝试在运行时启用该变量会失败并出现?ER_NO_SECURE_TRANSPORTS_CONFIGURED?错误。
另请参阅将加密连接配置为强制。
命令行格式 | --secure-auth[={OFF|ON}] |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
有效值 | ON |
如果启用此变量,服务器会阻止尝试使用以旧(4.1 之前)格式存储密码的帐户的客户端的连接。启用此变量可防止所有使用旧格式的密码(从而防止通过网络进行不安全的通信)。
该变量已被弃用;预计它会在 MySQL 的未来版本中被删除。它始终处于启用状态,尝试禁用它会产生错误。
如果启用此变量并且权限表采用 4.1 之前的格式,服务器启动会失败并出现错误。请参见?第 6.4.1.3 节,“从 4.1 版之前的密码散列和 mysql_old_password 插件迁移”。
笔记
使用 4.1 之前的哈希方法的密码不如使用本机密码哈希方法的密码安全,应避免使用。4.1 之前的密码已被弃用,并且在 MySQL 5.7.5 中删除了对它们的支持。有关帐户升级说明,请参阅?第 6.4.1.3 节 “从 4.1 版之前的密码散列和 mysql_old_password 插件迁移”。
命令行格式 | --secure-file-priv=dir_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
默认值 | platform specific |
有效值 |
|
该变量用于限制数据导入和导出操作的效果,例如?LOAD DATAand?SELECT ... INTO OUTFILE语句和函数 执行的LOAD_FILE()操作。这些操作仅允许具有权限的用户执行?FILE。
secure_file_priv可以设置如下:
如果为空,则该变量无效。这不是一个安全的设置。
如果设置为目录名称,服务器将限制导入和导出操作仅适用于该目录中的文件。该目录必须存在;服务器不会创建它。
如果设置为NULL
,服务器将禁用导入和导出操作。
默认值是特定于平台的,并且取决于CMake选项 的值,如下表所示。如果从源代码构建,?要显式指定默认 值,请使用CMake选项。?INSTALL_LAYOUT?secure_file_privINSTALL_SECURE_FILE_PRIVDIR
INSTALL_LAYOUT 价值 | 默认secure_file_priv 值 |
---|---|
STANDALONE ,WIN | NULL (>= MySQL 5.7.16),空 (< MySQL 5.7.16) |
DEB ,?RPM ,?SLES ,?SVR4 | /var/lib/mysql-files |
否则 | mysql-files 低于该?CMAKE_INSTALL_PREFIX值 |
secure_file_priv要设置嵌入式服务器的?默认 值libmysqld
,请使用?CMake选项。该选项的默认值为。?INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR?NULL
服务器在启动时检查 的值?secure_file_priv,如果该值不安全,则将警告写入错误日志。如果非值为NULL
空,或者该值为数据目录或其子目录,或者所有用户都可以访问的目录,则认为该值不安全。如果secure_file_priv设置为不存在的路径,服务器将错误消息写入错误日志并退出。
命令行格式 | --session-track-gtids=value |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | OFF |
有效值 |
|
控制服务器是否向客户端返回 GTID,使客户端能够使用它们来跟踪服务器状态。根据变量值,在执行每个事务结束时,将捕获服务器的 GTID 并将其作为确认的一部分返回给客户端。可能的值session_track_gtids如下:
OFF
:服务器不向客户端返回GTID。这是默认设置。
OWN_GTID
:服务器返回自上次确认以来该客户端在当前会话中成功提交的所有事务的 GTID。通常,这是最后提交的事务的单个 GTID,但如果单个客户端请求导致多个事务,则服务器返回包含所有相关 GTID 的 GTID 集。
ALL_GTIDS
:服务器返回其?gtid_executed系统变量的全局值,该值是在事务成功提交后读取的。除了刚刚提交的事务的 GTID 之外,该 GTID 集还包括任何客户端在服务器上提交的所有事务,并且可以包括在当前正在确认的事务提交后提交的事务。
session_track_gtids不能在事务上下文中设置。
有关会话状态跟踪的更多信息,请参阅?第 5.1.15 节 “客户端会话状态的服务器跟踪”。
命令行格式 | --session-track-schema[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
控制服务器是否跟踪当前会话中设置默认架构(数据库)的时间,并通知客户端使架构名称可用。
如果启用架构名称跟踪器,则每次设置默认架构时都会发生名称通知,即使新架构名称与旧架构名称相同。
有关会话状态跟踪的更多信息,请参阅?第 5.1.15 节 “客户端会话状态的服务器跟踪”。
命令行格式 | --session-track-state-change[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
控制服务器是否跟踪当前会话状态的更改并在发生状态更改时通知客户端。可以报??告客户端会话状态的以下属性的更改:
默认架构(数据库)。
系统变量的会话特定值。
用户定义的变量。
临时表。
准备好的陈述。
如果启用了会话状态跟踪器,则即使新属性值与旧属性值相同,涉及所跟踪会话属性的每个更改都会发出通知。例如,将用户定义的变量设置为其当前值会产生通知。
该?session_track_state_change?变量仅控制更改发生时间的通知,而不控制更改内容。例如,当设置默认架构或分配跟踪会话系统变量时,会发生状态更改通知,但通知不包括架构名称或变量值。要接收架构名称或会话系统变量值的通知,请分别使用?session_track_schema或?session_track_system_variables?系统变量。
笔记
给自身赋值?session_track_state_change?不被视为状态更改,并且不会如此报告。但是,如果其名称列在 的值中?session_track_system_variables
,则对其进行任何分配都会导致新值的通知。
有关会话状态跟踪的更多信息,请参阅?第 5.1.15 节 “客户端会话状态的服务器跟踪”。
session_track_system_variables
命令行格式 | --session-track-system-variables=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 细绳 |
默认值 | time_zone, autocommit, character_set_client, character_set_results, character_set_connection |
控制服务器是否跟踪会话系统变量的分配并通知客户端每个分配的变量的名称和值。变量值是要跟踪分配的变量的逗号分隔列表。time_zone默认情况下,为、?autocommit、?character_set_client、?character_set_results和?启用通知?character_set_connection。(后三个变量是受 影响的?SET NAMES。)
特殊值*
使服务器跟踪对所有会话变量的分配。如果给定,则该值必须由其自身指定,而无需特定的系统变量名称。
要禁用会话变量分配的通知,请设置?session_track_system_variables?为空字符串。
如果启用会话系统变量跟踪,则即使新值与旧值相同,也会对跟踪的会话变量的所有分配发出通知。
有关会话状态跟踪的更多信息,请参阅?第 5.1.15 节 “客户端会话状态的服务器跟踪”。
session_track_transaction_info
命令行格式 | --session-track-transaction-info=value |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | OFF |
有效值 |
|
控制服务器是否跟踪当前会话中事务的状态和特征,并通知客户端提供此信息。session_track_transaction_info?允许使用?以下 值:
OFF
:禁用事务状态跟踪。这是默认设置。
STATE
:启用事务状态跟踪而不进行特征跟踪。状态跟踪使客户端能够确定事务是否正在进行以及是否可以将其移至不同的会话而不回滚。
CHARACTERISTICS
:启用事务状态跟踪,包括特征跟踪。特征跟踪使客户端能够确定如何在另一个会话中重新启动事务,使其具有与原始会话中相同的特征。以下特征与此目的相关:
ISOLATION LEVEL
READ ONLY
READ WRITE
WITH CONSISTENT SNAPSHOT
为了让客户端安全地将事务重新定位到另一个会话,它不仅必须跟踪事务状态,还必须跟踪事务特征。此外,客户端必须跟踪?transaction_isolation
和?transaction_read_only
系统变量才能正确确定会话默认值。(要跟踪这些变量,请将它们列在系统变量的值中?session_track_system_variables?。)
有关会话状态跟踪的更多信息,请参阅?第 5.1.15 节 “客户端会话状态的服务器跟踪”。
sha256_password_auto_generate_rsa_keys
命令行格式 | --sha256-password-auto-generate-rsa-keys[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 布尔值 |
默认值 | ON |
如果服务器是使用 OpenSSL 编译的,则此变量可用(请参见第 6.3.4 节 “SSL 库相关功能”)。它控制服务器是否在数据目录中自动生成 RSA 私钥/公钥对文件(如果它们尚不存在)。
启动时,如果?sha256_password_auto_generate_rsa_keys?启用了系统变量,未指定 RSA 选项,并且数据目录中缺少 RSA 文件,服务器会自动在数据目录中生成 RSA 私钥/公钥对文件。这些文件支持使用 RSA 通过未加密连接为插件验证的帐户进行安全密码交换?sha256_password
;请参见?第 6.4.1.5 节“SHA-256 可插入身份验证”。
有关 RSA 文件自动生成的更多信息,包括文件名和特征,请参阅?第 6.3.3.1 节 “使用 MySQL 创建 SSL 和 RSA 证书和密钥”
系统auto_generate_certs?变量是相关的,但控制使用 SSL 进行安全连接所需的 SSL 证书和密钥文件的自动生成。
sha256_password_private_key_path
命令行格式 | --sha256-password-private-key-path=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
默认值 | private_key.pem |
如果 MySQL 是使用 OpenSSL 编译的,则此变量可用(请参见第 6.3.4 节“SSL 库相关功能”)。它的值是身份验证插件的 RSA 私钥文件的路径名?sha256_password
。如果文件被命名为相对路径,则它被解释为相对于服务器数据目录。该文件必须是 PEM 格式。
重要的
由于该文件存储私钥,因此应限制其访问模式,以便只有 MySQL 服务器可以读取它。
有关 的信息sha256_password
,请参阅?第 6.4.1.5 节 “SHA-256 可插入身份验证”。
命令行格式 | --sha256-password-proxy-users[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
该变量控制?sha256_password
内置身份验证插件是否支持代理用户。check_proxy_users除非启用系统变量,否则它不会产生任何影响 。有关用户代理的信息,请参阅?第 6.2.14 节 “代理用户”。
sha256_password_public_key_path
命令行格式 | --sha256-password-public-key-path=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
默认值 | public_key.pem |
如果 MySQL 是使用 OpenSSL 编译的,则此变量可用(请参见第 6.3.4 节“SSL 库相关功能”)。它的值是身份验证插件的 RSA 公钥文件的路径名?sha256_password
。如果文件被命名为相对路径,则它被解释为相对于服务器数据目录。该文件必须是 PEM 格式。由于该文件存储公钥,因此可以将副本免费分发给客户端用户。(使用 RSA 密码加密连接到服务器时显式指定公钥的客户端必须使用与服务器使用的相同的公钥。)
有关 的信息sha256_password
,包括有关客户端如何指定 RSA 公钥的信息,请参阅第 6.4.1.5 节 “SHA-256 可插入身份验证”。
命令行格式 | --shared-memory[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
平台特定 | 视窗 |
类型 | 布尔值 |
默认值 | OFF |
(仅限 Windows。)服务器是否允许共享内存连接。
命令行格式 | --shared-memory-base-name=name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
平台特定 | 视窗 |
类型 | 细绳 |
默认值 | MYSQL |
(仅限 Windows。)用于共享内存连接的共享内存的名称。当在一台物理机上运行多个 MySQL 实例时,这非常有用。默认名称是MYSQL
.?该名称区分大小写。
仅当服务器在启用?shared_memory系统变量以支持共享内存连接的情况下启动时,此变量才适用。
命令行格式 | --show-compatibility-56[={OFF|ON}] |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
具有INFORMATION_SCHEMA
包含系统和状态变量信息的表(请参见?第 24.3.11 节“INFORMATION_SCHEMA GLOBAL_VARIABLES 和 SESSION_VARIABLES 表”和?第 24.3.10 节“INFORMATION_SCHEMA GLOBAL_STATUS 和 SESSION_STATUS 表”)。从 MySQL 5.7.6 开始,性能模式还包含系统和状态变量表(请参见?第 25.12.13 节“性能模式系统变量表”和?第 25.12.14 节“性能模式状态变量表”)。性能模式表旨在取代?INFORMATION_SCHEMA
表,从 MySQL 5.7.6 开始已弃用,并在 MySQL 8.0 中删除。
有关从?INFORMATION_SCHEMA
表迁移到性能模式表的建议,请参阅?第 25.20 节“迁移到性能模式系统和状态变量表”。为了协助迁移,您可以使用?show_compatibility_56系统变量,该变量会影响是否启用 MySQL 5.6 兼容性以及如何通过 和?INFORMATION_SCHEMA
性能架构表以及 和SHOW VARIABLES语句提供系统和状态变量信息SHOW STATUS。
笔记
show_compatibility_56已弃用,因为它的唯一目的是允许控制已弃用的系统和状态变量信息源,您可以期望在 MySQL 的未来版本中删除这些信息源。当这些来源被删除时,它们?show_compatibility_56就不再有任何用途,您可以预期它也会被删除。
以下讨论描述了以下效果?show_compatibility_56:
为了更好地理解,强烈建议您还阅读以下部分:
系统show_compatibility_56?变量会影响有关系统和状态变量的服务器操作的以下方面:
SHOW VARIABLES可从和SHOW STATUS声明?中获得的信息
INFORMATION_SCHEMA
提供系统和状态变量信息的表?中提供的信息
提供系统和状态变量信息的性能架构表中提供的信息
FLUSH STATUS语句对状态变量?的影响
此列表总结了 的影响?show_compatibility_56,稍后给出更多详细信息:
当?show_compatibility_56是 时?ON
,启用与 MySQL 5.6 的兼容性。较旧的变量信息源(SHOW
语句、?INFORMATION_SCHEMA
表)产生与 MySQL 5.6 中相同的输出。
当?show_compatibility_56为 时?OFF
,将禁用与 MySQL 5.6 的兼容性。从?INFORMATION_SCHEMA
表中进行选择会产生错误,因为性能模式表旨在替换它们。这些INFORMATION_SCHEMA
?表从 MySQL 5.7.6 开始已弃用,并在 MySQL 8.0 中删除。
要获取系统和状态变量信息 When?show_compatibility_56=OFF,请使用性能模式表或?SHOW
语句。
笔记
当 时?show_compatibility_56=OFF,SHOW VARIABLES和?SHOW STATUS语句显示 Performance Schema?global_variables、?session_variables、?global_status和?session_status表中的行。
从 MySQL 5.7.9 开始,这些表无需?SELECT特权即可全局可读和访问,这意味着SELECT也不需要使用这些SHOW
语句。在 MySQL 5.7.9 之前,?SELECT需要有权限才能直接或通过?SHOW
语句间接访问这些 Performance Schema 表。
从is?时起?,可以使用?多个 状态变量。当?是时?,其中一些变量不会暴露于。它们提供的信息可在与复制相关的性能架构表中找到,如下所述。?Slave_
SHOW STATUSshow_compatibility_56xxx
ON
show_compatibility_56OFF
SHOW STATUS
show_compatibility_56@@
使用符号:?,?,?对系统变量访问没有影响?。?@@GLOBAL.
var_name
@@SESSION.
var_name
@@
var_name
show_compatibility_56对嵌入式服务器没有影响,它在所有情况下都会生成 5.6 兼容的输出。
以下描述详细说明了设置该变量的效果?show_compatibility_56或?ON
在OFF
该变量应用的上下文中的效果。
ON
:MySQL 5.6 输出。
OFF
:输出显示性能架构?global_variables表中的行。
SHOW [SESSION | LOCAL] VARIABLES陈述:
ON
:MySQL 5.6 输出。
OFF
:输出显示性能架构?session_variables表中的行。(在 MySQL 5.7.6 和 5.7.7 中,OFF
输出不完全反映当前会话有效的所有系统变量值;它不包含没有会话对应项的全局变量的行。这在 MySQL 5.7.8 中已得到纠正。)
ON
:MySQL 5.6 输出。
OFF
:输出显示性能架构?global_status表中的行以及?语句执行计数器。?Com_
xxx
OFF
与输出不同,输出不包含没有全局对应项的会话变量的行?ON
。
SHOW [SESSION | LOCAL] STATUS陈述:
ON
:MySQL 5.6 输出。
OFF
:输出显示性能架构?session_status表中的行以及?语句执行计数器。(在 MySQL 5.7.6 和 5.7.7 中,?输出不完全反映当前会话有效的所有状态变量值;它不包含没有会话对应项的全局变量的行。这在 MySQL 5.7.8 中已得到纠正。)?Com_
xxx
OFF
在 MySQL 5.7.6 和 5.7.7 中,对于刚才描述的每个?SHOW
语句,使用子句?WHERE
会在 时产生警告?show_compatibility_56=ON
,在 时产生错误?show_compatibility_56=OFF
。(这适用于?WHERE
未优化掉的子句。例如,WHERE 1
is trivially true,被优化掉,因此不会产生警告或错误。)从 MySQL 5.7.8 开始,这种行为不会发生;?WHERE
与 5.7.6 之前一样受支持。
INFORMATION_SCHEMA
表(GLOBAL_VARIABLES、?SESSION_VARIABLES、?GLOBAL_STATUS和?SESSION_STATUS):
ON
:MySQL 5.6 输出,带有弃用警告。
OFF
:从这些表中选择会产生错误。(在 5.7.9 之前,从这些表中进行选择不会产生任何输出,并带有弃用警告。)
性能模式系统变量表:
OFF
:
global_variables:仅限全局系统变量。
session_variables:对当前会话有效的系统变量:每个会话变量占一行,每个没有会话对应项的全局变量占一行。
variables_by_thread:仅限每个活动会话的会话系统变量。
ON
:与 相同的输出?OFF
。(在 5.7.8 之前,这些表不产生输出。)
性能模式状态变量表:
OFF
:
global_status:仅限全局状态变量。
session_status:对当前会话有效的状态变量:每个会话变量占一行,每个没有会话对应项的全局变量占一行。
status_by_account仅会话状态变量,按帐户聚合。
status_by_host:仅会话状态变量,按主机名聚合。
status_by_thread:仅限每个活动会话的会话状态变量。
status_by_user:仅会话状态变量,按用户名聚合。
性能模式不收集?状态变量表中状态变量的统计信息。要获取全局和每个会话语句执行计数,请分别使用?和?表。?Com_
events_statements_summary_global_by_event_nameevents_statements_summary_by_thread_by_event_namexxx
ON
:与 相同的输出?OFF
。(在 5.7.9 之前,这些表不产生输出。)
副本状态变量:
ON
?:可从 获得?多个 状态变量。?Slave_
SHOW STATUSxxx
OFF
:其中一些副本变量不会暴露给SHOW STATUS性能架构状态变量表。它们提供的信息可在与复制相关的性能架构表中找到。下表显示了哪些?状态变量在?性能架构复制表中变得不可用及其位置。?Slave_
SHOW STATUSxxx
状态变量 | 性能架构位置 |
---|---|
Slave_heartbeat_period | replication_connection_configuration表、?HEARTBEAT_INTERVAL 列 |
Slave_last_heartbeat | replication_connection_status表、?LAST_HEARTBEAT_TIMESTAMP 列 |
Slave_received_heartbeats | replication_connection_status表、?COUNT_RECEIVED_HEARTBEATS 列 |
Slave_retried_transactions | replication_applier_status表、?COUNT_TRANSACTIONS_RETRIES 列 |
Slave_running | replication_connection_status以及?replication_applier_status?表格、SERVICE_STATE 列 |
FLUSH STATUS陈述:
ON
:此语句产生 MySQL 5.6 行为。它将当前线程的会话状态变量值添加到全局值并将会话值重置为零。一些全局变量也可能重置为零。它还将密钥缓存的计数器(默认和命名)重置为零,并设置?Max_used_connections为当前打开的连接数。
OFF
:此语句将所有活动会话的会话状态添加到全局状态变量,重置所有活动会话的状态,并重置从断开连接的会话聚合的帐户、主机和用户状态值。
命令行格式 | --show-create-table-verbosity[={OFF|ON}] |
---|---|
介绍 | 5.7.22 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
SHOW CREATE TABLEROW_FORMAT
如果行格式是默认格式,通常不显示表选项。启用此变量会导致SHOW CREATE TABLE显示,ROW_FORMAT
无论它是否是默认格式。
命令行格式 | --show-old-temporals[={OFF|ON}] |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
输出是否SHOW CREATE TABLE?包含注释以标记发现为 5.6.4 之前格式的时间列(TIME、?DATETIME和?TIMESTAMP不支持小数秒精度的列)。默认情况下禁用此变量。如果启用,SHOW CREATE TABLE输出如下所示:
CREATE TABLE `mytbl` (
`ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP,
`dt` datetime /* 5.5 binary format */ DEFAULT NULL,
`t` time /* 5.5 binary format */ DEFAULT NULL
) DEFAULT CHARSET=latin1
COLUMN_TYPE
信息模式表的列的?输出COLUMNS也受到类似的影响。
该变量已被弃用;预计它会在 MySQL 的未来版本中被删除。
命令行格式 | --skip-external-locking[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 布尔值 |
默认值 | ON |
这是OFF
如果mysqld?使用外部锁定(系统锁定),ON
?如果外部锁定被禁用。这仅影响?MyISAM表访问。
--external-locking该变量由或 选项?设置?--skip-external-locking?。默认情况下禁用外部锁定。
外部锁定仅影响?MyISAM表访问。有关更多信息,包括可以和不能使用它的条件,请参阅第 8.11.5 节“外部锁定”。
命令行格式 | --skip-name-resolve[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 布尔值 |
默认值 | OFF |
检查客户端连接时是否解析主机名。如果此变量为OFF
,?mysqld在检查客户端连接时解析主机名。如果是ON
,?mysqld仅使用 IP 号码;在这种情况下,Host
授权表中的所有列值都必须是 IP 地址。请参见第 5.1.11.2 节“DNS 查找和主机缓存”。
根据系统的网络配置和?Host
帐户的值,客户端可能需要使用显式?--host选项进行连接,例如?--host=127.0.0.1或?--host=::1。
尝试连接到主机127.0.0.1
?通常会解析到该localhost
帐户。但是,如果服务器在?skip_name_resolve启用的情况下运行,则此操作会失败。如果您打算这样做,请确保存在可以接受连接的帐户。例如,为了能够?root
使用?--host=127.0.0.1或 进行连接--host=::1,请创建以下帐户:
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
命令行格式 | --skip-networking[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 布尔值 |
默认值 | OFF |
该变量控制服务器是否允许 TCP/IP 连接。默认情况下,它是禁用的(允许 TCP 连接)。如果启用,服务器仅允许本地(非 TCP/IP)连接,并且与?mysqld的所有交互都必须使用命名管道或共享内存(在 Windows 上)或 Unix 套接字文件(在 Unix 上)进行。对于仅允许本地客户端的系统,强烈建议使用此选项。请参见第 5.1.11.2 节“DNS 查找和主机缓存”。
命令行格式 | --skip-show-database |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 布尔值 |
默认值 | OFF |
SHOW DATABASES这可以防止人们在没有权限的情况下?使用该语句SHOW DATABASES。如果您担心用户能够查看属于其他用户的数据库,这可以提高安全性。其效果取决于SHOW DATABASES?权限:如果变量值为ON
,则?SHOW DATABASES仅允许具有该SHOW DATABASES权限的用户执行该语句,并且该语句显示所有数据库名称。如果值为OFF
,?SHOW DATABASES则允许所有用户使用,但仅显示用户拥有SHOW DATABASES或其他权限的数据库的名称。
警告
由于全局权限被视为所有数据库的权限,因此任何全局权限都允许用户通过?SHOW DATABASES检查INFORMATION_SCHEMA
?SCHEMATA表来查看所有数据库名称。
命令行格式 | --slow-launch-time=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 2 |
最小值 | 0 |
最大值 | 31536000 |
单元 | 秒 |
如果创建线程花费的时间超过这么多秒,服务器就会增加?Slow_launch_threads状态变量。
命令行格式 | --slow-query-log[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
是否开启慢查询日志。该值可以是 0(或?OFF
)以禁用日志,也可以为 1(或?ON
)以启用日志。日志输出的目的地由?log_output系统变量控制;如果该值为NONE
,则即使启用了日志,也不会写入任何日志条目。
“慢”是由变量的值决定的?long_query_time。请参见?第 5.4.5 节“慢查询日志”。
命令行格式 | --slow-query-log-file=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 文件名 |
默认值 | host_name-slow.log |
慢查询日志文件的名称。默认值为?
,但可以使用选项更改初始值?host_name
-slow.log--slow_query_log_file
。
命令行格式 | --socket={file_name|pipe_name} |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
默认值(Windows) | MySQL |
默认值(其他) | /tmp/mysql.sock |
在 Unix 平台上,此变量是用于本地客户端连接的套接字文件的名称。默认为?/tmp/mysql.sock
.?(对于某些分发格式,目录可能不同,例如?/var/lib/mysql
RPM。)
在 Windows 上,此变量是用于本地客户端连接的命名管道的名称。默认值为?MySQL
(不区分大小写)。
命令行格式 | --sort-buffer-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 262144 |
最小值 | 32768 |
最大值 (Windows) | 4294967295 |
最大值(其他,64 位平台) | 18446744073709551615 |
最大值(其他,32 位平台) | 4294967295 |
单元 | 字节 |
每个必须执行排序的会话都会分配一个该大小的缓冲区。sort_buffer_size?不特定于任何存储引擎,并以通用方式应用于优化。该值至少?sort_buffer_size必须足够大以容纳排序缓冲区中的十五个元组。此外,增加 的值?max_sort_length可能需要增加 的值?sort_buffer_size。有关更多信息,请参见第 8.2.1.14 节“ORDER BY 优化”
如果您看到?Sort_merge_passes每秒有很多SHOW GLOBAL STATUS输出,则可以考虑增加该?sort_buffer_size值以加速ORDER BY
或GROUP BY
无法通过查询优化或改进索引来改进的操作。
优化器尝试计算出需要多少空间,但可以分配更多空间,直至达到限制。将其设置为大于全局所需的值会减慢大多数排序查询的速度。最好将其作为会话设置来增加,并且仅适用于需要更大大小的会话。在 Linux 上,有 256KB 和 2MB 的阈值,较大的值可能会显着减慢内存分配速度,因此您应该考虑保持低于这些值之一。尝试找出适合您工作负载的最佳值。请参见?第 B.3.3.5 节“MySQL 存储临时文件的位置”。
允许的最大设置为?sort_buffer_size4GB?1。64 位平台允许使用更大的值(64 位 Windows 除外,对于该 Windows,较大的值将被截断为 4GB?1 并带有警告)。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
如果启用此变量,则在成功插入自动生成的?AUTO_INCREMENT
值的语句之后,您可以通过发出以下形式的语句来查找该值:
SELECT * FROM tbl_name WHERE auto_col IS NULL
如果该语句返回一行,则返回的值与调用该函数时的值相同?LAST_INSERT_ID()。有关详细信息,包括多行插入后的返回值,请参见第 12.15 节 “信息函数”。如果没有?AUTO_INCREMENT
成功插入任何值,则该SELECT语句不返回任何行。
某些 ODBC 程序(例如 Access)使用AUTO_INCREMENT
通过 比较来?检索值的行为 。IS NULL请参阅?获取自动增量值。sql_auto_is_null可以通过设置为 来?禁用此行为?OFF
。
sql_auto_is_null的?默认值为?OFF
。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
如果设置为OFF
,MySQL 会中止?SELECT可能需要很长时间执行的语句(即优化器估计检查的行数超过 的值的语句?max_join_size)。WHERE
当发布了不明智的声明时,这很有用。新连接的默认值为?ON
,它允许所有?SELECT语句。
如果将max_join_size?系统变量设置为 以外的值?DEFAULT
,?sql_big_selects则设置为?OFF
。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
如果启用,则sql_buffer_result?强制将语句结果SELECT?放入临时表中。这有助于 MySQL 尽早释放表锁,并且在需要很长时间才能将结果发送到客户端的情况下非常有用。默认值为OFF
。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
有效值 |
|
该变量控制当前会话是否禁用记录到通用查询日志(假设通用查询日志本身已启用)。默认值为?OFF
(即启用日志记录)。要禁用或启用当前会话的常规查询日志记录,请将会话sql_log_off?变量设置为ON
或OFF
。
设置此系统变量的会话值是一项受限制的操作。会话用户必须具有足够的权限才能设置受限会话变量。请参见?第 5.1.8.1 节“系统变量权限”。
命令行格式 | --sql-mode=name |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 放 |
默认值 | ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION |
有效值 |
|
当前服务器SQL模式,可以动态设置。有关详细信息,请参见第 5.1.10 节“服务器 SQL 模式”。
笔记
MySQL安装程序可能会在安装过程中配置SQL模式。如果 SQL 模式与默认值或您期望的不同,请检查服务器在启动时读取的选项文件中的设置。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
如果启用(默认),?Note
级别增量 诊断warning_count
和服务器会记录它们。如果禁用,Note
诊断不会增加warning_count
,服务器也不会记录它们。mysqldump?包含禁用此变量的输出,以便重新加载转储文件不会对不影响重新加载操作完整性的事件产生警告。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
如果启用(默认),服务器将为?SHOW CREATE TABLE和?SHOW CREATE DATABASE?语句引用标识符。如果禁用,则引用将被禁用。默认情况下启用此选项,以便复制适用于需要引用的标识符。请参见第 13.7.5.10 节“SHOW CREATE TABLE 语句”和第 13.7.5.6 节“SHOW CREATE DATABASE 语句”。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
如果启用此变量,?UPDATE则 在子句或 子句DELETE中不使用键的语句会产生错误。这使得可以捕获未?正确使用键并且可能会更改或删除大量行的语句。默认值为?。?WHERE
LIMIT
UPDATEDELETEOFF
对于mysql客户端,?sql_safe_updates可以通过使用选项来启用?--safe-updates。有关详细信息,请参阅使用安全更新模式 (--safe-updates)。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 18446744073709551615 |
最小值 | 0 |
最大值 | 18446744073709551615 |
从语句返回的最大行数?SELECT。有关详细信息,请参阅使用安全更新模式 (--safe-updates)。
新连接的默认值是服务器允许每个表的最大行数。典型的默认值为(2?32?)?1 或(2?64?)?1。如果您更改了限制,可以通过指定值 来恢复默认值DEFAULT
。
如果 aSELECT有?LIMIT
子句,则LIMIT
?优先于 的值?sql_select_limit。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
该变量控制在发生警告时单行语句是否?INSERT生成信息字符串。默认为?OFF
.?将值设置为ON
?以生成信息字符串。
命令行格式 | --ssl-ca=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
默认值 | NULL |
PEM 格式的证书颁发机构 (CA) 证书文件的路径名。该文件包含受信任的 SSL 证书颁发机构的列表。
命令行格式 | --ssl-capath=dir_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 目录名称 |
默认值 | NULL |
包含 PEM 格式的受信任 SSL 证书颁发机构 (CA) 证书文件的目录的路径名。对此功能的支持取决于用于编译 MySQL 的 SSL 库;请参见第 6.3.4 节“SSL 库相关功能”。
命令行格式 | --ssl-cert=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
默认值 | NULL |
PEM 格式的服务器 SSL 公钥证书文件的路径名。
如果服务器启动时?ssl_cert设置为使用任何受限密码或密码类别的证书,则服务器启动时会禁用对加密连接的支持。有关密码限制的信息,请参阅?连接密码配置。
命令行格式 | --ssl-cipher=name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
默认值 | NULL |
连接加密允许的密码列表。如果列表中不支持任何密码,则加密连接不起作用。
为了获得最大的可移植性,密码列表应该是一个或多个密码名称的列表,并用冒号分隔。OpenSSL 和 yaSSL 都可以理解此格式。以下示例显示两个用冒号分隔的密码名称:
[mysqld]
ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"
OpenSSL 支持更灵活的语法来指定密码,如https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html?上的 OpenSSL 文档中所述?。yaSSL 没有,因此对于使用 yaSSL 编译的 MySQL 发行版,尝试使用该扩展语法会失败。
有关 MySQL 支持哪些加密密码的信息,请参阅第 6.3.2 节 “加密连接 TLS 协议和密码”。
命令行格式 | --ssl-crl=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
默认值 | NULL |
包含 PEM 格式的证书吊销列表的文件的路径名。对撤销列表功能的支持取决于用于编译 MySQL 的 SSL 库。请参见?第 6.3.4 节“SSL 库相关功能”。
命令行格式 | --ssl-crlpath=dir_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 目录名称 |
默认值 | NULL |
包含 PEM 格式的证书吊销列表文件的目录路径。对撤销列表功能的支持取决于用于编译 MySQL 的 SSL 库。请参见第 6.3.4 节“SSL 库相关功能”。
命令行格式 | --ssl-key=file_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 文件名 |
默认值 | NULL |
PEM 格式的服务器 SSL 私钥文件的路径名。为了获得更好的安全性,请使用 RSA 密钥大小至少为 2048 位的证书。
如果密钥文件受密码保护,服务器会提示用户输入密码。密码必须交互给出;它不能存储在文件中。如果密码不正确,程序将继续运行,就像无法读取密钥一样。
命令行格式 | --stored-program-cache=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 256 |
最小值 | 16 |
最大值 | 524288 |
为每个连接的缓存存储例程数量设置软上限。该变量的值根据 MySQL 服务器分别为存储过程和存储函数维护的两个缓存中保存的存储例程的数量来指定。
每当执行存储例程时,都会在解析例程中的第一个或顶级语句之前检查此高速缓存大小;如果相同类型的例程(正在执行的存储过程或存储函数)的数量超过此变量指定的限制,则刷新相应的缓存并释放先前为缓存对象分配的内存。即使存储例程之间存在依赖关系,这也允许安全地刷新缓存。
命令行格式 | --super-read-only[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
如果read_only启用该系统变量,则服务器不允许除具有该?SUPER权限的用户之外的任何客户端更新。如果?super_read_only还启用了该系统变量,则服务器将禁止客户端更新,即使是具有SUPER.?read_only有关只读模式的说明以及有关如何交互的信息,请参阅系统变量?read_only的?说明?super_read_only。
启用时阻止的客户端更新?super_read_only包括不一定是更新的操作,例如CREATE FUNCTION
(安装可加载功能)和INSTALL PLUGIN
。这些操作是被禁止的,因为它们涉及对系统数据库中的表的更改mysql
?。
复制源服务器上的更改super_read_only不会复制到副本服务器。可以在副本上设置该值,而与源上的设置无关。
命令行格式 | --sync-frm[={OFF|ON}] |
---|---|
已弃用 | 是的 |
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
如果此变量设置为 1,则在创建任何非临时表时,其.frm
文件将同步到磁盘(使用fdatasync()
)。这样速度较慢,但??在发生碰撞时更安全。默认值为 1。
该变量在 MySQL 5.7 中已弃用,并在 MySQL 8.0 中被删除(当.frm
?文件过时时)。
系统变量 |
|
---|---|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
服务器系统时区。当服务器开始执行时,它会从计算机默认值继承时区设置,可能会被用于运行服务器或启动脚本的帐户环境修改。该值用于设置system_time_zone。要显式指定系统时区,请设置?TZ
环境变量或使用?mysqld_safe--timezone脚本的选项?。
变量system_time_zone与变量不同time_zone
?。尽管它们可能具有相同的值,但后一个变量用于初始化每个连接的客户端的时区。请参见第 5.1.13 节,“MySQL 服务器时区支持”。
命令行格式 | --table-definition-cache=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | -1 (表示自动调整大小;不要分配此文字值) |
最小值 | 400 |
最大值 | 524288 |
.frm
可存储在表定义缓存中的?表定义(来自文件)的数量 。如果使用大量表,可以创建较大的表定义缓存以加快表的打开速度。与普通表缓存不同,表定义缓存占用的空间更少,并且不使用文件描述符。最小值为 400。默认值基于以下公式,上限为 2000:
400 + (table_open_cache / 2)
对于InnoDB,该 设置充当数据字典缓存中表实例数量以及一次可以打开的每表文件表空间数量?table_definition_cache?的软限制。InnoDB
如果数据字典缓存中的表实例数量?InnoDB
超过?table_definition_cache限制,LRU机制开始将表实例标记为驱逐,并最终将它们从InnoDB数据字典缓存中删除。table_definition_cache由于具有外键关系的表实例未放置在 LRU 列表中,因此具有?缓存元数据的打开表的数量可能会高于 限制。
一次可以打开的每表文件表空间的数量受到?table_definition_cache和?innodb_open_files设置的限制。如果两个变量均已设置,则使用最高设置。如果两个变量均未设置,?table_definition_cache?则使用具有较高默认值的设置。如果打开的表空间数量超过?table_definition_cache或 定义的限制innodb_open_files,LRU 机制将在 LRU 列表中搜索已完全刷新且当前未扩展的表空间文件。每次打开新表空间时都会执行此过程。仅关闭不活动的表空间。
命令行格式 | --table-open-cache=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 2000 |
最小值 | 1 |
最大值 | 524288 |
所有线程打开的表的数量。增加该值会增加mysqld所需的文件描述符的数量?。该变量的有效值为 、的有效值?和 400中的较大者 ;那是?open_files_limit?- 10 -
max_connections?/ 2
MAX(
(open_files_limit - 10 - max_connections) / 2,
400
)
您可以通过检查状态变量来检查是否需要增加表缓存Opened_tables?。如果 的值?Opened_tables很大并且您不FLUSH TABLES?经常使用(这只是强制关闭并重新打开所有表),那么您应该增加该?table_open_cache变量的值。有关表缓存的更多信息,请参见?第 8.4.3.1 节“MySQL 如何打开和关闭表”。
命令行格式 | --table-open-cache-instances=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 16 |
最小值 | 1 |
最大值 | 64 |
打开表缓存实例的数量。为了通过减少会话之间的争用来提高可伸缩性,可以将打开的表缓存分区为几个较小的大小为?table_open_cache/ 的缓存实例table_open_cache_instances。一个会话只需锁定一个实例即可访问它的 DML 语句。这会在实例之间分段缓存访问,从而在有许多会话访问表时允许使用缓存的操作获得更高的性能。(DDL 语句仍然需要锁定整个缓存,但此类语句的频率比 DML 语句要低得多。)
对于通常使用 16 个或更多内核的系统,建议使用值 8 或 16。但是,如果表上有许多大型触发器导致高内存负载,则默认设置?table_open_cache_instances?可能会导致内存使用过多。table_open_cache_instances在这种情况下,设置为 1 以限制内存使用?会很有帮助 。
命令行格式 | --thread-cache-size=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | -1 (表示自动调整大小;不要分配此文字值) |
最小值 | 0 |
最大值 | 16384 |
服务器应缓存多少线程以供重用。当客户端断开连接时,如果缓存中的线程数少于该客户端的线程数,则该客户端的线程将被放入缓存中?thread_cache_size。如果可能的话,通过重用从缓存中获取的线程来满足对线程的请求,并且仅当缓存为空时才创建新线程。如果您有大量新连接,则可以增加此变量以提高性能。通常,如果您有良好的线程实现,这不会提供显着的性能改进。但是,如果您的服务器每秒看到数百个连接,您通常应该设置?thread_cache_size足够高,以便大多数新连接使用缓存的线程。Connections通过检查和 status 变量之间的差异?Threads_created,您可以看到线程缓存的效率如何。有关详细信息,请参见第 5.1.9 节 “服务器状态变量”。
默认值基于以下公式,上限为 100:
8 + (max_connections / 100)
该变量对嵌入式服务器 ( ) 没有影响libmysqld
,并且从 MySQL 5.7.2 开始在嵌入式服务器中不再可见。
命令行格式 | --thread-handling=name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 枚举 |
默认值 | one-thread-per-connection |
有效值 |
|
服务器用于连接线程的线程处理模型。允许的值是?no-threads
(服务器使用单个线程处理一个连接)、?one-thread-per-connection
(服务器使用一个线程处理每个客户端连接)和?loaded-dynamically
(由线程池插件在初始化时设置)。no-threads
对于 Linux 下的调试很有用;请参见?第 5.8 节“调试 MySQL”。
该变量对嵌入式服务器 ( ) 没有影响libmysqld
,并且从 MySQL 5.7.2 开始在嵌入式服务器中不再可见。
命令行格式 | --thread-pool-algorithm=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 1 |
该变量控制线程池插件使用哪种算法:
值 0(默认值)使用保守的低并发算法,该算法经过最充分的测试,并且已知会产生非常好的结果。
值为 1 会增加并发性并使用更激进的算法,已知该算法有时在最佳线程计数上性能提高 5-10%,但随着连接数量的增加,性能会下降。其使用应被视为实验性的且不受支持。
仅当启用线程池插件时此变量才可用。请参见第 5.5.3 节“MySQL 企业线程池”。
thread_pool_high_priority_connection
命令行格式 | --thread-pool-high-priority-connection=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 1 |
该变量会影响执行前新语句的排队。如果值为 0(假,默认值),则语句队列同时使用低优先级和高优先级队列。如果值为 1 (true),则排队语句始终进入高优先级队列。
仅当启用线程池插件时此变量才可用。请参见第 5.5.3 节“MySQL 企业线程池”。
thread_pool_max_unused_threads
命令行格式 | --thread-pool-max-unused-threads=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 4096 |
线程池中允许的最大未使用线程数。该变量可以限制休眠线程使用的内存量。
值 0(默认值)表示对休眠线程的数量没有限制。N
?其中的值N
大于 0 表示 1 个使用者线程和N
-1 个保留线程。在这种情况下,如果一个线程准备休眠,但休眠线程的数量已经达到最大值,则该线程将退出而不是进入休眠状态。
休眠线程要么作为消费者线程休眠,要么作为保留线程休眠。线程池允许一个线程在休眠时作为消费者线程。如果一个线程进入休眠状态并且不存在现有的消费者线程,则它会作为消费者线程休眠。当必须唤醒一个线程时,如果有消费者线程,则选择一个消费者线程。仅当没有消费者线程需要唤醒时才会选择保留线程。
仅当启用线程池插件时此变量才可用。请参见第 5.5.3 节“MySQL 企业线程池”。
命令行格式 | --thread-pool-prio-kickup-timer=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 1000 |
最小值 | 0 |
最大值 | 4294967294 |
单元 | 毫秒 |
该变量影响低优先级队列中等待执行的语句。该值是等待语句移至高优先级队列之前的毫秒数。默认值为 1000(1 秒)。
仅当启用线程池插件时此变量才可用。请参见第 5.5.3 节“MySQL 企业线程池”。
命令行格式 | --thread-pool-size=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 16 |
最小值 | 1 |
最大值 | 64 |
线程池中线程组的数量。这是控制线程池性能的最重要参数。它影响可以同时执行的语句数量。如果指定的值超出允许值的范围,则线程池插件不会加载,并且服务器会将消息写入错误日志。
仅当启用线程池插件时此变量才可用。请参见第 5.5.3 节“MySQL 企业线程池”。
命令行格式 | --thread-pool-stall-limit=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 6 |
最小值 | 4 |
最大值 | 600 |
单元 | 毫秒 * 10 |
该变量影响正在执行的语句。该值是一条语句在开始执行之后必须完成的时间量,然后它才会被定义为停滞,此时线程池允许线程组开始执行另一个语句。该值以 10 毫秒为单位测量,因此默认值 6 表示 60 毫秒。较短的等待值允许线程更快地启动。短值也能更好地避免死锁情况。长等待值对于包含长时间运行的语句的工作负载非常有用,可以避免在当前语句执行时启动过多的新语句。
仅当启用线程池插件时此变量才可用。请参见第 5.5.3 节“MySQL 企业线程池”。
命令行格式 | --thread-stack=# |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值(64 位平台) | 262144 |
默认值(32 位平台) | 196608 |
最小值 | 131072 |
最大值(64 位平台) | 18446744073709550592 |
最大值(32 位平台) | 4294966272 |
单元 | 字节 |
块大小 | 1024 |
每个线程的堆栈大小。默认值对于正常操作来说足够大。如果线程堆栈大小太小,则会限制服务器可以处理的 SQL 语句的复杂性、存储过程的递归深度以及其他消耗内存的操作。
该变量未使用。它已被弃用并在 MySQL 8.0 中被删除。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 细绳 |
默认值 | SYSTEM |
最小值 | -12:59 |
最大值 | +13:00 |
当前时区。该变量用于初始化每个连接的客户端的时区。默认情况下,它的初始值为'SYSTEM'
(这意味着“使用”的值?system_time_zone)。该值可以在服务器启动时使用该选项显式指定--default-time-zone。请参见第 5.1.13 节,“MySQL 服务器时区支持”。
笔记
如果设置为SYSTEM
,则每个需要时区计算的 MySQL 函数调用都会调用系统库来确定当前系统时区。此调用可能受到全局互斥体的保护,从而导致争用。
系统变量 |
|
---|---|
范围 | 会议 |
动态的 | 是的 |
类型 | 数字 |
默认值 | UNIX_TIMESTAMP() |
最小值 | 1 |
最大值 | 2147483647 |
为该客户设置时间。如果使用二进制日志恢复行,则用于获取原始时间戳。?timestamp_value
应该是 Unix 纪元时间戳(类似于 所返回的值 ,而不是格式?UNIX_TIMESTAMP()中的值)或.?'
YYYY-MM-DD hh:mm:ss
'DEFAULT
设置timestamp为常量值会使其保留该值,直到再次更改为止。设置?timestamp为?DEFAULT
导致其值成为访问时的当前日期和时间。最大值对应于'2038-01-19 03:14:07'
UTC,与数据类型相同TIMESTAMP?。
timestamp是 a?DOUBLE
而不是,?BIGINT
因为它的值包含微秒部分。
SET timestamp
影响 返回的值,?NOW()但不影响?SYSDATE()。这意味着二进制日志中的时间戳设置对SYSDATE().?可以使用选项启动服务器?--sysdate-is-now以使其SYSDATE()成为 的同义词NOW(),在这种情况下?SET timestamp
会影响这两个功能。
命令行格式 | --tls-version=protocol_list |
---|---|
介绍 | 5.7.10 |
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
默认值(≥ 5.7.28) | TLSv1,TLSv1.1,TLSv1.2 |
默认值(≤ 5.7.27) |
|
服务器允许哪些协议进行加密连接。该值是包含一个或多个协议版本的逗号分隔列表。可以为此变量命名的协议取决于用于编译 MySQL 的 SSL 库。应选择允许的协议,例如不要?在列表中留下“漏洞” 。有关详细信息,请参阅?第 6.3.2 节 “加密连接 TLS 协议和密码”。
笔记
从 MySQL 5.7.35 开始,TLSv1 和 TLSv1.1 连接协议已被弃用,并且在 MySQL 的未来版本中可能会删除对它们的支持。请参阅?已弃用的 TLS 协议。
命令行格式 | --tmp-table-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 16777216 |
最小值 | 1024 |
最大值 | 18446744073709551615 |
单元 | 字节 |
内部内存临时表的最大大小。此变量不适用于用户创建的?MEMORY
表。
实际极限是?tmp_table_size和 中的较小者max_heap_table_size。当内存临时表超过限制时,MySQL 会自动将其转换为磁盘临时表。该?internal_tmp_disk_storage_engine?选项定义用于磁盘临时表的存储引擎。
如果您执行许多高级?查询并且有大量内存,?请增加 的值?tmp_table_size( 如有必要)。max_heap_table_sizeGROUP BY
Created_tmp_disk_tables您可以通过比较和 值?来将创建的内部磁盘临时表的数量与创建的内部临时表的总数进行比较?Created_tmp_tables。
命令行格式 | --tmpdir=dir_name |
---|---|
系统变量 |
|
范围 | 全球的 |
动态的 | 不 |
类型 | 目录名称 |
用于创建临时文件的目录路径。/tmp
?如果您的默认目录所在的分区太小而无法容纳临时表,那么它可能会很有用。该变量可以设置为以循环方式使用的多个路径的列表。路径应在 Unix 上用冒号 ( ) 分隔,在 Windows 上?:
用分号 ( ) 分隔。;
tmpdir可以是非永久位置,例如基于内存的文件系统上的目录或服务器主机重新启动时清除的目录。如果 MySQL 服务器充当副本,并且您使用的是非永久位置?tmpdir,请考虑使用该?slave_load_tmpdir变量为副本设置不同的临时目录。对于副本,用于复制?LOAD DATA语句的临时文件存储在此目录中,因此,如果使用永久位置,它们可以在计算机重新启动后继续存在,尽管如果临时文件已被删除,复制现在可以在重新启动后继续进行。
有关临时文件存储位置的更多信息,请参见第 B.3.3.5 节“MySQL 存储临时文件的位置”。
命令行格式 | --transaction-alloc-block-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 8192 |
最小值 | 1024 |
最大值 | 131072 |
单元 | 字节 |
块大小 | 1024 |
增加每个事务内存池所需内存的字节数。参见 的描述?transaction_prealloc_size
。
命令行格式 | --transaction-isolation=name |
---|---|
系统变量(≥5.7.20) |
|
范围(≥5.7.20) | 全局、会话 |
动态(≥5.7.20) | 是的 |
类型 | 枚举 |
默认值 | REPEATABLE-READ |
有效值 |
|
事务隔离级别。默认为?REPEATABLE-READ.
事务隔离级别有三个范围:全局、会话和下一个事务。这种三范围实现会导致一些非标准的隔离级别分配语义,如下所述。
要在启动时设置全局事务隔离级别,请使用--transaction-isolation?服务器选项。
在运行时,可以直接使用?SET?语句为系统变量赋值?transaction_isolation,也可以间接使用SET TRANSACTION语句设置隔离级别。如果直接设置?transaction_isolation?为包含空格的隔离级别名称,则该名称应括在引号内,并将空格替换为破折号。例如,使用以下?SET?语句设置全局值:
SET GLOBAL transaction_isolation = 'READ-COMMITTED';
设置全局?transaction_isolation值会设置所有后续会话的隔离级别。现有会话不受影响。
要设置会话或下一级?transaction_isolation值,请使用该?SET?语句。对于大多数会话系统变量,这些语句是设置值的等效方法:
SET @@SESSION.var_name = value;
SET SESSION var_name = value;
SET var_name = value;
SET @@var_name = value;
如前所述,除了全局范围和会话范围之外,事务隔离级别还具有下一个事务范围。为了能够设置下一个事务范围,?SET?分配会话系统变量值的语法具有非标准语义?transaction_isolation:
要设置会话隔离级别,请使用以下任一语法:
SET @@SESSION.transaction_isolation = value;
SET SESSION transaction_isolation = value;
SET transaction_isolation = value;
对于每个语法,这些语义都适用:
设置会话中执行的所有后续事务的隔离级别。
允许在事务内使用,但不影响当前正在进行的事务。
如果在事务之间执行,则覆盖设置下一个事务隔离级别的任何前面的语句。
对应于?SET SESSION TRANSACTION ISOLATION LEVEL(带有SESSION
关键字)。
要设置下一个事务隔离级别,请使用以下语法:
SET @@transaction_isolation = value;
对于该语法,这些语义适用:
仅为会话中执行的下一个事务设置隔离级别。
后续事务将恢复到会话隔离级别。
交易中不允许。
对应于?SET TRANSACTION ISOLATION LEVEL(不带?SESSION
关键字)。
SET TRANSACTION有关系统变量及其与系统变量的关系的?更多信息transaction_isolation,请参见第 13.3.6 节“SET TRANSACTION 语句”。
笔记
transaction_isolation在 MySQL 5.7.20 中添加为 的同义词?tx_isolation,现已弃用并在 MySQL 8.0 中删除。应调整应用程序以?transaction_isolation优先使用tx_isolation
.
命令行格式 | --transaction-prealloc-size=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 4096 |
最小值 | 1024 |
最大值 | 131072 |
单元 | 字节 |
块大小 | 1024 |
有一个每事务内存池,各种与事务相关的分配从中获取内存。池的初始大小(以字节为单位)为?transaction_prealloc_size。对于由于可用内存不足而无法从池中满足的每个分配,池都会增加?transaction_alloc_block_size?字节。当事务结束时,池被截断为?transaction_prealloc_size?字节。
通过使其?transaction_prealloc_size?足够大以包含单个事务中的所有语句,您可以避免多次malloc()
?调用。
命令行格式 | --transaction-read-only[={OFF|ON}] |
---|---|
系统变量(≥5.7.20) |
|
范围(≥5.7.20) | 全局、会话 |
动态(≥5.7.20) | 是的 |
类型 | 布尔值 |
默认值 | OFF |
事务访问模式。该值可以是?OFF
(读/写;默认值)或?ON
(只读)。
事务访问模式有全局、会话、下一个事务三种范围。这种三范围实现会导致一些非标准访问模式分配语义,如下所述。
要在启动时设置全局事务访问模式,请使用?--transaction-read-only服务器选项。
在运行时,可以直接使用?SET?语句为系统变量赋值?transaction_read_only,也可以间接使用SET TRANSACTION语句设置访问模式。例如,使用以下?SET?语句设置全局值:
SET GLOBAL transaction_read_only = ON;
设置全局?transaction_read_only值会设置所有后续会话的访问模式。现有会话不受影响。
要设置会话或下一级?transaction_read_only值,请使用该?SET?语句。对于大多数会话系统变量,这些语句是设置值的等效方法:
SET @@SESSION.var_name = value;
SET SESSION var_name = value;
SET var_name = value;
SET @@var_name = value;
如前所述,事务访问模式除了全局范围和会话范围之外,还具有下一个事务范围。为了能够设置下一个事务范围,?SET?分配会话系统变量值的语法具有非标准语义?transaction_read_only,
要设置会话访问模式,请使用以下任一语法:
SET @@SESSION.transaction_read_only = value;
SET SESSION transaction_read_only = value;
SET transaction_read_only = value;
对于每个语法,这些语义都适用:
设置会话中执行的所有后续事务的访问模式。
允许在事务内使用,但不影响当前正在进行的事务。
如果在事务之间执行,则覆盖任何前面设置下一个事务访问模式的语句。
对应于?SET SESSION TRANSACTION {READ WRITE | READ ONLY}?(带有SESSION
关键字)。
要设置下一个事务访问模式,请使用以下语法:
SET @@transaction_read_only = value;
对于该语法,这些语义适用:
仅为会话中执行的下一个事务设置访问模式。
后续事务将恢复到会话访问模式。
交易中不允许。
对应于?SET TRANSACTION {READ WRITE | READ ONLY}?(不带SESSION
关键字)。
SET TRANSACTION有关系统变量及其与系统变量的关系的?更多信息transaction_read_only,请参见第 13.3.6 节“SET TRANSACTION 语句”。
笔记
transaction_read_only在 MySQL 5.7.20 中添加为 的同义词?tx_read_only,现已弃用并在 MySQL 8.0 中删除。应调整应用程序以?transaction_read_only优先使用tx_read_only
.
已弃用 | 5.7.20 |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | REPEATABLE-READ |
有效值 |
|
默认事务隔离级别。默认为?REPEATABLE-READ.
笔记
transaction_isolation在 MySQL 5.7.20 中添加为 的同义词?tx_isolation,现已弃用并在 MySQL 8.0 中删除。应调整应用程序以?transaction_isolation优先使用tx_isolation.?transaction_isolation详情?请参见 的描述 。
已弃用 | 5.7.20 |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | OFF |
默认事务访问模式。该值可以是?OFF
(读/写,默认)或?ON
(只读)。
笔记
transaction_read_only在 MySQL 5.7.20 中添加为 的同义词?tx_read_only,现已弃用并在 MySQL 8.0 中删除。应调整应用程序以?transaction_read_only优先使用tx_read_only.?transaction_read_only详情?请参见 的描述 。
系统变量 |
|
---|---|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | ON |
如果设置为 1(默认值),InnoDB
则会对表中的二级索引执行唯一性检查。如果设置为 0,则允许存储引擎假设输入数据中不存在重复键。如果您确定数据不包含唯一性违规,则可以将其设置为 0 以加快大型表导入到?InnoDB
.
将此变量设置为 0 并不?要求存储引擎忽略重复的键。引擎仍然可以检查它们,并在检测到它们时发出重复键错误。
命令行格式 | --updatable-views-with-limit[={OFF|ON}] |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 布尔值 |
默认值 | 1 |
如果更新语句包含子句,则当视图不包含基础表中定义的主键的所有列时,此变量控制是否可以对视图进行更新LIMIT
。(此类更新通常由 GUI 工具生成。)更新是一个?UPDATEor?DELETE语句。这里的主键是指一个PRIMARY KEY
或一个?UNIQUE
索引,其中任何列都不能包含?NULL
。
该变量可以有两个值:
1
或YES
:仅发出警告(不是错误消息)。这是默认值。
0
或NO
:禁止更新。
validate_password_
xxx
该validate_password
插件实现了一组名称为 的系统变量?。这些变量会影响该插件的密码测试;请参见?第 6.4.3.2 节“密码验证插件选项和变量”。?validate_password_
xxx
服务器的版本号。该值还可能包括指示服务器构建或配置信息的后缀。-log
表示开启普通日志、慢查询日志、二进制日志中的一项或多项。-debug
表示服务器是在启用调试支持的情况下构建的。
系统变量 |
|
---|---|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
CMake配置程序有一个?选项COMPILATION_COMMENT,允许在构建 MySQL 时指定注释。该变量包含该注释的值。请参见?第 2.8.7 节,“MySQL 源配置选项”。
系统变量 |
|
---|---|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
服务器二进制文件的类型。
系统变量 |
|
---|---|
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
MySQL 构建于其上的操作系统类型。
命令行格式 | --wait-timeout=# |
---|---|
系统变量 |
|
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 28800 |
最小值 | 1 |
最大值 (Windows) | 2147483 |
最大值(其他) | 31536000 |
单元 | 秒 |
服务器在关闭非交互式连接之前等待该连接上的活动的秒数。
线程启动时,会话 值从全局值或全局 值wait_timeout初始化?,具体取决于客户端的类型(由?connect 选项 定义)。也可以看看。?wait_timeoutinteractive_timeoutCLIENT_INTERACTIVE
mysql_real_connect()interactive_timeout
由生成消息的最后一条语句导致的错误、警告和注释的数量。该变量是只读的。请参见第 13.7.5.40 节“显示警告声明”。