5.1.7 服务器系统变量

MySQL 服务器维护许多配置其操作的系统变量。每个系统变量都有一个默认的 value。可以使用命令 line 上的选项或选项文件在服务器启动时设置系统变量。其中大多数都可以使用组语句在运行时动态更改,这使您可以修改服务器的操作,而无需停止并重新启动它。您还可以在表达式中使用系统变量值。

在运行时,设置 global 系统变量 value 需要超特权。设置 session 系统变量 value 通常不需要特殊权限,可以由任何用户完成,尽管有 exceptions。有关更多信息,请参阅第 5.1.8.1 节,“系统变量权限”

有几种方法可以查看系统变量的名称和值:

  • 要查看服务器将根据其 compiled-in 默认值以及它读取的任何选项 files 使用的值,请使用以下命令:
mysqld --verbose --help
  • 要仅根据其 compiled-in 默认值查看服务器将使用的值,忽略任何选项 files 中的设置,请使用以下命令:
mysqld --no-defaults --verbose --help
  • 要查看 running 服务器使用的当前值,请使用显示变量语句或 Performance Schema 系统变量表。见第 25.12.13 节,“性能 Schema 系统变量表”。

本节提供每个系统变量的说明。有关系统变量摘要 table,请参阅第 5.1.4 节,“服务器系统变量参考”。有关操作系统变量的更多信息,请参见第 5.1.8 节,“使用系统变量”。

有关其他系统变量信息,请参阅以下部分:

  • 第 5.1.8 节,“使用系统变量”,讨论了设置和显示系统变量值的语法。

  • 第 5.1.8.2 节,“动态系统变量”,列出可以在运行时设置的变量。

  • 有关调整系统变量的信息可以在第 5.1.1 节,“配置服务器”中找到。

  • 第 14.14 节,“InnoDB 启动选项和系统变量”,lists InnoDB系统变量。

  • 第 21.3.3.9.2 节,“NDB Cluster 系统变量”,lists 特定于 NDB Cluster 的系统变量。

  • 有关特定于复制的服务器系统变量的信息,请参阅第 16.1.6 节,“复制和二进制 Logging 选项和变量”。

注意
以下变量描述中的一些涉及“启用”或“禁用”变量。可以使用组语句将这些变量设置为ON1来启用这些变量,或者通过将它们设置为OFF0来禁用这些变量。 Boolean 变量可以在启动时设置为值ONTRUEOFFFALSE(不区分大小写),以及10。见第 4.2.2.4 节,“程序选项修饰符”。
某些系统变量控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从分配给缓冲区的总 memory 分配,并且所需的空间量可能取决于平台。这意味着当您将 value 分配给控制缓冲区大小的系统变量时,实际可用的空间量可能与指定的 value 不同。在某些情况下,金额可能小于分配的 value。服务器也可能向上调整 value。例如,如果为最小 value 为 1024 的变量分配 value 为 0,则服务器会将 value 设置为 1024。

除非另有说明,否则缓冲区大小,长度和堆栈大小的值以字节为单位。

某些系统变量采用 file name 值。除非另行指定,否则如果 value 是相对路径 name,则默认文件位置是数据目录。要明确指定位置,请使用绝对路径 name。假设数据目录是/var/mysql/data。如果 file-valued 变量作为相对路径 name 给出,则它将位于/var/mysql/data下。如果 value 是绝对路径 name,则其位置由路径 name 指定。


authenticationwindowsloglevel

属性
Command-Line 格式--authentication-windows-log-level=#
****介绍5.7.9
系统变量authentication_windows_log_level
范围全球
动态没有
类型整数
默认值2
最低 Value0
最大 Value4

仅当启用了authentication_windows Windows 身份验证插件并且启用了 debugging code 时,此变量才可用。见第 6.4.1.8 节,“Windows Pluggable Authentication”。

此变量设置 Windows 身份验证插件的 logging level。以下 table 显示允许的值。

描述
0没有 logging
1仅记录错误消息
2Log level 1 条消息和警告消息
3Log level 2 消息和信息说明
4Log level 3 消息和调试消息


authenticationwindows_use_principalname

属性
Command-Line 格式--authentication-windows-use-principal-name[={OFF\|ON}]
****介绍5.7.9
系统变量authentication_windows_use_principal_name
范围全球
动态没有
类型Boolean
默认值ON

仅当启用了authentication_windows Windows 身份验证插件时,此变量才可用。见第 6.4.1.8 节,“Windows Pluggable Authentication”。

使用InitSecurityContext() function 进行身份验证的 client 应该提供一个 string 来标识它所连接的服务(targetName)。 MySQL 使用服务器运行的帐户的主体 name(UPN)。 UPN 的格式为user_id@computer_name,无需在任何地方注册即可使用。该 UPN 由服务器在认证握手开始时发送。

此变量控制服务器是否在初始质询中发送 UPN。默认情况下,该变量已启用。出于安全原因,可以禁用它以避免将服务器的帐户 name 作为明文发送到 client。如果禁用该变量,则服务器始终在第一个质询中发送0x00字节, client 不指定targetName,因此使用 NTLM 身份验证。

如果服务器无法获取其 UPN(主要发生在不支持 Kerberos 身份验证的环境中),则服务器不会发送 UPN 并使用 NTLM 身份验证。


自动提交

属性
Command-Line 格式--autocommit[={OFF\|ON}]
系统变量autocommit
范围Global,Session
动态
类型Boolean
默认值ON

自动提交模式。如果设置为 1,则对 table 的所有更改都会立即生效。如果设置为 0,则必须使用承诺接受 transaction 或ROLLBACK取消它。如果自动提交为 0 并且您将其更改为 1,则 MySQL 会执行任何打开 transaction 的自动承诺。开始 transaction 的另一种方法是使用START TRANSACTION或开始语句。见第 13.3.1 节,“START TRANSACTION,COMMIT 和 ROLLBACK 语法”。

默认情况下,client 连接以自动提交设置为 1 开始。要使 clients 以默认值 0 开始,请通过使用--autocommit=0选项启动服务器来设置 global 自动提交 value。要使用选项文件设置变量,请包含以下 lines:

[mysqld]
autocommit=0


automatic_sp_privileges

属性
Command-Line 格式--automatic-sp-privileges[={OFF\|ON}]
系统变量automatic_sp_privileges
范围全球
动态
类型Boolean
默认值ON

当此变量的 value 为 1(默认值)时,如果用户无法执行,更改或删除例程,则服务器会自动将执行和改变常规权限授予存储例程的创建者。 (需要改变常规权限才能删除 routine.)当例程被删除时,服务器也会自动从创建者中删除这些权限。如果automatic_sp_privileges为 0,则服务器不会自动添加或删除这些权限。

例程的创建者是用于为其执行CREATE语句的帐户。这可能与例程定义中名为DEFINER的帐户不同。

另见第 23.2.2 节,“存储例程和 MySQL 权限”。


auto_generate_certs

属性
Command-Line 格式--auto-generate-certs[={OFF\|ON}]
****介绍5.7.5
系统变量auto_generate_certs
范围全球
动态没有
类型Boolean
默认值ON

如果服务器是使用 OpenSSL 编译的,则此变量可用(请参阅第 6.3.4 节,“SSL Library-Dependent 功能”)。它控制服务器是否在数据目录中自动生成 SSL key 和 certificate files(如果它们尚不存在)。

启动时,如果启用了auto_generate_certs系统变量,则服务器会自动在数据目录中生成 server-side 和 client-side SSL 证书和 key files,不会指定除--ssl之外的 SSL 选项,并且数据目录中缺少 server-side SSL files。这些 files 使用 SSL 启用安全 client 连接;见第 6.3.1 节,“配置 MySQL 使用加密连接”。

有关 SSL 文件自动生成的更多信息,包括文件名和特征,请参阅部分 6.3.3.1,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”

sha256_password_auto_generate_rsakeys系统变量是相关的,但控制使用 RSA 通过未安全连接进行安全密码交换所需的 RSA key-pair 文件的自动生成。


avoid_temporal_upgrade

属性
Command-Line 格式--avoid-temporal-upgrade[={OFF\|ON}]
****介绍5.7.6
****已过时5.7.6
系统变量avoid_temporal_upgrade
范围全球
动态
类型Boolean
默认值OFF

此变量控制ALTER TABLE是否隐式升级发现为 pre-5.6.4 格式的时间列(时间,约会时间和TIMESTAMP列,而不支持小数秒精度)。升级此类列需要 table 重建,这可以防止使用可能以其他方式应用于要执行的操作的快速更改。

默认情况下禁用此变量。启用它会导致ALTER TABLE不重建时间列,从而能够利用可能的快速更改。

此变量已弃用,将在以后的 MySQL 版本中删除。


backlog

属性
Command-Line 格式--back-log=#
系统变量back_log
范围全球
动态没有
类型整数
默认值-1(表示自动调整大小;不指定此文字 value)
最低 Value1
最大 Value65535

MySQL 可以拥有的未完成连接请求的数量。当主 MySQL 线程在非常短的时间内获得非常多的连接请求时,这就开始起作用了。然后,主线程需要一些 time(尽管很少)来检查连接并启动一个新线程。 backlog value 表示在 MySQL 暂时停止回复新请求之前的短时间内可以堆叠的请求数。只有在期望的短时间内有大量连接时,才需要增加此值。

换句话说,此 value 是传入 TCP/IP 连接的侦听队列的大小。您的操作系统对此队列的大小有自己的限制。 Unix listen()系统调用的手册页应该有更多细节。检查 OS 文档以获取此变量的最大 value。 backlog不能设置为高于操作系统限制。

默认 value 基于以下公式,上限为 900:

50 + (max_connections / 5)


BASEDIR

属性
Command-Line 格式--basedir=dir_name
系统变量basedir
范围全球
动态没有
类型目录 name
默认值configuration-dependent default

MySQL 安装基目录的路径。


bigtables

属性
Command-Line 格式--big-tables[={OFF\|ON}]
系统变量big_tables
范围Global,Session
动态
类型Boolean
默认值OFF

如果启用,则服务器存储磁盘上的所有临时表而不是 memory。这可以防止需要大型临时 table 的选择操作的大多数The table tbl_name is full错误,但也会减慢 in-memory 表就足够的查询速度。

新连接的默认 value 是OFF(使用 in-memory 临时表)。通常,永远不需要启用此变量,因为服务器能够通过将 memory 用于小型临时表并根据需要切换到 disk-based 表来自动处理大型结果集。


bind_address

属性
Command-Line 格式--bind-address=addr
系统变量bind_address
范围全球
动态没有
类型
默认值*

MySQL 服务器侦听单个网络 socket 以进行 TCP/IP 连接。此 socket 绑定到单个地址,但地址可以 map 到多个网络接口。要指定地址,请在服务器启动时设置bind_address=addr,其中addr是 IPv4 或 IPv6 地址或 host name。如果addr是 host name,则服务器将 name 解析为 IP 地址并绑定到该地址。如果 host name 解析为多个 IP 地址,则服务器将使用第一个 IPv4 地址(如果有),否则使用第一个 IPv6 地址。

服务器处理不同类型的地址,如下所示:

  • 如果地址为*,则服务器在所有服务器 host IPv4 接口上接受 TCP/IP 连接,如果服务器 host 支持 IPv6,则在所有 IPv6 接口上接受。使用此地址允许所有服务器接口上的 IPv4 和 IPv6 连接。此 value 是默认值。

  • 如果地址为0.0.0.0,则服务器在所有服务器 host IPv4 接口上接受 TCP/IP 连接。

  • 如果地址为::,则服务器在所有服务器 host IPv4 和 IPv6 接口上接受 TCP/IP 连接。

  • 如果地址是 IPv4-mapped 地址,则服务器接受 IPv4 或 IPv6 格式的该地址的 TCP/IP 连接。例如,如果服务器绑定到::ffff:127.0.0.1,客户端可以使用--host=127.0.0.1--host=::ffff:127.0.0.1进行连接。

  • 如果地址是“常规”IPv4 或 IPv6 地址(例如127.0.0.1::1),则服务器仅接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。

如果 binding 到该地址失败,则服务器会产生错误并且无法启动。

如果要将服务器绑定到特定地址,请确保mysql.user system table 包含具有管理权限的帐户,可用于连接到该地址。否则,您将无法关闭服务器。例如,如果将服务器绑定到*,则可以使用所有现有帐户连接到该服务器。但是如果将服务器绑定到::1,它只接受该地址上的连接。在这种情况下,首先要确保mysql.user帐户中存在'root'@'::1'帐户,这样您仍然可以连接到服务器以将其关闭。

此变量对嵌入式服务器(libmysqld)没有影响,并且在嵌入式服务器中不再显示 MySQL 5.7.2.


block_encryption_mode

属性
Command-Line 格式--block-encryption-mode=#
****介绍5.7.4
系统变量block_encryption_mode
范围Global,Session
动态
类型
默认值aes-128-ecb

此变量控制 block-based 算法(如 AES)的块加密模式。它会影响AES_ENCRYPT()和AES_DECRYPT()的加密。

block_encryption_mode采用aes-keylen-mode格式的 value,其中keylen是 key 长度的比特,mode是加密模式。 value 不是 case-sensitive。允许的keylen值是 128,192 和 256.允许的加密模式取决于 MySQL 是使用 OpenSSL 还是使用 yaSSL 编译的:

  • 对于 OpenSSL,允许的mode值为:ECBCBCCFB1CFB8CFB128OFB

  • 对于 yaSSL,允许的mode值为:ECBCBC

对于 example,此语句使 AES 加密函数使用 256 位的 key 长度和 CBC 模式:

SET block_encryption_mode = 'aes-256-cbc';

尝试将block_encryption_mode设置为包含不受支持的 key 长度的 value 或 SSL library 不支持的模式时发生错误。


bulkinsert_buffer_size

属性
Command-Line 格式--bulk-insert-buffer-size=#
系统变量bulk_insert_buffer_size
范围Global,Session
动态
类型整数
默认值8388608
最低 Value0
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

在将数据添加到非空表时,MyISAM使用特殊的 tree-like 缓存为INSERT ... SELECT,INSERT ... VALUES (...), (...), ...和负载数据更快地批量插入。此变量以每个线程的字节数限制缓存树的大小。将其设置为 0 将禁用此优化。默认的 value 是 8MB。


character_setclient

属性
系统变量character_set_client
范围Global,Session
动态
类型
默认值utf8

从 client 到达的 statements 的字符集。当 client 连接到服务器时,使用 client 请求的字符集设置此变量的 session value。 (许多 clients 支持--default-character-set选项以允许显式指定此字符集.另请参阅第 10.4 节,“连接字符集和排序” .)变量的 global value 用于在 client-requested value 未知或不可用的情况下设置 session value,或者服务器是配置为忽略 client 请求:

  • client 请求服务器不知道的字符集。例如,当连接到未配置sjis支持的服务器时,Japanese-enabled client 会请求sjis

  • client 来自比 MySQL 4.1 更早的 MySQL 的 version,因此不会请求字符集。

  • mysqld以--skip-character-set-client-handshake选项启动,导致它忽略 client 字符集 configuration。这会再现 MySQL 4.0 行为,如果您希望在不升级所有 clients 的情况下升级服务器,这将非常有用。

某些字符_set 不能用作 client 字符集。试图将它们用作character_setclient value 会产生错误。见不允许 Client 字符 Sets。


character_set_connection

属性
系统变量character_set_connection
范围Global,Session
动态
类型
默认值utf8

用于 literals 的字符集,没有字符集导入器和 number-to-string 转换。有关介绍人的信息,请参阅第 10.3.8 节,“字符集介绍人”。


character_set_database

属性
系统变量character_set_database
范围Global,Session
动态
类型
默认值latin1
脚注此选项是动态的,但只有服务器应设置此信息。您不应手动设置此变量的 value。

默认数据库使用的字符集。每当默认数据库更改时,服务器都会设置此变量。如果没有默认数据库,则该变量与character_set_server具有相同的 value。

global character_set_database和collation_database系统变量在 MySQL 5.7 中已弃用,将在 MySQL 的未来 version 中删除。

在中不推荐为 session character_set_database和collation_database系统变量分配 value,并且赋值会产生警告。 session 变量将在 MySQL 的未来 version 中变为只读,并且赋值将产生错误。仍然可以访问 session 变量来确定默认数据库的数据库字符集和排序规则。


character_setfilesystem

属性
Command-Line 格式--character-set-filesystem=name
系统变量character_set_filesystem
范围Global,Session
动态
类型
默认值binary

文件系统字符集。此变量用于解释引用文件名的 string literals,例如负载数据和SELECT ... INTO OUTFILE statements 以及LOAD_FILE() function。在文件打开尝试发生之前,此类文件名将从character_setclient转换为character_setfilesystem。默认的 value 是binary,这意味着不会发生转换。对于允许使用多字节文件名的系统,不同的 value 可能更合适。例如,如果系统使用 UTF-8 表示文件名,请将character_setfilesystem设置为'utf8mb4'


character_set_results

属性
系统变量character_set_results
范围Global,Session
动态
类型
默认值utf8

用于将查询结果返回给 client 的字符集。这包括结果数据,如列值,结果元数据(如列名称)和错误消息。


character_set_server

属性
Command-Line 格式--character-set-server=name
系统变量character_set_server
范围Global,Session
动态
类型
默认值latin1

服务器默认字符集。见第 10.15 节,“字符集 Configuration”。如果设置此变量,还应设置collation_server以指定字符集的排序规则。


character_set_system

属性
系统变量character_set_system
范围全球
动态没有
类型
默认值utf8

服务器用于存储标识符的字符集。 value 总是utf8


charactersets_dir

属性
Command-Line 格式--character-sets-dir=dir_name
系统变量character_sets_dir
范围全球
动态没有
类型目录 name

安装 character sets 的目录。见第 10.15 节,“字符集 Configuration”。


check_proxy_users

属性
Command-Line 格式--check-proxy-users[={OFF\|ON}]
****介绍5.7.7
系统变量check_proxy_users
范围全球
动态
类型Boolean
默认值OFF

一些身份验证插件为自己实现代理用户映射(例如,PAM 和 Windows 身份验证插件)。默认情况下,其他身份验证插件不支持代理用户。其中,有些人可以根据授予的代理权限请求 MySQL 服务器本身 map 代理用户:mysql_native_passwordsha256_password

如果启用了check_proxy_users系统变量,则服务器会对发出此类请求的任何身份验证插件执行代理用户映射。但是,可能还需要启用 plugin-specific 系统变量以利用服务器代理用户映射支持:

  • 对于mysql_native_password插件,请启用mysql_native_password_proxy_users。

  • 对于sha256_password插件,请启用sha256_password_proxy_users。

有关用户代理的信息,请参阅第 6.2.14 节,“代理用户”。


collation_connection

属性
系统变量collation_connection
范围Global,Session
动态
类型

连接字符集的排序规则。 collation_connection对于文字 strings 的比较很重要。为了将 strings 与列值进行比较,collation_connection无关紧要,因为列具有自己的排序规则,排序优先级更高(请参阅第 10.8.4 节,“表达式中的整理强制性”)。


collation_database

属性
系统变量collation_database
范围Global,Session
动态
类型
默认值latin1_swedish_ci
脚注此选项是动态的,但只有服务器应设置此信息。您不应手动设置此变量的 value。

默认数据库使用的排序规则。每当默认数据库更改时,服务器都会设置此变量。如果没有默认数据库,则该变量与collation_server具有相同的 value。

global character_set_database和collation_database系统变量在 MySQL 5.7 中已弃用,将在 MySQL 的未来 version 中删除。

在中不推荐为 session character_set_database和collation_database系统变量分配 value,并且赋值会产生警告。 session 变量将在 MySQL 的未来 version 中变为只读,并且赋值将产生错误。仍然可以访问 session 变量来确定默认数据库的数据库字符集和排序规则。


collation_server

属性
Command-Line 格式--collation-server=name
系统变量collation_server
范围Global,Session
动态
类型
默认值latin1_swedish_ci

服务器的默认排序规则。见第 10.15 节,“字符集 Configuration”。


completion_type

属性
Command-Line 格式--completion-type=#
系统变量completion_type
范围Global,Session
动态
类型列举
默认值NO_CHAIN
有效值NO_CHAIN
CHAIN
RELEASE
0
1
2

transaction 完成类型。此变量可以采用以下 table 中显示的值。可以使用 name 值或相应的 integer 值分配变量。

描述
NO_CHAIN(或 0)承诺和ROLLBACK不受影响。这是默认值。
CHAIN(或 1)承诺和ROLLBACK分别相当于COMMIT AND CHAINROLLBACK AND CHAIN。 (一个新的 transaction 立即启动,与 just-terminated transaction.)具有相同的隔离 level
RELEASE(或 2)承诺和ROLLBACK分别相当于COMMIT RELEASEROLLBACK RELEASE。 (终止 transaction.)后服务器断开连接

completion_type会影响以START TRANSACTION或开始开头并以承诺或ROLLBACK结尾的 transactions。它不适用于执行第 13.3.3 节,“导致隐式提交的声明”中列出的 statements 导致的隐式提交。它也不适用于XA COMMIT,XA ROLLBACK或autocommit=1。


concurrentinsert

属性
Command-Line 格式--concurrent-insert[=#]
系统变量concurrent_insert
范围全球
动态
类型列举
默认值AUTO
有效值NEVER
AUTO
ALWAYS
0
1
2

如果AUTO(默认值),MySQL 允许插入和选择 statements 同时 run 为MyISAM表,在数据文件中间没有空闲块。如果使用--skip-new启动mysqld,则此变量设置为NEVER

此变量可以采用以下 table 中显示的值。可以使用 name 值或相应的 integer 值分配变量。

描述
NEVER(或 0)禁用并发插入
AUTO(或 1)(默认值)为没有孔的MyISAM表启用并发 insert
ALWAYS(或 2)为所有MyISAM表启用并发插入,即使是那些有漏洞的表。对于带孔的 table,如果另一个线程正在使用,则会在 table 的末尾插入新行。否则,MySQL 获取正常的写锁定并将该行插入到孔中。

另见第 8.11.3 节,“并发插入”。


connecttimeout

属性
Command-Line 格式--connect-timeout=#
系统变量connect_timeout
范围全球
动态
类型整数
默认值10
最低 Value2
最大 Value31536000

mysqld服务器在响应Bad handshake之前等待连接数据包的秒数。默认的 value 是 10 秒。

如果 clients 经常遇到Lost connection to MySQL server at 'XXX', system error: errno形式的错误,则增加connecttimeout value 可能会有所帮助。


core_file

属性
系统变量core_file
范围全球
动态没有
类型Boolean
默认值OFF

是否在服务器崩溃时写入核心文件。此变量由--core-file选项设置。


DATADIR

属性
Command-Line 格式--datadir=dir_name
系统变量datadir
范围全球
动态没有
类型目录 name

MySQL 服务器数据目录的路径。相对于当前目录解析相对_path。如果服务器将自动启动(即,在您无法假设当前目录的上下文中),最好将DATADIR value 指定为绝对路径。


date_format

此变量未使用。它已被弃用,并在 MySQL 8.0 中删除。


datetime_format

此变量未使用。它已被弃用,并在 MySQL 8.0 中删除。


调试

属性
Command-Line 格式--debug[=debug_options]
系统变量debug
范围Global,Session
动态
类型
默认 Value(Windows)d:t:i:O,\mysqld.trace
默认 Value(Unix)d:t:i:o,/tmp/mysqld.trace

此变量指示当前的调试设置。它仅适用于使用调试支持构建的服务器。初始 value 来自服务器启动时给出的--debug选项实例的 value。 global 和 session 值可以在运行时设置。

设置此系统变量的 session value 是受限制的操作。 session 用户必须具有足以设置受限 session 变量的权限。见第 5.1.8.1 节,“系统变量权限”。

分配以+-开头的 value 会导致 value 被添加到当前 value 或从当前 value 中减去 value:

mysql> SET debug = 'T';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| T       |
+---------+

mysql> SET debug = '+P';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| P:T     |
+---------+

mysql> SET debug = '-P';
mysql> SELECT @@debug;
+---------+
| @@debug |
+---------+
| T       |
+---------+

有关更多信息,请参阅第 28.5.3 节,“DBUG 包”。


debug_sync

属性
系统变量debug_sync
范围session
动态
类型

此变量是 Debug Sync 工具的用户界面。使用 Debug Sync 要求使用-DENABLE_DEBUG_SYNC=1 CMake选项配置 MySQL(请参阅第 2.9.7 节,“MySQL Source-Configuration 选项”)。如果未编译 Debug Sync,则此系统变量不可用。

global 变量 value 是只读的,表示工具是否已启用。默认情况下,禁用 Debug Sync 并且debug_sync的 value 为OFF。如果服务器以--debug-sync-timeout=N启动,其中N是超时值大于 0,则启用调试同步,debug_sync的值为ON - current signal,后跟信号 name。此外,N成为各个同步点的默认超时。

session value 可以被任何用户读取,并且与 global 变量具有相同的 value。可以将 session value 设置为控制同步点。

设置此系统变量的 session value 是受限制的操作。 session 用户必须具有足以设置受限 session 变量的权限。见第 5.1.8.1 节,“系统变量权限”。

有关 Debug Sync 工具以及如何使用同步点的说明,请参见MySQL 内部:测试同步。


default_authentication_plugin

属性
Command-Line 格式--default-authentication-plugin=plugin_name
****介绍5.7.2
系统变量default_authentication_plugin
范围全球
动态没有
类型列举
默认值mysql_native_password
有效值mysql_native_password
sha256_password

默认的身份验证插件。允许这些值:

  • mysql_native_password:使用 MySQL 本机密码;见第 6.4.1.1 节,“本机可插入认证”。

  • sha256_password:使用 SHA-256 密码;见第 6.4.1.4 节,“SHA-256 可插拔认证”。

注意
如果此变量的 value 不是mysql_native_password,那么早于 MySQL 5.5.7 的客户端将无法连接,因为在允许的默认身份验证插件中,它们只能理解mysql_native_password身份验证协议。
default_authentication_plugin value 会影响服务器操作的这些方面:

  • 它确定服务器为未明确指定身份验证插件的创建用户和GRANT statements 创建的新帐户分配的身份验证插件。

  • old_passwords系统变量会影响使用mysql_native_passwordsha256_password身份验证插件的帐户的密码哈希。如果默认的身份验证插件是其中一个插件,则服务器在启动时将_set old_passwords设置为插件密码哈希方法所需的 value。

  • 对于使用以下任一 statements 创建的帐户,服务器将帐户与默认身份验证插件相关联,并为该帐户分配给定密码,根据该插件的要求进行哈希处理:

CREATE USER ... IDENTIFIED BY 'cleartext password';
GRANT ...  IDENTIFIED BY 'cleartext password';
  • 对于使用以下任一 statements 创建的帐户,如果密码哈希具有插件所需的格式,则服务器会将该帐户与默认身份验证插件关联,并为该帐户分配给定的密码哈希:
CREATE USER ... IDENTIFIED BY PASSWORD 'encrypted password';
GRANT ...  IDENTIFIED BY PASSWORD 'encrypted password';

如果密码哈希值不是默认身份验证插件所需的格式,则该语句将失败。

这个变量是在 MySQL 5.7.2 中添加的。在 MySQL 5.7 的早期,使用--default-authentication-plugin command-line 选项,在服务器启动时使用相同的方式,但在运行时无法访问。


default_password_lifetime

属性
Command-Line 格式--default-password-lifetime=#
****介绍5.7.4
系统变量default_password_lifetime
范围全球
动态
类型整数
默认 Value(> = 5.7.11)0
默认 Value(<= 5.7.10)360
最低 Value0
最大 Value65535

此变量定义 global 自动密码到期 policy。默认default_password_lifetime value 为 0,禁用自动密码到期。如果default_password_lifetime的 value 是正 integer N,则表示允许的密码生存期;密码必须每隔N天更改一次。

可以使用更改用户语句的密码到期选项为个别帐户根据需要覆盖 global 密码到期 policy。见第 6.2.11 节,“密码管理”。

注意
从 MySQL 5.7.4 到 5.7.10,默认的default_password_lifetime value 是 360(密码每年大约必须更改一次)。对于这些版本,请注意,如果您不对default_password_lifetime变量或单个用户帐户进行任何更改,则所有用户密码将在 360 天后过期,并且所有用户帐户将在发生这种情况时以限制模式启动 running。 Clients(实际上是用户)连接到服务器将收到一个错误,指示必须更改密码:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

但是,对于自动连接到服务器的 clients,例如通过脚本建立的连接,很容易错过。为避免此类客户端由于密码过期而突然停止工作,请确保更改这些客户端的密码过期设置,如下所示:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER

或者,将default_password_lifetime变量设置为0,从而禁用所有用户的自动密码到期。


default_storage_engine

属性
Command-Line 格式--default-storage-engine=name
系统变量default_storage_engine
范围Global,Session
动态
类型列举
默认值InnoDB

表的默认存储引擎。见第 15 章,替代存储引擎。此变量仅为永久表设置存储引擎。要为TEMPORARY表设置存储引擎,请设置default_tmp_storage_engine系统变量。

要查看哪些存储引擎可用并已启用,请使用显示发动机语句或查询INFORMATION_SCHEMA 引擎 table。

default_storage_engine应优先于storage_engine使用,不推荐使用storage_engine并在 MySQL 5.7.5 中删除。

如果在服务器启动时禁用默认存储引擎,则必须将 permanent 和TEMPORARY表的默认引擎设置为其他引擎,否则服务器将无法启动。


default_tmp_storage_engine

属性
Command-Line 格式--default-tmp-storage-engine=name
系统变量default_tmp_storage_engine
范围Global,Session
动态
类型列举
默认值InnoDB

TEMPORARY表的默认存储引擎(使用创建临时 TABLE创建)。要为永久表设置存储引擎,请设置default_storage_engine系统变量。另请参阅有关可能值的变量的讨论。

如果在服务器启动时禁用默认存储引擎,则必须将 permanent 和TEMPORARY表的默认引擎设置为其他引擎,否则服务器将无法启动。


default_week_format

属性
Command-Line 格式--default-week-format=#
系统变量default_week_format
范围Global,Session
动态
类型整数
默认值0
最低 Value0
最大 Value7

用于WEEK() function 的默认模式 value。见第 12.7 节,“日期和 Time 函数”。


delaykey_write

属性
Command-Line 格式--delay-key-write[={OFF\|ON\|ALL}]
系统变量delay_key_write
范围全球
动态
类型列举
默认值ON
有效值ON
OFF
ALL

此变量指定如何使用延迟 key 写入。它仅适用于MyISAM表。延迟 key 写入会导致 key 缓冲区在写入之间不被刷新。另见第 15.2.1 节,“MyISAM 启动选项”。

此变量可以具有以下值之一,以影响可在创建 TABLE statements 中使用的DELAY_KEY_WRITE table 选项的处理。

选项描述
OFFDELAY_KEY_WRITE被忽略。
ONMySQL 尊重创建 TABLE statements 中指定的任何DELAY_KEY_WRITE选项。这是默认值。
ALL所有新打开的表都被视为在启用了DELAY_KEY_WRITE选项的情况下创建的。

注意
如果将此变量设置为ALL,则在使用表时,不应使用其他程序(例如另一个 MySQL 服务器或myisamchk)中的MyISAM表。这样做会导致索引损坏。
如果为 table 启用了DELAY_KEY_WRITE,则在每次索引更新时都不会为 table 刷新 key 缓冲区,但仅在 table 关闭时才刷新。这会大大加快对密钥的写入速度,但如果使用此 feature,则应通过使用--myisam-recover-options选项启动服务器来添加所有MyISAM表的自动检查(对于 example,--myisam-recover-options=BACKUP,FORCE)。见第 5.1.6 节,“服务器命令选项”和第 15.2.1 节,“MyISAM 启动选项”。

警告
如果使用--external-locking启用外部锁定,则对使用延迟 key 写入的表的索引损坏没有保护。


delayedinsert_limit

属性
Command-Line 格式--delayed-insert-limit=#
****已过时
系统变量delayed_insert_limit
范围全球
动态
类型整数
默认值100
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

不推荐使用此系统变量(因为不支持DELAYED插入),并且将在以后的版本中删除。


delayedinserttimeout

属性
Command-Line 格式--delayed-insert-timeout=#
****已过时
系统变量delayed_insert_timeout
范围全球
动态
类型整数
默认值300

不推荐使用此系统变量(因为不支持DELAYED插入),并且将在以后的版本中删除。


delayed_queue_size

属性
Command-Line 格式--delayed-queue-size=#
****已过时
系统变量delayed_queue_size
范围全球
动态
类型整数
默认值1000
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

不推荐使用此系统变量(因为不支持DELAYED插入),并且将在以后的版本中删除。


disabled_storage_engines

属性
Command-Line 格式--disabled-storage-engines=engine[,engine]...
****介绍5.7.8
系统变量disabled_storage_engines
范围全球
动态没有
类型
默认值empty string

此变量指示哪些存储引擎不能用于创建表或表空间。例如,要防止创建新的MyISAMFEDERATED表,请在服务器选项文件中使用这些 lines 启动服务器:

[mysqld]
disabled_storage_engines="MyISAM,FEDERATED"

默认情况下,disabled_storage_engines为空(未禁用引擎),但可以将其设置为一个或多个引擎的 comma-separated 列表(不区分大小写)。 value 中指定的任何引擎都不能用于创建具有创建 TABLE或创建 TABLESPACE的表或表空间,并且不能与ALTER TABLE ......引擎或ALTER TABLESPACE ...引擎一起使用来更改现有表或表空间的存储引擎。尝试这样做会导致ER_DISABLED_STORAGE_ENGINE错误。

disabled_storage_engines不限制现有表的其他 DDL 语句,例如创建指数,TRUNCATE TABLE,分析 TABLE,DROP TABLE或DROP TABLESPACE。这允许平滑过渡,以便可以通过诸如ALTER TABLE ... ENGINE permitted_engine之类的方式将使用禁用引擎的现有表或表空间迁移到允许的引擎。

允许将default_storage_engine或default_tmp_storage_engine系统变量设置为已禁用的存储引擎。这可能会导致 applications 行为不规律或失败,尽管这可能是开发环境中用于识别使用禁用引擎的应用程序的有用技术,以便可以修改它们。

disabled_storage_engines已禁用,如果使用以下任何选项启动服务器,则无效:--bootstrap--initialize--initialize-insecure--skip-grant-tables

注意
设置disabled_storage_engines可能会导致mysql_upgrade出现问题。有关详细信息,请参阅第 4.4.7 节,“mysql_upgrade - 检查并升级 MySQL 表”。


disconnect_on_expired_password

属性
Command-Line 格式--disconnect-on-expired-password[={OFF\|ON}]
****介绍5.7.1
系统变量disconnect_on_expired_password
范围全球
动态没有
类型Boolean
默认值ON

此变量控制服务器如何使用过期密码处理 clients:

  • 如果 client 指示它可以处理过期密码,则disconnect_on_expired_password的 value 是无关紧要的。服务器允许 client 连接,但将其置于沙箱模式。

  • 如果 client 未指示它可以处理过期密码,则服务器根据disconnect_on_expired_password的 value 处理 client:

  • 如果启用了disconnect_on_expired_password:,则服务器会断开 client。

  • 如果禁用disconnect_on_expired_password:,则服务器允许 client 连接,但将其置于沙箱模式。

有关 client 与 expired-password 处理相关的服务器设置交互的更多信息,请参阅第 6.2.12 节,“过期密码的服务器处理”。


div_precision_increment

属性
Command-Line 格式--div-precision-increment=#
系统变量div_precision_increment
范围Global,Session
动态
类型整数
默认值4
最低 Value0
最大 Value30

此变量表示增加使用/ operator 执行的除法运算结果的比例的位数。默认 value 为 4.最小值和最大值分别为 0 和 30。以下 example 说明了增加默认 value 的效果。

mysql> SELECT 1/7;
+--------+
| 1/7    |
+--------+
| 0.1429 |
+--------+
mysql> SET div_precision_increment = 12;
mysql> SELECT 1/7;
+----------------+
| 1/7            |
+----------------+
| 0.142857142857 |
+----------------+


end_markers_in_json

属性
Command-Line 格式--end-markers-in-json[={OFF\|ON}]
系统变量end_markers_in_json
范围Global,Session
动态
类型Boolean
默认值OFF

优化器 JSON 输出是否应添加结束标记。见MySQL 内部:end_markers_in_json 系统变量。


  • eq_range_index_dive_limit
属性
Command-Line 格式--eq-range-index-dive-limit=#
系统变量eq_range_index_dive_limit
范围Global,Session
动态
类型整数
默认 Value(> = 5.7.4)200
默认 Value(<= 5.7.3)10
最低 Value0
最大 Value4294967295

此变量指示在估计合格行数时,优化程序应从使用索引 dives 切换到索引统计信息时相等比较条件中的相等范围数。它适用于具有这些等效形式之一的表达式的 evaluation,其中优化程序使用非唯一索引来查找col_name值:

col_name IN(val1, ..., valN)
col_name = val1 OR ... OR col_name = valN

在这两种情况下,表达式都包含N等于范围。优化程序可以使用索引潜水或索引统计进行行估计。如果eq_range_index_dive_limit大于 0,则优化程序使用现有索引统计信息而不是索引潜水(如果存在eq_range_index_dive_limit或更多相等范围)。因此,要允许使用最多N等于N的索引潜水,请将eq_range_index_dive_limit设置为N 1.要禁用索引统计信息并始终使用索引潜水而不管N,请将eq_range_index_dive_limit设置为 0。

有关更多信息,请参阅Many-Valued 比较的等式范围优化。

要更新 table 索引统计信息以获得最佳估计值,请使用分析 TABLE。


error_count

生成消息的最后一个语句导致的错误数。此变量是只读的。见第 13.7.5.17 节,“显示错误语法”。


event_scheduler

属性
Command-Line 格式--event-scheduler[=value]
系统变量event_scheduler
范围全球
动态
类型列举
默认值OFF
有效值ON
OFF
DISABLED

此变量启用或禁用,启动或停止 Event Scheduler。可能的状态值为ONOFFDISABLED,默认值为OFF。转动 Event Scheduler OFF与禁用 Event Scheduler 不同,后者需要将状态设置为DISABLED。这个变量及其对 Event Scheduler 操作的影响将在Section 23.4.2,“ Event Scheduler Configuration”中详细讨论


explicit_defaults_fortimestamp

属性
Command-Line 格式--explicit-defaults-for-timestamp[={OFF\|ON}]
****已过时
系统变量explicit_defaults_for_timestamp
范围Global,Session
动态
类型Boolean
默认值OFF

此系统变量确定服务器是否为TIMESTAMP列中的默认值和NULL -value 处理启用某些非标准行为。默认情况下,禁用explicit_defaults_fortimestamp,这将启用非标准行为。

如果禁用explicit_defaults_fortimestamp,则服务器启用非标准行为并处理TIMESTAMP列,如下所示:

  • 未使用NULL属性显式声明的TIMESTAMP列将使用NOT NULL属性自动声明。允许为此列分配的 value,并将列设置为当前时间戳。

  • 如果未使用NULL属性或显式DEFAULTON UPDATE属性显式声明 table 中的第一个TIMESTAMP列,则会自动使用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP属性声明。

  • 第一个后面的TIMESTAMP列,如果没有使用NULL属性或显式DEFAULT属性显式声明,则自动声明为DEFAULT '0000-00-00 00:00:00'(“零”时间戳)。对于为此类列指定没有显式 value 的插入行,将为该列分配'0000-00-00 00:00:00'并且不会发出警告。

根据是否启用了严格的 SQL 模式或NO_ZERODATE SQL 模式,'0000-00-00 00:00:00'的默认 value 可能无效。请注意,传统 SQL 模式包括严格模式和NO_ZERODATE。见第 5.1.10 节,“服务器 SQL 模式”。

刚刚描述的非标准行为已弃用,将在未来的 MySQL 版本中删除。

如果启用explicit_defaults_fortimestamp,则服务器将禁用非标准行为并处理TIMESTAMP列,如下所示:

  • 无法为TIMESTAMP列分配的值以将其设置为当前时间戳。要分配当前时间戳,请将列设置为CURRENTTIMESTAMP或同义词,例如NOW()。

  • 未使用NOT NULL属性显式声明的TIMESTAMP列自动使用NULL属性声明,并允许NULL值。将的 value 分配给NULL,而不是当前时间戳。

  • 使用NOT NULL属性声明的TIMESTAMP列不允许NULL值。对于为此类列指定NULL的插入,结果是 single-row insert 的错误或者如果启用了严格的 SQL 模式,或者为禁用严格 SQL 模式的 multiple-row 插入插入了'0000-00-00 00:00:00'。在任何情况下都不会为列分配的值,将其设置为当前时间戳。

  • 使用NOT NULL属性显式声明且没有显式DEFAULT属性的TIMESTAMP列被视为没有默认 value。对于为此类列指定没有显式 value 的插入行,结果取决于 SQL 模式。如果启用了严格的 SQL 模式,则会发生错误。如果未启用严格 SQL 模式,则使用隐式默认值'0000-00-00 00:00:00'声明该列,并发出警告。这类似于 MySQL 如何处理其他时间类型,如约会时间。

  • 不会使用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP属性自动声明TIMESTAMP列。必须明确指定这些属性。

  • table 中的第一个TIMESTAMP列与第一个列之后的TIMESTAMP列的处理方式不同。

如果在服务器启动时禁用explicit_defaults_fortimestamp,则会在错误 log 中显示此警告:

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option (see
documentation for more details).

如警告所示,要禁用已弃用的非标准行为,请在服务器启动时启用explicit_defaults_fortimestamp系统变量。

注意
explicit_defaults_fortimestamp本身已被弃用,因为它的唯一目的是允许控制将来在 MySQL 版本中删除的已弃用的TIMESTAMP行为。当删除这些行为时,explicit_defaults_fortimestamp将没有任何意义,也将被删除。
有关其他信息,请参阅第 11.3.5 节,“TIMESTAMP 和 DATETIME 的自动初始化和更新”。


external_user

属性
系统变量external_user
范围session
动态没有
类型

在身份验证 process 期间使用的外部用户 name,由用于验证 client 的插件设置。使用本机(built-in)MySQL 身份验证,或者如果插件未设置 value,则此变量为NULL。见第 6.2.14 节,“代理用户”。


红晕

属性
Command-Line 格式--flush[={OFF\|ON}]
系统变量flush
范围全球
动态
类型Boolean
默认值OFF

如果ON,则服务器在每个 SQL 语句之后刷新(同步)对磁盘的所有更改。通常,MySQL 仅在每个 SQL 语句之后写入对磁盘的所有更改,并让操作系统处理与磁盘的同步。见第 B.4.3.3 节,“如果 MySQL 不断崩溃该怎么办”。如果使用--flush选项启动mysqld,则此变量设置为ON

注意
如果启用红晕,则flushtime的 value 无关紧要,对flushtime的更改对刷新行为没有影响。


flushtime

属性
Command-Line 格式--flush-time=#
系统变量flush_time
范围全球
动态
类型整数
默认值0
最低 Value0

如果将其设置为非零 value,则每隔_1 秒关闭所有表以释放资源并将未刷新的数据同步到磁盘。此选项最适用于资源最少的系统。

注意
如果启用红晕,则flushtime的 value 无关紧要,对flushtime的更改对刷新行为没有影响。


foreignkey_checks

属性
系统变量foreign_key_checks
范围Global,Session
动态
类型Boolean
默认值ON

如果设置为 1(默认值),则检查InnoDB表的外部 key 约束。如果设置为 0,则会忽略外部 key 约束,并带有几个 exceptions。当 re-creating atable 被删除时,如果 table 定义不符合引用 table 的外部 key 约束,则会返回错误。同样,如果未正确形成外部 key 定义,ALTER TABLE操作将返回错误。有关更多信息,请参阅第 13.1.18.6 节,“使用 FOREIGN KEY 约束”。

设置此变量对导航台表的影响与对InnoDB表的影响相同。通常,在正常操作期间启用此设置,以强制执行参照完整性。禁用外部 key 检查对于重新加载与 parent/child 关系所需的 order 不同的InnoDB表非常有用。见第 14.6.1.5 节,“InnoDB 和 FOREIGN KEY 约束”。

foreign_key_checks设置为 0 也会影响数据定义 statements:DROP SCHEMA删除 schema,即使它包含具有 schema 之外的表引用的外键的表,并且DROP TABLE删除具有其他表引用的外键的表。

注意
foreign_key_checks设置为 1 不会触发现有 table 数据的扫描。因此,在时添加到 table 的行将不会进行一致性验证。

即使使用foreign_key_checks=0,也不允许删除外部 key 约束所需的索引。在删除索引之前必须删除外部 key 约束(Bug#70260)。


ftboolean_syntax

属性
Command-Line 格式--ft-boolean-syntax=name
系统变量ft_boolean_syntax
范围全球
动态
类型
默认值+ -><()~*:""&\|

使用IN BOOLEAN MODE执行 boolean full-text 搜索支持的 operators 列表。见Section 12.9.2,“ Boolean Full-Text Searches”。

默认变量 value 是'+ -><()~*:""&|'。更改 value 的规则如下:

  • Operator function 由 string 中的位置确定。

  • 替换 value 必须是 14 个字符。

  • 每个字符必须是 ASCII 非字母数字字符。

  • 第一个或第二个字符必须是空格。

  • 除了在 11 和 12 位引用 operators 之外,不允许重复。这两个字符不需要相同,但它们是唯一可能的两个字符。

  • 位置 10,13 和 14(默认设置为:&|)保留用于将来的 extensions。


ft_max_word_len

属性
Command-Line 格式--ft-max-word-len=#
系统变量ft_max_word_len
范围全球
动态没有
类型整数
最低 Value10

要包含在MyISAM FULLTEXT索引中的单词的最大长度。

注意
更改此变量后,必须重建MyISAM表上的FULLTEXT索引。使用REPAIR TABLE tbl_name QUICK


ft_min_word_len

属性
Command-Line 格式--ft-min-word-len=#
系统变量ft_min_word_len
范围全球
动态没有
类型整数
默认值4
最低 Value1

要包含在MyISAM FULLTEXT索引中的单词的最小长度。

注意
更改此变量后,必须重建MyISAM表上的FULLTEXT索引。使用REPAIR TABLE tbl_name QUICK


ft_query_expansion_limit

属性
Command-Line 格式--ft-query-expansion-limit=#
系统变量ft_query_expansion_limit
范围全球
动态没有
类型整数
默认值20
最低 Value0
最大 Value1000

使用WITH QUERY EXPANSION执行的 full-text 次搜索的最高匹配数。


ft_stopword_file

属性
Command-Line 格式--ft-stopword-file=file_name
系统变量ft_stopword_file
范围全球
动态没有
类型文件名

从中读取 full-text 的停用词列表的文件在MyISAM表上搜索。除非给出绝对路径 name 来指定不同的目录,否则服务器将在数据目录中查找该文件。使用文件中的所有单词; comments 没有兑现。默认情况下,使用 built-in 个停用词列表(如storage/myisam/ft_static.c文件中所定义)。将此变量设置为空 string('')将禁用停用词过滤。另见第 12.9.4 节,“Full-Text 停用词”。

注意
更改此变量或停用词文件的内容后,必须重建MyISAM表上的FULLTEXT索引。使用REPAIR TABLE tbl_name QUICK


generallog

属性
Command-Line 格式--general-log[={OFF\|ON}]
系统变量general_log
范围全球
动态
类型Boolean
默认值OFF

是否启用了常规查询 log。 value 可以是 0(或OFF)来禁用 log 或 1(或ON)来启用 log。 log 输出的目标由log_output系统变量控制;如果 value 是NONE,即使启用了 log,也不会写入 log 条目。


generallog_file

属性
Command-Line 格式--general-log-file=file_name
系统变量general_log_file
范围全球
动态
类型文件名
默认值host_name.log

通用查询 log 文件的 name。默认的 value 是host_name.log,但可以使用--generallog_file选项更改初始 value。


group_concat_max_len

属性
Command-Line 格式--group-concat-max-len=#
系统变量group_concat_max_len
范围Global,Session
动态
类型整数
默认值1024
最低 Value4
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

GROUP_CONCAT() function 的最大允许结果长度(以字节为单位)。默认值为 1024。


have_compress

YES如果zlib compression library 可用于服务器,NO如果没有。如果不是,则不能使用COMPRESS()和UNCOMPRESS()函数。


havecrypt

YES如果crypt()系统调用可用于服务器,NO如果没有。如果不是,则不能使用ENCRYPT() function。

注意
功能在 MySQL 5.7 中已弃用,将在未来的 MySQL 版本中删除,不应再使用。 (对于 one-way 哈希,请考虑使用SHA2() instead.)因此,havecrypt也已弃用,将被删除。


have_dynamicloading

YES如果mysqld支持动态加载插件,NO如果不支持。如果 value 是NO,则不能使用--plugin-load等选项在服务器启动时加载插件,或者使用安装插件语句在运行时加载插件。


have_geometry

YES如果服务器支持空间数据类型,则NO如果不支持。


have_openssl

此变量是have_ssl的别名。


have_profiling

YES如果存在语句分析功能,则NO如果不存在。如果存在,profiling系统变量控制是启用还是禁用此功能。见第 13.7.5.31 节,“显示 PROFILES 语法”。

此变量已弃用,将在以后的 MySQL 版本中删除。


have_query_cache

YES如果mysqld支持查询缓存,NO如果不支持。

注意
从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。弃用包括have_query_cache。


have_rtreekeys

YES如果RTREE索引可用,NO如果没有。 (这些用于MyISAM tables.)中的空间索引


have_ssl

YES如果mysqld支持 SSL 连接,NO如果不支持。 DISABLED表示服务器是使用 SSL 支持编译的,但未使用相应的--ssl-xxx选项启动。有关更多信息,请参阅部分 2.9.6,“配置 SSL Library 支持”。


havestatementtimeout

属性
****介绍5.7.4
系统变量have_statement_timeout
范围全球
动态没有
类型Boolean

语句执行超时 feature 是否可用(请参阅语句执行 Time Optimizer 提示)。如果无法初始化此 feature 使用的后台线程,则 value 可以是NO


have_symlink

YES如果启用了符号链接支持,则NO如果不启用。这在 Unix 上是必需的,以支持DATA DIRECTORYINDEX DIRECTORY table 选项。如果使用--skip-symbolic-links选项启动服务器,则 value 为DISABLED

这个变量在 Windows 上没有任何意义。


  • host_cache_size
属性
Command-Line 格式--host-cache-size=#
系统变量host_cache_size
范围全球
动态
类型整数
默认值-1(表示自动调整大小;不指定此文字 value)
最低 Value0
最大 Value65536

此变量控制 host 缓存的大小,以及公开缓存内容的 Performance Schema host_cache table 的大小。将大小设置为 0 将禁用 host 缓存。在运行时更改高速缓存大小会导致隐式FLUSH HOSTS操作清除 host 高速缓存,截断host_cache table,并取消阻止任何被阻止的主机。

默认的 value 自动调整为 128,加上 1 为的最高值为 500,加上 1 为max_connections value 中每个增量 20 超过 500,上限为 2000。

使用--skip-host-cache选项类似于将host_cache_size系统变量设置为 0,但host_cache_size更灵活,因为它还可用于在运行时调整大小,启用和禁用 host 缓存,而不仅仅是在服务器启动时。使用--skip-host-cache启动服务器不会阻止更改host_cache_size的 value,但是这样的更改不起作用,并且即使在运行时将host_cache_size设置为大于 0,缓存也不会 re-enabled。

有关 host 缓存如何工作的更多信息,请参阅部分 8.12.5.2,“DNS 查找优化和 Host 缓存”。


主机名

属性
系统变量hostname
范围全球
动态没有
类型

服务器在启动时将此变量设置为服务器 host name。


身分

此变量是lastinsert_id变量的同义词。它存在与其他数据库系统的兼容性。您可以使用SELECT @@identity读取其 value,并使用SET identity进行设置。


ignore_db_dirs

属性
****已过时5.7.16
系统变量ignore_db_dirs
范围全球
动态没有
类型

在数据目录中不被视为数据库目录的 comma-separated 名称列表。 value 是在服务器启动时给出的--ignore-db-dir的任何实例中设置的。

从 MySQL 5.7.11 开始,--ignore-db-dir可以在数据目录初始化时使用mysqld --initialize来指定服务器应该忽略的目录,以便评估现有数据目录是否为空。见第 2.10.1 节,“初始化数据目录”。

MySQL 5.7 中不推荐使用此系统变量。随着 MySQL 8.0 中数据字典的引入,它变得多余,并在 version 中被删除。


init_connect

属性
Command-Line 格式--init-connect=name
系统变量init_connect
范围全球
动态
类型

服务器为每个连接的 client 执行 string。 string 由一个或多个 SQL statements 组成,以分号字符分隔。

对于具有超权限的用户,不会执行init_connect的内容。这样做是为了使init_connect的错误值不会阻止所有 clients 进行连接。对于 example,value 可能包含语法错误的语句,从而导致 client 连接失败。对于具有超权限的用户,不执行init_connect可以使他们打开连接并修复init_connect value。

从 MySQL 5.7.22 开始,对于密码过期的任何 client 用户,都会跳过init_connect执行。这样做是因为这样的用户无法执行任意语句,因此init_connect执行将失败,使 client 无法连接。跳过init_connect执行使用户能够连接和更改密码。

服务器丢弃的 value 中由 statements 生成的任何结果_set。


init_file

属性
Command-Line 格式--init-file=file_name
系统变量init_file
范围全球
动态没有
类型文件名

如果指定,则此变量命名包含要在启动 process 期间读取和执行的 SQL statements 的文件。每个语句必须位于单个 line 上,不应包含 comments。

如果服务器是使用--bootstrap,--initialize或--initialize-insecure选项中的任何一个启动的,则它在 bootstap 模式下运行,并且某些功能不可用,这限制了文件中允许的 statements。其中包括与帐户管理(例如创建用户或GRANT),复制和 global transaction 标识符相关的 statements。见第 16.1.3 节,“使用 Global Transaction 标识符复制”。

  • innodb_xxx

InnoDB系统变量列在第 14.14 节,“InnoDB 启动选项和系统变量”中。这些变量控制InnoDB表的存储,memory 使用和 I/O 模式的许多方面,并且现在InnoDB是默认存储引擎尤为重要。


insert_id

插入AUTO_INCREMENT value 时,以下插入或ALTER TABLE语句将使用的 value。这主要用于二进制 log。


interactivetimeout

属性
Command-Line 格式--interactive-timeout=#
系统变量interactive_timeout
范围Global,Session
动态
类型整数
默认值28800
最低 Value1

服务器在关闭之前等待交互式连接上的活动的秒数。交互式 client 定义为使用CLIENT_INTERACTIVE选项的客户端。另见waittimeout。


internal_tmp_disk_storage_engine

属性
Command-Line 格式--internal-tmp-disk-storage-engine=#
****介绍5.7.5
系统变量internal_tmp_disk_storage_engine
范围全球
动态
类型列举
默认 Value(> = 5.7.6)INNODB
默认 Value(<= 5.7.5)MYISAM
有效值MYISAM
INNODB

on-disk 内部临时表的存储引擎(参见第 8.4.4 节,“MySQL 中的内部临时 Table 使用”)。允许的值为MYISAMINNODB(默认值)。

优化使用internal_tmp_disk_storage_engine定义的存储引擎用于 on-disk 内部临时表。

使用internal_tmp_disk_storage_engine=INNODB(缺省值)时,生成超过InnoDB 行或列限制的 on-disk 内部临时表的查询将 return 行大小太大或列错误太多。解决方法是将internal_tmp_disk_storage_engine设置为MYISAM


join_buffer_size

属性
Command-Line 格式--join-buffer-size=#
系统变量join_buffer_size
范围Global,Session
动态
类型整数
默认值262144
最低 Value128
最大 Value(其他,64-bit 平台)18446744073709547520
最大 Value(其他,32-bit 平台)4294967295
最大 Value(Windows)4294967295

用于普通索引扫描,范围索引扫描和不使用索引的连接的缓冲区的最小大小,从而执行完整的 table 扫描。通常,获得快速连接的最佳方法是添加索引。当无法添加索引时,增加join_buffer_size的 value 以获得更快的完全连接。为两个表之间的每个完整连接分配一个连接缓冲区。对于未使用索引的多个表之间的复杂连接,可能需要多个连接缓冲区。

除非使用 Block Nested-Loop 或 Batched Key Access 算法,否则设置缓冲区大于保存每个匹配行所需的增益并且所有连接至少分配最小大小都没有增益,因此在将此变量设置为大 value 时要小心全球。最好保持 global 设置较小,并仅在执行大型连接的会话中将 session 设置更改为更大的 value。如果 global 大小大于使用它的大多数查询所需的 Memory 分配 time,则会导致大量性能下降。

当使用 Block Nested-Loop 时,较大的连接缓冲区可能是有益的,直到第一个 table 中所有行的所有必需列都存储在连接缓冲区中。这取决于查询;最佳大小可能小于保存第一个表中的所有行。

使用批处理 Key 访问时,join_buffer_size的 value 定义每个请求到存储引擎的批量密钥的大小。缓冲区越大,对连接操作的右手 table 的顺序访问就越多,这可以显着提高性能。

默认值为 256KB。 join_buffer_size的最大允许设置为 4GB-1。 64-bit 平台允许更大的值(64-bit Windows 除外,其中大值被截断为 4GB-1 并带有警告)。

有关联接缓冲的其他信息,请参阅Section 8.2.1.6,“Nested-Loop Join Algorithms”。有关 Batched Key Access 的信息,请参阅第 8.2.1.11 节,“阻止 Nested-Loop 和批量 Key 访问连接”。


keepfiles_on_create

属性
Command-Line 格式--keep-files-on-create[={OFF\|ON}]
系统变量keep_files_on_create
范围Global,Session
动态
类型Boolean
默认值OFF

如果在没有DATA DIRECTORY选项的情况下创建MyISAM table,则会在数据库目录中创建.MYD文件。默认情况下,如果MyISAM在这种情况下找到现有的.MYD文件,则会覆盖它。对于没有INDEX DIRECTORY选项创建的表,这同样适用于.MYI files。若要禁止此行为,请将keepfiles_on_create变量设置为ON(1),在这种情况下,MyISAM将不会覆盖现有的 files 并返回错误。默认的 value 是OFF(0)。

如果使用DATA DIRECTORYINDEX DIRECTORY选项创建MyISAM table 并且找到现有的.MYD.MYI文件,则 MyISAM 始终返回错误。它不会覆盖指定目录中的文件。


key_buffer_size

属性
Command-Line 格式--key-buffer-size=#
系统变量key_buffer_size
范围全球
动态
类型整数
默认值8388608
最低 Value8
最大 Value(64-bit 平台)OS_PER_PROCESS_LIMIT
最大 Value(32-bit 平台)4294967295

MyISAM表的索引块被缓冲并由所有线程共享。 key_buffer_size是用于索引块的缓冲区的大小。 key 缓冲区也称为 key 缓存。

key_buffer_size的最大允许设置在 32-bit 平台上为 4GB-1。 64-bit 平台允许更大的值。有效的最大大小可能会更小,具体取决于您的可用物理 RAM 和操作系统或硬件平台强加的 per-process RAM 限制。此变量的 value 表示请求的 memory 数量。在内部,服务器尽可能多地分配 memory,但实际分配可能更少。

您可以增加 value 以获得所有读取和多次写入的更好的索引处理;在主要功能是使用MyISAM 数据存储引擎运行 MySQL 的系统上,该机器的总 memory 的 25%是该变量的可接受 value。但是,您应该知道,如果您使 value 太大(例如,超过机器总 memory 的 50%),您的系统可能会开始翻页并变得非常慢。这是因为 MySQL 依靠操作系统来执行数据读取的文件系统缓存,因此您必须为文件系统缓存留出一些空间。除了MyISAM 数据之外,您还应该考虑您可能正在使用的任何其他存储引擎的 memory 要求。

要在同一时间写入多行时速度更快,请使用锁表。见第 8.2.4.1 节,“优化 INSERT Statements”。

您可以通过发出显示状态语句并检查Key_read_requests,Key_reads,Key_write_requests和Key_writes状态变量来检查 key 缓冲区的 performance。 (请参阅第 13.7.5 节,“显示语法” .) Key_reads/Key_read_requests比率通常应小于 0.01. 如果您主要使用更新和删除,Key_writes/Key_write_requests比率通常接近 1,但如果您倾向于在同一时间执行影响多行的更新,则可能会小得多。如果您使用DELAY_KEY_WRITE table 选项。

使用的 key 缓冲区的分数可以使用key_buffer_size结合Key_blocks_unused状态变量和缓冲区块大小来确定,缓冲区块大小可以从key_cache_block_size系统变量中获得:

1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)

这个 value 是一个近似值,因为 key 缓冲区中的一些空间是在内部为管理结构分配的。影响这些结构的开销量的因素包括块大小和指针大小。随着块大小的增加,key 缓冲区丢失到开销的百分比趋于降低。较大的块导致较少的读取操作(因为每次读取获得更多的键),但相反地,未检查的键的读取的增加(如果不是块中的所有键都与查询相关)。

可以创建多个MyISAM key 缓存。 4GB 的大小限制单独应用于每个缓存,而不是 group。见第 8.10.2 节,“MyISAM Key Cache”。


key_cache_age_threshold

属性
Command-Line 格式--key-cache-age-threshold=#
系统变量key_cache_age_threshold
范围全球
动态
类型整数
默认值300
最低 Value100
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

此 value 控制缓冲区从 key 缓存的热子列表降级到暖子列表。较低的值会导致降级更快发生。最小 value 为 100.默认 value 为 300.请参阅第 8.10.2 节,“MyISAM Key Cache”。


key_cache_block_size

属性
Command-Line 格式--key-cache-block-size=#
系统变量key_cache_block_size
范围全球
动态
类型整数
默认值1024
最低 Value512
最大 Value16384

key 缓存中块的字节大小。默认的 value 是 1024.参见第 8.10.2 节,“MyISAM Key Cache”。


key_cache_division_limit

属性
Command-Line 格式--key-cache-division-limit=#
系统变量key_cache_division_limit
范围全球
动态
类型整数
默认值100
最低 Value1
最大 Value100

key 缓存缓冲区列表的热和热子列表之间的分割点。 value 是用于暖子列表的缓冲区列表的百分比。允许值的范围为 1 到 100.默认值为 100.请参阅第 8.10.2 节,“MyISAM Key Cache”。


largefiles_support

属性
系统变量large_files_support
范围全球
动态没有

是否使用大文件支持选项编译mysqld。


large_pages

属性
Command-Line 格式--large-pages[={OFF\|ON}]
系统变量large_pages
范围全球
动态没有
平台特定Linux
类型Boolean
默认值OFF

是否启用了大页面支持(通过--large-pages选项)。见第 8.12.4.2 节,“启用大页面支持”。


large_page_size

属性
系统变量large_page_size
范围全球
动态没有
类型整数
默认值0

如果启用了大页面支持,则会显示 memory 页面的大小。仅在 Linux 上支持大型 memory 页面;在其他平台上,此变量的 value 始终为 0.请参阅第 8.12.4.2 节,“启用大页面支持”。


lastinsert_id

要从LASTINSERT_ID()返回的 value。当您在更新 table 的语句中使用LASTINSERT_ID()时,它存储在二进制 log 中。设置此变量不会更新mysqlinsert_id() C API function 返回的 value。


lc_messages

属性
Command-Line 格式--lc-messages=name
系统变量lc_messages
范围Global,Session
动态
类型
默认值en_US

用于错误消息的 locale。默认值为en_US。服务器将参数转换为语言 name,并将其与lc_messages_dir的 value 组合以生成错误消息文件的位置。见第 10.12 节,“设置错误消息语言”。


lc_messages_dir

属性
Command-Line 格式--lc-messages-dir=dir_name
系统变量lc_messages_dir
范围全球
动态没有
类型目录 name

错误消息所在的目录。服务器将 value 与lc_messages的 value 一起使用,以生成错误消息文件的位置。见第 10.12 节,“设置错误消息语言”。


lctimenames

属性
Command-Line 格式--lc-time-names=value
系统变量lc_time_names
范围Global,Session
动态
类型

此变量指定控制用于显示日期和月份名称和缩写的语言的 locale。此变量影响DATE_FORMAT(),DAYNAME()和MONTHNAME()函数的输出。 Locale 名称是 POSIX-style 值,例如'ja_JP''pt_BR'。无论系统的 locale 设置如何,默认的 value 都是'en_US'。有关详细信息,请参阅第 10.16 节,“MySQL 服务器 Locale 支持”。


执照

属性
系统变量license
范围全球
动态没有
类型
默认值GPL

服务器具有的 license 类型。


local_infile

属性
Command-Line 格式--local-infile[={OFF\|ON}]
系统变量local_infile
范围全球
动态
类型Boolean
默认值ON

此变量控制负载数据 statements 的 server-side LOCAL功能。根据local_infile设置,服务器拒绝或允许 client 端启用了LOCAL的客户端进行本地数据_loading。

要显式地使服务器拒绝或允许加载数据本地 statements(无论在 build time 或运行时如何配置 client 程序和 libraries),分别在local_infile禁用或启用时启动mysqld。 local_infile也可以在运行时设置。有关更多信息,请参阅第 6.1.6 节,“LOAD DATA LOCAL 的安全问题”。


lock_waittimeout

属性
Command-Line 格式--lock-wait-timeout=#
系统变量lock_wait_timeout
范围Global,Session
动态
类型整数
默认值31536000
最低 Value1
最大 Value31536000

此变量指定尝试获取元数据锁的超时(以秒为单位)。允许值范围为 1 到 31536000(1 年)。默认值为 31536000。

此超时适用于使用元数据锁的所有 statements。这些包括对表,视图,存储过程和存储函数的 DML 和 DDL 操作,以及锁表,带读锁的冲洗表和HANDLER statements。

此超时不适用于对mysql数据库中的系统表的隐式访问,例如由GRANT或撤消 statements 或 table logging statements 修改的授权表。超时适用于直接访问的系统表,例如选择或UPDATE。

timeout value 分别适用于每个元数据锁定尝试。给定语句可能需要多个锁,因此在报告超时错误之前,语句可能会阻止比lock_waittimeout value 更长的时间。发生锁定超时时,将报告ER_LOCK_WAITTIMEOUT。

lock_waittimeout不适用于延迟插入,延迟插入始终以 1 年的超时执行。这样做是为了避免不必要的超时,因为发出延迟 insert 的 session 不会收到延迟 insert 超时的通知。


locked_inmemory

属性
系统变量locked_in_memory
范围全球
动态没有

mysqld是否与--memlock锁定在 memory 中。


log_error

属性
Command-Line 格式--log-error[=file_name]
系统变量log_error
范围全球
动态没有
类型文件名

错误 log 输出目标。如果目标是 console,则 value 是stderr。否则,目标是文件,log_error value 是文件 name。见第 5.4.2 节,“错误 Log”。


log_error_verbosity

属性
Command-Line 格式--log-error-verbosity=#
****介绍5.7.2
系统变量log_error_verbosity
范围全球
动态
类型整数
默认值3
最低 Value1
最大 Value3

服务器在向错误 log 写入错误,警告和注释消息时的冗长程度。以下 table 显示允许的值。默认值为 3。

期望的 Log 过滤log_error_verbosity Value
错误消息1
错误和警告消息2
错误,警告和信息消息3

在 MySQL 5.7.2 中添加了log_error_verbosity。它优先于旧的logwarnings系统变量,而不应该用于代替旧的logwarnings系统变量。有关该变量如何与log_error_verbosity相关的信息,请参阅logwarnings的说明。特别是,为logwarnings分配 value 会将 value 分配给log_error_verbosity,反之亦然。


log_output

属性
Command-Line 格式--log-output=name
系统变量log_output
范围全球
动态
类型
默认值FILE
有效值TABLE
FILE
NONE

一般查询 log 和慢查询 log 输出的目标或目标。 value 是从TABLEFILENONE中选择的一个或多个 comma-separated 单词列表。 TABLE选择 logging 到mysql系统数据库中的generallog和slow_log表。 FILE选择 logging 到 log files。 NONE禁用 logging。如果_val中存在NONE,则它优先于存在的任何其他单词。 TABLEFILE都可以给 select 两个 log 输出目的地。

此变量选择 log 输出目标,但不启用 log 输出。为此,请启用generallog和slow_querylog系统变量。对于FILE logging,generallog_file和slow_querylog_file系统变量确定 log 文件位置。有关更多信息,请参阅部分 5.4.1,“选择常规查询 Log 和慢查询 Log 输出目标”。


log_queries_not_using_indexes

属性
Command-Line 格式--log-queries-not-using-indexes[={OFF\|ON}]
系统变量log_queries_not_using_indexes
范围全球
动态
类型Boolean
默认值OFF

是否将不使用索引的查询记录到慢查询 log 中。见第 5.4.5 节,“慢查询 Log”。


log_slow_adminstatements

属性
Command-Line 格式--log-slow-admin-statements[={OFF\|ON}]
****介绍5.7.1
系统变量log_slow_admin_statements
范围全球
动态
类型Boolean
默认值OFF

在写入慢速查询 log 的 statements 中包含缓慢的管理 statements。管理语句包括ALTER TABLE,分析 TABLE,检查 TABLE,创建指数,DROP INDEX,OPTIMIZE TABLE和维修表。


log_syslog

属性
Command-Line 格式--log-syslog[={OFF\|ON}]
****介绍5.7.5
系统变量log_syslog
范围全球
动态
类型Boolean
默认 Value(Windows)ON
默认 Value(Unix)OFF

是否将错误 log 输出写入系统 log。这是 Windows 上的 Event Log,以及 Unix 和 Unix-like 系统上的syslog。默认的 value 是特定于平台的:

  • 在 Windows 上,Event Log 输出默认启用。

  • 在 Unix 和 Unix-like 系统上,默认情况下禁用syslog输出。

无论默认情况如何,都可以显式设置log_syslog以控制任何支持的平台上的输出。

System log 输出控件不同于将错误输出发送到文件或 console。除了系统 log 之外,还可以根据需要将错误输出定向到文件或 console。见第 5.4.2 节,“错误 Log”。


log_syslog_facility

属性
Command-Line 格式--log-syslog-facility=value
****介绍5.7.5
系统变量log_syslog_facility
范围全球
动态
类型
默认值daemon

写入syslog的错误 log 输出的工具(发送消息的程序类型)。除非启用log_syslog系统变量,否则此变量无效。见第 5.4.2.3 节,“错误记录到系统 Log”。

允许的值可能因操作系统而异;请咨询您的系统syslog文档。

Windows 上不存在此变量。


log_syslog_include_pid

属性
Command-Line 格式--log-syslog-include-pid[={OFF\|ON}]
****介绍5.7.5
系统变量log_syslog_include_pid
范围全球
动态
类型Boolean
默认值ON

是否在写入syslog的 error log 输出的每个 line 中包含 server process ID。除非启用log_syslog系统变量,否则此变量无效。见第 5.4.2.3 节,“错误记录到系统 Log”。

Windows 上不存在此变量。


log_syslog_tag

属性
Command-Line 格式--log-syslog-tag=tag
****介绍5.7.5
系统变量log_syslog_tag
范围全球
动态
类型
默认值empty string

要添加到服务器标识符中的标记,将错误 log 输出写入syslog。除非启用log_syslog系统变量,否则此变量无效。见第 5.4.2.3 节,“错误记录到系统 Log”。

默认情况下,服务器标识符为mysqld,没有标记。如果指定tag的标记 value,则将其附加到带有前导连字符的服务器标识符,从而生成mysqld-tag的标识符。

在 Windows 上,要使用尚不存在的标记,服务器必须从具有管理员权限的帐户运行,以允许为标记创建注册表项。如果标记已存在,则不需要提升权限。


logtimestamps

属性
Command-Line 格式--log-timestamps=#
****介绍5.7.2
系统变量log_timestamps
范围全球
动态
类型列举
默认值UTC
有效值UTC
SYSTEM

此变量控制写入错误 log 的消息中的时间戳的 time zone,以及一般查询 log 和写入 files 的慢查询 log 消息。它不会影响一般查询 log 的 time zone 和写入表(mysql.general_logmysql.slow_log)的慢查询 log 消息。从这些表中检索的行可以使用CONVERT_TZ()从本地系统 time zone 转换为任何所需的 time zone,或者通过设置 session timezone系统变量。

允许的logtimestamps值是UTC(默认值)和SYSTEM(本地系统 time zone)。

时间戳使用 ISO 8601/RFC 3339 格式编写:YYYY-MM-DDThh:mm:ss.uuuuuu加上Z的尾 value,表示 Zulu time(UTC)或±hh:mm(与 UTC 的偏移量)。


log_throttle_queries_not_using_indexes

属性
Command-Line 格式--log-throttle-queries-not-using-indexes=#
系统变量log_throttle_queries_not_using_indexes
范围全球
动态
类型整数
默认值0

如果启用log_queries_not_using_indexes,则log_throttle_queries_not_using_indexes变量会限制每分钟可以写入慢查询 log 的此类查询数。 value 为 0(默认值)表示“无限制”。有关更多信息,请参阅第 5.4.5 节,“慢查询 Log”。


logwarnings

属性
Command-Line 格式--log-warnings[=#]
****已过时5.7.2
系统变量log_warnings
范围全球
动态
类型整数
默认 Value(64-bit 平台,> = 5.7.2)2
默认 Value(64-bit 平台,<= 5.7.1)1
默认 Value(32-bit 平台,> = 5.7.2)2
默认 Value(32-bit 平台,<= 5.7.1)1
最低 Value0
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

是否为错误 log 生成其他警告消息。从 MySQL 5.7.2 开始,之前由logwarnings控制的信息项由log_error_verbosity控制,这是首选的,应该用来代替旧的logwarnings系统变量。 (不推荐使用logwarnings系统变量和--log-warnings command-line 选项,将来会删除 MySQL release.)

默认情况下启用logwarnings(在 MySQL 5.7.2 之前默认为 1,从 5.7.2 开始为 2)。要禁用它,请将其设置为 0.如果 value 大于 0,则服务器会记录有关 statement-based logging 不安全的 statements 的消息。如果 value 大于 1,则服务器会记录中止连接和新连接尝试的 access-denied 错误。见第 B.4.2.10 节,“通信错误和中止的连接”。

如果使用复制,建议通过将此变量设置为大于 0 来启用此变量,以获取有关正在发生的情况的更多信息,例如有关网络故障和重新连接的消息。

如果在启用了logwarnings的情况下启动了从服务器,则从服务器将消息打印到错误 log 以提供有关其状态的信息,例如二进制 log 和 relay log 坐标,当它切换到另一个继电器 log 时启动其 job,它在断开连接后重新连接,依此类推。

将 value 分配给logwarnings会将 value 分配给log_error_verbosity,反之亦然。变量如下:

  • 用logwarnings=0实现对所有logwarnings项的抑制是通过log_error_verbosity=1(仅错误)实现的。

  • 打印为logwarnings=1或更高的项目计为警告,并打印log_error_verbosity=2或更高。

  • 为logwarnings=2打印的项目计为注释,并打印为log_error_verbosity=3。

从 MySQL 5.7.2 开始,默认的 log level 由log_error_verbosity控制,默认值为 3.此外,logwarnings的默认值从 1 变为 2,对应于log_error_verbosity=3。要实现类似于先前默认值的 logging level,请设置log_error_verbosity=2。

在 MySQL 5.7.2 及更高版本中,仍然允许使用logwarnings,但 maps 使用log_error_verbosity如下:

  • 设置logwarnings=0相当于log_error_verbosity=1(仅限错误)。

  • 设置logwarnings=1相当于log_error_verbosity=2(错误,警告)。

  • 设置logwarnings=2(或更高)等效于log_error_verbosity=3(错误,警告,注释),如果指定了更大的 value,则设置_set logwarnings为 2。


long_querytime

属性
Command-Line 格式--long-query-time=#
系统变量long_query_time
范围Global,Session
动态
类型数字
默认值10
最低 Value0

如果查询花费的时间超过此秒数,则服务器会递增Slow_queries状态变量。如果启用了慢查询 log,则查询将记录到慢查询 log 文件中。此 value 是在实际 time 中测量的,而不是 CPU time,因此在负载较轻的系统上低于阈值的查询可能会高于严重负载的阈值。 long_querytime的最小值和默认值分别为 0 和 10。 value 可以指定为微秒的分辨率。见第 5.4.5 节,“慢查询 Log”。


low_priority_updates

属性
Command-Line 格式--low-priority-updates[={OFF\|ON}]
系统变量low_priority_updates
范围Global,Session
动态
类型Boolean
默认值OFF

如果设置为1,则所有插入,UPDATE,删除和LOCK TABLE WRITE statements 将等待,直到受影响的 table 上没有待处理的选择或LOCK TABLE READ。这仅影响仅使用 table-level 锁定的存储引擎(例如MyISAMMEMORYMERGE)。


lower_case_file_system

属性
系统变量lower_case_file_system
范围全球
动态没有
类型Boolean

此变量描述数据目录所在的文件系统上文件名的区分大小写。 OFF表示文件名是 case-sensitive,ON表示它们不是 case-sensitive。此变量是只读的,因为它反映了文件系统属性并设置它对文件系统没有影响。


lower_casetablenames

属性
Command-Line 格式--lower-case-table-names[=#]
系统变量lower_case_table_names
范围全球
动态没有
类型整数
默认值0
最低 Value0
最大 Value2

如果设置为 0,则 table 名称将按指定存储,并且比较为 case-sensitive。如果设置为 1,则 table 名称以小写形式存储在磁盘上,并且比较不区分大小写。如果设置为 2,则 table 名称将按给定方式存储,但会以小写形式进行比较。此选项也适用于数据库名称和 table 别名。有关其他详细信息,请参阅第 9.2.3 节,“标识符区分大小写”。

在 Windows 上,默认 value 为 1.在 macOS 上,默认 value 为 2.在 Linux 上,不支持 value 为 2;服务器强制 value 为 0。

如果在数据目录驻留在 case-insensitive 文件系统(例如 Windows 或 macOS)上的系统上运行 MySQL,则不应将lower_casetablenames设置为 0。这是一个不受支持的组合,当_运行带有错误的tbl_name字母大小写的INSERT INTO ... SELECT ... FROM tbl_name操作时,可能会导致挂起状态。使用MyISAM,使用不同的字母大小写访问 table 名称可能会导致索引损坏。

如果您尝试在 case-insensitive 文件系统上使用--lower_casetablenames=0启动服务器,则会打印一条错误消息并退出服务器。

如果使用InnoDB表,则应在所有平台上将此变量设置为 1 以强制将名称转换为小写。

此变量的设置会影响复制过滤选项在区分大小写方面的行为。有关更多信息,请参阅部分 16.2.5,“服务器如何评估复制过滤规则”。


max_allowed_packet

属性
Command-Line 格式--max-allowed-packet=#
系统变量max_allowed_packet
范围Global,Session
动态
类型整数
默认值4194304
最低 Value1024
最大 Value1073741824

一个数据包或任何 generated/intermediate string 的最大大小,或mysql_stmt_sendlong_data() C API function 发送的任何参数。默认值为 4MB。

数据包消息缓冲区初始化为net_buffer_length字节,但在需要时可以增长到max_allowed_packet字节。默认情况下,此 value 很小,可以捕获大量(可能不正确)的数据包。

如果使用大BLOB列或 long strings,则必须增加此 value。它应该与您想要使用的最大BLOB一样大。 max_allowed_packet的协议限制为 1GB。 value 应该是 1024 的倍数; nonmultiples 向下舍入到最接近的倍数。

通过更改max_allowed_packet变量的 value 来更改消息缓冲区大小时,如果 client 程序允许,还应更改 client 端的缓冲区大小。内置于 client library 的默认max_allowed_packet value 为 1GB,但单个 client 程序可能会覆盖此内容。例如,MySQL和mysqldump的默认值分别为 16MB 和 24MB。它们还允许您通过在 line 命令或选项文件中设置max_allowed_packet来更改 client-side value。

此变量的 session value 是只读的。 client 可以接收与 session value 一样多的字节。但是,服务器不会向 client 发送比当前 global max_allowed_packet value 更多的字节。 (如果在 client connects.)之后更改 global value,则 global value 可能小于 session value


max_connect_errors

属性
Command-Line 格式--max-connect-errors=#
系统变量max_connect_errors
范围全球
动态
类型整数
默认值100
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

在没有成功连接的情况下,来自 host 的max_connect_errors连续连接请求被中断后,服务器会阻止 host 进一步连接。如果在上一次连接中断后,在少于max_connect_errors次尝试中成功建立了来自 host 的连接,则 host 的错误计数将清除为零。但是,一旦 host 被阻止,刷新 host 缓存是解除阻塞的唯一方法。要刷新 host 缓存,请执行FLUSH HOSTS语句,截断 Performance Schema host_cache table 的TRUNCATE TABLE语句或mysqladmin flush-hosts命令。

有关 host 缓存如何工作的更多信息,请参阅部分 8.12.5.2,“DNS 查找优化和 Host 缓存”。


max_connections

属性
Command-Line 格式--max-connections=#
系统变量max_connections
范围全球
动态
类型整数
默认值151
最低 Value1
最大 Value100000

允许的最大同时 client 连接数。有关更多信息,请参阅第 8.12.5.1 节,“MySQL 如何处理 Client 连接”。


max_delayed_threads

属性
Command-Line 格式--max-delayed-threads=#
****已过时
系统变量max_delayed_threads
范围Global,Session
动态
类型整数
默认值20
最低 Value0
最大 Value16384

不推荐使用此系统变量(因为不支持DELAYED插入),并且将在以后的版本中删除。


max_digest_length

属性
Command-Line 格式--max-digest-length=#
****介绍5.7.6
系统变量max_digest_length
范围全球
动态没有
类型整数
默认值1024
最低 Value0
最大 Value1048576

每个 session 为 memory 保留的最大字节数,用于计算规范化语句摘要。在摘要计算期间使用该空间量后,将发生截断:不会收集来自已解析语句的其他标记或将其计入其摘要 value。 只有在解析后的令牌的许多字节产生相同的规范化语句摘要之后才有所不同的语句,如果比较或汇总用于摘要统计,则认为是相同的。

减少max_digest_length value 会减少 memory 的使用,但如果只是在结尾时,更多 statements 的摘要 value 变得无法区分。增加 value 可以区分更长的语句,但会增加 memory 的使用,特别是对于涉及大同时会话数的工作负载(服务器为每个 session 分配max_digest_length个字节)。

解析器使用此系统变量作为其计算的规范化语句摘要的最大长度的限制。 Performance Schema,如果跟踪语句摘要,则使用performanceschema_max_digest_length复制摘要 value。系统变量作为其存储的摘要最大长度的限制。因此,如果performanceschema_max_digest_length小于max_digest_length,则 Performance Schema 中存储的摘要值将相对于原始摘要值被截断。

有关语句摘要的更多信息,请参阅第 25.10 节,“ Performance Schema Statement Digests”。


max_error_count

属性
Command-Line 格式--max-error-count=#
系统变量max_error_count
范围Global,Session
动态
类型整数
默认值64
最低 Value0
最大 Value65535

要存储以供显示错误和显示警告 statements 显示的最大错误,警告和信息消息数。这与诊断区域中的条件区域数量相同,因此获得诊断可以检查的条件数量相同。


max_executiontime

属性
Command-Line 格式--max-execution-time=#
****介绍5.7.8
系统变量max_execution_time
范围Global,Session
动态
类型整数
默认值0

选择 statements 的执行超时,以毫秒为单位。如果 value 为 0,则不启用超时。

max_executiontime适用如下:

  • global max_executiontime value 为新连接提供 session value 的默认值。 session value 适用于 session 中执行的SELECT执行,其中不包含MAX_EXECUTIONTIME(N)优化器提示或N为 0。

  • max_executiontime适用于 read-only 选择 statements。 不是只读的语句是那些调用存储的 function 修改数据作为副作用的语句。

  • 存储程序中选择 statements 忽略max_executiontime。


max_heaptable_size

属性
Command-Line 格式--max-heap-table-size=#
系统变量max_heap_table_size
范围Global,Session
动态
类型整数
默认值16777216
最低 Value16384
最大 Value(64-bit 平台)1844674407370954752
最大 Value(32-bit 平台)4294967295

此变量设置允许 user-created MEMORY表增长的最大大小。变量的 value 用于计算MEMORY table MAX_ROWS值。设置此变量对任何现有的MEMORY table 都没有影响,除非 table 是 re-created,带有创建 TABLE之类的语句或用ALTER TABLE或TRUNCATE TABLE更改。服务器重新启动也会将现有MEMORY表的最大大小设置为 global max_heaptable_size value。

此变量还与tmptable_size结合使用以限制内部 in-memory 表的大小。见第 8.4.4 节,“MySQL 中的内部临时 Table 使用”。

max_heap_table_size未复制。有关详细信息,请参阅第 16.4.1.20 节,“复制和 MEMORY 表”和第 16.4.1.37 节,“复制和变量”。


maxinsert_delayed_threads

属性
****已过时
系统变量max_insert_delayed_threads
范围Global,Session
动态
类型整数

此变量是max_delayed_threads的同义词。

不推荐使用此系统变量(因为不支持DELAYED插入),并且将在以后的版本中删除。


max_join_size

属性
Command-Line 格式--max-join-size=#
系统变量max_join_size
范围Global,Session
动态
类型整数
默认值18446744073709551615
最低 Value1
最大 Value18446744073709551615

不允许 statements 可能需要检查超过max_join_size行(对于 single-table statements)或行组合(对于 multiple-table statements)或者可能需要检查超过max_join_size磁盘搜索。通过设置此 value,您可以捕获未正确使用键的 statements,这可能需要 long time。如果您的用户倾向于执行缺少WHERE子句的连接,需要 long time,或者_返回数百万行,请设置它。有关更多信息,请参阅使用 Safe-Updates 模式(--safe-updates)。

将此变量设置为以外的 value 会将sql_bigselects的 value 重置为0。如果再次设置sql_bigselects value,则忽略max_join_size变量。

如果查询结果在查询缓存中,则不执行结果大小检查,因为先前已计算结果,并且不会使服务器将其发送到 client。


max_length_for_sort_data

属性
Command-Line 格式--max-length-for-sort-data=#
系统变量max_length_for_sort_data
范围Global,Session
动态
类型整数
默认值1024
最低 Value4
最大 Value8388608

索引值大小的截止值,用于确定要使用的filesort算法。见第 8.2.1.14 节,“ORDER BY 优化”。


max_points_in_geometry

属性
Command-Line 格式--max-points-in-geometry=#
****介绍5.7.8
系统变量max_points_in_geometry
范围Global,Session
动态
类型整数
默认值65536
最低 Value3
最大 Value1048576

ST_Buffer_Strategy() function 的points_per_circle参数的最大 value。


max_prepared_stmt_count

属性
Command-Line 格式--max-prepared-stmt-count=#
系统变量max_prepared_stmt_count
范围全球
动态
类型整数
默认值16382
最低 Value0
最大 Value1048576

此变量限制服务器中准备的 statements 的总数。它可以用于有可能发生 denial-of-service 攻击的环境,这些攻击可以通过准备语句来运行 memory 服务器。如果 value 设置为低于当前准备的 statements 数,则现有的 statements 不受影响且可以使用,但在当前数字低于限制之前,不能准备新的 statements。将 value 设置为 0 将禁用准备好的 statements。


max_seeks_forkey

属性
Command-Line 格式--max-seeks-for-key=#
系统变量max_seeks_for_key
范围Global,Session
动态
类型整数
默认 Value(64-bit 平台)18446744073709551615
默认 Value(32-bit 平台)4294967295
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

在基于 key 查找行时限制假定的最大查找次数。 MySQL 优化器假设在通过扫描索引搜索 table 中的匹配行时,无论索引的实际基数如何(参见第 13.7.5.22 节,“SHOW INDEX 语法”),都不需要超过此数量的 key seek。通过将其设置为低值(例如,100),您可以强制 MySQL 更喜欢索引而不是 table 扫描。


max_sort_length

属性
Command-Line 格式--max-sort-length=#
系统变量max_sort_length
范围Global,Session
动态
类型整数
默认值1024
最低 Value4
最大 Value8388608

排序数据值时使用的字节数。服务器仅使用每个 value 的第一个max_sort_length字节并忽略 rest。因此,仅在第一个max_sort_length字节之后不同的值比较GROUP BYORDER BYDISTINCT操作的相等值。

增加max_sort_length的 value 可能还需要增加sort_buffer_size的 value。有关详细信息,请参阅第 8.2.1.14 节,“ORDER BY 优化”


max_sp_recursion_depth

属性
Command-Line 格式--max-sp-recursion-depth[=#]
系统变量max_sp_recursion_depth
范围Global,Session
动态
类型整数
默认值0
最大 Value255

可以递归调用任何给定存储过程的次数。此选项的默认 value 为 0,这将完全禁用存储过程中的递归。最大 value 为 255。

存储过程递归增加了对线程堆栈空间的需求。如果增加max_sp_recursion_depth的 value,可能需要通过在服务器启动时增加thread_stack的 value 来增加线程堆栈大小。


maxstatementtime

属性
****介绍5.7.4
****删除5.7.8
系统变量max_statement_time
范围Global,Session
动态
类型整数
默认值0

这个变量在 MySQL 5.7.4 中添加,并在 MySQL 5.7.8 中重命名为max_executiontime。


max_tmptables

此变量未使用。它已被弃用,并在 MySQL 8.0 中删除。


max_user_connections

属性
Command-Line 格式--max-user-connections=#
系统变量max_user_connections
范围Global,Session
动态
类型整数
默认值0
最低 Value0
最大 Value4294967295

允许任何给定 MySQL 用户帐户的最大并发连接数。 value 为 0(默认值)表示“无限制”。

此变量具有 global value,可以在服务器启动或运行时设置。它还有一个 read-only session value,表示适用于与当前 session 关联的帐户的有效 simultaneous-connection 限制。 session value 初始化如下:

  • 如果用户帐户具有非零MAX_USER_CONNECTIONS资源限制,则 session max_user_connections value 将设置为该限制。

  • 否则,session max_user_connections value 将设置为 global value。

使用创建用户或更改用户语句指定帐户资源限制。见第 6.2.16 节,“设置帐户资源限制”。


max_write_lock_count

属性
Command-Line 格式--max-write-lock-count=#
系统变量max_write_lock_count
范围全球
动态
类型整数
默认 Value(64-bit 平台)18446744073709551615
默认 Value(32-bit 平台)4294967295
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

在这许多写锁之后,允许在其间处理一些挂起的读锁请求。写锁定请求的优先级高于读取锁定请求。但是,如果将max_write_lock_count设置为某个低值(例如 10),则如果已经传递了读取锁定请求以支持 10 个写入锁定请求,则读取锁定请求可能优先于挂起的写入锁定请求。通常不会发生此行为,因为max_write_lock_count默认情况下具有非常大的 value。


mecab_rc_file

属性
Command-Line 格式--mecab-rc-file=file_name
****介绍5.7.6
系统变量mecab_rc_file
范围全球
动态没有
类型文件名

设置 MeCab full-text 解析器时使用mecab_rc_file选项。

mecab_rc_file选项定义mecabrc configuration 文件的路径,该文件是 MeCab 的 configuration 文件。该选项为 read-only,只能在启动时设置。初始化 MeCab 需要mecabrc configuration 文件。

有关 MeCab full-text 解析器的信息,请参阅第 12.9.9 节,“MeCab Full-Text Parser 插件”。

有关可以在 MeCab mecabrc configuration 文件中指定的选项的信息,请参阅Google Developers站点上的MeCab 文档。


metadata_locks_cache_size

属性
Command-Line 格式--metadata-locks-cache-size=#
****已过时5.7.4
系统变量metadata_locks_cache_size
范围全球
动态没有
类型整数
默认值1024
最低 Value1
最大 Value1048576

元数据的大小锁定缓存。服务器使用此缓存来避免创建和销毁同步 objects。这对于此类操作很昂贵的系统尤其有用,例如 Windows XP。

在 MySQL 5.7.4 中,元数据锁定 implementation 更改使得此变量不再需要,因此不推荐使用它,并将在以后的 MySQL 版本中删除。


metadata_locks_hash_instances

属性
Command-Line 格式--metadata-locks-hash-instances=#
****已过时5.7.4
系统变量metadata_locks_hash_instances
范围全球
动态没有
类型整数
默认值8
最低 Value1
最大 Value1024

可以将元数据锁集划分为单独的哈希,以允许访问不同 object 的连接使用不同的锁定哈希并减少争用。 metadata_locks_hash_instances系统变量指定哈希的数量(默认值为 8)。

在 MySQL 5.7.4 中,元数据锁定 implementation 更改使得此变量不再需要,因此不推荐使用它,并将在以后的 MySQL 版本中删除。


min_examined_row_limit

属性
Command-Line 格式--min-examined-row-limit=#
系统变量min_examined_row_limit
范围Global,Session
动态
类型整数
默认值0
最低 Value0
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

检查少于此行数的查询不会记录到慢速查询 log 中。


  • multi_range_count
属性
Command-Line 格式--multi-range-count=#
****已过时
系统变量multi_range_count
范围Global,Session
动态
类型整数
默认值256
最低 Value1
最大 Value4294967295

此变量无效。它已被弃用,并在 MySQL 8.0 中删除。


myisam_data_pointer_size

属性
Command-Line 格式--myisam-data-pointer-size=#
系统变量myisam_data_pointer_size
范围全球
动态
类型整数
默认值6
最低 Value2
最大 Value7

当没有指定MAX_ROWS选项时,创建 TABLE用于MyISAM表的默认指针大小(以字节为单位)。此变量不能小于 2 或大于 7.默认 value 为 6.请参阅第 B.4.2.11 节,“表已满”。


myisam_max_sort_file_size

属性
Command-Line 格式--myisam-max-sort-file-size=#
系统变量myisam_max_sort_file_size
范围全球
动态
类型整数
默认 Value(64-bit 平台)9223372036854775807
默认 Value(32-bit 平台)2147483648

索引(在维修表,ALTER TABLE或负载数据期间)允许 MySQL 使用的临时文件的最大大小。如果文件大小大于此 value,则使用 key 缓存创建索引,这比较慢。 value 以字节为单位。

如果MyISAM index files 超过此大小并且磁盘空间可用,则增加 value 可能有助于 performance。该空间必须在包含原始索引文件所在目录的文件系统中可用。


myisam_mmap_size

属性
Command-Line 格式--myisam-mmap-size=#
系统变量myisam_mmap_size
范围全球
动态没有
类型整数
默认 Value(64-bit 平台)18446744073709551615
默认 Value(32-bit 平台)4294967295
最低 Value7
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

memory 用于 memory 映射的最大 memory 压缩MyISAM 数据 files。如果使用了许多压缩的MyISAM表,则可以减小 value 以减少 memory-swapping 问题的可能性。


myisam_recover_options

属性
系统变量myisam_recover_options
范围全球
动态没有

--myisam-recover-options选项的 value。见第 5.1.6 节,“服务器命令选项”。


myisam_repair_threads

属性
Command-Line 格式--myisam-repair-threads=#
系统变量myisam_repair_threads
范围Global,Session
动态
类型整数
默认值1
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

如果此 value 大于 1,则在Repair by sorting process 期间在 parallel(其自己的线程中的每个索引)中创建MyISAM table 索引。默认 value 为 1。

注意
多线程修复仍然是 beta-quality code。


myisam_sort_buffer_size

属性
Command-Line 格式--myisam-sort-buffer-size=#
系统变量myisam_sort_buffer_size
范围Global,Session
动态
类型整数
默认值8388608
最低 Value4096
最大 Value(其他,64-bit 平台)18446744073709551615
最大 Value(其他,32-bit 平台)4294967295
最大 Value(Windows,64-bit 平台)18446744073709551615
最大 Value(Windows,32-bit 平台)4294967295

在维修表期间或_用创建指数或ALTER TABLE创建索引时排序MyISAM索引时分配的缓冲区大小。


myisam_stats_method

属性
Command-Line 格式--myisam-stats-method=name
系统变量myisam_stats_method
范围Global,Session
动态
类型列举
默认值nulls_unequal
有效值nulls_equal
nulls_unequal
nulls_ignored

服务器在收集有关MyISAM表的索引值分布的统计信息时如何处理NULL值。此变量有三个可能的值,nulls_equalnulls_unequalnulls_ignored。对于nulls_equal,所有NULL索引值都被视为相等,并形成一个 value group,其大小等于NULL值的数量。对于nulls_unequalNULL值被认为是不相等的,并且每个NULL形成一个大小为 1 的不同 value group。对于nulls_ignored,忽略NULL值。

用于生成 table 统计信息的方法会影响优化程序如何选择索引以执行查询,如第 8.3.7 节,“InnoDB 和 MyISAM 索引统计集”中所述。


myisam_use_mmap

属性
Command-Line 格式--myisam-use-mmap[={OFF\|ON}]
系统变量myisam_use_mmap
范围全球
动态
类型Boolean
默认值OFF

使用 memory 映射来读写MyISAM表。


mysql_native_password_proxy_users

属性
Command-Line 格式--mysql-native-password-proxy-users[={OFF\|ON}]
****介绍5.7.7
系统变量mysql_native_password_proxy_users
范围全球
动态
类型Boolean
默认值OFF

此变量控制mysql_native_password built-in 身份验证插件是否支持代理用户。除非启用了check_proxy_users系统变量,否则它无效。有关用户代理的信息,请参阅第 6.2.14 节,“代理用户”。


named_pipe

属性
Command-Line 格式--named-pipe[={OFF\|ON}]
系统变量named_pipe
范围全球
动态没有
平台特定视窗
类型Boolean
默认值OFF

(Windows only.)指示服务器是否支持通过命名管道的连接。


named_pipe_full_accessgroup

属性
Command-Line 格式--named-pipe-full-access-group=value
****介绍5.7.25
系统变量named_pipe_full_access_group
范围全球
动态没有
平台特定视窗
类型
默认值*everyone*
有效值*everyone*
empty string

(Windows only.)当启用named_pipe系统变量以支持 named-pipe 连接时,授予 MySQL 服务器创建的命名管道上的 clients 的访问控制被设置为成功通信所需的最小访问控制。较新的 MySQL client 软件可以打开命名管道连接而不进行任何操作但是,旧的 client 软件可能仍需要完全访问才能打开命名管道连接。

此变量设置 Windows 本地 group 的 name,其成员被 MySQL 服务器授予足够的访问权限以使用旧的 named-pipe clients。最初,value 默认设置为'*everyone*',这允许 Windows 上的 Everyone group 的用户_继续使用旧的客户端,直到旧的客户端升级。相反,将 value 设置为空 string 意味着不会授予 Windows 用户对命名管道的完全访问权限。默认的 value '*everyone*'提供 language-independent 方式来引用 Windows 上的 Everyone group。

理想情况下,应在 Windows 中创建一个新的 Windows 本地 group name(用于 example,mysql_old_client_users),然后在绝对需要访问旧的 client 软件时用于替换此变量的默认 value。在这种情况下,将 group 的成员资格限制为尽可能少的用户,在升级其 client 软件时从 group 中删除用户。在 Windows 管理员将用户添加到 group,然后用户注销并登录(Windows 需要)之前,group尝试使用旧的 named-pipe client 打开与 MySQL 的连接的 non-member 被拒绝访问。


net_buffer_length

属性
Command-Line 格式--net-buffer-length=#
系统变量net_buffer_length
范围Global,Session
动态
类型整数
默认值16384
最低 Value1024
最大 Value1048576

每个 client 线程都与连接缓冲区和结果缓冲区相关联。两者都以net_buffer_length给出的大小开始,但根据需要动态放大到max_allowed_packet字节。每个 SQL 语句后,结果缓冲区缩小到net_buffer_length。

通常不应更改此变量,但如果您的 memory 很少,则可以将其设置为 clients 发送的 statements 的预期长度。如果 statements 超过此长度,则会自动放大连接缓冲区。 net_buffer_length可以设置的最大 value 是 1MB。

此变量的 session value 是只读的。


net_readtimeout

属性
Command-Line 格式--net-read-timeout=#
系统变量net_read_timeout
范围Global,Session
动态
类型整数
默认值30
最低 Value1

在中止读取之前等待来自连接的更多数据的秒数。当服务器从 client 读取时,net_readtimeout是控制何时中止的超时 value。当服务器写入 client 时,net_writetimeout是控制何时中止的超时 value。另见slave_nettimeout。


net_retry_count

属性
Command-Line 格式--net-retry-count=#
系统变量net_retry_count
范围Global,Session
动态
类型整数
默认值10
最低 Value1
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

如果通信 port 上的读取或写入被中断,请在放弃之前重试多次。这个 value 应该在 FreeBSD 上设置得相当高,因为内部中断被发送到所有线程。


net_writetimeout

属性
Command-Line 格式--net-write-timeout=#
系统变量net_write_timeout
范围Global,Session
动态
类型整数
默认值60
最低 Value1

在中止写入之前等待块写入连接的秒数。另见net_readtimeout。


属性
Command-Line 格式--new[={OFF\|ON}]
系统变量new
范围Global,Session
动态
禁用skip-new
类型Boolean
默认值OFF

此变量在 MySQL 4.0 中用于打开某些 4.1 行为,并保留以便向后兼容。它的 value 总是OFF

在 NDB Cluster 中,将此变量设置为ON可以使用KEYLINEAR KEY以外的分区类型和导航台表。此 feature 仅为实验性的,production 不支持。有关其他信息,请参阅User-defined 分区和 NDB 存储引擎(NDB Cluster)。


ngram_token_size

属性
Command-Line 格式--ngram-token-size=#
****介绍5.7.6
系统变量ngram_token_size
范围全球
动态没有
类型整数
默认值2
最低 Value1
最大 Value10

定义 n-gram full-text 解析器的 n-gram 标记大小。 ngram_token_size选项是 read-only,只能在启动时修改。默认的 value 是 2(bigram)。最大值为 10。

有关如何配置此变量的更多信息,请参阅第 12.9.8 节,“ngram Full-Text Parser”。


offline_mode

属性
Command-Line 格式--offline-mode[={OFF\|ON}]
****介绍5.7.5
系统变量offline_mode
范围全球
动态
类型Boolean
默认值OFF

服务器是否处于“离线模式”,具有以下特征:

  • 没有超权限的已连接 client 用户将在下一个请求中断开连接,并显示相应的错误。断开连接包括终止 running statements 和释放锁。此类客户端也无法启动新连接,并收到相应的错误。

  • 具有超权限的已连接 client 用户未断开连接,并且可以启动新连接以管理服务器。

  • 允许复制从属线程继续将数据应用于服务器。

只有拥有超权限的用户才能控制离线模式。要将服务器置于脱机模式,请将offline_mode系统变量的 value 从OFF更改为ON。要恢复正常操作,请将offline_mode从ON更改为OFF。在脱机模式下,被拒绝访问的客户端会收到ER_SERVER_OFFLINE_MODE错误。


属性
Command-Line 格式--old[={OFF\|ON}]
系统变量old
范围全球
动态没有
类型Boolean
默认值OFF

旧是兼容性变量。默认情况下禁用它,但可以在启动时启用它以将服务器还原为旧版本中存在的行为。

启用旧时,它会将索引提示的默认范围更改为 MySQL 5.1.17 之前使用的范围。也就是说,没有FOR子句的索引提示仅适用于索引如何用于行检索而不适用于ORDER BYGROUP BY子句的解析。 (请参阅第 8.9.4 节,“索引提示” .)请注意在复制设置中启用此功能。使用 statement-based binary logging,为 master 和 slave 设置不同的模式可能会导致复制错误。


  • old_altertable

属性
Command-Line 格式--old-alter-table[={OFF\|ON}]
系统变量old_alter_table
范围Global,Session
动态
类型Boolean
默认值OFF

启用此变量时,服务器不使用处理ALTER TABLE操作的优化方法。它恢复使用临时 table,复制数据,然后将临时 table 重命名为原始,如 MySQL 5.0 及更早版本所使用。有关ALTER TABLE操作的更多信息,请参见第 13.1.8 节,“ALTER TABLE 语法”。


old_passwords

属性
Command-Line 格式--old-passwords=value
****已过时5.7.6
系统变量old_passwords
范围Global,Session
动态
类型列举
默认值0
有效值(> = 5.7.5)0
2
有效值(<= 5.7.4)0
1
2

注意
这个系统变量在 MySQL 5.7 中已弃用,将在未来的 MySQL 版本中删除。
此变量控制PASSWORD() function 使用的密码散列方法。它还会影响使用IDENTIFIED BY子句指定密码的创建用户和GRANT statements 执行的密码散列。

以下 table 显示,对于每个密码哈希方法,old_passwords的允许值以及哪些身份验证插件使用哈希方法。

密码哈希方法old_passwords Value相关的身份验证插件
MySQL 4.1 本机哈希0mysql_native_password
SHA-256 哈希2sha256_password

如果设置old_passwords=2,请按照第 6.4.1.4 节,“SHA-256 可插拔认证”处使用sha256_password插件的说明进行操作。

服务器在启动期间将 global old_passwords value 设置为与default_authentication_plugin系统变量指示的身份验证插件所需的密码散列方法一致。

当 client 成功连接到服务器时,服务器会为帐户身份验证方法正确设置 session old_passwords value。例如,如果帐户使用sha256_password身份验证插件,则服务器 sets old_passwords=2

有关身份验证插件和散列格式的其他信息,请参阅第 6.2.13 节,“可插入验证”和第 6.1.2.4 节,“MySQL 中的密码哈希”。


openfiles_limit

属性
Command-Line 格式--open-files-limit=#
系统变量open_files_limit
范围全球
动态没有
类型整数
默认值5000, with possible adjustment
最低 Value0
最大 Valueplatform dependent

操作系统中mysqld可用的文件描述符数。 mysqld使用setrlimit()保留描述符,使用启动时请求的 value 设置此变量或--open-files-limit选项为mysqld_safe。如果mysqld给出错误Too many open files,您应该尝试增加此变量的 value。在内部,此变量的最大 value 是最大无符号 integer value,但实际最大值取决于平台。

运行时变量 value 表示系统实际允许的文件描述符数,可能与启动时请求的 value 不同。如果无法分配所请求的文件描述符数,mysqld会向错误 log 写入警告。

有效openfiles_limit value 基于系统启动时指定的 value(如果有)以及max_connections和table_open_cache的值,使用以下公式:

1) 10 + max_connections + (table_open_cache * 2)
2) max_connections * 5
3) operating system limit if positive
4) if operating system limit is Infinity:
   open_files_limit value specified at startup, 5000 if none

服务器尝试使用这三个值中的最大值来获取文件描述符的数量。如果无法获得那么多描述符,则服务器会尝试获得系统允许的数量。

在 MySQL 无法更改 open files 数量的系统上,value 为 0。

在 Unix 上,value 不能设置为大于ulimit -n


optimizer_prunelevel

属性
Command-Line 格式--optimizer-prune-level=#
系统变量optimizer_prune_level
范围Global,Session
动态
类型整数
默认值1
最低 Value0
最大 Value1

控制在查询优化期间应用的启发式方法,以从优化程序搜索空间中修剪 less-promising 部分计划。 value 为 0 会禁用启发式扫描,以便优化程序执行穷举搜索。 value 为 1 会导致优化程序根据中间计划检索的行数修剪计划。


optimizer_search_depth

属性
Command-Line 格式--optimizer-search-depth=#
系统变量optimizer_search_depth
范围Global,Session
动态
类型整数
默认值62
最低 Value0
最大 Value62

查询优化器执行的最大搜索深度。大于查询中关系数的值会产生更好的查询计划,但需要更长时间才能为查询生成执行计划。小于查询中关系数的值更快地返回执行计划,但生成的计划可能远非最佳。如果设置为 0,系统会自动选择合理的 value。


optimizer_switch

属性
Command-Line 格式--optimizer-switch=value
系统变量optimizer_switch
范围Global,Session
动态
类型
有效值(> = 5.7.8)batched_key_access={on\|off}
block_nested_loop={on\|off}
condition_fanout_filter={on\|off}
derived_merge={on\|off}
duplicateweedout={on\|off}
engine_condition_pushdown={on\|off}
firstmatch={on\|off}
index_condition_pushdown={on\|off}
index_merge={on\|off}
index_merge_intersection={on\|off}
index_merge_sort_union={on\|off}
index_merge_union={on\|off}
loosescan={on\|off}
materialization={on\|off}
mrr={on\|off}
mrr_cost_based={on\|off}
semijoin={on\|off}
subquery_materialization_cost_based={on\|off}
use_index_extensions={on\|off}
有效值(> = 5.7.6,<= 5.7.7)batched_key_access={on\|off}
block_nested_loop={on\|off}
condition_fanout_filter={on\|off}
derived_merge={on\|off}
engine_condition_pushdown={on\|off}
firstmatch={on\|off}
index_condition_pushdown={on\|off}
index_merge={on\|off}
index_merge_intersection={on\|off}
index_merge_sort_union={on\|off}
index_merge_union={on\|off}
loosescan={on\|off}
materialization={on\|off}
mrr={on\|off}
mrr_cost_based={on\|off}
semijoin={on\|off}
subquery_materialization_cost_based={on\|off}
use_index_extensions={on\|off}
有效值(5.7.5)batched_key_access={on\|off}
block_nested_loop={on\|off}
condition_fanout_filter={on\|off}
engine_condition_pushdown={on\|off}
firstmatch={on\|off}
index_condition_pushdown={on\|off}
index_merge={on\|off}
index_merge_intersection={on\|off}
index_merge_sort_union={on\|off}
index_merge_union={on\|off}
loosescan={on\|off}
materialization={on\|off}
mrr={on\|off}
mrr_cost_based={on\|off}
semijoin={on\|off}
subquery_materialization_cost_based={on\|off}
use_index_extensions={on\|off}
有效值(<= 5.7.4)batched_key_access={on\|off}
block_nested_loop={on\|off}
engine_condition_pushdown={on\|off}
firstmatch={on\|off}
index_condition_pushdown={on\|off}
index_merge={on\|off}
index_merge_intersection={on\|off}
index_merge_sort_union={on\|off}
index_merge_union={on\|off}
loosescan={on\|off}
materialization={on\|off}
mrr={on\|off}
mrr_cost_based={on\|off}
semijoin={on\|off}
subquery_materialization_cost_based={on\|off}
use_index_extensions={on\|off}

optimizer_switch系统变量可以控制优化器行为。此变量的 value 是一组标志,每个标志都有 value onoff,用于指示是启用还是禁用相应的优化程序行为。此变量具有 global 和 session 值,可以在运行时更改。可以在服务器启动时设置 global 默认值。

要查看当前的优化程序标志集,请选择变量 value:

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

有关此变量的语法及其控制的优化程序行为的详细信息,请参阅第 8.9.2 节,“可切换的优化”。


optimizer_trace

属性
Command-Line 格式--optimizer-trace=value
系统变量optimizer_trace
范围Global,Session
动态
类型

此变量控制优化程序跟踪。有关详细信息,请参阅MySQL 内部:跟踪优化器。


optimizer_tracefeatures

属性
Command-Line 格式--optimizer-trace-features=value
系统变量optimizer_trace_features
范围Global,Session
动态
类型

此变量启用或禁用所选的优化程序跟踪 features。有关详细信息,请参阅MySQL 内部:跟踪优化器。


optimizer_trace_limit

属性
Command-Line 格式--optimizer-trace-limit=#
系统变量optimizer_trace_limit
范围Global,Session
动态
类型整数
默认值1

要显示的最大优化程序跟踪数。有关详细信息,请参阅MySQL 内部:跟踪优化器。


optimizer_trace_max_mem_size

属性
Command-Line 格式--optimizer-trace-max-mem-size=#
系统变量optimizer_trace_max_mem_size
范围Global,Session
动态
类型整数
默认值16384

存储的优化程序跟踪的最大累积大小。有关详细信息,请参阅MySQL 内部:跟踪优化器。


optimizer_trace_offset

属性
Command-Line 格式--optimizer-trace-offset=#
系统变量optimizer_trace_offset
范围Global,Session
动态
类型整数
默认值-1

要显示的优化程序跟踪的偏移量。有关详细信息,请参阅MySQL 内部:跟踪优化器。

  • performance_schema_xxx

Performance Schema 系统变量列在第 25.15 节,“性能 Schema 系统变量”中。这些变量可用于配置 Performance Schema 操作。


parser_max_mem_size

属性
Command-Line 格式--parser-max-mem-size=#
****介绍5.7.12
系统变量parser_max_mem_size
范围Global,Session
动态
类型整数
默认 Value(64-bit 平台)18446744073709551615
默认 Value(32-bit 平台)4294967295
最低 Value10000000
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

解析器可用的最大 memory 数量。默认的 value 对 memory 可用没有限制。可以减少 value 以防止因解析 long 或复杂的 SQL 语句而导致的 out-of-memory 情况。


pid_file

属性
Command-Line 格式--pid-file=file_name
系统变量pid_file
范围全球
动态没有
类型文件名

process ID 文件的路径 name。可以使用--pid-file选项设置此变量。服务器在数据目录中创建文件,除非给出绝对路径 name 来指定不同的目录。如果指定--pid-file选项,则必须指定 value。如果未指定--pid-file选项,则 MySQL 使用host_name.pid的默认 value,其中host_name是 host 机器的 name。

其他程序(如mysqld_safe)使用 process ID 文件来确定服务器的 process ID。在 Windows 上,此变量还会影响默认错误 log 文件 name。见第 5.4.2 节,“错误 Log”。


plugin_dir

属性
Command-Line 格式--plugin-dir=dir_name
系统变量plugin_dir
范围全球
动态没有
类型目录 name
默认值BASEDIR/lib/plugin

插件目录的路径 name。

如果服务器可以写入插件目录,则用户可以使用SELECT ... INTO DUMPFILE将可执行 code 写入目录中的文件。这可以通过将plugin_dir只读取到服务器或将secure_file_priv设置为可以安全地进行选择写入的目录来防止。


港口

属性
Command-Line 格式--port=port_num
系统变量port
范围全球
动态没有
类型整数
默认值3306
最低 Value0
最大 Value65535

服务器侦听 TCP/IP 连接的 port 的编号。可以使用--port选项设置此变量。


preload_buffer_size

属性
Command-Line 格式--preload-buffer-size=#
系统变量preload_buffer_size
范围Global,Session
动态
类型整数
默认值32768
最低 Value1024
最大 Value1073741824

预加载索引时分配的缓冲区大小。


剖析

如果设置为 0 或OFF(默认值),则禁用语句分析。如果设置为 1 或ON,则启用语句分析,显示 PROFILE和显示 PROFILES statements 提供对分析信息的访问。见第 13.7.5.31 节,“显示 PROFILES 语法”。

此变量已弃用,将在以后的 MySQL 版本中删除。


profiling_history_size

如果启用剖析,则维护分析信息的 statements 数。默认 value 为 15.最大 value 为 100.将 value 设置为 0 可有效禁用分析。见第 13.7.5.31 节,“显示 PROFILES 语法”。

此变量已弃用,将在以后的 MySQL 版本中删除。


protocolversion

属性
系统变量protocol_version
范围全球
动态没有
类型整数

MySQL 服务器使用的 client/server 协议的 version。


proxy_user

属性
系统变量proxy_user
范围session
动态没有
类型

如果当前 client 是另一个用户的代理,则此变量是代理用户帐户 name。否则,此变量为NULL。见第 6.2.14 节,“代理用户”。


pseudo_slave_mode

属性
系统变量pseudo_slave_mode
范围session
动态
类型整数

此系统变量供内部服务器使用。 pseudo_slave_mode协助正确处理源于旧服务器或新服务器的 transactions,而不是当前处理它们的服务器。 mysqlbinlog 可以 _在执行任何 SQL statements 之前将pseudo_slave_mode的 value 设置为 true。

pseudo_slave_mode对处理准备好的 XA transactions 有以下影响,它可以附加到处理 session 或从处理 session 中删除(默认情况下,发出XA START的 session):

  • 如果 true,并且处理 session 已经执行了一个 internal-use BINLOG语句,那么一旦 transaction 的第一部分到XA PREPARE结束,XA transactions 就会自动从 session 中分离出来,所以它们可以被任何具有该事件的 session 提交或回滚。 XA_RECOVER_ADMIN特权。

  • 如果为 false,则 XA transactions 仍然作为 long 持续附加到 session,因为 session 是活着的,在此期间 time 没有其他 session 可以提交 transaction。如果 session 断开连接或服务器重新启动,则只会分离准备好的 transaction。


pseudo_thread_id

属性
系统变量pseudo_thread_id
范围session
动态
类型整数

此变量供内部服务器使用。


query_alloc_block_size

属性
Command-Line 格式--query-alloc-block-size=#
系统变量query_alloc_block_size
范围Global,Session
动态
类型整数
默认值8192
最低 Value1024
最大 Value(64-bit 平台,<= 5.7.8)18446744073709551615
最大 Value(32-bit 平台,<= 5.7.8)4294967295
最大 Value(> = 5.7.9)4294967295
块大小1024

为语句解析和执行期间创建的 objects 分配的 memory 块的分配大小。如果您遇到 memory 碎片问题,则可能有助于增加此参数。


query_cache_limit

属性
Command-Line 格式--query-cache-limit=#
****已过时5.7.20
系统变量query_cache_limit
范围全球
动态
类型整数
默认值1048576
最低 Value0
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

不要缓存大于此字节数的结果。默认 value 是 1MB。

注意
从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。弃用包括query_cache_limit。


query_cache_min_res_unit

属性
Command-Line 格式--query-cache-min-res-unit=#
****已过时5.7.20
系统变量query_cache_min_res_unit
范围全球
动态
类型整数
默认值4096
最低 Value512
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

查询缓存分配的块的最小大小(以字节为单位)。默认 value 为 4096(4KB)。调整此变量的信息在部分 8.10.3.3,“查询缓存 Configuration”中给出。

注意
从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。弃用包括query_cache_min_res_unit。


query_cache_size

属性
Command-Line 格式--query-cache-size=#
****已过时5.7.20
系统变量query_cache_size
范围全球
动态
类型整数
默认值1048576
最低 Value0
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295

为缓存查询结果分配的 memory 数量。默认情况下,禁用查询缓存。这是使用默认值 value 1M 实现的,默认值为query_cache_type为 0.(如果将大小设置为 0,则显着减少开销,您还应该使用query_cache_type=0启动服务器。

允许值是 1024 的倍数;其他值向下舍入到最接近的倍数。对于query_cache_size的非零值,即使query_cache_type=0也分配了许多 memory 字节。有关详细信息,请参阅部分 8.10.3.3,“查询缓存 Configuration”。

查询缓存需要最小大小约 40KB 才能分配其结构。 (确切的大小取决于系统 architecture.)如果将query_cache_size的 value 设置得太小,将发生警告,如部分 8.10.3.3,“查询缓存 Configuration”中所述。

注意从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。弃用包括query_cache_size。


query_cache_type

属性
Command-Line 格式--query-cache-type=#
****已过时5.7.20
系统变量query_cache_type
范围Global,Session
动态
类型列举
默认值0
有效值0
1
2

设置查询缓存类型。设置GLOBAL value sets 为之后连接的所有 clients 的类型。单个客户端可以设置SESSION value 以影响他们自己对查询缓存的使用。可能的值显示在以下 table 中。

选项描述
0OFF不要将结果缓存或从查询缓存中检索结果。请注意,这不会释放查询缓存缓冲区。为此,您应将query_cache_size设置为 0。
1ON缓存所有可缓存的查询结果,但以SELECT SQL_NO_CACHE开头的结果除外。
2DEMAND缓存结果仅适用于以SELECT SQL_CACHE开头的可缓存查询。

此变量默认为OFF

如果服务器在query_cache_type设置为 0 的情况下启动,则它根本不会获取查询缓存 mutex,这意味着无法在运行时启用查询缓存,并且减少了查询执行的开销。

注意
从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。弃用包括query_cache_type。


query_cache_wlock_invalidate

属性
Command-Line 格式--query-cache-wlock-invalidate[={OFF\|ON}]
****已过时5.7.20
系统变量query_cache_wlock_invalidate
范围Global,Session
动态
类型Boolean
默认值OFF

通常,当一个 client 在MyISAM table 上获取WRITE锁时,如果查询结果存在于查询缓存中,则不阻止其他客户端发出从 table 读取的 statements。将此变量设置为 1 会导致获取 table 的WRITE锁定,从而使查询缓存中引用 table 的任何查询无效。这会强制其他尝试访问 table 的客户端在锁定生效时等待。

注意
从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。弃用包括query_cache_wlock_invalidate。


query_prealloc_size

属性
Command-Line 格式--query-prealloc-size=#
系统变量query_prealloc_size
范围Global,Session
动态
类型整数
默认值8192
最低 Value8192
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295
块大小1024

用于语句解析和执行的持久缓冲区的大小。在 statements 之间不释放此缓冲区。如果您正在运行复杂查询,则更大的query_prealloc_size value 可能有助于提高 performance,因为它可以减少服务器在查询执行操作期间执行 memory 分配的需要。


rand_seed1

属性
系统变量rand_seed1
范围session
动态
类型整数

rand_seed1和rand_seed2变量仅作为 session 变量存在,可以设置但不能读取。变量 - 但不是它们的值 - 显示在显示变量的输出中。

这些变量的目的是支持RAND() function 的复制。对于调用RAND()的 statements,master 将两个值传递给从属,在那里它们用于为随机数 generator 播种。从站使用这些值来设置 session 变量rand_seed1和rand_seed2,以便从站上的RAND()生成与 master 上相同的 value。


rand_seed2

请参阅rand_seed1的说明。


range_alloc_block_size

属性
Command-Line 格式--range-alloc-block-size=#
系统变量range_alloc_block_size
范围Global,Session
动态
类型整数
默认值4096
最低 Value4096
最大 Value(64-bit 平台,> = 5.7.8)18446744073709547520
最大 Value(64-bit 平台,<= 5.7.8)18446744073709551615
最大 Value(32-bit 平台,<= 5.7.8)4294967295
最大 Value(> = 5.7.9)4294967295
块大小1024

进行范围优化时分配的块大小。


range_optimizer_max_mem_size

属性
Command-Line 格式--range-optimizer-max-mem-size=#
****介绍5.7.9
系统变量range_optimizer_max_mem_size
范围Global,Session
动态
类型整数
默认 Value(> = 5.7.12)8388608
默认 Value(<= 5.7.11)1536000
最低 Value0
最大 Value18446744073709551615

范围优化器的 memory 消耗限制。 值为 0 表示“无限制”。如果优化程序考虑的执行计划使用范围访问方法,但优化程序估计此方法所需的 memory 数量将超出限制,则它将放弃该计划并考虑其他计划。有关更多信息,请参阅限制 Memory 用于范围优化。


rbr_exec_mode

属性
****介绍5.7.1
系统变量rbr_exec_mode
范围Global,Session
动态
类型列举
默认值STRICT
有效值IDEMPOTENT
STRICT

供内部使用。此变量在IDEMPOTENT模式和STRICT模式之间切换服务器。 IDEMPOTENT模式会导致mysqlbinlog 可以生成的BINLOG statements 中的 duplicate-key 和 no-key-found 错误被抑制。在服务器上重放 row-based 二进制 log 时,此模式非常有用,该服务器会导致与现有数据冲突。通过将以下内容写入输出来指定--idempotent选项时mysqlbinlog 可以 sets 此模式:

SET SESSION RBR_EXEC_MODE=IDEMPOTENT;


read_buffer_size

属性
Command-Line 格式--read-buffer-size=#
系统变量read_buffer_size
范围Global,Session
动态
类型整数
默认值131072
最低 Value8200
最大 Value2147479552

MyISAM table 执行顺序扫描的每个线程为其扫描的每个 table 分配一个此大小的缓冲区(以字节为单位)。如果执行许多顺序扫描,则可能需要增加此 value,默认为 131072.此变量的 value 应为 4KB 的倍数。如果它设置为 value 不是 4KB 的倍数,则其 value 将向下舍入到最接近的 4KB 的倍数。

对于所有存储引擎,此选项也在以下 context 中使用:

  • 在为ORDER BY排序行时,用于缓存临时文件(不是临时 table)中的索引。

  • 对于批量插入分区。

  • 用于缓存嵌套查询的结果。

read_buffer_size也用于另一个存储 engine-specific 方式:确定记忆表的 memory 块大小。

有关在不同操作期间使用 memory 的更多信息,请参阅第 8.12.4.1 节,“MySQL 如何使用 Memory”。


read_only

属性
Command-Line 格式--read-only[={OFF\|ON}]
系统变量read_only
范围全球
动态
类型Boolean
默认值OFF

启用read_only系统变量时,除了具有超权限的用户之外,服务器不允许 client 更新。默认情况下禁用此变量。

服务器还支持super_read_only系统变量(默认情况下禁用),具有以下效果:

  • 如果启用super_read_only,则服务器禁止 client 更新,即使是具有超权限的用户也是如此。

  • 将super_read_only设置为ON会隐式强制read_only为ON

  • 将read_only设置为OFF会隐式强制super_read_only为OFF

即使启用了read_only,服务器也允许这些操作:

  • 如果服务器是复制从属,则由从属线程执行的更新。在复制设置中,在从属服务器上启用read_only以确保从属服务器仅接受来自 master 服务器而不是来自 clients 的更新非常有用。

  • 使用分析 TABLE或OPTIMIZE TABLE statements。 read-only 模式的目的是防止更改 table 结构或内容。分析和优化不符合此类更改。这意味着,例如,可以使用mysqlcheck --all-databases --analyze执行对 read-only 复制从属的一致性检查。

  • TEMPORARY表的操作。

  • 插入 log 表(mysql.general_logmysql.slow_log);见部分 5.4.1,“选择常规查询 Log 和慢查询 Log 输出目标”。

  • 从 MySQL 5.7.16 开始,更新 Performance Schema 表,例如UPDATE或TRUNCATE TABLE操作。

master 服务器上对read_only的更改不会复制到从属服务器。可以在从属服务器上设置 value,而与 master 上的设置无关。

以下条件适用于尝试启用read_only(包括启用super_read_only导致的隐式尝试):

  • 如果您有任何显式锁(使用锁表获取)或具有挂起的 transaction,则尝试失败并发生错误。

  • 尝试阻塞,而其他 clients 有任何正在进行的语句,active LOCK TABLES WRITE或正在进行的提交,直到锁被释放并且 statements 和 transactions 结束。虽然启用read_only的尝试处于暂挂状态,但其他 clients 对 table 锁定或开始 transactions 的请求也会阻塞,直到read_only被设置为止。

  • 如果存在保存元数据锁的 active transactions,则尝试阻止,直到那些 transactions 结束。

  • 当您持有 global 读锁(使用带读锁的冲洗表获取)时,可以启用read_only,因为这不涉及 table 锁。


read_rnd_buffer_size

属性
Command-Line 格式--read-rnd-buffer-size=#
系统变量read_rnd_buffer_size
范围Global,Session
动态
类型整数
默认值262144
最低 Value1
最大 Value2147483647

此变量用于从MyISAM表读取,对于任何存储引擎,用于 Multi-Range 读取优化。

在 key-sorting 操作之后从 sortedorder 中的MyISAM table 读取行时,将通过此缓冲区读取行以避免磁盘搜索。见第 8.2.1.14 节,“ORDER BY 优化”。将变量设置为大 value 可以大大提高ORDER BY performance。但是,这是为每个 client 分配的缓冲区,因此不应将 global 变量设置为大 value。相反,只能从那些需要 run 大查询的客户端中更改 session 变量。

有关在不同操作期间使用 memory 的更多信息,请参阅第 8.12.4.1 节,“MySQL 如何使用 Memory”。有关 Multi-Range 读取优化的信息,请参阅第 8.2.1.10 节,“Multi-Range 读取优化”。


require_secure_transport

属性
Command-Line 格式--require-secure-transport[={OFF\|ON}]
****介绍5.7.8
系统变量require_secure_transport
范围全球
动态
类型Boolean
默认值OFF

是否需要 client 连接到服务器才能使用某种形式的安全传输。启用此变量时,服务器仅允许使用 SSL 的 TCP/IP 连接,或使用 socket 文件(在 Unix 上)或共享 memory(在 Windows 上)的连接。服务器拒绝非安全连接尝试,该尝试因ER_SECURE_TRANSPORT_REQUIRED错误而失败。

此功能补充了 per-account SSL 要求,这些要求优先。例如,如果使用REQUIRE SSL定义了帐户,则启用require_secure_transport无法使用该帐户使用 Unix socket 文件进行连接。

服务器可能没有可用的安全传输。例如,如果在未指定任何 SSL 证书或 key files 且禁用sharedmemory系统变量的情况下启动,则 Windows 上的服务器不支持安全传输。在这些情况下,尝试在启动时启用require_secure_transport会导致服务器将消息写入错误 log 并退出。尝试在运行时启用变量失败,并显示ER_NO_SECURE_TRANSPORTS_CONFIGURED错误。

另见将加密连接配置为必需。


secure_auth

属性
Command-Line 格式--secure-auth[={OFF\|ON}]
****已过时5.7.5
系统变量secure_auth
范围全球
动态
类型Boolean
默认值ON
有效值(> = 5.7.5)ON
有效值(<= 5.7.4)OFF
ON

如果启用此变量,则服务器会阻止尝试使用以旧(pre-4.1)格式存储密码的帐户的 clients 连接。

启用此变量可防止使用旧格式的所有密码(因此通过网络进行不安全的通信)。

此变量已弃用,将在以后的 MySQL 版本中删除。它始终处于启用状态,尝试禁用它会产生错误。

如果启用此变量并且权限表为 pre-4.1 格式,则服务器启动失败并显示错误。见第 6.4.1.3 节,“迁移 Pre-4.1 密码哈希和 mysql_old_password 插件”。

注意
使用 pre-4.1 哈希方法的密码不如使用本机密码哈希方法的密码安全,应该避免使用。不推荐使用 Pre-4.1 密码,并在 MySQL 5.7.5 中删除了对它们的支持。有关帐户升级说明,请参阅第 6.4.1.3 节,“迁移 Pre-4.1 密码哈希和 mysql_old_password 插件”。


  • secure_file_priv

属性
Command-Line 格式--secure-file-priv=dir_name
系统变量secure_file_priv
范围全球
动态没有
类型
默认 Value(> = 5.7.6)platform specific
默认 Value(<= 5.7.5)empty string
有效值(> = 5.7.6)empty string
dirname
NULL
有效值(<= 5.7.5)empty string
dirname

此变量用于限制数据 import 和 export 操作的效果,例如负载数据和SELECT ... INTO OUTFILE statements 以及LOAD_FILE() function 执行的操作。仅允许具有文件权限的用户执行这些操作。

secure_file_priv可以设置如下:

  • 如果为空,则变量无效。这不是一个安全的设置。

  • 如果设置为目录的 name,则服务器将 import 和 export 操作限制为仅与该目录中的 files 一起使用。目录必须存在;服务器不会创建它。

  • 如果设置为NULL,则服务器将禁用 import 和 export 操作。

默认的 value 是特定于平台的,取决于INSTALL_LAYOUT CMake选项的 value,如下面的 table 所示。若要从源构建 building,请显式指定默认secure_file_priv value,使用INSTALL_SECURE_FILE_PRIVDIR CMake选项。

INSTALL_LAYOUT Value默认secure_file_priv Value
STANDALONE , WINNULL(> = MySQL 5.7.16),空(<MySQL 5.7.16)
DEB , RPM , SLES , SVR4/var/lib/mysql-files
除此以外在CMAKE_INSTALL_PREFIX value 下mysql-files

要为libmysqld嵌入式服务器设置默认secure_file_priv value,请使用INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR CMake选项。此选项的默认 value 为NULL

服务器在启动时检查secure_file_priv的 value,如果 value 不安全,则向错误 log 写入警告。如果非NULL value 为空,或者 value 是数据目录或其子目录,或者是所有用户都可以访问的目录,则认为非NULL value 是不安全的。如果secure_file_priv设置为不存在的路径,则服务器会将错误消息写入错误 log 并退出。


server_id

属性
Command-Line 格式--server-id=#
系统变量server_id
范围全球
动态
类型整数
默认值0
最低 Value0
最大 Value4294967295

指定服务器 ID。此变量由--server-id选项设置。在 MySQL 5.7 中,如果启用了二进制 logging,则必须指定--server-id选项,否则不允许服务器启动。

server_id系统变量默认设置为 0。在复制 master 和每个复制从属服务器上,必须指定--server-id选项以建立 1 到 232 之间的唯一复制 ID。“唯一”表示每个 ID 必须与任何正在使用的其他 ID 不同其他复制 master 或 slave。例如,server-id=3。有关其他信息,请参阅第 16.1.6.2 节,“复制 Master 选项和变量”和第 16.1.6.3 节,“复制从属选项和变量”。

如果服务器 ID 设置为 0,则发生二进制 logging,但服务器 ID 为 0 的 master 拒绝来自从服务器的任何连接,服务器 ID 为 0 的从服务器拒绝连接到 master。请注意,虽然您可以动态地将服务器 ID 更改为非零 value,但这样做不会立即启动复制。您必须更改服务器 ID,然后重新启动服务器以初始化复制从站。

有关更多信息,请参阅第 16.1.2.5.1 节,“设置复制从属 Configuration”。


session_track_gtids

属性
Command-Line 格式--session-track-gtids=value
****介绍5.7.6
系统变量session_track_gtids
范围Global,Session
动态
类型列举
默认值OFF
有效值OFF
OWN_GTID
ALL_GTIDS

控制服务器是否跟踪当前 session 中的 GTID 并将它们返回给 client。根据变量 value,在执行每个 transaction 的末尾,服务器 GTID 由跟踪器捕获并返回到 client。允许使用这些session_track_gtids值:

  • OFF:跟踪器不收集 GTID。这是默认值。

  • OWN_GTID:跟踪器收集成功提交的 read/write transactions 生成的 GTID。

  • ALL_GTIDS:跟踪器在当前 transaction 提交的 time 处收集gtid_executed系统变量中的所有 GTID,无论 transaction 是 read/write 还是只读。

无法在 transactional context 中设置session_track_gtids。

有关 session state 跟踪的详细信息,请参阅第 5.1.14 节,“服务器跟踪 Client Session State 更改”。


session_trackschema

属性
Command-Line 格式--session-track-schema[={OFF\|ON}]
****介绍5.7.4
系统变量session_track_schema
范围Global,Session
动态
类型Boolean
默认值ON

控制服务器是否在当前 session 中设置默认 schema(数据库)时跟踪,并通知 client 使 schema name 可用。

如果启用了 schema name 跟踪器,则即使新的 schema name 与旧的 schema name 相同,也会在每次设置默认 schema 时发生 name 通知。

有关 session state 跟踪的详细信息,请参阅第 5.1.14 节,“服务器跟踪 Client Session State 更改”。


session_trackstate_change

属性
Command-Line 格式--session-track-state-change[={OFF\|ON}]
****介绍5.7.4
系统变量session_track_state_change
范围Global,Session
动态
类型Boolean
默认值OFF

控制服务器是否跟踪当前 session 的 state 的更改,并在 state 更改发生时通知 client。可以报告 client session state 的这些属性的更改:

  • 默认的 schema(数据库)。

  • Session-specific 系统变量的值。

  • User-defined 变量。

  • 临时表。

  • 准备陈述。

如果启用了 session state 跟踪器,则每个涉及跟踪的 session 属性的更改都会发出通知,即使新属性值与旧属性值相同也是如此。对于 example,将 user-defined 变量设置为其当前 value 会产生通知。

session_trackstate_change变量仅控制何时发生更改的通知,而不控制更改的内容。例如,如果设置或跟踪了_seche 系统变量的默认 schema,则会发生 state-change 通知,但通知不包含 schema name 或变量值。要接收 schema name 或 session 系统变量值的通知,请分别使用session_trackschema或session_track_system_variables系统变量。

注意
将 value 分配给session_trackstate_change本身不被视为 state 更改,因此不会报告。但是,如果在session_track_system_variables的 value 中列出了 name,则对它的任何赋值都会导致新 value 的通知。
有关 session state 跟踪的详细信息,请参阅第 5.1.14 节,“服务器跟踪 Client Session State 更改”。


session_track_system_variables

属性
Command-Line 格式--session-track-system-variables=#
****介绍5.7.4
系统变量session_track_system_variables
范围Global,Session
动态
类型
默认值time_zone, autocommit, character_set_client, character_set_results, character_set_connection

控制服务器是否跟踪 session 系统变量的分配,并通知 client 每个分配的变量的 name 和 value。变量 value 是一个 comma-separated 变量列表,用于跟踪分配。默认情况下,会为timezone,自动提交,character_setclient,character_set_results和character_set_connection启用通知。 (后三个变量是受设置名称 .)影响的变量

特殊的 value *使服务器跟踪所有 session 变量的赋值。如果给定,则必须在没有特定系统变量名的情况下自行指定此 value。

要禁用 session 变量赋值的通知,请将session_track_system_variables设置为空 string。

如果启用了 session 系统变量跟踪,则对跟踪的 session 变量的所有分配都会发出通知,即使新值与旧值相同也是如此。

有关 session state 跟踪的详细信息,请参阅第 5.1.14 节,“服务器跟踪 Client Session State 更改”。


session_tracktransaction_info

属性
Command-Line 格式--session-track-transaction-info=value
****介绍5.7.8
系统变量session_track_transaction_info
范围Global,Session
动态
类型列举
默认值OFF
有效值OFF
STATE
CHARACTERISTICS

控制服务器是否跟踪当前 session 中 transactions 的 state 和特征,并通知 client 使此信息可用。允许使用这些session_tracktransaction_info值:

  • OFF:禁用 transaction state 跟踪。这是默认值。

  • STATE:启用 transaction state 跟踪而不跟踪特征。 State 跟踪使 client 能够确定 transaction 是否正在进行中,以及是否可以将其移动到其他 session 而不进行回滚。

  • CHARACTERISTICS:启用 transaction state 跟踪,包括特征跟踪。特征跟踪使 client 能够确定如何在另一个 session 中重新启动 transaction,以使其具有与原始 session 中相同的特征。以下特征与此相关:

ISOLATION LEVEL
READ ONLY 
READ WRITE
WITH CONSISTENT SNAPSHOT

要使 client 安全地将 transaction 重定位到另一个 session,它必须不仅跟踪 transaction state 而且还跟踪 transaction 特性。此外,client 必须跟踪transaction_isolation和transaction_read_only系统变量才能正确确定 session 默认值。 (要跟踪这些变量,请将它们列在session_track_system_variables系统的 value 中 variable.)

有关 session state 跟踪的详细信息,请参阅第 5.1.14 节,“服务器跟踪 Client Session State 更改”。


sha256_password_auto_generate_rsakeys

属性
Command-Line 格式--sha256-password-auto-generate-rsa-keys[={OFF\|ON}]
****介绍5.7.5
系统变量sha256_password_auto_generate_rsa_keys
范围全球
动态没有
类型Boolean
默认值ON

如果服务器是使用 OpenSSL 编译的,则此变量可用(请参阅第 6.3.4 节,“SSL Library-Dependent 功能”)。它控制服务器是否在数据目录中自动生成 RSA private/public key-pair files(如果它们尚不存在)。

启动时,如果启用了sha256_password_auto_generate_rsakeys系统变量,未指定 RSA 选项,并且数据目录中缺少 RSA files,则服务器会自动在数据目录中生成 RSA private/public key-pair files。对于由sha256_password插件验证的帐户,这些 files 为未加密的连接使用 RSA 启用安全密码交换;见第 6.4.1.4 节,“SHA-256 可插拔认证”。

有关 RSA 文件自动生成的更多信息,包括文件名和特征,请参阅部分 6.3.3.1,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”

auto_generate_certs系统变量是相关的,但控制 SSL 证书的自动生成和使用 SSL 进行安全连接所需的 key files。


sha256_password_privatekey_path

属性
Command-Line 格式--sha256-password-private-key-path=file_name
系统变量sha256_password_private_key_path
范围全球
动态没有
类型文件名
默认值private_key.pem

如果使用 OpenSSL 编译 MySQL,则可以使用此变量(请参阅第 6.3.4 节,“SSL Library-Dependent 功能”)。它的 value 是sha256_password身份验证插件的 RSA 私有 key 文件的路径 name。如果文件被命名为相对路径,则相对于服务器数据目录进行解释。该文件必须采用 PEM 格式。

重要
由于此文件存储私有 key,因此应限制其访问模式,以便只有 MySQL 服务器才能读取它。
有关sha256_password的信息,请参阅第 6.4.1.4 节,“SHA-256 可插拔认证”。


sha256_password_proxy_users

属性
Command-Line 格式--sha256-password-proxy-users[={OFF\|ON}]
****介绍5.7.7
系统变量sha256_password_proxy_users
范围全球
动态
类型Boolean
默认值OFF

此变量控制sha256_password built-in 身份验证插件是否支持代理用户。除非启用了check_proxy_users系统变量,否则它无效。有关用户代理的信息,请参阅第 6.2.14 节,“代理用户”。


sha256_password_publickey_path

属性
Command-Line 格式--sha256-password-public-key-path=file_name
系统变量sha256_password_public_key_path
范围全球
动态没有
类型文件名
默认值public_key.pem

如果使用 OpenSSL 编译 MySQL,则可以使用此变量(请参阅第 6.3.4 节,“SSL Library-Dependent 功能”)。它的 value 是sha256_password authentication 插件的 RSA public key 文件的路径 name。如果文件被命名为相对路径,则相对于服务器数据目录进行解释。该文件必须采用 PEM 格式。因为此文件存储了一个公共 key,所以副本可以自由地分发给 client 用户。 (使用 RSA 密码加密连接到服务器时显式指定公共 key 的客户端必须使用与 server.)使用的公钥 key 相同的公钥 key

有关sha256_password的信息,包括有关 clients 如何指定 RSA public key 的信息,请参阅第 6.4.1.4 节,“SHA-256 可插拔认证”。


sharedmemory

属性
Command-Line 格式--shared-memory[={OFF\|ON}]
系统变量shared_memory
范围全球
动态没有
平台特定视窗
类型Boolean
默认值OFF

(Windows only.)服务器是否允许 shared-memory 连接。


sharedmemory_basename

属性
Command-Line 格式--shared-memory-base-name=name
系统变量shared_memory_base_name
范围全球
动态没有
平台特定视窗
类型
默认值MYSQL

(Windows only.)共享 memory 的 name 用于 shared-memory 连接。当在单个物理机器上运行多个 MySQL 实例时,这很有用。默认 name 是MYSQL。 name 是 case-sensitive。

仅当启用服务器并启用sharedmemory系统变量以支持 shared-memory 连接时,此变量才适用。


show_compatibility_56

属性
Command-Line 格式--show-compatibility-56[={OFF\|ON}]
****介绍5.7.6
****已过时5.7.6
系统变量show_compatibility_56
范围全球
动态
类型Boolean
默认 Value(> = 5.7.8)OFF
默认 Value(<= 5.7.7)ON

INFORMATION_SCHEMA具有包含系统和状态变量信息的表(请参阅第 24.11 节,“INFORMATIONSCHEMA GLOBAL_VARIABLES 和 SESSION_VARIABLES 表”和第 24.10 节,“INFORMATIONSCHEMA GLOBAL_STATUS 和 SESSION_STATUS 表”)。从 MySQL 5.7.6 开始,Performance Schema 还包含系统和状态变量表(请参阅第 25.12.13 节,“性能 Schema 系统变量表”和第 25.12.14 节,“性能 Schema 状态变量表”)。 Performance Schema 表旨在替换INFORMATION_SCHEMA表,这些表自 MySQL 5.7.6 开始不推荐使用,并将在未来的 MySQL 版本中删除。

有关从INFORMATION_SCHEMA表迁移到 Performance Schema 表的建议,请参阅第 25.20 节,“迁移到 Performance Schema 系统和状态变量表”。为了帮助迁移,您可以使用show_compatibility_56系统变量,该变量会影响是否启用 MySQL 5.6 兼容性,以及INFORMATION_SCHEMA和 Performance Schema 表以及显示变量和显示状态 statements 如何提供系统和状态变量信息。

注意
show_compatibility_56已弃用,因为它的唯一目的是允许控制将在未来的 MySQL 版本中删除的已弃用的系统和状态变量信息源。删除这些来源后,show_compatibility_56将没有任何目的,也将被删除。
以下讨论描述了show_compatibility_56的效果:

  • show_compatibility_56 效果概述

  • show_compatibility_56 对 SHOW Statements 的影响

  • show_compatibility_56 对 INFORMATIONSCHEMA 表的影响

  • show_compatibility_56 对 Performance Schema 表的影响

  • show_compatibility_56 对从属状态变量的影响

  • show_compatibility_56 对 FLUSH 状态的影响

为了更好地理解,强烈建议您还阅读以下部分:

  • 第 25.12.13 节,“性能 Schema 系统变量表”

  • 第 25.12.14 节,“性能 Schema 状态变量表”

  • 第 25.12.15.10 节,“状态变量汇总表”

show_compatibility_56 效果概述

show_compatibility_56系统变量影响有关系统和状态变量的服务器操作的这些方面:

  • 可从显示变量和显示状态 语句获得的信息

  • 可从INFORMATION_SCHEMA表中获取的信息,这些信息提供系统和状态变量信息

  • 可从 Performance Schema 表中获取的信息,这些表提供系统和状态变量信息

  • 冲洗状态语句对状态变量的影响

此列表总结了show_compatibility_56的效果,以及后面给出的其他详细信息:

  • 当show_compatibility_56为ON时,启用与 MySQL 5.6 的兼容性。较旧的变量信息源(SHOW statements,INFORMATION_SCHEMA tables)产生与 MySQL 5.6 相同的输出。

  • 当show_compatibility_56是OFF时,禁用与 MySQL 5.6 的兼容性。从INFORMATION_SCHEMA表中选择会产生错误,因为 Performance Schema 表旨在替换它们。从 MySQL 5.7.6 开始,INFORMATION_SCHEMA表已被弃用,将在未来的 MySQL 版本中删除。

获取系统和状态变量信息_11时,使用 Performance Schema 表或SHOW statements。

注意
当show_compatibility_56=OFF时,显示变量和显示状态 statements 显示 Performance Schema global_variables,session_variables,global_status和session_status表中的行。

从 MySQL 5.7.9 开始,这些表是世界可读的,无需选择特权即可访问,这意味着选择也不需要使用SHOW statements。在 MySQL 5.7.9 之前,需要选择特权才能直接或间接通过SHOW statements 访问这些 Performance Schema 表。

  • 当show_compatibility_56为ON时,显示状态可以使用多个Slave_xxx状态变量。当show_compatibility_56是OFF时,其中一些变量不会暴露给显示状态。它们提供的信息可在 replication-related Performance Schema 表中找到,如后所述。

  • show_compatibility_56对使用@@表示法的系统变量访问没有影响:@@GLOBAL.var_name@@SESSION.var_name@@var_name

  • show_compatibility_56对嵌入式服务器没有影响,在所有情况下都会产生 5.6-compatible 输出。

以下描述详细说明了在应用此变量的上下文中将show_compatibility_56设置为ONOFF的效果。

show_compatibility_56 对 SHOW Statements 的影响

显示 GLOBAL VARIABLES声明:

  • ON:MySQL 5.6 输出。

  • OFF:输出显示 Performance Schema global_variables table 中的行。

显示[SESSION |局部]变量声明:

  • ON:MySQL 5.6 输出。

  • OFF:输出显示 Performance Schema session_variables table 中的行。 (在 MySQL 5.7.6 和 5.7.7 中,OFF输出不能完全反映当前 session 有效的所有系统变量值;它不包含没有 session 对应的 global 变量的行.这在 MySQL 中已得到纠正 5.7.8.)

显示 GLOBAL 状态声明:

  • ON:MySQL 5.6 输出。

  • OFF:输出显示 Performance Schema global_status table 中的行,以及Com_xxx语句执行计数器。

    ON输出不同,OFF输出不包含没有 global 对应的 session 变量的行。

显示[SESSION |当地]状态声明:

  • ON:MySQL 5.6 输出。

  • OFF:输出显示 Performance Schema session_status table 中的行,以及Com_xxx语句执行计数器。 (在 MySQL 5.7.6 和 5.7.7 中,OFF输出不能完全反映当前 session 有效的所有状态变量值;它不包含没有 session 对应的 global 变量的行.这在 MySQL 中已得到纠正 5.7.8.)

在 MySQL 5.7.6 和 5.7.7 中,对于刚才描述的每个SHOW 语句,使用WHERE子句会在show_compatibility_56=ON时产生警告,而在show_compatibility_56=OFF时会产生错误。 (这适用于未优化的WHERE子句.例如,WHERE 1非常简单 true,被优化掉,因此不会产生警告或 error.)从 MySQL 5.7.8 开始不会发生此行为; WHERE支持 5.7.6 之前。

show_compatibility_56 对 INFORMATIONSCHEMA 表的影响

INFORMATION_SCHEMA表(GLOBAL_VARIABLES,SESSION_VARIABLES,GLOBAL_STATUS和SESSION_STATUS):

  • ON:MySQL 5.6 输出,带有弃用警告。

  • OFF:从这些表中选择会产生错误。 (在 5.7.9 之前,从这些表中选择不产生输出,不推荐使用 warning.)

show_compatibility_56 对 Performance Schema 表的影响

Performance Schema 系统变量表:

  • OFF :

  • global_variables:仅 Global 系统变量。

  • session_variables:对当前 session 有效的系统变量:每个 session 变量的一行,以及没有 session 对应的每个 global 变量的一行。

  • variables_by_thread:Session 系统变量,仅用于每个 active session。

  • ON:与OFF相同的输出。 (在 5.7.8 之前,这些表不产生 output.)

Performance Schema 状态变量表:

  • OFF :

  • global_status:仅 Global 状态变量。

  • session_status:有效当前 session 的状态变量:每个 session 变量的一行,以及没有 session 对应的每个 global 变量的一行。

  • 仅status_by_account Session 状态变量,按帐户汇总。

  • status_byhost:仅 Session 状态变量,按 host name 聚合。

  • status_by_thread:仅 Session 状态变量,用于每个 active session。

  • status_by_user:仅 Session 状态变量,按用户 name 聚合。

Performance Schema 不会收集状态变量表中Com_xxx状态变量的统计信息。要获取 global 和 per-session 语句执行计数,请分别使用eventsstatements_summaryglobal_byeventname和eventsstatements_summary_by_thread_byeventname表。

  • ON:与OFF相同的输出。 (在 5.7.9 之前,这些表不产生 output.)

show_compatibility_56 对从属状态变量的影响

从属状态变量:

  • ON:显示状态提供了几个Slave_xxx状态变量。

  • OFF:其中一些从属变量未向显示状态或 Performance Schema 状态变量表公开。它们提供的信息可在 replication-related Performance Schema 表中找到。以下 table 显示Slave_xxx中哪些Slave_xxx状态变量不可用以及它们在 Performance Schema 复制表中的位置。

状态变量Performance Schema 位置
Slave_heartbeat_periodreplication_connectionconfiguration table,HEARTBEAT_INTERVAL专栏
Slave_last_heartbeatreplication_connection_status table,LAST_HEARTBEAT_TIMESTAMP专栏
Slave_received_heartbeatsreplication_connection_status table,COUNT_RECEIVED_HEARTBEATS专栏
Slave_retried_transactionsreplication_applier_status table,COUNT_TRANSACTIONS_RETRIES专栏
Slave_runningreplication_connection_status和replication_applier_status表,SERVICE_STATE

show_compatibility_56 对 FLUSH STATUS 的影响

冲洗状态声明:

  • ON:此语句产生 MySQL 5.6 行为。它将当前线程的 session 状态变量值添加到 global 值,并将 session 值重置为零。一些 global 变量也可以重置为零。它还将 key 缓存(默认和命名)的计数器重置为零,并将_set 重置为当前打开的连接数。

  • OFF:此语句将 session 会话的 session 状态添加到 global 状态变量,重置所有 active 会话的状态,并重置从断开连接的会话聚合的帐户,host 和用户状态值。


  • show_createtable_verbosity

属性
Command-Line 格式--show-create-table-verbosity[={OFF\|ON}]
****介绍5.7.22
系统变量show_create_table_verbosity
范围Global,Session
动态
类型Boolean
默认值OFF

如果行格式是默认格式,则显示创建 TABLE通常不显示ROW_FORMAT table 选项。启用此变量会导致显示创建 TABLE显示ROW_FORMAT,无论它是否为默认格式。


show_old_temporals

属性
Command-Line 格式--show-old-temporals[={OFF\|ON}]
****介绍5.7.6
****已过时5.7.6
系统变量show_old_temporals
范围Global,Session
动态
类型Boolean
默认值OFF

显示创建 TABLE输出是否包含 flag _comg 时间列,发现是 pre-5.6.4 格式(时间,约会时间和TIMESTAMP列,不支持小数秒精度)。默认情况下禁用此变量。如果启用,显示创建 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

INFORMATIONSCHEMA.COLUMNS table 的COLUMN_TYPE列的输出也会受到类似的影响。

此变量已弃用,将在以后的 MySQL 版本中删除。


skip_external_locking

属性
Command-Line 格式--skip-external-locking[={OFF\|ON}]
系统变量skip_external_locking
范围全球
动态没有
类型Boolean
默认值ON

如果mysqld使用外部锁定(系统锁定),则为OFF,如果禁用外部锁定,则为ON。这仅影响MyISAM 数据 table 访问。

此变量由--external-locking或--skip-external-locking选项设置。默认情况下禁用外部锁定。

外部锁定仅影响MyISAM 数据 table 访问。有关更多信息,包括可以和不可以使用的条件,请参阅第 8.11.5 节,“外部锁定”。


skipname_resolve

属性
Command-Line 格式--skip-name-resolve[={OFF\|ON}]
系统变量skip_name_resolve
范围全球
动态没有
类型Boolean
默认值OFF

此变量是从--skip-name-resolve选项的 value 设置的。如果是OFF,mysqld在检查 client 连接时解析 host 名称。如果是ON,则mysqld仅使用 IP numbers;在这种情况下,授权表中的所有Host列值必须是 IP 地址或localhost。见部分 8.12.5.2,“DNS 查找优化和 Host 缓存”。


skip_networking

属性
Command-Line 格式--skip-networking
系统变量skip_networking
范围全球
动态没有

如果服务器仅允许本地(non-TCP/IP)连接,则为ON。在 Unix 上,本地连接使用 Unix socket 文件。在 Windows 上,本地连接使用命名管道或共享 memory。可以使用--skip-networking选项将此变量设置为ON


skip_show_database

属性
Command-Line 格式--skip-show-database
系统变量skip_show_database
范围全球
动态没有

这可以防止人们使用显示数据库语句,如果他们没有显示数据库权限。如果您担心用户能够查看属于其他用户的数据库,则可以提高安全性。其效果取决于显示数据库特权:如果变量 value 为ON,则仅允许具有显示数据库特权的用户使用显示数据库语句,并且该语句将显示所有数据库名称。如果 value 为OFF,则允许所有用户使用显示数据库,但仅显示用户具有显示数据库或其他权限的那些数据库的名称。

警告

由于 global 特权被视为所有数据库的特权,因此任何 global 特权都允许用户使用显示数据库查看所有数据库名称或检查INFORMATION_SCHEMA SCHEMATA table。


slow_launchtime

属性
Command-Line 格式--slow-launch-time=#
系统变量slow_launch_time
范围全球
动态
类型整数
默认值2

如果创建一个线程需要的时间超过这么多秒,服务器会增加Slow_launch_threads状态变量。


slow_querylog

属性
Command-Line 格式--slow-query-log[={OFF\|ON}]
系统变量slow_query_log
范围全球
动态
类型Boolean
默认值OFF

是否启用了慢查询 log。 value 可以是 0(或OFF)来禁用 log 或 1(或ON)来启用 log。 log 输出的目标由log_output系统变量控制;如果 value 是NONE,即使启用了 log,也不会写入 log 条目。

“慢”由long_querytime变量的 value 决定。见第 5.4.5 节,“慢查询 Log”。


slow_querylog_file

属性
Command-Line 格式--slow-query-log-file=file_name
系统变量slow_query_log_file
范围全球
动态
类型文件名
默认值host_name-slow.log

慢查询 log 文件的 name。默认 value 为host_name-slow.log,但可以使用--slow_query_log_file选项更改初始 value。


插座

属性
Command-Line 格式--socket={file_name\|pipe_name}
系统变量socket
范围全球
动态没有
类型
默认 Value(其他)/tmp/mysql.sock
默认 Value(Windows)MySQL

在 Unix 平台上,此变量是 socket 文件的 name,用于本地 client 连接。默认值为/tmp/mysql.sock。 (对于某些分发格式,目录可能不同,例如/var/lib/mysql表示 RPMs.)

在 Windows 上,此变量是用于本地 client 连接的命名管道的 name。默认 value 是MySQL(不是 case-sensitive)。


sort_buffer_size

属性
Command-Line 格式--sort-buffer-size=#
系统变量sort_buffer_size
范围Global,Session
动态
类型整数
默认值262144
最低 Value32768
最大 Value(其他,64-bit 平台)18446744073709551615
最大 Value(其他,32-bit 平台)4294967295
最大 Value(Windows)4294967295

每个必须执行排序的 session 都会分配一个这样大小的缓冲区。 sort_buffer_size不是特定于任何存储引擎的,并且以一般方式应用于优化。至少sort_buffer_size value 必须足够大,以容纳排序缓冲区中的 15 个 tuples。另外,增加max_sort_length的 value 可能需要增加sort_buffer_size的 value。有关更多信息,请参阅第 8.2.1.14 节,“ORDER BY 优化”

如果在显示 GLOBAL 状态输出中看到每秒Sort_merge_passes很多,则可以考虑增加sort_buffer_size value 以加速ORDER BYGROUP BY操作,这些操作无法通过查询优化或改进的索引来改进。

优化器尝试计算出需要多少空间,但可以分配更多空间,直到极限。将其设置为大于全局所需的大小将减慢大多数排序的查询。最好将其作为 session 设置增加,并且仅适用于需要更大尺寸的会话。在 Linux 上,存在 256KB 和 2MB 的阈值,其中较大的值可能显着减慢 memory 分配,因此您应该考虑保持低于其中一个值。尝试为您的工作负载找到最佳值。见第 B.4.3.5 节,“MySQL Stores Temporary Files”。

sort_buffer_size的最大允许设置为 4GB-1。 64-bit 平台允许更大的值(64-bit Windows 除外,其中大值被截断为 4GB-1 并带有警告)。


sql_auto_is_null

属性
系统变量sql_auto_is_null
范围Global,Session
动态
类型Boolean
默认值OFF

如果启用此变量,则在成功插入自动生成的AUTO_INCREMENT value 的语句之后,您可以通过发出以下格式的语句来查找 value:

SELECT * FROM tbl_name WHERE auto_col IS NULL

如果语句返回一行,则返回的 value 与调用LASTINSERT_ID() function 时相同。有关详细信息,包括 multiple-row insert 后的 return value,请参阅第 12.15 节,“信息功能”。如果未成功插入AUTO_INCREMENT value,则选择语句不返回任何行。

某些 ODBC 程序(如 Access)使用通过一片空白比较检索AUTO_INCREMENT value 的行为。见获取 Auto-Increment 值。通过将sql_auto_is_null设置为OFF可以禁用此行为。

sql_auto_is_null的默认 value 是OFF


sql_bigselects

属性
系统变量sql_big_selects
范围Global,Session
动态
类型Boolean
默认值ON

如果设置为OFF,MySQL 将中止选择 statements,这可能需要非常_time 执行(即,优化程序估计已检查行数超过max_join_size的值的 statements)。当发出不可取的WHERE语句时,这很有用。新连接的默认 value 是ON,它允许所有选择 statements。

如果将max_join_size系统变量设置为DEFAULT以外的 value,则sql_bigselects设置为OFF


sql_buffer_result

属性
系统变量sql_buffer_result
范围Global,Session
动态
类型Boolean
默认值OFF

如果启用,sql_buffer_result强制将选择 statements 的结果放入临时表中。这有助于 MySQL 尽早释放 table 锁,并且在需要 long time 将结果发送到 client 的情况下非常有用。默认的 value 是OFF


sqllog_off

属性
系统变量sql_log_off
范围Global,Session
动态
类型Boolean
默认值OFF
有效值OFF(启用 logging)
ON(禁用 logging)

此变量控制是否对当前 session 禁用 logging 到通用查询 log(假设启用了常规查询 log 本身)。默认 value 是OFF(即启用 logging)。要为当前 session 禁用或启用常规查询 logging,请将 session sqllog_off变量设置为ONOFF

设置此系统变量的 session value 是受限制的操作。 session 用户必须具有足以设置受限 session 变量的权限。见第 5.1.8.1 节,“系统变量权限”。


sql_mode

属性
Command-Line 格式--sql-mode=name
系统变量sql_mode
范围Global,Session
动态
类型
默认 Value(> = 5.7.8)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
默认 Value(5.7.7)ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
默认 Value(> = 5.7.5,<= 5.7.6)ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ENGINE_SUBSTITUTION
默认 Value(<= 5.7.4)NO_ENGINE_SUBSTITUTION
有效值ALLOW_INVALID_DATES
ANSI_QUOTES
ERROR_FOR_DIVISION_BY_ZERO
HIGH_NOT_PRECEDENCE
IGNORE_SPACE
NO_AUTO_CREATE_USER
NO_AUTO_VALUE_ON_ZERO
NO_BACKSLASH_ESCAPES
NO_DIR_IN_CREATE
NO_ENGINE_SUBSTITUTION
NO_FIELD_OPTIONS
NO_KEY_OPTIONS
NO_TABLE_OPTIONS
NO_UNSIGNED_SUBTRACTION
NO_ZERO_DATE
NO_ZERO_IN_DATE
ONLY_FULL_GROUP_BY
PAD_CHAR_TO_FULL_LENGTH
PIPES_AS_CONCAT
REAL_AS_FLOAT
STRICT_ALL_TABLES
STRICT_TRANS_TABLES

当前服务器的 SQL 模式,可以动态设置。有关详细信息,请参阅第 5.1.10 节,“服务器 SQL 模式”。

注意
MySQL 安装程序可以在安装 process 期间配置 SQL 模式。如果 SQL 模式与默认模式或您期望的模式不同,请检查服务器在启动时读取的选项文件中的设置。


sql_notes

属性
系统变量sql_notes
范围Global,Session
动态
类型Boolean
默认值ON

如果启用(默认值),Note level 的诊断增量warning_count,服务器将记录它们。如果禁用,Note诊断不会增加warning_count,服务器不会 record 它们。 mysqldump包括用于禁用此变量的输出,以便重新加载转储文件不会对不影响重新加载操作完整性的 events 产生警告。


sql_quote_show_create

属性
系统变量sql_quote_show_create
范围Global,Session
动态
类型Boolean
默认值ON

如果启用(默认值),则服务器会为显示创建 TABLE和显示创建数据库 statements 引用标识符。如果禁用,则禁用引用。默认情况下启用此选项,以便复制适用于需要引用的标识符。见第 13.7.5.10 节,“SHOW CREATE TABLE 语法”和第 13.7.5.6 节,“显示创建数据库语法”。


sql_safe_updates

属性
系统变量sql_safe_updates
范围Global,Session
动态
类型Boolean
默认值OFF

如果启用此变量,则在WHERE子句或LIMIT子句中不使用 key 的UPDATE和删除 statements 会产生错误。这使得可以捕获未正确使用键的UPDATE和删除 statements,这可能会更改或删除大量行。默认的 value 是OFF

对于MySQL client,可以使用--safe-updates选项启用sql_safe_updates。有关更多信息,请参阅使用 Safe-Updates 模式(--safe-updates)。


sqlselect_limit

属性
系统变量sql_select_limit
范围Global,Session
动态
类型整数

从选择 statements 返回的最大行数。有关更多信息,请参阅使用 Safe-Updates 模式(--safe-updates)。

新连接的默认值 value 是服务器允许每个 table 的最大行数。典型的默认值为(232)-1 或(264)-1。如果更改了限制,则可以通过赋予的值来恢复默认的 value。

如果选择具有LIMIT子句,则LIMIT优先于sqlselect_limit的 value。


sqlwarnings

属性
系统变量sql_warnings
范围Global,Session
动态
类型Boolean
默认值OFF

如果发生警告,此变量控制 single-row 插入 statements 是否生成信息 string。默认值为OFF。将 value 设置为ON以生成信息 string。


ssl_ca

属性
Command-Line 格式--ssl-ca=file_name
系统变量ssl_ca
范围全球
动态没有
类型文件名

具有受信任 SSL 证书 Authorities 列表的文件的路径。


ssl_capath

属性
Command-Line 格式--ssl-capath=dir_name
系统变量ssl_capath
范围全球
动态没有
类型目录 name

包含 PEM 格式的受信任 SSL CA 证书的目录的路径。对此功能的支持取决于用于编译 MySQL 的 SSL library。见第 6.3.4 节,“SSL Library-Dependent 功能”。


ssl_cert

属性
Command-Line 格式--ssl-cert=file_name
系统变量ssl_cert
范围全球
动态没有
类型文件名

用于建立安全连接的 SSL 证书文件的 name。


ssl_cipher

属性
Command-Line 格式--ssl-cipher=name
系统变量ssl_cipher
范围全球
动态没有
类型

SSL 加密的允许密码列表。


ssl_crl

属性
Command-Line 格式--ssl-crl=file_name
系统变量ssl_crl
范围全球
动态没有
类型文件名

包含证书吊销的文件的路径 lists 采用 PEM 格式。对 revocation-list 功能的支持取决于用于编译 MySQL 的 SSL library。见第 6.3.4 节,“SSL Library-Dependent 功能”。


ssl_crlpath

属性
Command-Line 格式--ssl-crlpath=dir_name
系统变量ssl_crlpath
范围全球
动态没有
类型目录 name

包含 files 的目录的路径,其中包含 PEM 格式的证书吊销 lists。对 revocation-list 功能的支持取决于用于编译 MySQL 的 SSL library。见第 6.3.4 节,“SSL Library-Dependent 功能”。


sslkey

属性
Command-Line 格式--ssl-key=file_name
系统变量ssl_key
范围全球
动态没有
类型文件名

用于建立安全连接的 SSL key 文件的 name。


storage_engine

属性
****删除5.7.5
系统变量storage_engine
范围Global,Session
动态
类型列举
默认值InnoDB

不推荐使用此变量,并在 MySQL 5.7.5 中删除了该变量。请改用default_storage_engine。


stored_program_cache

属性
Command-Line 格式--stored-program-cache=#
系统变量stored_program_cache
范围全球
动态
类型整数
默认值256
最小 Value(> = 5.7.6)16
最小 Value(<= 5.7.5)256
最大 Value524288

为每个连接的缓存存储例程数设置软上限。此变量的 value 是根据 MySQL Server 为存储过程和存储函数维护的两个高速缓存中的每个高速缓存中保存的例程数来指定的。

每当执行存储的例程时,在解析例程中的第一个或 top-level 语句之前检查该高速缓存大小;如果相同类型的例程(存储过程或正在执行的存储过程)的数量超过此变量指定的限制,则刷新相应的高速缓存并释放先前为高速缓存的 objects 分配的 memory。这允许安全地刷新缓存,即使存储的例程之间存在依赖关系。


super_read_only

属性
Command-Line 格式--super-read-only[={OFF\|ON}]
****介绍5.7.8
系统变量super_read_only
范围全球
动态
类型Boolean
默认值OFF

如果启用了read_only系统变量,则服务器仅允许具有超特权的用户进行 client 更新。如果还启用了super_read_only系统变量,则服务器甚至禁止具有超的用户进行 client 更新。有关 read-only 模式的说明以及有关read_only和super_read_only如何交互的信息,请参阅read_only系统变量的说明。

启用super_read_only时阻止 Client 更新包括不一定看似更新的操作,例如CREATE FUNCTION(安装 UDF)和INSTALL PLUGIN。禁止这些操作,因为它们涉及对mysql系统数据库中的表的更改。

master 服务器上对super_read_only的更改不会复制到从属服务器。可以在从属服务器上设置 value,而与 master 上的设置无关。


sync_frm

属性
Command-Line 格式--sync-frm[={OFF\|ON}]
****已过时5.7.6
系统变量sync_frm
范围全球
动态
类型Boolean
默认值ON

如果此变量设置为 1,则在创建任何非临时 table 时,其.frm文件将同步到磁盘(使用fdatasync())。在发生崩溃的情况下,这会更慢但更安全。默认值为 1。

这个变量在 MySQL 5.7 中已弃用,并将在 MySQL 的未来 version 中删除(当.frm files 过时时)。


systemtimezone

属性
系统变量system_time_zone
范围全球
动态没有
类型

服务器系统 time zone。当服务器开始执行时,它从机器默认值继承 time zone 设置,可能由用于运行服务器或启动脚本的帐户环境修改。 value 用于设置systemtimezone。通常,time zone 由TZ环境变量指定。它也可以使用mysqld_safe脚本的--timezone选项指定。

systemtimezone变量与timezone不同。虽然它们可能具有相同的 value,但后一个变量用于为连接的每个 client 初始化 time zone。见第 5.1.12 节,“MySQL 服务器时间区域支持”。


table_definition_cache

属性
Command-Line 格式--table-definition-cache=#
系统变量table_definition_cache
范围全球
动态
类型整数
默认值-1(表示自动调整大小;不指定此文字 value)
最低 Value400
最大 Value524288

table 定义(来自.frm files)的数量,可以存储在定义缓存中。如果使用大量表,则可以创建大型 table 定义缓存以加快表的打开速度。与普通的 table 缓存不同,table 定义缓存占用的空间更少,不使用文件描述符。最小 value 为 400.默认 value 基于以下公式,上限为 2000:

400 + (table_open_cache / 2)

对于InnoDB,table_definition_cache充当InnoDB数据字典高速缓存中打开 table 实例数量的软限制。如果 open table 实例的数量超过table_definition_cache设置,则 LRU 机制开始标记 table 实例以进行驱逐,并最终将它们从数据字典缓存中删除。该限制有助于解决在下次服务器重新启动之前,将使用大量 memory 来缓存很少使用的 table 实例的情况。具有缓存元数据的 table 实例的数量可能高于table_definition_cache定义的限制,因为具有外部 key 关系的InnoDB system table 实例和 parent 和 child table 实例未放置在 LRU 列表中,并且不会从 memory 中逐出。

此外,table_definition_cache定义了一个InnoDB file-per-table 表空间数量的软限制,该表空间可以在一个 time 打开,也由innodb_openfiles控制。如果同时设置了table_definition_cache和innodb_openfiles,则使用最高设置。如果未设置任何变量,则使用具有更高默认值 value 的table_definition_cache。如果打开的表空间文件句柄的数量超过table_definition_cache或innodb_openfiles定义的限制,则 LRU 机制在表空间文件 LRU 列表中搜索完全刷新且当前未被扩展的 files。每次打开新表空间时都会执行此 process。如果没有“非活动”表空间,则不关闭任何表空间 files。


table_open_cache

属性
Command-Line 格式--table-open-cache=#
系统变量table_open_cache
范围全球
动态
类型整数
默认值2000
最低 Value1
最大 Value524288

所有线程的打开表的数量。增加此 value 会增加mysqld所需的文件描述符数。您可以通过检查Openedtables状态变量来检查是否需要增加 table 缓存。见第 5.1.9 节,“服务器状态变量”。如果Openedtables的 value 很大并且你不经常使用FLUSH TABLES(它只是强制所有表关闭并重新打开),那么你应该增加table_open_cache变量的 value。有关 table 缓存的更多信息,请参阅第 8.4.3.1 节,“MySQL 如何打开和关闭表”。


table_open_cache_instances

属性
Command-Line 格式--table-open-cache-instances=#
系统变量table_open_cache_instances
范围全球
动态没有
类型整数
默认 Value(> = 5.7.8)16
默认 Value(<= 5.7.7)1
最低 Value1
最大 Value64

打开表缓存实例的数量。为了通过减少会话之间的争用来提高可伸缩性,可以将打开表缓存划分为几个大小为table_open_cache/table_open_cache_instances的较小缓存实例。 session 只需锁定一个实例即可为 DML statements 访问它。这会在实例之间对高速缓存进行分段,允许在有许多会话访问表时使用高速缓存的操作具有更高的性能。 (DDL statements 仍然需要锁定整个缓存,但是这样的语句比 DML statements.)要频繁得多

对于常规使用 16 个或更多内核的系统,建议使用 8 或 16 的值。


thread_cache_size

属性
Command-Line 格式--thread-cache-size=#
系统变量thread_cache_size
范围全球
动态
类型整数
默认值-1(表示自动调整大小;不指定此文字 value)
最低 Value0
最大 Value16384

服务器应缓存多少个线程以供重用。当 client 断开连接时,如果那里有少于thread_cache_size个线程,则 client 的线程将被放入缓存中。如果可能,通过重用从高速缓存中获取的线程来满足线程请求,并且仅当高速缓存为空时才创建新线程。如果您有许多新连接,可以增加此变量以改善 performance。通常,如果您有一个好的线程 implementation,这不会提供显着的性能改进。但是,如果您的服务器每秒看到数百个连接,则通常应将thread_cache_size设置得足够高,以便大多数新连接使用缓存线程。通过检查连接和Threads_created状态变量之间的差异,您可以看到线程缓存的效率。有关详细信息,请参阅第 5.1.9 节,“服务器状态变量”。

默认 value 基于以下公式,上限为 100:

8 + (max_connections / 100)

此变量对嵌入式服务器(libmysqld)没有影响,并且在嵌入式服务器中不再显示 MySQL 5.7.2.


thread_concurrency

属性
Command-Line 格式--thread-concurrency=#
****已过时是(在 5.7.2 中删除)
系统变量thread_concurrency
范围全球
动态没有
类型整数
默认值10
最低 Value1
最大 Value512

此变量特定于 Solaris 8 及更早版本的系统,mysqld使用变量 value 调用thr_setconcurrency() function。这个 function 使应用程序能够给线程系统一个关于应该在同一 time 运行的所需线程数的提示。当前的 Solaris 版本将此文档记录为无效。

在 MySQL 5.7.2 中删除了此变量。


thread_handling

属性
Command-Line 格式--thread-handling=name
系统变量thread_handling
范围全球
动态没有
类型列举
默认值one-thread-per-connection
有效值(> = 5.7.9)no-threads
one-thread-per-connection
loaded-dynamically
有效值(<= 5.7.8)no-threads
one-thread-per-connection

服务器用于连接线程的 thread-handling model。允许的值是no-threads(服务器使用单个线程来处理一个连接)和one-thread-per-connection(服务器使用一个线程来处理每个 client 连接)。 no-threads对 Linux 下的调试很有用;见第 28.5 节,“调试和移植 MySQL”。

此变量对嵌入式服务器(libmysqld)没有影响,并且在嵌入式服务器中不再显示 MySQL 5.7.2.


thread_pool_algorithm

属性
Command-Line 格式--thread-pool-algorithm=#
****介绍5.7.9
系统变量thread_pool_algorithm
范围全球
动态没有
类型整数
默认值0
最低 Value0
最大 Value1

此变量控制线程池插件使用的算法:

  • value 为 0(默认值)使用保守的 low-concurrency 算法,该算法经过最好的测试,并且已知会产生非常好的结果。

  • value 为 1 会增加并发性并使用更积极的算法,有时已知该算法在最佳线程数上的性能提高了 5-10%,但随着连接数的增加,性能下降。它的使用应被视为实验性的,不受支持。

仅当启用了线程池插件时,此变量才可用。见第 5.5.3 节,“MySQL 企业线程池”


thread_pool_high_priority_connection

属性
Command-Line 格式--thread-pool-high-priority-connection=#
****介绍5.7.9
系统变量thread_pool_high_priority_connection
范围Global,Session
动态
类型整数
默认值0
最低 Value0
最大 Value1

此变量影响执行前新语句的排队。如果 value 为 0(false,默认值),则语句排队使用 low-priority 和 high-priority 队列。如果 value 为 1(true),则排队的 statements 总是转到 high-priority 队列。

仅当启用了线程池插件时,此变量才可用。见第 5.5.3 节,“MySQL 企业线程池”


thread_pool_max_unused_threads

属性
Command-Line 格式--thread-pool-max-unused-threads=#
****介绍5.7.9
系统变量thread_pool_max_unused_threads
范围全球
动态
类型整数
默认值0
最低 Value0
最大 Value4096

线程池中允许的最大未使用线程数。此变量可以限制睡眠线程使用的 memory 数量。

value 为 0(默认值)表示对休眠线程数没有限制。 的 value,其中N大于 0 表示 1 个 consumer 线程和N -1 保留线程。在这种情况下,如果一个线程准备好睡眠但睡眠线程的数量已经达到最大值,则线程退出而不是进入休眠状态。

睡眠线程要么作为 consumer 线程还是预留线程进行休眠。线程池允许一个线程在休眠时成为 consumer 线程。如果线程进入休眠状态并且没有现有的 consumer 线程,它将作为 consumer 线程休眠。当一个线程必须被唤醒时,如果有一个 consumer 线程被选中。仅当没有 consumer 线程唤醒时,才会选择保留线程。

仅当启用了线程池插件时,此变量才可用。见第 5.5.3 节,“MySQL 企业线程池”


thread_pool_prio_kickuptimer

属性
Command-Line 格式--thread-pool-prio-kickup-timer=#
****介绍5.7.9
系统变量thread_pool_prio_kickup_timer
范围Global,Session
动态
类型整数
默认值1000
最低 Value0
最大 Value4294967294

此变量影响等待 low-priority 队列中的执行的 statements。 value 是等待语句移动到 high-priority 队列之前的毫秒数。默认值为 1000(1 秒)。值的范围是 0 到 232 - 2。

仅当启用了线程池插件时,此变量才可用。见第 5.5.3 节,“MySQL 企业线程池”


thread_pool_size

属性
Command-Line 格式--thread-pool-size=#
****介绍5.7.9
系统变量thread_pool_size
范围全球
动态没有
类型整数
默认值16
最低 Value1
最大 Value64

线程池中的线程组数。这是控制线程池 performance 的最重要参数。它会影响多少 statements 可以同时执行。默认 value 为 16,允许值范围为 1 到 64。如果指定了此范围之外的 value,则不会加载线程池插件,并且服务器会将消息写入错误 log。

仅当启用了线程池插件时,此变量才可用。见第 5.5.3 节,“MySQL 企业线程池”


thread_pool_stall_limit

属性
Command-Line 格式--thread-pool-stall-limit=#
****介绍5.7.9
系统变量thread_pool_stall_limit
范围全球
动态
类型整数
默认值6
最低 Value4
最大 Value600

此变量影响执行 statements。 value 是语句在被定义为停顿之前必须在开始执行之后完成的 time 的数量,此时线程池允许线程 group 开始执行另一个语句。 value 以 10 毫秒为单位测量,因此值为 6(默认值)意味着 60 毫秒。值的范围是 4 到 600(40ms 到 6s)。短等待值允许线程更快地启动。短值也可以更好地避免死锁情况。 Long 等待值对包含 long-running statements 的工作负载很有用,以避免在当前执行时启动太多新的 statements。

仅当启用了线程池插件时,此变量才可用。见第 5.5.3 节,“MySQL 企业线程池”


thread_stack

属性
Command-Line 格式--thread-stack=#
系统变量thread_stack
范围全球
动态没有
类型整数
默认 Value(64-bit 平台)262144
默认 Value(32-bit 平台)196608
最低 Value131072
最大 Value(64-bit 平台)18446744073709551615
最大 Value(32-bit 平台)4294967295
块大小1024

每个线程的堆栈大小。默认值足以进行正常操作。如果线程堆栈大小太小,则会限制服务器可以处理的 SQL statements 的复杂性,存储过程的递归深度以及其他 memory-consuming 操作。


time_format

此变量未使用。它已被弃用,并在 MySQL 8.0 中删除。


timezone

属性
系统变量time_zone
范围Global,Session
动态
类型

当前 time zone。此变量用于为连接的每个 client 初始化 time zone。默认情况下,它的初始 value 是'SYSTEM'(表示“使用的 value”)。可以在服务器启动时使用--default-time-zone选项显式指定 value。见第 5.1.12 节,“MySQL 服务器时间区域支持”。

注意
如果设置为SYSTEM,则每个需要 time zone 计算的 MySQL function 调用都会调用 system library 来确定当前系统 time zone。此调用可能受 global mutex 保护,从而导致争用。


timedmutexes

属性
Command-Line 格式--timed-mutexes[={OFF\|ON}]
****已过时是(在 5.7.5 中删除)
系统变量timed_mutexes
范围全球
动态
类型Boolean
默认值OFF

这个已弃用的变量没有用,在 MySQL 5.7.5 中删除了。


时间戳

属性
系统变量timestamp
范围session
动态
类型数字

为此 client 设置 time。如果使用二进制 log 恢复行,则用于获取原始时间戳。 timestamp_value应该是一个 Unix 纪元时间戳(一个像UNIXTIMESTAMP()返回的 value,而不是'YYYY-MM-DD hh:mm:ss'格式的 value)或DEFAULT

将时间戳设置为常量 value 会使其保留该 value,直到再次更改为止。将时间戳设置为DEFAULT会使其 value 成为访问 time 时的当前 date 和 time。

在 MySQL 5.7 中,时间戳是DOUBLE而不是BIGINT,因为它的 value 包含微秒部分。

SET timestamp会影响NOW()返回的 value,但不会影响SYSDATE()。这意味着二进制 log 中的时间戳设置对SYSDATE()的调用没有影响。可以使用--sysdate-is-now选项启动服务器以使SYSDATE()成为NOW()的别名,在这种情况下SET timestamp会影响这两个函数。


tlsversion

属性
Command-Line 格式--tls-version=protocol_list
****介绍5.7.10
系统变量tls_version
范围全球
动态没有
类型
默认 Value(> = 5.7.28)TLSv1,TLSv1.1,TLSv1.2
默认 Value(<= 5.7.27)TLSv1,TLSv1.1,TLSv1.2(OpenSSL)
TLSv1,TLSv1.1(yaSSL)

服务器允许加密连接的协议。 value 是包含一个或多个协议版本的 comma-separated 列表。可以为此变量命名的协议取决于用于编译 MySQL 的 SSL library。应该选择允许的协议,以便不在列表中留下“漏洞”。有关详细信息,请参阅第 6.3.2 节,“加密连接 TLS 协议和密码”。


tmptable_size

属性
Command-Line 格式--tmp-table-size=#
系统变量tmp_table_size
范围Global,Session
动态
类型整数
默认值16777216
最低 Value1024
最大 Value18446744073709551615

内部 in-memory 临时表的最大大小。此变量不适用于 user-created MEMORY表。

实际限制是根据tmptable_size和max_heaptable_size的较小值确定的。如果 in-memory temporary table 超出限制,MySQL 会自动将其转换为 on-disk temporary table。 internal_tmp_disk_storage_engine选项定义用于 on-disk 临时表的存储引擎。

如果你做了很多高级GROUP BY查询并且你有很多 memory,那么增加tmptable_size的 value(如果需要的话max_heaptable_size)。

您可以将创建的内部 on-disk 临时表的数量与通过比较Created_tmp_disktables和Created_tmptables变量的值创建的内部临时表的总数进行比较。

另见第 8.4.4 节,“MySQL 中的内部临时 Table 使用”。


TMPDIR

属性
Command-Line 格式--tmpdir=dir_name
系统变量tmpdir
范围全球
动态没有
类型目录 name

用于 creating 临时 files 的目录的路径。如果您的默认/tmp目录驻留在太小而无法容纳临时表的分区上,则可能很有用。此变量可以设置为以 round-robin 方式使用的多个_path 的列表。 Paths 应该用 Unix 上的冒号字符(:)和 Windows 上的分号字符(;)分隔。

TMPDIR可以是 non-permanent 位置,例如 memory-based 文件系统上的目录或服务器 host 重新启动时清除的目录。如果 MySQL 服务器充当复制从站,并且您使用 non-permanent 位置TMPDIR,请考虑使用slave_load_tmpdir变量为从站设置不同的临时目录。对于复制从属服务器,用于复制负载数据 statements 的临时 files 存储在此目录中,因此使用永久位置它们可以在计算机重新启动后继续运行,尽管复制现在可以在重新启动后继续,如果已删除临时 files。

有关临时 files 的存储位置的详细信息,请参阅第 B.4.3.5 节,“MySQL Stores Temporary Files”。


transaction_alloc_block_size

属性
Command-Line 格式--transaction-alloc-block-size=#
系统变量transaction_alloc_block_size
范围Global,Session
动态
类型整数
默认值8192
最低 Value1024
最大 Value(64-bit 平台,<= 5.7.5)18446744073709551615
最大 Value(32-bit 平台,<= 5.7.5)4294967295
最大 Value(> = 5.7.6)131072
块大小1024

增加需要 memory 的 per-transaction memory 池的字节数。请参阅transaction_prealloc_size的说明。


transaction_isolation

属性
Command-Line 格式--transaction-isolation=name
系统变量(> = 5.7.20)transaction_isolation
范围(> = 5.7.20)Global,Session
动态(> = 5.7.20)
类型列举
默认值REPEATABLE-READ
有效值READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE

transaction 隔离 level。默认值为REPEATABLE-READ。

transaction 隔离 level 有三个范围:global,session 和 next transaction。这 three-scope implementation 导致一些非标准的 isolation-level 赋值语义,如后面所述。

要在启动时设置 global transaction isolation level,请使用--transaction-isolation server 选项。

在运行时,可以使用组语句直接设置 isolation level,以将 value 分配给transaction_isolation系统变量,或间接使用SET TRANSACTION语句。如果将transaction_isolation直接设置为包含空格的隔离 level name,则 name 应该用引号括起来,并用空格替换空格。对于 example,使用此组语句设置 global value:

SET GLOBAL transaction_isolation = 'READ-COMMITTED';

设置 global transaction_isolation value sets 为所有后续会话设置隔离 level。现有会话不受影响。

要设置 session 或 next-level transaction_isolation value,请使用组语句。对于大多数 session 系统变量,这些 statements 是设置 value 的等效方法:

SET @@SESSION.var_name = value;
SET SESSION var_name = value;
SET var_name = value;
SET @@var_name = value;

如前所述,除了 global 和 session 范围之外,transaction 隔离 level 还具有 next-transaction 范围。要启用 next-transaction 范围,用于分配 session 系统变量值的组语法对于transaction_isolation具有非标准语义:

  • 要设置 session isolation level,请使用以下任何语法:
SET @@SESSION.transaction_isolation = value;
SET SESSION transaction_isolation = value;
SET transaction_isolation = value;

对于每种语法,这些语义适用:

  • 为 session 中执行的所有后续 transactions 设置隔离 level。

  • 在 transactions 中允许,但不影响当前正在进行的 transaction。

  • 如果在 transactions 之间执行,则覆盖_set isolation level 的任何前面的语句。

  • 对应于SET SESSION TRANSACTION ISOLATION LEVEL(使用SESSION关键字)。

  • 要设置 next-transaction isolation level,请使用以下语法:

SET @@transaction_isolation = value;

对于该语法,这些语义适用:

  • 仅为 session 中执行的下一个 transaction 设置隔离 level。

  • 后续的 transactions 将恢复为 session isolation level。

  • transactions 中不允许。

  • 对应SET TRANSACTION ISOLATION LEVEL(不带SESSION关键字)。

有关SET TRANSACTION及其与transaction_isolation系统变量的关系的更多信息,请参阅第 13.3.6 节,“SET TRANSACTION 语法”。

注意
在 MySQL 5.7.20 中添加为tx_isolation的别名,现在已弃用,并在 MySQL 8.0 中删除。 应该调整应用程序以优先使用transaction_isolation tx_isolation。


transaction_prealloc_size

属性
Command-Line 格式--transaction-prealloc-size=#
系统变量transaction_prealloc_size
范围Global,Session
动态
类型整数
默认值4096
最低 Value1024
最大 Value(64-bit 平台,<= 5.7.5)18446744073709551615
最大 Value(32-bit 平台,<= 5.7.5)4294967295
最大 Value(> = 5.7.6)131072
块大小1024

有一个 per-transaction memory 池,各种 transaction-related 分配需要 memory。池的初始大小(以字节为单位)为transaction_prealloc_size。对于池中无法满足的每个分配,因为它没有足够的 memory 可用,池将增加transaction_alloc_block_size个字节。当 transaction ends 时,池被截断为transaction_prealloc_size字节。

通过使transaction_prealloc_size足够大以包含单个 transaction 中的所有 statements,可以避免许多malloc() calls。


transaction_read_only

属性
Command-Line 格式--transaction-read-only[={OFF\|ON}]
系统变量(> = 5.7.20)transaction_read_only
范围(> = 5.7.20)Global,Session
动态(> = 5.7.20)
类型Boolean
默认值OFF

transaction 访问模式。 value 可以是OFF(read/write;默认值)或ON(只读)。

transaction 访问模式有三个范围:global,session 和 next transaction。这 three-scope implementation 导致一些非标准的 access-mode 赋值语义,如后面所述。

要在启动时设置 global transaction 访问模式,请使用--transaction-read-only服务器选项。

在运行时,可以使用组语句直接设置访问模式,以将 value 分配给transaction_read_only系统变量,或间接使用SET TRANSACTION语句。对于 example,使用此组语句设置 global value:

SET GLOBAL transaction_read_only = ON;

设置 global transaction_read_only value sets 设置所有后续会话的访问模式。现有会话不受影响。

要设置 session 或 next-level transaction_read_only value,请使用组语句。对于大多数 session 系统变量,这些 statements 是设置 value 的等效方法:

SET @@SESSION.var_name = value;
SET SESSION var_name = value;
SET var_name = value;
SET @@var_name = value;

如前所述,除了 global 和 session 范围之外,transaction 访问模式还具有 next-transaction 范围。要启用 next-transaction 范围,用于分配 session 系统变量值的组语法对于transaction_read_only具有非标准语义,

  • 要设置 session 访问模式,请使用以下任何语法:
SET @@SESSION.transaction_read_only = value;
SET SESSION transaction_read_only = value;
SET transaction_read_only = value;

对于每种语法,这些语义适用:

  • 设置在 session 中执行的所有后续 transactions 的访问模式。

  • 在 transactions 中允许,但不影响当前正在进行的 transaction。

  • 如果在 transactions 之间执行,则覆盖设置 next-transaction 访问模式的任何前面的语句。

  • 对应于SET SESSION TRANSACTION{READ WRITE |只读}(使用SESSION关键字)。

  • 要设置 next-transaction 访问模式,请使用以下语法:

SET @@transaction_read_only = value;

对于该语法,这些语义适用:

  • 仅为 session 中执行的下一个 transaction 设置访问模式。

  • 后续 transactions 将恢复为 session 访问模式。

  • transactions 中不允许。

  • 对应SET TRANSACTION{READ WRITE |只读}(不带SESSION关键字)。

有关SET TRANSACTION及其与transaction_read_only系统变量的关系的更多信息,请参阅第 13.3.6 节,“SET TRANSACTION 语法”。

注意
在 MySQL 5.7.20 中添加为tx_read_only的别名,现在已弃用,并在 MySQL 8.0 中删除。 应该调整应用程序以优先使用transaction_read_only tx_read_only。


tx_isolation

属性
****已过时5.7.20
系统变量tx_isolation
范围Global,Session
动态
类型列举
默认值REPEATABLE-READ
有效值READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE

默认的 transaction 隔离 level。默认为REPEATABLE-READ。

注意
transaction_isolation在 MySQL 5.7.20 中添加为tx_isolation的别名,现在已弃用,并在 MySQL 8.0 中删除。 应该调整应用程序以优先使用transaction_isolation tx_isolation。有关详细信息,请参阅transaction_isolation的说明。


tx_read_only

属性
****已过时5.7.20
系统变量tx_read_only
范围Global,Session
动态
类型Boolean
默认值OFF

默认的 transaction 访问模式。 value 可以是OFF(read/write,默认值)或ON(只读)。

注意
transaction_read_only在 MySQL 5.7.20 中添加为tx_read_only的别名,现在已弃用,并在 MySQL 8.0 中删除。 应该调整应用程序以优先使用transaction_read_only tx_read_only。有关详细信息,请参阅transaction_read_only的说明。


unique_checks

属性
系统变量unique_checks
范围Global,Session
动态
类型Boolean
默认值ON

如果设置为 1(默认值),则会执行InnoDB表中二级索引的唯一性检查。如果设置为 0,则允许存储引擎假定输入数据中不存在重复键。如果您确定您的数据不包含唯一性违规,则可以将其设置为 0 以加速大 table 导入到InnoDB

将此变量设置为 0 不需要存储引擎忽略重复键。仍然允许引擎检查它们并在检测到它们时发出 duplicate-key 错误。


updatable_views_with_limit

属性
Command-Line 格式--updatable-views-with-limit[={OFF\|ON}]
系统变量updatable_views_with_limit
范围Global,Session
动态
类型Boolean
默认值1

如果 update 语句包含LIMIT子句,则此变量控制是否可以在视图不包含基础 table 中定义的主 key 的所有列时对视图进行更新。 (此类更新通常由 GUI 生成 tools.)更新是UPDATE或删除语句。主 key 这里表示PRIMARY KEYUNIQUE索引,其中没有列可以包含NULL

变量可以有两个值:

  • 1YES:仅发出警告(不是错误消息)。这是默认值。

  • 0NO:禁止更新。

  • validate_password_xxx

validate_password插件实现了一组名称为validate_password_xxx的系统变量。这些变量会影响该插件的密码测试;见第 6.4.3.2 节,“密码验证插件选项和变量”。


validate_user_plugins

属性
Command-Line 格式--validate-user-plugins[={OFF\|ON}]
系统变量validate_user_plugins
范围全球
动态没有
类型Boolean
默认值ON

如果启用此变量(默认值),则服务器会检查每个用户帐户,并在发现会导致帐户无法使用的条件时生成警告:

  • 该帐户需要未加载的身份验证插件。

  • 该帐户需要sha256_password身份验证插件,但服务器启动时未启用此插件所需的 SSL 或 RSA。

启用validate_user_plugins会降低服务器初始化速度和FLUSH PRIVILEGES。如果您不需要额外检查,则可以在启动时禁用此变量以避免 performance 减量。


服务器的 version number。 value 还可能包含指示服务器 build 或 configuration 信息的后缀。 -log表示启用了一个或多个常规 log,慢查询 log 或二进制 log。 -debug表示服务器是在启用调试支持的情况下构建的。


versioncomment

属性
系统变量version_comment
范围全球
动态没有
类型

CMake configuration 程序有一个COMPILATIONCOMMENT选项,允许在 building MySQL 时指定 comment。该变量包含该 comment 的 value。见第 2.9.7 节,“MySQL Source-Configuration 选项”。


version_compile_machine

属性
系统变量version_compile_machine
范围全球
动态没有
类型

服务器二进制文件的类型。


version_compileos

属性
系统变量version_compile_os
范围全球
动态没有
类型

构建 MySQL 的操作系统类型。


waittimeout

属性
Command-Line 格式--wait-timeout=#
系统变量wait_timeout
范围Global,Session
动态
类型整数
默认值28800
最低 Value1
最大 Value(其他)31536000
最大 Value(Windows)2147483

服务器在关闭非交互式连接之前等待活动的秒数。

在线程启动时,session waittimeout value 从 global waittimeout value 或 global interactivetimeout value 初始化,具体取决于 client 的类型(由CLIENT_INTERACTIVE连接选项定义为mysql_real_connect())。另见interactivetimeout。


warning_count

生成消息的最后一个语句产生的错误,警告和注释的数量。此变量是只读的。见第 13.7.5.40 节,“显示警告语法”。