7.1.8 服务器系统变量
MySQL 服务器维护了许多系统变量,这些变量影响服务器的操作。最多的系统变量可以在服务器启动时使用命令行选项或选项文件来设置。最多的系统变量可以在运行时使用 SET 语句来更改操作,允许您在不停止和重新启动服务器的情况下修改服务器的操作。一些变量是只读的,值是由系统环境、MySQL 在系统安装时的方式或可能是编译 MySQL 时的选项确定的。最多的系统变量都有默认值,但有例外,包括只读变量。您也可以在表达式中使用系统变量值。
设置全局系统变量的运行时值通常需要 SYSTEM_VARIABLES_ADMIN 权限(或弃用的 SUPER 权限)。设置会话系统变量的运行时值通常不需要特殊权限,可以由任何用户执行,但有例外。更多信息,请见 第7.1.9.1节,“系统变量权限”
有多种方式可以查看系统变量的名称和值:
-
查看服务器使用的默认值和任何选项文件的值,可以使用以下命令:
mysqld --verbose --help -
查看服务器使用的默认值,忽略任何选项文件,可以使用以下命令:
mysqld --no-defaults --verbose --help -
查看当前正在运行的服务器的值,可以使用
SHOW VARIABLES语句或性能_schema 系统变量表。见 第29.12.14节,“性能_schema 系统变量表”
本节提供了每个系统变量的描述。关于系统变量的总结表,请见 第7.1.5节,“服务器系统变量参考”。关于系统变量的操作,请见 第7.1.9节,“使用系统变量”
关于系统变量的更多信息,请见以下部分:
-
第7.1.9节,“使用系统变量”,讨论了设置和显示系统变量值的语法。
-
第7.1.9.2节,“动态系统变量”,列出了可以在运行时设置的变量。
-
关于系统变量的调整信息,请见 第7.1.1节,“配置服务器”。
-
第17.14节,“InnoDB 启动选项和系统变量”,列出了
InnoDB系统变量。 -
第25.4.3.9.2节,“NDB集群系统变量”, 列出了NDB集群特定的系统变量。
-
关于复制相关的服务器系统变量,请见第19.1.6节,“复制和二进制日志选项和变量”。
以下某些变量描述中提到““启用””或““禁用””一个变量。这些变量可以使用SET语句通过将其设置为ON或1来启用,或者将其设置为OFF或0来禁用。布尔变量可以在启动时设置为ON、TRUE、OFF和FALSE(不区分大小写),以及1和0。请见第6.2.2.4节,“程序选项修饰符”。
一些系统变量控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常来自缓冲区的总内存中,并且需要的空间可能取决于平台。这意味着,当您将一个控制缓冲区大小的系统变量的值分配时,实际可用的空间可能不同于分配的值。在某些情况下,实际可用的空间可能小于分配的值。服务器也可能会将值上调。例如,如果您将一个变量的值分配为0,该变量的最小值为1024,服务器将将值设置为1024。
缓冲区大小、长度和堆栈大小的值以字节为单位,除非另有指定。
一些系统变量描述中包括一个块大小,在这种情况下,值不是该块大小的整数倍将被服务器下舍到该块大小的下一个整数倍,即FLOOR( value)* 。block_size
示例:假设某个变量的块大小为4096,您将该变量的值设置为100000(假设该变量的最大值大于这个数字)。由于100000 / 4096 = 24.4140625,服务器将自动将值降低到98304(24 * 4096)前存储。
在某些情况下,变量的最大值是MySQL解析器允许的最大值,但不是该块大小的exact倍数。在这种情况下,实际最大值是该块大小的下一个整数倍。
示例:某个系统变量的最大值显示为4294967295(232-1),块大小为1024。4294967295 / 1024 = 4194303.9990234375,因此如果您将该变量设置为其所示的最大值,实际存储的值将是4194303 * 1024 = 4294966272。
一些系统变量需要文件名值。除非另有指定,文件位置默认为数据目录,如果值是相对路径名。要指定位置,使用绝对路径名。假设数据目录是 /var/mysql/data。如果文件值变量以相对路径名给出,它将位于 /var/mysql/data。如果值是绝对路径名,它的位置将是路径名所指定的。
-
Command-Line Format --activate-all-roles-on-login[={OFF|ON}]System Variable activate_all_roles_on_loginScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF是否在用户登录服务器时自动激活所有授予的角色:
-
如果
activate_all_roles_on_login启用,服务器将在登录时激活每个帐户的所有角色。这优先于使用SET DEFAULT ROLE指定的默认角色。 -
如果
activate_all_roles_on_logindisabled,服务器将在登录时激活使用SET DEFAULT ROLE指定的默认角色,如果存在任何。
授予的角色包括用户明确授予的角色和在
mandatory_roles系统变量值中指定的角色。activate_all_roles_on_login只在登录时和存储程序或视图执行时的开始生效。要在会话中更改活动角色,使用SET ROLE。要更改存储程序的活动角色,程序体应该执行SET ROLE。 -
-
Command-Line Format --admin-address=addrSystem Variable admin_addressScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 管理员网络接口上监听TCP/IP连接的IP地址(见第7.1.12.1节,“连接接口”)。没有默认的
admin_address值。如果未在启动时指定该变量,服务器将不维护任何管理员接口。服务器还具有bind_address系统变量,以配置非管理员客户端TCP/IP连接。见第7.1.12.1节,“连接接口”。如果指定
admin_address,其值必须满足以下要求:-
该值必须是单个IPv4地址、IPv6地址或主机名。
-
该值不能指定通配地址格式(
*、0.0.0.0或::)。 -
该值可能包括网络命名空间指定符。
IP地址可以以IPv4或IPv6格式指定。如果值是主机名,服务器将解析名称到IP地址并将其绑定到该地址。如果主机名解析到多个IP地址,服务器将使用第一个IPv4地址,如果没有,则使用第一个IPv6地址。
服务器对不同类型的地址进行以下处理:
-
如果地址是IPv4映射地址,服务器接受TCP/IP连接以该地址,使用IPv4或IPv6格式。例如,如果服务器绑定到
::ffff:127.0.0.1,客户端可以使用--host=127.0.0.1或--host=::ffff:127.0.0.1。 -
如果地址是常规IPv4或IPv6地址(例如
127.0.0.1或::1),服务器只接受TCP/IP连接以该IPv4或IPv6地址。
这些规则适用于指定网络命名空间的地址:
-
可以为IP地址或主机名指定网络命名空间。
-
不能为通配IP地址指定网络命名空间。
-
对于给定的地址,网络命名空间是可选的。如果给定,必须以
/后缀形式指定。ns -
没有
/后缀的地址使用主机系统的全局命名空间。全局命名空间因此是默认的。ns -
具有
/后缀的地址使用命名空间名为nsns。 -
主机系统必须支持网络命名空间,每个命名空间名称都必须先前设置。命名一个不存在的命名空间将产生错误。
关于网络命名空间的更多信息,请见第7.1.14节,“网络命名空间支持”。
如果绑定到地址失败,服务器将产生错误并且不启动。
《
admin_address」系统变量类似于《bind_address」系统变量,它将服务器绑定到一个地址用于普通客户端连接,但有以下区别:-
bind_address允许多个地址。《admin_address」只允许单个地址。 -
bind_address允许通配符地址。《admin_address」不允许。
-
-
Command-Line Format --admin-port=port_numSystem Variable admin_portScope Global Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 33062Minimum Value 0Maximum Value 65535用于连接管理网络接口(见第7.1.12.1节,“Connection Interfaces”)。将该变量设置为0将使用默认值。
设置《
admin_port」无效,如果《admin_address」未指定,因为在这种情况下服务器不维护任何管理网络接口。 -
Command-Line Format --admin-ssl-ca=file_nameSystem Variable admin_ssl_caScope Global Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL《
admin_ssl_ca」系统变量类似于《ssl_ca」,只是它适用于管理连接接口,而不是主连接接口。关于配置加密支持的管理连接接口的信息,请见Administrative Interface Support for Encrypted Connections。 -
Command-Line Format --admin-ssl-capath=dir_nameSystem Variable admin_ssl_capathScope 全局 Dynamic 是 SET_VARHint Applies否 Type 目录名称 Default Value NULL系统变量
admin_ssl_capath类似于ssl_capath,但它适用于管理连接接口,而不是主要连接接口。有关配置管理接口加密支持的信息,请参见管理接口支持加密连接。 -
Command-Line Format --admin-ssl-cert=file_nameSystem Variable admin_ssl_certScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL系统变量
admin_ssl_cert类似于ssl_cert,但它适用于管理连接接口,而不是主要连接接口。有关配置管理接口加密支持的信息,请参见管理接口支持加密连接。 -
Command-Line Format --admin-ssl-cipher=nameSystem Variable admin_ssl_cipherScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL系统变量
admin_ssl_cipher类似于ssl_cipher,但它适用于管理连接接口,而不是主要连接接口。有关配置管理接口加密支持的信息,请参见管理接口支持加密连接。指定的列表可能包括以下值之一:
-
ECDHE-ECDSA-AES128-GCM-SHA256 -
ECDHE-ECDSA-AES256-GCM-SHA384 -
ECDHE-RSA-AES128-GCM-SHA256 -
ECDHE-RSA-AES256-GCM-SHA384 -
ECDHE-ECDSA-CHACHA20-POLY1305 -
ECDHE-RSA-CHACHA20-POLY1305 -
ECDHE-ECDSA-AES256-CCM -
ECDHE-ECDSA-AES128-CCM -
DHE-RSA-AES128-GCM-SHA256 -
DHE-RSA-AES256-GCM-SHA384 -
DHE-RSA-AES256-CCM -
DHE-RSA-AES128-CCM -
DHE-RSA-CHACHA20-POLY1305
尝试在设置该变量时将不在这里显示的值添加到加密列表中将引发错误(
ER_BLOCKED_CIPHER)。 -
-
Command-Line Format --admin-ssl-crl=file_nameSystem Variable admin_ssl_crlScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL系统变量
admin_ssl_crl类似于ssl_crl,但它适用于管理连接接口,而不是主要连接接口。有关配置加密支持的管理接口的信息,请参阅管理接口支持加密连接。 -
Command-Line Format --admin-ssl-crlpath=dir_nameSystem Variable admin_ssl_crlpathScope 全局 Dynamic 是 SET_VARHint Applies否 Type 目录名 Default Value NULL系统变量
admin_ssl_crlpath类似于ssl_crlpath,但它适用于管理连接接口,而不是主要连接接口。有关配置加密支持的管理接口的信息,请参阅管理接口支持加密连接。 -
Command-Line Format --admin-ssl-key=file_nameSystem Variable admin_ssl_keyScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL《
admin_ssl_key」系统变量类似于《ssl_key」,但它适用于管理连接接口,而不是主连接接口。关于配置管理接口的加密支持,请参见《管理接口支持加密连接》。 -
Command-Line Format --admin-tls-ciphersuites=ciphersuite_listSystem Variable admin_tls_ciphersuitesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL《
admin_tls_ciphersuites」系统变量类似于《tls_ciphersuites》,但它适用于管理连接接口,而不是主连接接口。关于配置管理接口的加密支持,请参见《管理接口支持加密连接》。值是一个由零或多个以冒号分隔的加密套件名称列表,从以下列表中选择:
-
TLS_AES_128_GCM_SHA256 -
TLS_AES_256_GCM_SHA384 -
TLS_CHACHA20_POLY1305_SHA256 -
TLS_AES_128_CCM_SHA256
尝试在设置该变量时包括在加密套件列表中的任何值都不是这里显示的将引发错误(《
ER_BLOCKED_CIPHER》)。 -
-
Command-Line Format --admin-tls-version=protocol_listSystem Variable admin_tls_versionScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value TLSv1.2,TLSv1.3《
admin_tls_version》系统变量类似于《tls_version》,只是它适用于管理连接接口,而不是主连接接口。关于配置加密支持的管理接口,请参见管理接口支持加密连接。Important-
MySQL 8.4 不支持 TLSv1 和 TLSv1.1 连接协议。请参见TLSv1 和 TLSv1.1 协议支持的移除以获取更多信息。
-
MySQL 8.4 支持 TLSv1.3 协议,假设 MySQL 服务器使用 OpenSSL 1.1.1 或更高版本编译。服务器在启动时检查 OpenSSL 的版本,如果版本低于 1.1.1,TLSv1.3 将从默认值中删除。在这种情况下,默认值为
TLSv1.2。
-
-
Command-Line Format --authentication-policy=valueSystem Variable authentication_policyScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value *,,这个变量用于管理多因素身份验证(MFA)功能。它适用于身份验证因子相关的《
CREATE USER》和《ALTER USER》语句用于管理 MySQL 账户定义,其中“factor”对应于账户关联的身份验证方法或插件:-
authentication_policy控制账户可以拥有的身份验证因子数量。也就是说,它控制了哪些因子是必需的或允许的。 -
authentication_policy还控制每个因子的插件(或方法)是否允许。 -
authentication_policy,在结合default_authentication_plugin中,确定身份验证规范中缺省身份验证插件的默认值。
由于
authentication_policy只适用于创建或更改账户时,修改其值对现有用户账户无效。Note虽然
authentication_policy系统变量对CREATE USER和ALTER USER语句中的身份验证相关子句施加了限制,但是拥有AUTHENTICATION_POLICY_ADMIN特权的用户不受这些限制的约束(在其他情况下将出现警告)。authentication_policy的值是一个由逗号分隔的列表,列表中的每个元素可以是身份验证插件的名称、星号(*)、空或缺失。(例外:第一个元素不能是空或缺失。)在所有情况下,每个元素都可以被空白字符包围,并且整个列表都被单引号括起来。列表中的第
N个元素的值类型对因素N是否必须在帐户定义中出现,以及可以使用哪些身份验证插件有重要影响:-
如果列表中的第
N个元素是身份验证插件的名称,那么因素N的身份验证方法需要使用该插件。此外,该插件将成为因素
N身份验证方法的默认插件,除非在插件名称中明确指定插件。详见默认身份验证插件。只能将身份验证插件指定为第一个元素,并且不能重复。例如,以下设置是不可行的:
-
authentication_policy = 'caching_sha2_password, sha256_password' -
authentication_policy = 'caching_sha2_password, authentication_webauthn, sha256_password'
-
-
如果列表中的第
N个元素是星号(*),那么因素N的身份验证方法需要使用任何有效的身份验证插件,该插件将在后续描述中介绍。 -
如果列表中的第
N个元素是空,那么因素N的身份验证方法是可选的。如果给定,它可以使用任何有效的身份验证插件,该插件将在后续描述中介绍。 -
如果列表中缺少元素
N(即列表中少于N-1个逗号),则对因素N的身份验证方法被禁止。例如,对于值'*',只能使用单因素身份验证(1FA)对新创建的帐户或使用CREATE USER或ALTER USER修改现有帐户的身份验证方法。
当
authentication_policy元素指定身份验证插件时,允许的插件名称受以下条件限制:-
第1个元素必须指定一个不需要注册步骤的插件。例如,
authentication_webauthn不能被指定。 -
第2和3个元素必须指定一个不使用内部凭证存储的插件。
关于使用内部凭证存储的身份验证插件的信息,请参阅第8.2.15节,“密码管理”。
当
authentication_policy元素N为*时,允许的插件名称在帐户定义中受以下条件限制:-
对于第1个因素,帐户定义可以使用任何插件。默认身份验证插件规则适用于未指定插件的身份验证规范。请参阅默认身份验证插件。
-
对于第2和3个因素,帐户定义不能指定使用内部凭证存储的插件。例如,对于'
*,*'、'*,*,*'、'*,'、'*,,'authentication_policy设置,使用内部凭证存储的插件只能用于第一个因素且不能重复。
当
authentication_policy元素N为空时,允许的插件名称在帐户定义中受以下条件限制:-
对于第1个因素,这不适用,因为第1个元素不能为空。
-
对于第2和3个因素,帐户定义不能指定使用内部凭证存储的插件。
空元素必须出现在列表的末尾,紧随非空元素。换言之,第一个元素不能为空,或者没有元素为空或最后两个元素为空。例如,对于值
',,',这将表明所有因素都是可选的。这不可能,因为帐户至少需要一个身份验证因素。默认的
authentication_policy值是'*,,'。这意味着账户定义中需要使用因子1,并且可以使用任何身份验证插件,而因子2和3是可选的,每个可以使用任何不使用内部凭证存储的身份验证插件。以下表格显示了一些
authentication_policy值和每个值所建立的策略,以便创建或更改账户。表7.4:示例身份验证策略
authentication_policy Value Effective Policy '*'仅允许使用一个因子创建或更改账户。 '*,*'仅允许使用两个因子创建或更改账户。 '*,*,*'仅允许使用三个因子创建或更改账户。 '*,'允许使用一个或两个因子创建或更改账户。 '*,,'允许使用一个、两个或三个因子创建或更改账户。 '*,*,'允许使用两个或三个因子创建或更改账户。 '*,auth_plugin'允许使用两个因子,其中第一个因子可以是任何身份验证方法,而第二个因子必须是指定的插件。 'auth_plugin,'允许使用两个或三个因子,其中第一个因子必须是指定的插件。 'auth_plugin,'允许使用一个或两个因子,其中第一个因子必须是指定的插件。 'auth_plugin,auth_plugin,auth_plugin'允许使用三个因子,其中每个因子必须是指定的插件。 -
-
authentication_windows_log_levelCommand-Line Format --authentication-windows-log-level=#System Variable authentication_windows_log_levelScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 2Minimum Value 0Maximum Value 4这个变量仅在启用了Windows身份验证插件和调试代码时可用。请参阅第8.4.1.6节,“Windows Pluggable Authentication”。
这个变量设置Windows身份验证插件的日志级别。以下表格显示了允许的值。
Value Description 0 无日志 1 只记录错误信息 2 记录级别1的信息和警告信息 3 记录级别2的信息和信息备注 4 记录级别3的信息和调试信息 -
authentication_windows_use_principal_nameCommand-Line Format --authentication-windows-use-principal-name[={OFF|ON}]System Variable authentication_windows_use_principal_nameScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ON这个变量仅在启用了Windows身份验证插件时可用。请参阅第8.4.1.6节,“Windows Pluggable Authentication”。
使用
InitSecurityContext()函数进行身份验证的客户端应该提供连接到的服务的字符串(targetName)。MySQL使用服务器运行的帐户的主体名称(UPN)。UPN的形式为,不需要在任何地方注册以使用。这UPN由服务器在身份验证握手的开始发送。user_id@computer_name这个变量控制服务器是否在初始挑战中发送UPN。默认情况下,变量启用。出于安全原因,可以禁用变量以避免将服务器的帐户名称发送给客户端作为明文。如果变量禁用,服务器总是发送一个
0x00字节的初始挑战,客户端不指定targetName,因此使用NTLM身份验证。如果服务器无法获取其UPN(主要发生在不支持Kerberos身份验证的环境中),UPN不被发送,NTLM身份验证被使用。
-
Command-Line Format --autocommit[={OFF|ON}]System Variable autocommitScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value ON自动提交模式。如果设置为1,所有对表的更改将立即生效。如果设置为0,您必须使用
COMMIT接受事务或ROLLBACK取消它。如果autocommit为0,您更改为1,MySQL将自动COMMIT任何打开的事务。另一种开始事务的方式是使用START TRANSACTION或BEGIN语句。请参阅第15.3.1节,“START TRANSACTION, COMMIT, and ROLLBACK Statements”.默认情况下,客户端连接将以
autocommit设置为1。要使客户端连接以默认值0开始,启动服务器时使用--autocommit=0选项。使用选项文件设置变量,请包括以下行:[mysqld] autocommit=0 -
Command-Line Format --automatic-sp-privileges[={OFF|ON}]System Variable automatic_sp_privilegesScope Global Dynamic Yes SET_VARHint AppliesNo Type Boolean Default Value ON当该变量的值为1(默认值),服务器将自动授予存储程序的创建者
EXECUTE和ALTER ROUTINE权限,如果用户不能执行或更改或删除该程序。 (需要ALTER ROUTINE权限以删除程序。) 服务器也将自动从创建者中删除这些权限,当程序被删除时。如果automatic_sp_privileges为0,服务器不自动添加或删除这些权限。存储程序的创建者是执行
CREATE语句的帐户。这可能不同于在程序定义中指定的DEFINER帐户名称。如果您使用mysqld启动
--skip-new,则automatic_sp_privileges将设置为OFF. -
Command-Line Format --auto-generate-certs[={OFF|ON}]System Variable auto_generate_certsScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ON该变量控制服务器是否在数据目录中自动生成 SSL 密钥和证书文件,如果它们不存在。
在启动时,服务器将在数据目录中自动生成服务器端和客户端 SSL 证书和密钥文件,如果
auto_generate_certs系统变量启用且服务器端 SSL 文件在数据目录中不存在。这些证书和密钥文件使得使用 SSL 的客户端连接安全;请参见第8.3.1节,“使用加密连接”.关于 SSL 文件自动生成的更多信息,包括文件名和特征,请参见第8.3.3.1节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”
相关的
sha256_password_auto_generate_rsa_keys和caching_sha2_password_auto_generate_rsa_keys系统变量控制了使用 RSA 加密的安全密码交换所需的 RSA 密钥对文件的自动生成。 -
Command-Line Format --back-log=#System Variable back_logScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value -1(表示自动调整;不要将该字面值分配给该变量)Minimum Value 1Maximum Value 65535MySQL 可以处理的未完成连接请求的数量。这在 MySQL 主线程在很短时间内接收到许多连接请求时才会出现。然后,主线程需要一些时间(非常短)来检查连接并启动新线程。
back_log值表示在 MySQL 暂时停止回答新请求期间可以堆叠的请求数量。您需要增加这个值,只有在预期在短时间内接收大量连接时。换言之,这个值是 TCP/IP 连接的 listen队列大小。您的操作系统有自己的队列大小限制。Unix
listen()系统调用手册中有更多详细信息。请查看您的 OS 文档,以获取该变量的最大值。back_log不能超过操作系统限制。默认值是
max_connections的值,这样可以根据允许的最大连接数调整 backlog 的大小。 -
Command-Line Format --basedir=dir_nameSystem Variable basedirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 Default Value MySQL 安装目录的父目录MySQL 安装目录的路径。
-
Command-Line Format --big-tables[={OFF|ON}]System Variable big_tablesScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果启用,服务器将将所有临时表存储在磁盘上,而不是在内存中。这可以防止大部分
The table错误的出现,但也会使查询速度变慢,因为内存表可以满足的查询。tbl_nameis full新连接的默认值为
OFF(使用内存临时表)。通常,不需要启用这个变量。当使用TempTable存储引擎(默认)管理内存临时表时,内存临时表将被自动转换为磁盘临时表,以避免内存不足的情况。对于更多信息,请查看Section 10.4.4, “Internal Temporary Table Use in MySQL”。 -
Command-Line Format --bind-address=addrSystem Variable bind_addressScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value *MySQL 服务器监听 TCP/IP 连接的网络 sockets。每个 socket 都绑定到一个地址,但一个地址可能映射到多个网络接口。要指定服务器如何监听 TCP/IP 连接,设置
bind_address系统变量以服务器启动。服务器还具有admin_address系统变量,用于启用专用接口的管理连接。见第7.1.12.1节,“连接接口”。如果
bind_address指定了值,它将接受一个或多个地址值列表,每个地址可能指定一个非通配符 IP 地址或主机名。每个地址可能包括网络命名空间指定。如果只指定一个地址,它可能使用通配符地址格式(*,0.0.0.0或::),以监听多个网络接口。多个地址使用逗号分隔。每个值都必须指定一个非通配符 IP 地址(IPv4或IPv6)或主机名,通配符地址格式(*,0.0.0.0或::)不允许。IP 地址可以指定为 IPv4 或 IPv6 地址。对于任何值,如果是主机名,服务器将解析名称到 IP 地址并绑定到该地址。如果主机名解析到多个 IP 地址,服务器将使用第一个 IPv4 地址,如果没有,则使用第一个 IPv6 地址。
服务器对不同类型的地址进行处理:
-
如果地址是
*,服务器将接受 TCP/IP 连接于所有服务器主机 IPv4 接口,并且,如果服务器主机支持 IPv6,则在所有 IPv6 接口上。使用这个地址可以允许 IPv4 和 IPv6 连接于所有服务器接口。这是默认值。如果变量指定了多个值列表,这个值不允许。 -
如果地址是
0.0.0.0,服务器将接受 TCP/IP 连接于所有服务器主机 IPv4 接口。如果变量指定了多个值列表,这个值不允许。 -
如果地址是
::,服务器将接受 TCP/IP 连接于所有服务器主机 IPv4 和 IPv6 接口。如果变量指定了多个值列表,这个值不允许。 -
如果地址是 IPv4 映射地址,服务器将接受 TCP/IP 连接于该地址,以 IPv4 或 IPv6 格式。例如,如果服务器绑定到
::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 连接。
这些规则适用于指定网络命名空间的地址:
-
可以为 IP 地址或主机名指定网络命名空间。
-
不能为通配符 IP 地址指定网络命名空间。
-
对于给定的地址,网络命名空间是可选的。给定时,它必须以
/后缀形式指定。ns -
没有
/后缀的地址使用主机系统的全局命名空间。全局命名空间是默认的。ns -
有
/后缀的地址使用名为nsns的命名空间。 -
主机系统必须支持网络命名空间,每个命名空间都必须事先设置。命名一个不存在的命名空间将产生错误。
-
如果变量值指定多个地址,可以包括全局命名空间、命名命名空间或两者混合的地址。
关于网络命名空间的更多信息,请见第7.1.14节,“网络命名空间支持”。
如果绑定到任何地址失败,服务器将产生错误并且不启动。
示例:
-
bind_address=*服务器监听所有 IPv4 或 IPv6 地址,正如
*通配符所指定的那样。 -
bind_address=198.51.100.20服务器只监听
198.51.100.20IPv4 地址。 -
bind_address=198.51.100.20,2001:db8:0:f101::1服务器监听
198.51.100.20IPv4 地址和2001:db8:0:f101::1IPv6 地址。 -
bind_address=198.51.100.20,*这将产生错误,因为通配符地址不能在
bind_address中指定多个值。 -
bind_address=198.51.100.20/red,2001:db8:0:f101::1/blue,192.0.2.50服务器监听
198.51.100.20IPv4 地址在red命名空间中、2001:db8:0:f101::1IPv6 地址在blue命名空间中和192.0.2.50IPv4 地址在全局命名空间中。
当
bind_address指定单个值(通配符或非通配符),服务器监听单个套接字,该套接字可能绑定到多个网络接口。当bind_address指定多个值时,服务器监听每个值一个套接字,每个套接字绑定到单个网络接口。套接字数量与指定值的数量成线性关系。根据操作系统的连接接受效率,长值列表可能会对接受TCP/IP连接产生性能开销。由于监听套接字和网络命名空间文件需要文件描述符,可能需要增加
open_files_limit系统变量。如果您想将服务器绑定到特定地址,请确保
mysql.user系统表包含具有管理员权限的帐户,您可以使用该帐户连接到该地址。否则,您不能关闭服务器。例如,如果您将服务器绑定到*,您可以使用所有现有帐户连接到服务器。但是,如果您将服务器绑定到::1,服务器只接受该地址的连接。在这种情况下,请先确保'root'@'::1'帐户在mysql.user表中,以便您可以继续连接到服务器以关闭它。 -
-
Command-Line Format --block-encryption-mode=#System Variable block_encryption_modeScope Global, Session Dynamic Yes SET_VARHint AppliesNo Type String Default Value aes-128-ecb该变量控制块加密模式,对于块算法如AES的加密。它影响
AES_ENCRYPT()和AES_DECRYPT()的加密。block_encryption_mode以keylen和mode格式指定值,其中keylen是密钥长度(位)和mode是加密模式。值不区分大小写。允许的keylen值是128、192和256。允许的mode值是ECB、CBC、CFB1、CFB8、CFB128和OFB。例如,这个语句将AES加密函数设置为256位密钥和CBC模式:
SET block_encryption_mode = 'aes-256-cbc';在尝试将
block_encryption_mode设置为包含不支持的密钥长度或SSL库不支持的模式时,会出现错误。 -
这是一个160位的SHA1签名,生成于Linux系统上编译服务器时,使用
-DWITH_BUILD_ID=ON(默认启用),并将其转换为十六进制字符串。该只读值作为唯一的build ID,并在服务器启动时写入服务器日志。build_id不支持在平台以外的Linux平台上。 -
Command-Line Format --bulk-insert-buffer-size=#System Variable bulk_insert_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 8388608Minimum Value 0Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295Unit 字节/线程 MyISAM使用特殊的树形缓存来加速bulk inserts对INSERT ... SELECT、INSERT ... VALUES (...), (...), ...和LOAD DATA的添加数据到非空表时。这变量限制了缓存树的大小(以字节为单位)每个线程。将其设置为0禁用该优化。默认值为8MB。设置会话值的系统变量是受限制的操作。会话用户必须具有设置受限制的会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
-
caching_sha2_password_digest_roundsCommand-Line Format --caching-sha2-password-digest-rounds=#System Variable caching_sha2_password_digest_roundsScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 5000Minimum Value 5000Maximum Value 4095000用于caching_sha2_password身份验证插件的哈希轮数密码存储。
增加哈希轮数的数量将与增加的数量相关的性能开销:
-
创建使用
caching_sha2_password插件的账户不会影响客户端会话,但服务器必须执行哈希轮数以完成操作。 -
对于使用该账户的客户端连接,服务器必须执行哈希轮数并将结果保存在缓存中。结果是第一次客户端连接的延长登录时间,但不是后续连接。这一行为在每次服务器重启后发生。
-
-
caching_sha2_password_auto_generate_rsa_keysCommand-Line Format --caching-sha2-password-auto-generate-rsa-keys[={OFF|ON}]System Variable caching_sha2_password_auto_generate_rsa_keysScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ON服务器使用该变量来确定是否自动生成数据目录中的RSA私钥/公钥文件,如果它们不存在。
在启动时,服务器将自动生成RSA私钥/公钥文件在数据目录中,如果满足以下条件:
sha256_password_auto_generate_rsa_keys或caching_sha2_password_auto_generate_rsa_keys系统变量启用;没有指定RSA选项;RSA文件在数据目录中不存在。这些密钥对文件使得使用RSA在未加密连接上进行安全密码交换,使用sha256_password或caching_sha2_password插件认证的账户;见第8.4.1.3节,“SHA-256 Pluggable Authentication”和第8.4.1.2节,“Caching SHA-2 Pluggable Authentication”。关于RSA文件自动生成的更多信息,包括文件名和特征,见第8.3.3.1节,“Creating SSL and RSA Certificates and Keys using MySQL”
与之相关的系统变量是
auto_generate_certs,控制使用SSL进行安全连接时需要的SSL证书和密钥文件的自动生成。 -
caching_sha2_password_private_key_pathCommand-Line Format --caching-sha2-password-private-key-path=file_nameSystem Variable caching_sha2_password_private_key_pathScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 Default Value private_key.pem该变量指定了RSA私钥文件的路径名,为
caching_sha2_password身份验证插件。文件名如果是相对路径,则将其解释为服务器数据目录相对路径。文件必须以PEM格式存储。Important由于该文件存储私钥,因此其访问权限应该被限制,以便只有MySQL服务器可以读取它。
关于
caching_sha2_password的信息,请见第8.4.1.2节,“Caching SHA-2 Pluggable Authentication”。 -
caching_sha2_password_public_key_pathCommand-Line Format --caching-sha2-password-public-key-path=file_nameSystem Variable caching_sha2_password_public_key_pathScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 Default Value public_key.pem该变量指定了RSA公钥文件的路径名,为
caching_sha2_password身份验证插件。如果文件名是相对路径,则将其解释为服务器数据目录相对路径。文件必须以PEM格式存储。关于
caching_sha2_password的信息,包括客户端请求RSA公钥的信息,请见第8.4.1.2节,“Caching SHA-2 Pluggable Authentication”。 -
System Variable character_set_clientScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4客户端传来的语句的字符集。会话变量的值是使用客户端连接到服务器时请求的字符集。 (许多客户端支持
--default-character-set选项,以便显式指定字符集。见第12.4节,“Connection Character Sets and Collations”。)全局变量的值将在客户端请求值不可用或不可用时使用,以便忽略客户端请求。这可能发生在客户端请求未知的字符集时,例如,当日本启用的客户端请求sjis连接到不支持sjis的服务器时。某些字符集不能用作客户端字符集。尝试将其用作
character_set_client值将产生错误。请参阅不可用的客户端字符集。 -
System Variable character_set_connectionScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4用于指定没有字符集引入符的文字 literals 和数字到字符串的转换的字符集。关于引入符,请参阅第12.3.8节,“字符集引入符”。
-
System Variable character_set_databaseScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4Footnote 这个选项是动态的,但应该由服务器设置。您不应该手动设置这个变量。 用于默认数据库的字符集。服务器在默认数据库更改时设置这个变量。如果没有默认数据库,这个变量的值与
character_set_server相同。设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有设置受限制的会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
全局
character_set_database和collation_database系统变量已弃用;在未来的MySQL版本中将其删除。将会话
character_set_database和collation_database系统变量的值是弃用的,并且将产生警告。预计在未来的MySQL版本中,这些会话变量将变为只读,并且将在访问这些变量时产生错误。 -
Command-Line Format --character-set-filesystem=nameSystem Variable 文件系统字符集Scope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value binary文件系统字符集。这個变量用于解释字符串字面量,例如在
LOAD DATA和SELECT ... INTO OUTFILE语句,以及LOAD_FILE()函数。这些文件名将从character_set_client转换到character_set_filesystem,在文件打开尝试之前。默认值是binary,这意味着不进行转换。在允许多字节文件名的系统上,可能需要不同的值。例如,如果系统使用UTF-8表示文件名,请将character_set_filesystem设置为'utf8mb4'。设置会话变量的操作是受限的。会话用户必须具有足够的权限来设置受限的会话变量。请参阅第7.1.9.1节,“系统变量权限”。
-
System Variable character_set_resultsScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4用于将查询结果返回给客户端的字符集。这包括结果数据,如列值、结果元数据,如列名,以及错误消息。
-
Command-Line Format --character-set-server=nameSystem Variable character_set_serverScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4服务器的默认字符集。请参阅第12.15节,“字符集配置”。如果您设置了这个变量,请同时设置
collation_server以指定字符集的排序规则。 -
System Variable character_set_systemScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value utf8mb3服务器用于存储标识符的字符集。值总是
utf8mb3。 -
Command-Line Format --character-sets-dir=dir_nameSystem Variable character_sets_dirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 字符集安装的目录。请参阅第12.15节,“Character Set Configuration”。
-
Command-Line Format --check-proxy-users[={OFF|ON}]System Variable check_proxy_usersScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF一些身份验证插件实现了代理用户映射(例如,PAM和Windows身份验证插件)。其他身份验证插件不支持代理用户默认情况下。这些插件中的一些可以请求MySQL服务器自己映射代理用户根据授予的代理权限:
mysql_native_password,sha256_password。如果启用了
check_proxy_users系统变量,服务器将对身份验证插件请求的代理用户映射进行映射。然而,也可能需要启用插件特定的系统变量以充分利用服务器代理用户映射支持:-
对于已弃用的
mysql_native_password插件,启用mysql_native_password_proxy_users。 -
对于
sha256_password插件,启用sha256_password_proxy_users。
有关用户代理的信息,请参阅第8.2.19节,“Proxy Users”。
-
-
System Variable collation_connectionScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 连接字符集的排序规则。
collation_connection对于字面字符串的比较非常重要。对于与列值进行比较的字符串,collation_connection不会影响结果,因为列具有自己的排序规则,该排序规则的优先级高于连接的排序规则(参见第12.8.4节,“排序规则在表达式中的强制性”)。将用户定义的排序规则名称用于该变量将产生警告。
-
System Variable collation_databaseScope 全局, 会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4_0900_ai_ciFootnote 该选项是动态的,但应该由服务器设置。您不应该手动设置该变量。 默认数据库的排序规则。服务器在默认数据库更改时设置该变量。如果没有默认数据库,该变量的值与
collation_server相同。全局
character_set_database和collation_database系统变量已弃用;在未来的MySQL版本中将其删除。将会话
character_set_database和collation_database系统变量的值分配已弃用,并且分配将产生警告。预计在未来的MySQL版本中,该变量将变为只读(并且分配将产生错误),以确定默认数据库的字符集和排序规则。使用用户定义的排序规则名称为
collation_database将产生警告。 -
Command-Line Format --collation-server=nameSystem Variable collation_serverScope 全局, 会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value utf8mb4_0900_ai_ci服务器的默认排序规则。请参见第12.15节,“字符集配置”。
将该变量设置为用户定义的排序规则名称将产生警告。
-
Command-Line Format --completion-type=#System Variable completion_typeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value NO_CHAINValid Values NO_CHAINCHAINRELEASE012事务完成类型。这個变量可以取以下表格中的值。该变量可以使用名称值或相应的整数值来分配。
Value Description NO_CHAIN(或 0)COMMIT和ROLLBACK不受影响。这是默认值。CHAIN(或 1)COMMIT和ROLLBACK等同于COMMIT AND CHAIN和ROLLBACK AND CHAIN,分别。 (新的事务立即开始,具有与刚刚终止的事务相同的隔离级别。)RELEASE(或 2)COMMIT和ROLLBACK等同于COMMIT RELEASE和ROLLBACK RELEASE,分别。 (服务器在终止事务后断开连接。)completion_type对于以START TRANSACTION或BEGIN开始的事务,并以COMMIT或ROLLBACK结束的影响。它不适用于隐式提交,例如在第15.3.3节,“隐式提交语句”中列出的语句。它也不适用于XA COMMIT、XA ROLLBACK或autocommit=1的情况。 -
Command-Line Format --component-scheduler.enabled[=value]System Variable component_scheduler.enabledScope Global Dynamic Yes SET_VARHint AppliesNo Type Boolean Default Value ON当设置为component_scheduler.enabled时,背景线程将开始服务队列。设置为component_scheduler.enabled时,组件将完全可用。
可以动态设置该值以获取以下效果:
-
ON开始背景线程,开始服务队列。 -
OFF信号背景线程的终止,等待其结束。背景线程在访问队列前检查终止标志,以检查是否有任务可执行。
-
-
Command-Line Format --concurrent-insert[=value]System Variable concurrent_insertScope Global Dynamic Yes SET_VARHint AppliesNo Type Enumeration Default Value AUTOValid Values NEVERAUTOALWAYS012如果使用
AUTO(默认),MySQL 允许INSERT和SELECT语句同时执行,对于没有空洞的MyISAM表。这个变量可以取以下值的表。变量可以使用名称值或相应的整数值来分配。
Value Description NEVER(或 0)禁用并发插入 AUTO(或 1)(默认) 允许并发插入,对于没有空洞的 MyISAM表ALWAYS(或 2)允许并发插入,对于所有 MyISAM表,包括有空洞的表。在表中有空洞时,新行将被插入到表的末尾,如果表正在被另一个线程使用,MySQL 将获取正常的写锁并将行插入到空洞中。如果您使用mysqld命令时,使用
--skip-new,concurrent_insert将被设置为NEVER。请参见第10.11.3节,“并发插入”。
-
Command-Line Format --connect-timeout=#System Variable connect_timeoutScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 10Minimum Value 2Maximum Value 31536000Unit 秒 mysqld 服务器等待连接包的秒数,响应
Bad handshake。默认值为10秒。增加
connect_timeout值可能有助于解决客户端频繁遇到的错误,如Lost connection to MySQL server at '。XXX', system error:errno -
Command-Line Format --connection-memory-chunk-size=#System Variable connection_memory_chunk_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8192Minimum Value 0Maximum Value 536870912Unit 字节 设置更新全局内存使用计数器
Global_connection_memory的 chunking 大小。状态变量仅在所有用户连接的总内存使用量变化超过该值时更新。禁用更新设置connection_memory_chunk_size为0。内存计算不包括系统用户,如MySQL root 用户使用的内存,也不包括
InnoDB缓冲池使用的内存。您必须拥有
SYSTEM_VARIABLES_ADMIN或SUPER特权来设置该变量。 -
Command-Line Format --connection-memory-limit=#System Variable connection_memory_limitScope 全局, 会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 18446744073709551615Minimum Value 2097152Maximum Value 18446744073709551615Unit 字节 设置单个用户连接可以使用的最大内存量。如果任何用户连接使用的内存量超过该值,所有来自该连接的查询将被拒绝,包括当前正在运行的查询。
该变量设置的限制不适用于系统用户,也不包括
InnoDB缓冲池使用的内存。您必须拥有
SYSTEM_VARIABLES_ADMIN或SUPER特权来设置该变量。 -
是否在服务器意外退出时写入核心文件。这变量由
--core-file选项设置。 -
Command-Line Format --create-admin-listener-thread[={OFF|ON}]System Variable create_admin_listener_threadScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value OFF是否使用专门的监听线程来处理客户端连接在管理网络接口(见第7.1.12.1节,“连接接口”)。默认情况下,
OFF,即主接口的管理线程也处理管理接口的连接。根据平台类型和工作负载,您可能发现某个设置对性能更好。
create_admin_listener_thread变量的设置无效,如果admin_address未指定,因为在这种情况下,服务器不维护任何管理网络接口。 -
Command-Line Format --cte-max-recursion-depth=#System Variable cte_max_recursion_depthScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1000Minimum Value 0Maximum Value 4294967295常规表达式(CTE)的最大递归深度。服务器在CTE递归更多级别时终止执行CTE的执行。更多信息,请见限制常规表达式递归。
-
Command-Line Format --datadir=dir_nameSystem Variable datadirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 MySQL服务器数据目录的路径。相对路径将相对于当前目录。如果您期望服务器在自动启动(即在无法预知当前目录的上下文中),那么最好将
datadir值指定为绝对路径。 -
Command-Line Format --debug[=debug_options]System Variable debugScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value (Unix) d:t:i:o,/tmp/mysqld.traceDefault Value (Windows) d:t:i:O,\mysqld.trace该变量表示当前的调试设置。它仅适用于带有调试支持的服务器。初始值来自于服务器启动时的
--debug选项的实例值。全局和会话值可以在运行时设置。设置会话变量的值是一个受限的操作。会话用户必须具有设置受限会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
将值设置为以
+或-开头的值将导致该值被添加到或从当前值中减去。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 | +---------+更多信息,请参阅第7.9.4节,“DBUG包”。
-
System Variable debug_syncScope 会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 该变量是Debug Sync facilty的用户界面。使用Debug Sync需要MySQL配置为带有
-DWITH_DEBUG=ONCMake选项(请参阅第2.8.7节,“MySQL源配置选项”);否则,该系统变量不可用。全局变量的值是只读的,表示该facility是否启用。默认情况下,Debug Sync是禁用的,
debug_sync的值为OFF。如果服务器启动时使用--debug-sync-timeout=,其中NN是一个大于0的超时值,Debug Sync将启用,debug_sync的值将是ON - current signal,后跟信号名称。同时,N将成为个体同步点的默认超时值。会话值可以被任何用户读取,并且具有与全局变量相同的值。会话值可以用来控制同步点。
设置会话变量的值是一个受限的操作。会话用户必须具有设置受限会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
关于Debug Sync facility和同步点的使用,请参阅MySQL Internals: Test Synchronization。
-
默认身份验证插件。这必须是一个使用内部凭证存储的插件,因此允许的值是:
-
mysql_native_password(已弃用):使用 MySQL 本机密码;见第8.4.1.1节,“Native Pluggable Authentication”。 -
sha256_password:使用 SHA-256 密码;见第8.4.1.3节,“SHA-256 Pluggable Authentication”。 -
caching_sha2_password:使用 SHA-256 密码;见第8.4.1.2节,“Caching SHA-2 Pluggable Authentication”。
关于使用内部凭证存储的身份验证插件的信息,请见第8.2.15节,“Password Management”。
default_authentication_plugin与authentication_policy系统变量一起使用,但优先级低于后者。详见The Default Authentication Plugin。default_authentication_plugin已弃用,可能在未来 MySQL 版本中删除。 -
-
System Variable default_collation_for_utf8mb4Scope Global, Session Dynamic Yes SET_VARHint AppliesNo Type Enumeration Valid Values utf8mb4_0900_ai_ciutf8mb4_general_ciImportantThe
default_collation_for_utf8mb4system variable is for internal use by MySQL Replication only.此变量由服务器设置为
utf8mb4字符集的默认排序规则。该变量的值从源复制到副本,以便副本可以正确处理来自具有不同utf8mb4默认排序规则的源的数据。此变量主要用于支持从 MySQL 5.7 或更早版本的复制源服务器到更高版本的 MySQL 副本服务器的复制,或者支持具有 MySQL 5.7 主节点和一个或多个 MySQL 8.0 或更高版本的辅助节点的组复制。MySQL 5.7 中utf8mb4的默认排序规则是utf8mb4_general_ci,但在更高版本系列中是utf8mb4_0900_ai_ci。该变量在 MySQL 8.0 之前的版本中不存在,因此如果副本没有收到该变量的值,则它假定源来自早期版本,并将该值设置为之前的默认排序规则utf8mb4_general_ci。默认使用
utf8mb4编码在以下语句中:-
CREATE TABLE和ALTER TABLE,其中包含CHARACTER SET utf8mb4子句,但没有COLLATION子句,用于表或列的字符集。 -
CREATE DATABASE和ALTER DATABASE,其中包含CHARACTER SET utf8mb4子句,但没有COLLATION子句。 -
任何包含形式为
_utf8mb4'的字符串字面量,且没有some text'COLLATE子句的语句。
-
Command-Line Format --default-password-lifetime=#System Variable default_password_lifetimeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 65535Unit 天 该变量定义了全局自动密码过期策略。默认的
default_password_lifetime值为0,这禁用自动密码过期。如果default_password_lifetime的值是一个正整数N,它表示允许的密码过期期限;密码必须在N天内更改。全局密码过期策略可以在创建或更改用户时使用密码过期选项来覆盖,例如使用
CREATE USER和ALTER USER语句。请参见第8.2.15节,“密码管理”。 -
Command-Line Format --default-storage-engine=nameSystem Variable default_storage_engineScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value InnoDB默认存储引擎用于表。见第18章,<i>备用存储引擎</i>。该变量设置永久表的存储引擎。要设置<code class="literal">TEMPORARY</code>表的存储引擎,请设置
default_tmp_storage_engine系统变量。要查看可用的存储引擎和启用的存储引擎,请使用
SHOW ENGINES语句或查询ENGINES表。如果在服务器启动时禁用默认存储引擎,您必须将永久表和<code class="literal">TEMPORARY</code>表的存储引擎设置为不同的引擎,否则服务器将无法启动。
-
Command-Line Format --default-table-encryption[={OFF|ON}]System Variable default_table_encryptionScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF定义了在创建表空间和通用表空间时应用的默认加密设置,不指定<code class="literal">ENCRYPTION</code>子句时。
变量<a class="link" href="server-system-variables.html#sysvar_default_table_encryption">
default_table_encryptionmysql</code>系统表空间。设置<a class="link" href="server-system-variables.html#sysvar_default_table_encryption">
default_table_encryptionSYSTEM_VARIABLES_ADMINTABLE_ENCRYPTION_ADMINSUPERdefault_table_encryptionSET PERSISTSET PERSIST_ONLY第7.1.9.3节,“持久系统变量”更多信息,请见定义架构和通用表空间的加密默认值.
-
Command-Line Format --default-tmp-storage-engine=nameSystem Variable default_tmp_storage_engineScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 枚举 Default Value InnoDB临时表(使用
CREATE TEMPORARY TABLE创建)的默认存储引擎。要设置永久表的存储引擎,请设置default_storage_engine系统变量。还请查看该变量的讨论,以了解可能的值。如果在服务器启动时禁用默认存储引擎,您必须将永久表和临时表的默认引擎设置为不同的引擎,否则服务器将无法启动。
-
Command-Line Format --default-week-format=#System Variable default_week_formatScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 7WEEK()函数的默认模式值。请见第14.7节,“日期和时间函数”.
-
Command-Line Format --delay-key-write[={OFF|ON|ALL}]System Variable delay_key_writeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value ONValid Values OFFONALL该变量指定延迟键写入的方式。它仅适用于MyISAM表。延迟键写入使键缓冲区不在写入之间刷新。请见第18.2.1节,“MyISAM 启动选项”.
该变量可以设置为以下值,以影响
DELAY_KEY_WRITE表选项的处理,该选项可以在CREATE TABLE语句中使用。Option Description OFFDELAY_KEY_WRITE将被忽略。ONMySQL 将尊重在 CREATE TABLE语句中指定的DELAY_KEY_WRITE选项。这是默认值。ALL所有新的打开的表将被视为使用 DELAY_KEY_WRITE选项启用。Note如果您将该变量设置为
ALL,则不要在另一个程序(例如另一个 MySQL 服务器或myisamchk)中使用MyISAM表时,这可能会导致索引损坏。如果
DELAY_KEY_WRITE为某个表启用,则在索引更新时不flush该表的键缓冲区,但是在表关闭时才flush。这可以大大加速写入键操作,但如果您使用了该特性,您应该在启动服务器时将myisam_recover_options系统变量设置为(例如:myisam_recover_options='BACKUP,FORCE')。见第7.1.8节,“服务器系统变量”和第18.2.1节,“MyISAM 启动选项”。如果您使用mysqld启动时使用
--skip-new,则delay_key_write将被设置为OFF。Warning如果您启用外部锁定使用
--external-locking,则没有保护索引损坏的保护机制对使用延迟写入的表。 -
Command-Line Format --delayed-insert-limit=#Deprecated 是 System Variable delayed_insert_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 100Minimum Value 1Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295该系统变量已被弃用(因为
DELAYED插入不再支持),您应该预期在将来版本中删除该变量。 -
Command-Line Format --延迟插入超时=#Deprecated 是 System Variable 延迟插入超时Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 300Minimum Value 1Maximum Value 31536000Unit 秒 这个系统变量已经弃用(因为不支持
延迟插入),您应该期望在将来的一次发布中删除它。 -
Command-Line Format --延迟队列大小=#Deprecated 是 System Variable 延迟队列大小Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1000Minimum Value 1Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295这个系统变量已经弃用(因为不支持
延迟插入),您应该期望在将来的一次发布中删除它。 -
Command-Line Format --禁用存储引擎=引擎[,引擎]...System Variable 禁用存储引擎Scope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value 空字符串这个变量指示哪些存储引擎不能用来创建表或表空间。例如,要防止创建新的
MyISAM或FEDERATED表,从服务器选项文件中添加以下行:[mysqld] disabled_storage_engines="MyISAM,FEDERATED"默认情况下,
disabled_storage_engines为空(无引擎禁用),但可以设置为一个或多个引擎的逗号分隔列表(不区分大小写)。任何在值中指定的引擎不能用来创建表或表空间与CREATE TABLE或CREATE TABLESPACE语句,不能用ALTER TABLE ... ENGINE或ALTER TABLESPACE ... ENGINE语句更改现有表或表空间的存储引擎。尝试这样做将导致ER_DISABLED_STORAGE_ENGINE错误。disabled_storage_engines不限制其他DDL语句对现有表的操作,如CREATE INDEX、TRUNCATE TABLE、ANALYZE TABLE、DROP TABLE或DROP TABLESPACE。这允许在禁用引擎的情况下,使用其他方法,如ALTER TABLE ... ENGINE将现有表或表空间迁移到允许的引擎。permitted_engine可以将
default_storage_engine或default_tmp_storage_engine系统变量设置为禁用的存储引擎。这可能会导致应用程序行为不稳定或失败,但这在开发环境中可能是一个有用的技术,以便识别使用禁用引擎的应用程序,以便修改它们。disabled_storage_engines在服务器启动时使用以下选项时无效:--initialize、--initialize-insecure、--skip-grant-tables。 -
disconnect_on_expired_passwordCommand-Line Format --disconnect-on-expired-password[={OFF|ON}]System Variable disconnect_on_expired_passwordScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ON该变量控制服务器如何处理密码过期的客户端:
-
如果客户端表示可以处理过期密码,
disconnect_on_expired_password的值无关紧要。服务器允许客户端连接,但将其置于沙盒模式。 -
如果客户端不表示可以处理过期密码,服务器根据
disconnect_on_expired_password的值处理客户端:-
如果
disconnect_on_expired_password启用,服务器断开客户端连接。 -
如果
disconnect_on_expired_password禁用,服务器允许客户端连接,但将其置于沙盒模式。
-
有关客户端和服务器设置之间的过期密码处理交互的更多信息,请参阅第8.2.16节,“服务器处理过期密码”。
-
-
Command-Line Format --div-precision-increment=#System Variable div_precision_incrementScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 4Minimum Value 0Maximum Value 30该变量指示将结果的分数位数增加的数字。默认值为4。最小值和最大值分别为0和30。以下示例演示了增加默认值的效果。
mysql> SELECT 1/7; +--------+ | 1/7 | +--------+ | 0.1429 | +--------+ mysql> SET div_precision_increment = 12; mysql> SELECT 1/7; +----------------+ | 1/7 | +----------------+ | 0.142857142857 | +----------------+ -
dragnet.log_error_filter_rulesCommand-Line Format --dragnet.log-error-filter-rules=valueSystem Variable dragnet.log_error_filter_rulesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value IF prio>=INFORMATION THEN drop. IF EXISTS source_line THEN unset source_line.控制
log_filter_dragnet错误日志过滤器组件的过滤规则。如果log_filter_dragnet未安装,dragnet.log_error_filter_rules不可用。如果log_filter_dragnet安装但未启用,dragnet.log_error_filter_rules的更改无效。默认值的效果类似于
log_sink_internal过滤器在log_error_verbosity=2设置下的过滤效果。dragnet.Status状态变量可以用于确定最近一次对dragnet.log_error_filter_rules的赋值结果。 -
enterprise_encryption.maximum_rsa_key_sizeCommand-Line Format --enterprise-encryption.maximum-rsa-key-size=#System Variable enterprise_encryption.maximum_rsa_key_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 4096Minimum Value 2048Maximum Value 16384该变量限制了MySQL Enterprise Encryption生成的RSA密钥的最大大小。该变量仅在MySQL Enterprise Encryption组件
component_enterprise_encryption安装时可用。最低设置为2048位,这是当前最佳实践中接受的最小RSA密钥长度。默认设置为4096位。最高设置为16384位。生成更长的密钥可能会消耗大量CPU资源,因此您可以使用该设置来限制密钥长度以满足您的安全需求,同时平衡资源使用。请参阅第8.6.2节,“配置MySQL Enterprise Encryption”获取更多信息。
-
enterprise_encryption.rsa_support_legacy_paddingCommand-Line Format --enterprise-encryption.rsa_support_legacy_padding[={OFF|ON}]System Variable enterprise_encryption.rsa_support_legacy_paddingScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF该变量控制MySQL Enterprise Encryption组件是否可以解密或验证使用旧的
openssl_udf共享库函数生产的加密数据和签名。该变量仅在MySQL Enterprise Encryption组件安装时可用。为了支持解密和验证旧的
openssl_udf共享库函数生产的内容,必须将系统变量padding设置为ON。当ON设置时,如果组件函数无法解密或验证内容,假设它使用了RSAES-OAEP或RSASSA-PSS方案(用于组件),它们将再次尝试假设它使用了RSAES-PKCS1-v1_5或RSASSA-PKCS1-v1_5方案(用于openssl_udf共享库函数)。当OFF设置时,如果组件函数无法使用正常方案解密或验证内容,它们将返回null输出。请参阅第8.6.2节,“配置MySQL Enterprise Encryption”获取更多信息。 -
Command-Line Format --end-markers-in-json[={OFF|ON}]System Variable end_markers_in_jsonScope 全局,会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF是否将优化器JSON输出添加结尾标记。请参阅MySQL Internals: The end_markers_in_json System Variable。
-
Command-Line Format --eq-range-index-dive-limit=#System Variable eq_range_index_dive_limitScope 全局,会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 200Minimum Value 0Maximum Value 4294967295该变量指示在等式比较条件中等式范围的数量,优化器将从使用索引探测到使用索引统计信息以估算符合行数。它适用于评估表达式,它们具有以下等价形式,其中优化器使用非唯一索引来查找
col_name值:col_name IN(val1, ..., valN) col_name = val1 OR ... OR col_name = valN在这两种情况中,表达式包含
N等值范围。优化器可以使用索引分支或索引统计来进行行估算。如果eq_range_index_dive_limit大于0,优化器将使用现有索引统计,而不是索引分支,如果存在N等值范围或更多。因此,要允许使用索引分支来处理最多N等值范围,请将eq_range_index_dive_limit设置为N+1。要禁用索引统计的使用,并总是使用索引分支,无论N,请将eq_range_index_dive_limit设置为0。更多信息,请见多值比较的等值范围优化。
要更新表的索引统计,以获取最佳估算,请使用
ANALYZE TABLE。 -
上一个语句生成的错误数。这是一个只读变量。请见SHOW ERRORS语句。
-
Command-Line Format --event-scheduler[=value]System Variable event_schedulerScope 全局 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value ONValid Values ONOFFDISABLED这个变量可以启用或禁用、启动或停止事件调度器。可能的状态值是
ON、OFF和DISABLED。将事件调度器设置为OFF不同于禁用事件调度器,需要将状态设置为DISABLED。这个变量和事件调度器的操作详见事件调度器配置。 -
Command-Line Format --explain-format=formatSystem Variable explain_formatScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value 传统Valid Values 传统 (默认)JSON树形该变量确定了在 absence of a
FORMAT选项时,EXPLAIN的默认输出格式。可能的值及其效果如下:-
传统: 使用 MySQL 的传统表格输出,如如果FORMAT=传统作为EXPLAIN语句的一部分指定一样。这是变量的默认值。默认也支持作为传统的同义词,并且具有相同的效果。Note默认不能作为EXPLAIN语句的FORMAT选项的一部分。 -
JSON: 使用 JSON 输出格式,如如果FORMAT=JSON作为EXPLAIN语句的一部分指定。 -
树形: 使用树形输出格式,如如果FORMAT=树形作为EXPLAIN语句的一部分指定。
该变量的设置也影响
EXPLAIN ANALYZE。对于这个目的,默认和传统将被解释为树形。如果explain_format的值为JSON,并且没有FORMAT选项的EXPLAIN ANALYZE语句,则语句将引发错误 (ER_NOT_SUPPORTED_YET).使用格式指定符与
EXPLAIN或EXPLAIN ANALYZE将覆盖explain_format的设置。该变量的
explain_format系统变量对EXPLAIN输出无效,当该语句用于显示表列信息时。设置
explain_format会话值不需要特殊权限;在全局级别设置它需要SYSTEM_VARIABLES_ADMIN(或已弃用的SUPER权限)。见Section 7.1.9.1,“系统变量权限”。更多信息和示例,请见获取执行计划信息。
-
-
Command-Line Format --explain-json-format-version=#System Variable explain_json_format_versionScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1Minimum Value 1Maximum Value 2确定了
EXPLAIN FORMAT=JSON语句的 JSON 输出格式版本。将该变量设置为1将使服务器使用 Version 1,这是 MySQL 8.4 中的默认值;将explain_json_format_version设置为2将使服务器使用 Version 2,这种 JSON 输出格式基于访问路径,旨在为将来的 MySQL 优化器提供更好的兼容性。例如,请参见获取执行计划信息。
-
explicit_defaults_for_timestampCommand-Line Format --explicit-defaults-for-timestamp[={OFF|ON}]Deprecated 是 System Variable explicit_defaults_for_timestampScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value ON该系统变量确定了服务器是否启用某些非标准行为,以便在
TIMESTAMP列中启用默认值和NULL-值处理。默认情况下,explicit_defaults_for_timestamp已启用,禁用非标准行为。禁用explicit_defaults_for_timestamp将导致警告。如果
explicit_defaults_for_timestamp被禁用,服务器将启用非标准行为,并将TIMESTAMP列处理为以下方式:-
TIMESTAMP列不明确声明为NULL的将自动声明为NOT NULL。将这样的列分配一个值为NULL的将设置该列的当前时间。Exception:尝试将NULL插入生成的列声明为TIMESTAMP NOT NULL的将被拒绝错误。 -
表中的第一个
TIMESTAMP列,如果没有明确地使用NULL属性或明确的DEFAULT或ON UPDATE属性,则自动声明为DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。 -
TIMESTAMP列,紧随其后的,如果没有明确地使用NULL属性或明确的DEFAULT属性,则自动声明为DEFAULT '0000-00-00 00:00:00'(零时间戳)。对于插入的行,如果该列没有指定明确的值,该列将被分配'0000-00-00 00:00:00',并且不会出现警告。根据是否启用严格SQL模式或
NO_ZERO_DATESQL模式,'0000-00-00 00:00:00'的默认值可能无效。请注意,TRADITIONALSQL模式包括严格模式和NO_ZERO_DATE。请参阅第7.1.11节,“服务器SQL模式”。
描述的非标准行为已弃用;预计将在未来的MySQL版本中删除。
如果启用了
explicit_defaults_for_timestamp,服务器将禁用非标准行为,并将TIMESTAMP列处理如下:-
不能将
TIMESTAMP列设置为NULL以设置当前时间戳。要设置当前时间戳,请将列设置为CURRENT_TIMESTAMP或同义词,如NOW()。 -
TIMESTAMP列,如果没有明确地使用NOT NULL属性,则自动声明为NULL属性,并允许NULL值。将该列设置为NULL将其设置为NULL,而不是当前时间戳。 -
TIMESTAMP列,声明了NOT NULL属性,不允许NULL值。对于指定NULL值的插入操作,如果启用严格SQL模式,则会出现错误;否则,在禁用严格SQL模式的情况下,将插入'0000-00-00 00:00:00'。在任何情况下,设置该列的值为NULL都不会将其设置为当前时间戳。 -
TIMESTAMP列,显式声明了NOT NULL属性,但没有显式DEFAULT属性,视为没有默认值。对于插入的行,如果没有为该列指定明确的值,结果取决于SQL模式。如果启用严格SQL模式,会出现错误;否则,在禁用严格SQL模式的情况下,该列将被隐式设置为'0000-00-00 00:00:00',并出现警告。这与MySQL处理其他时间类型,例如DATETIME类似。 -
没有
TIMESTAMP列自动声明为DEFAULT CURRENT_TIMESTAMP或ON UPDATE CURRENT_TIMESTAMP。这些属性必须被显式指定。
如果
explicit_defaults_for_timestamp在服务器启动时被禁用,这个警告将出现在错误日志中:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).正如警告所示,要禁用弃用的非标准行为,启用
explicit_defaults_for_timestamp系统变量在服务器启动时。Noteexplicit_defaults_for_timestamp本身是弃用的,因为它的唯一目的是允许控制弃用的TIMESTAMP行为,这些行为将在未来的MySQL版本中被删除。等到这些行为被删除时,预计explicit_defaults_for_timestamp也将被删除。更多信息,请见
Section 13.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”。 -
-
System Variable external_userScope 会话 Dynamic 否 SET_VARHint Applies否 Type 字符串 用于身份验证过程中的外部用户名称,由用于身份验证的插件设置。使用native(内置)MySQL身份验证或插件未设置值时,这个变量将是
NULL。请参阅第8.2.19节,“代理用户”。 -
Command-Line Format --flush[={OFF|ON}]System Variable flushScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果
ON,服务器将在每个SQL语句后flush(同步)所有更改到磁盘。如果通常情况下,MySQL将在每个SQL语句后将所有更改写入磁盘,并让操作系统处理同步到磁盘。请参阅第B.3.3.3节,“如果MySQL不断崩溃”。这个变量在使用mysqld时设置为ON,使用--flush选项。Note如果启用了
flush,flush_time的值无关紧要,flush_time的变化对flush行为无影响。 -
Command-Line Format --flush-time=#System Variable flush_timeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 31536000Unit 秒 如果设置为非零值,所有表每
flush_time秒关闭,以释放资源并同步未flush的数据到磁盘。这个选项最好在资源有限的系统上使用。Note如果启用了
flush,flush_time的值无关紧要,flush_time的变化对flush行为无影响。 -
System Variable foreign_key_checksScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value ON如果设置为1(默认),外键约束将被检查。如果设置为0,外键约束将被忽略,除了几个例外。在重新创建一个被删除的表时,如果表定义不符合引用该表的外键约束,将返回错误。类似地,
ALTER TABLE操作将返回错误,如果外键定义不正确。更多信息,请见第15.1.20.5节,“FOREIGN KEY Constraints”。设置这个变量对
NDB表的影响与对InnoDB表的影响相同。通常,在正常操作中,您应该将其设置为启用,以确保引用完整性。禁用外键检查可以在重新加载InnoDB表时,使用不同的顺序。见第15.1.20.5节,“FOREIGN KEY Constraints”。设置
foreign_key_checks到0也会影响数据定义语句:DROP SCHEMA将删除一个包含外键的架构,即使该架构中的表引用了外部表,DROP TABLE将删除包含外键的表,即使该表引用了其他表。Note设置
foreign_key_checks到1不会触发对现有表数据的扫描。因此,在foreign_key_checks = 0期间添加到表中的行不需要验证一致性。删除一个由外键约束所需的索引是不可行的,即使
foreign_key_checks=0。外键约束必须被删除后才能删除索引。 -
Command-Line Format --ft-boolean-syntax=nameSystem Variable ft_boolean_syntaxScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value + -><()~*:""&|支持的布尔全文搜索操作符列表,用于使用
IN BOOLEAN MODE的全文搜索。见第14.9.2节,“Boolean Full-Text Searches”。默认变量值是
'+ -><()~*:""&|'。变量值的更改规则如下:-
操作符函数由字符串中的位置确定。
-
替换值必须是14个字符。
-
每个字符都必须是ASCII非字母数字字符。
-
第一个或第二个字符必须是空格。
-
不允许重复,except在位置11和12的引号操作符。这些两个字符不需要相同,但它们是唯一的两个可以是的。
-
位置10、13和14(默认设置为
:、&和|)保留用于未来的扩展。
-
-
Command-Line Format --ft-max-word-len=#System Variable ft_max_word_lenScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 84Minimum Value 10Maximum Value 84MyISAM
FULLTEXT索引中的单词的最大长度。NoteMyISAM 表的
FULLTEXT索引必须在更改该变量后重建。使用REPAIR TABLE。tbl_nameQUICK -
Command-Line Format --ft-min-word-len=#System Variable ft_min_word_lenScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 4Minimum Value 1Maximum Value 82MyISAM
FULLTEXT索引中的单词的最小长度。NoteMyISAM 表的
FULLTEXT索引必须在更改该变量后重建。使用REPAIR TABLE。tbl_nameQUICK -
Command-Line Format --ft-query-expansion-limit=#System Variable ft_query_expansion_limitScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 20Minimum Value 0Maximum Value 1000使用
WITH QUERY EXPANSION执行的全文搜索的匹配数量限制。 -
Command-Line Format --ft-stopword-file=文件名System Variable ft_stopword_fileScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 从哪个文件中读取全文搜索的停用词列表,以便在
MyISAM表中执行全文搜索。服务器将在数据目录中寻找文件,除非指定了绝对路径以指定不同的目录。文件中的所有单词都将被使用;注释将被忽略。默认情况下,使用内置的停用词列表(在storage/myisam/ft_static.c文件中定义)。将该变量设置为空字符串('')将禁用停用词 filtering。请参阅第14.9.4节,“全文停用词”。NoteFULLTEXT索引在MyISAM表中必须在更改该变量或停用词文件的内容后重建。使用REPAIR TABLE。tbl_nameQUICK -
Command-Line Format --general-log[={OFF|ON}]System Variable general_logScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF是否启用通用查询日志。值可以是0(或
OFF)以禁用日志或1(或ON)以启用日志。日志输出的目标由log_output系统变量控制;如果该值为NONE,则不写入任何日志条目,即使日志启用。 -
Command-Line Format --general-log-file=文件名System Variable general_log_fileScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value host_name.log通用查询日志文件的名称。默认值为
,但可以使用host_name.log--general_log_file选项来更改初始值。 -
generated_random_password_lengthCommand-Line Format --generated-random-password-length=#System Variable generated_random_password_lengthScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 20Minimum Value 5Maximum Value 255CREATE USER、ALTER USER 和 SET PASSWORD 语句中允许的随机密码的最大字符数。更多信息,请见Random Password Generation。
-
global_connection_memory_limitCommand-Line Format --global-connection-memory-limit=#System Variable global_connection_memory_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 18446744073709551615Minimum Value 16777216Maximum Value 18446744073709551615Unit 字节 设置所有用户连接的总内存使用量;即
Global_connection_memory不应超过这个值。任何时候,如果它超过,这些查询(包括当前正在运行的查询)将被来自普通用户的拒绝,以ER_GLOBAL_CONN_LIMIT错误。系统用户,如 MySQL root 用户的内存使用量被包括在总内存使用量中,但不会计入断开连接的限制;这些用户永远不会由于内存使用而断开连接。
InnoDB 缓冲池的内存使用量除外。
您必须拥有
SYSTEM_VARIABLES_ADMIN或SUPER特权来设置这个变量。 -
global_connection_memory_trackingCommand-Line Format --global-connection-memory-tracking={TRUE|FALSE}System Variable global_connection_memory_trackingScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value FALSE确定服务器是否计算
Global_connection_memory。这个变量必须被启用explicitly;否则,内存计算不进行,Global_connection_memory不被设置。您必须拥有
SYSTEM_VARIABLES_ADMIN或SUPER权限,以设置该变量。 -
Command-Line Format --group-concat-max-len=#System Variable group_concat_max_lenScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 1024Minimum Value 4Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295GROUP_CONCAT()函数的最大结果长度(以字节为单位)。默认值为1024。
-
如果服务器可用zlib压缩库,则为
YES,否则为NO。如果不是,则不能使用COMPRESS()和UNCOMPRESS()函数。 -
如果mysqld支持动态加载插件,则为
YES,否则为NO。如果值为NO,则不能使用选项如--plugin-load在服务器启动时加载插件,也不能使用INSTALL PLUGIN语句在运行时加载插件。 -
如果服务器支持空间数据类型,则为
YES,否则为NO。 -
如果语句 profiling 能力存在,则为
YES,否则为NO。如果存在,则系统变量profiling控制是否启用或禁用该能力。请参阅Section 15.7.7.32, “SHOW PROFILES Statement”。该变量已弃用;您应该预期在未来 MySQL 发布中将其删除。
-
have_query_cache已弃用,总是返回NO,您应该预期在未来的 MySQL 版本中将其删除。 -
YES如果存在RTREE索引,NO如果不存在。 (这些用于MyISAM表中的空间索引。) -
System Variable have_statement_timeoutScope Global Dynamic No SET_VARHint AppliesNo Type Boolean 是否可用语句执行超时功能(见语句执行时间优化器提示)。值可以是
NO如果该功能的背景线程无法初始化。 -
YES如果符号链接支持启用,NO如果不启用。这是 Unix 上的要求,以支持DATA DIRECTORY和INDEX DIRECTORY表选项。如果服务器使用--skip-symbolic-links选项启动,值为DISABLED。在 Windows 上,这个变量没有意义。
Note符号链接支持,及其控制它的
--symbolic-links选项,已弃用;预期将在未来的 MySQL 版本中删除。此外,该选项默认禁用。相关的have_symlink系统变量也已弃用,您应该预期将在未来的 MySQL 版本中删除。 -
histogram_generation_max_mem_sizeCommand-Line Format --histogram-generation-max-mem-size=#System Variable histogram_generation_max_mem_sizeScope Global, Session Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 20000000Minimum Value 1000000Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295Unit 字节 内存可用量的最大值,以用于生成histogram统计信息。见第10.9.6节,“优化器统计信息”,和第15.7.3.1节,“ANALYZE TABLE 语句”。
设置会话变量的值是一个受限制的操作。会话用户必须具有足够的权限以设置受限制的会话变量。见第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --host-cache-size=#System Variable host_cache_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value -1(表示自动调整;不要分配该字面值)Minimum Value 0Maximum Value 65536MySQL 服务器维护一个内存中的主机缓存,该缓存包含客户端主机名和IP地址信息,并用于避免Domain Name System(DNS)查找;见第7.1.12.3节,“DNS 查找和主机缓存”。
变量
host_cache_size控制主机缓存的大小,以及性能Schemahost_cache表的大小,该表公开缓存内容。设置host_cache_size具有以下效果:-
将大小设置为0禁用主机缓存。禁用缓存后,服务器每次连接客户端时都会执行DNS查找。
-
更改大小时将隐式执行主机缓存刷新操作,该操作将清除主机缓存,截断
host_cache表,并解锁任何阻塞的主机。
默认值是自动调整到128 plus 1 for a value of
max_connectionsup to 500, plus 1 for every increment of 20 over 500 in themax_connectionsvalue, capped to a limit of 2000. -
-
服务器在启动时将该变量设置为服务器主机名。最大长度为255个字符。
-
该变量是
last_insert_id变量的同义词。它存在于与其他数据库系统的兼容性。您可以使用SELECT @@identity读取其值,并使用SET identity设置它。 -
Command-Line Format --init-connect=nameSystem Variable init_connectScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 每个客户端连接时,服务器将执行该字符串。该字符串由一个或多个SQL语句组成,使用分号字符分隔。
对拥有
CONNECTION_ADMIN特权(或弃用的SUPER特权)的用户,init_connect的内容将不执行。这是为了防止因init_connect的错误值而导致客户端连接失败。例如,值可能包含语法错误的语句,从而导致客户端连接失败。为用户提供了拥有CONNECTION_ADMIN或SUPER特权的能力,可以打开连接并修复init_connect的值。init_connect的执行将被跳过任何已过期密码的客户端用户。这是因为这样一个用户不能执行任意语句,因此init_connect的执行将失败,导致客户端无法连接。跳过init_connect的执行使用户可以连接并更改密码。服务器将丢弃
init_connect中的结果集。 -
information_schema_stats_expiryCommand-Line Format --information-schema-stats-expiry=#System Variable information_schema_stats_expiryScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 86400Minimum Value 0Maximum Value 31536000Unit 秒 一些
INFORMATION_SCHEMA表包含列,该列提供表统计信息:STATISTICS.CARDINALITY TABLES.AUTO_INCREMENT TABLES.AVG_ROW_LENGTH TABLES.CHECKSUM TABLES.CHECK_TIME TABLES.CREATE_TIME TABLES.DATA_FREE TABLES.DATA_LENGTH TABLES.INDEX_LENGTH TABLES.MAX_DATA_LENGTH TABLES.TABLE_ROWS TABLES.UPDATE_TIME这些列表示动态表元数据,即信息随表内容变化而变化。
默认情况下,MySQL 从
mysql.index_stats和mysql.table_stats字典表中检索缓存值,以便更快地检索统计信息。如果缓存统计信息不可用或已过期,MySQL 从存储引擎中检索最新的统计信息,并将其缓存在mysql.index_stats和mysql.table_stats字典表中。随后的查询检索缓存统计信息,直到缓存统计信息过期。服务器重启或首次打开mysql.index_stats和mysql.table_stats表时,不会自动更新缓存统计信息。information_schema_stats_expiry会话变量定义了缓存统计信息过期的时间期限。默认值为 86400 秒(24 小时),但可以延长到最长一年。要在任何时候更新缓存值,可以使用
ANALYZE TABLE语句。要始终从存储引擎中检索最新的统计信息,并绕过缓存值,设置
information_schema_stats_expiry到0。查询统计信息列不会在以下情况下存储或更新统计信息在
mysql.index_stats和mysql.table_stats字典表中:-
当缓存统计信息未过期时。
-
当
information_schema_stats_expiry设置为 0 时。 -
当服务器处于
read_only、super_read_only、transaction_read_only或innodb_read_only模式时。 -
当查询也 fetches Performance Schema 数据时。
统计缓存可能在多语句事务中更新,直到事务提交前,这可能导致缓存中包含未知提交状态的信息。这可能发生在
autocommit=0或START TRANSACTION之后。information_schema_stats_expiry是一个会话变量,每个客户端会话都可以定义自己的过期值。由一个会话缓存的统计信息可供其他会话使用。 -
-
Command-Line Format --init-file=file_nameSystem Variable init_fileScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 如果指定了该变量,则该变量将指定一个包含SQL语句的文件,该文件将在启动过程中被读取和执行。该文件支持以下构造:
-
delimiter ; -
delimiter $$ -
同一行上的多个语句,使用当前分隔符。
-
多行语句。
-
从
#字符到行尾的注释。 -
从
--序列到行尾的注释。 -
C风格的注释,从
/*序列到*/序列,包括跨行的注释。 -
多行字符串字面量,使用单引号(
')或双引号(")字符。
如果服务器使用
--initialize或--initialize-insecure选项,则它将在引导模式下运行,并且某些功能不可用,这些功能包括与帐户管理(如CREATE USER或GRANT)相关的语句、复制和全局事务标识符。请参见第19.1.3节,“Replication with Global Transaction Identifiers”在服务器启动时创建的线程将用于任务,如创建数据字典、运行升级程序和创建系统表。为了确保稳定和可预测的环境,这些线程将使用服务器的内置默认值来执行某些系统变量,如
sql_mode、character_set_server、collation_server、completion_type、explicit_defaults_for_timestamp和default_table_encryption。这些线程也用于在指定的文件中执行语句,该文件由
init_file指定,当启动服务器时,这些语句将使用服务器的默认值执行系统变量。 -
-
innodb_xxxInnoDB系统变量在第17.14节,“InnoDB启动选项和系统变量”中列出。这些变量控制了InnoDB表的存储、内存使用和I/O模式,并且现在InnoDB是默认存储引擎。 -
将被用于以下
INSERT或ALTER TABLE语句中插入的AUTO_INCREMENT值。这主要用于二进制日志。 -
Command-Line Format --interactive-timeout=#System Variable interactive_timeoutScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 28800Minimum Value 1Maximum Value 31536000Unit 秒 服务器等待交互连接上的活动时间,以便关闭该连接。交互客户端是指使用
mysql_real_connect()的客户端。请参阅wait_timeout。 -
internal_tmp_mem_storage_engineCommand-Line Format --internal-tmp-mem-storage-engine=#System Variable internal_tmp_mem_storage_engineScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 枚举 Default Value TempTableValid Values MEMORYTempTable内存临时表存储引擎(见第10.4.4节,“MySQL中内部临时表使用”)。允许的值是
TempTable(默认)和MEMORY。优化器使用optimizer根据
internal_tmp_mem_storage_engine定义的存储引擎来处理内存临时表。为
internal_tmp_mem_storage_engine设置会话设置需要SESSION_VARIABLES_ADMIN或SYSTEM_VARIABLES_ADMIN特权。 -
Command-Line Format --join-buffer-size=#System Variable join_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 262144Minimum Value 128Maximum Value (Windows) 4294967168Maximum Value (Other, 64-bit platforms) 18446744073709551488Maximum Value (Other, 32-bit platforms) 4294967168Unit 字节 Block Size 128用于简单索引扫描、范围索引扫描和不使用索引的连接的缓冲区的最小大小。此变量还控制了哈希连接的内存使用。通常,获取快速连接的最佳方法是添加索引。增加
join_buffer_size的值以获取快速全连接时添加索引不可行。每个全连接都分配一个连接缓冲区。对于使用索引不可行的复杂连接,可能需要多个连接缓冲区。默认值为256KB。
join_buffer_size的最大允许设置为4GB−1。64位平台(除了64位Windows,64位平台的large值将被截断到4GB−1并显示警告)。块大小为128,MySQL Server在存储变量值之前将值rounded down到下一个整数倍的块大小。解析器允许的最大值为平台的最大无符号整数值(4294967295或232−1对于32位系统,18446744073709551615或264−1对于64位系统),但实际最大值是块大小以下。除非使用 Block Nested-Loop 或 Batched Key Access 算法,否则将 buffer 大小设置为每个匹配行所需的大小,并且所有连接操作至少分配最小大小,因此在全局设置时请小心设置该变量。更好的是,在会话中设置较大值,只在执行大连接操作的会话中设置该变量,或者使用
SET_VAR优化提示 (见第10.9.3节,“Optimizer Hints”)。内存分配时间可能会导致性能下降,如果全局大小大于大多数查询所需的大小。当使用 Block Nested-Loop 时,较大的连接缓冲区可以提高性能,直到所有必要的列从所有行中存储在连接缓冲区中。这取决于查询;最优大小可能小于存储所有行的第一张表。
当使用 Batched Key Access 时,
join_buffer_size变量定义了每个请求到存储引擎的键批次大小。缓冲区越大,右侧表的顺序访问将变得更频繁,这可以显著提高性能。有关连接缓冲的更多信息,请见第10.2.1.7节,“Nested-Loop Join Algorithms”。有关 Batched Key Access 的信息,请见第10.2.1.12节,“Block Nested-Loop and Batched Key Access Joins”。有关 Hash 连接的信息,请见第10.2.1.4节,“Hash Join Optimization”。
-
Command-Line Format --keep-files-on-create[={OFF|ON}]System Variable keep_files_on_createScope Global, Session Dynamic Yes SET_VARHint AppliesNo Type Boolean Default Value OFF如果使用
MyISAM表创建了没有指定DATA DIRECTORY选项的表,.MYD文件将在数据库目录中创建。如果MyISAM发现了现有.MYD文件,在这种情况下,它将覆盖该文件。同样,对于没有指定INDEX DIRECTORY选项的表,.MYI文件将在数据库目录中创建。如果想要抑制这种行为,请将keep_files_on_create变量设置为ON(1),在这种情况下,MyISAM不会覆盖现有文件,而是返回错误。默认值为OFF(0)。如果使用
MyISAM表创建了具有DATA DIRECTORY或INDEX DIRECTORY选项的表,并且发现了现有.MYD或.MYI文件,MyISAM总是返回错误。它不会覆盖指定目录中的文件。 -
Command-Line Format --key-buffer-size=#System Variable key_buffer_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8388608Minimum Value 0Maximum Value (64-bit platforms) OS_PER_PROCESS_LIMITMaximum Value (32-bit platforms) 4294967295Unit 字节 MyISAM 表的索引块是缓冲的,所有线程共享。
key_buffer_size是索引块缓冲区的大小。索引缓冲区也称为键缓冲区。最小的可接受设置是0,但是不能动态地将
key_buffer_size设置为0。将key_buffer_size设置为0只能在启动时进行,否则将无法初始化键缓冲区。将key_buffer_size设置从0更改到非零值将初始化键缓冲区。key_buffer_size只能以4096字节的倍数或整数增加或减少。增加或减少设置的非标准值将产生警告,并将设置截断到标准值。MyISAM 存储引擎的最大可接受设置为4GB-1在32位平台上。64位平台上允许更大的值。实际的最大值可能取决于您的可用物理RAM和每个进程的RAM限制,取决于您的操作系统或硬件平台。该变量的值表示请求的内存量。服务器将尽可能地分配内存,但实际分配的内存可能小于该值。
您可以增加该值以获得更好的索引处理性能,对于所有读取和多个写入操作;在使用
MyISAM存储引擎的系统上,25%的机器总内存是一个可接受的值。但是,您应该注意,如果您将值设置太大(例如,超过50%的机器总内存),您的系统可能会开始页面并变得非常慢。这是因为 MySQL 依赖于操作系统来执行文件系统缓存,因此您必须留出一些空间用于文件系统缓存。您还应该考虑使用其他存储引擎的内存需求,例如MyISAM。为了在写入多行时获得更快的速度,使用
LOCK TABLES。请参阅第10.2.5.1节,“优化INSERT语句”。您可以通过执行
SHOW STATUS语句,并检查Key_read_requests、Key_reads、Key_write_requests和Key_writes状态变量的值。 (请参阅第15.7.7节,“SHOW 语句”。)Key_reads/Key_read_requests的比率通常小于0.01。Key_writes/Key_write_requests的比率通常接近1,如果您主要使用更新和删除操作,但可能会小于1,如果您经常执行更新操作影响多行或使用key_buffer_size系统变量。可以使用
key_buffer_size和Key_blocks_unused状态变量,结合缓冲区块大小,计算键缓冲区的使用率。1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)这个值是一个近似值,因为一些缓冲区空间用于内部结构。影响这些结构的因素包括块大小和指针大小。块大小增加时,缓冲区的使用率会减少。较大块结果在读取操作中读取更多键,但读取的键不一定是查询的键。
可以创建多个
key_cache_block_size系统变量。每个缓冲区的大小限制为4GB,不是总的限制。请参阅第10.10.2节,“MyISAM键缓存”。 -
Command-Line Format --key-cache-age-threshold=#System Variable key_cache_age_thresholdScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 300Minimum Value 100Maximum Value (64-bit platforms) 18446744073709551516Maximum Value (32-bit platforms) 4294967196Block Size 100该值控制缓冲区从热子列表到温子列表的降级。较低的值会导致降级更快。最小值为100。默认值为300。见第10.10.2节,“MyISAM键缓存”。
-
Command-Line Format --key-cache-block-size=#System Variable key_cache_block_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1024Minimum Value 512Maximum Value 16384Unit 字节 Block Size 512键缓存块的大小,以字节为单位。默认值为1024。见第10.10.2节,“MyISAM键缓存”。
-
Command-Line Format --key-cache-division-limit=#System Variable key_cache_division_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 100Minimum Value 1Maximum Value 100键缓存缓冲区列表的热和温子列表的分界点。值是缓冲区列表中用于温子列表的百分比。允许的值范围从1到100。默认值为100。见第10.10.2节,“MyISAM键缓存”。
-
System Variable large_files_supportScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 是否编译了支持大文件的mysqld。
-
Command-Line Format --large-pages[={OFF|ON}]System Variable large_pagesScope 全局 Dynamic 否 SET_VARHint Applies否 Platform Specific Linux Type 布尔 Default Value OFF是否启用大页支持(通过--large-pages选项)。见第10.12.3.3节,“Enabling Large Page Support”。
-
System Variable large_page_sizeScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 65535Unit 字节 如果启用了大页支持,这将显示内存页的大小。只有在 Linux 平台上支持大页;在其他平台上,这个变量的值总是 0。请参阅第 10.12.3.3 节,“启用大页支持”。
-
将被返回的值是
LAST_INSERT_ID()的值。这在使用LAST_INSERT_ID()在更新表的语句时将被存储在二进制日志中。设置这个变量不会更新mysql_insert_id()C API 函数的返回值。 -
Command-Line Format --lc-messages=nameSystem Variable lc_messagesScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value en_US错误消息的语言设置。默认为
en_US。服务器将将参数转换为语言名称,并将其与lc_messages_dir的值组合,以产生错误消息文件的位置。请参阅第 12.12 节,“设置错误消息语言”。 -
Command-Line Format --lc-messages-dir=dir_nameSystem Variable lc_messages_dirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 错误消息文件的目录。服务器将使用该值和
lc_messages的值来产生错误消息文件的位置。请参阅第 12.12 节,“设置错误消息语言”。 -
Command-Line Format --lc-time-names=valueSystem Variable lc_time_namesScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 该变量指定控制显示日期和月份名称和缩写的语言。该变量影响了
DATE_FORMAT()、DAYNAME()和MONTHNAME()函数的输出。locale名称是POSIX风格的值,如'ja_JP'或'pt_BR'。默认值是'en_US',无论系统的locale设置如何。有关详细信息,请参见第12.16节,“MySQL Server Locale Support”。 -
服务器的许可类型。
-
Command-Line Format --local-infile[={OFF|ON}]System Variable local_infileScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF该变量控制服务器端
LOAD DATA语句的LOCAL能力。根据local_infile设置,服务器拒绝或允许客户端具有LOCAL能力的数据加载。要明确地导致服务器拒绝或允许
LOAD DATA LOCAL语句(无论客户端程序和库在编译或运行时的配置),启动mysqld并将local_infile设置为禁用或启用。可以在运行时设置local_infile。有关更多信息,请参见第8.1.6节,“LOAD DATA LOCAL安全考虑”。 -
Command-Line Format --lock-wait-timeout=#System Variable lock_wait_timeoutScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 31536000Minimum Value 1Maximum Value 31536000Unit 秒 该变量指定尝试获取元数据锁定的超时秒数。允许的值范围从1到31536000(1年)。默认值为31536000。
该超时对所有使用元数据锁定的语句生效。这些语句包括DML和DDL操作、表、视图、存储过程和存储函数、
LOCK TABLES、FLUSH TABLES WITH READ LOCK和HANDLER语句。该超时不适用于隐式访问系统表的隐式访问,例如
GRANT或REVOKE语句或表日志语句。超时适用于直接访问系统表的语句,例如SELECT或UPDATE。超时值对每个元数据锁定尝试单独生效。给定的语句可能需要多个锁定,因此语句可能会阻塞超过超时值之前报告超时错误。当超时发生时,
ER_LOCK_WAIT_TIMEOUT将被报告。lock_wait_timeout也定义了LOCK INSTANCE FOR BACKUP语句等待锁定的超时时间。 -
System Variable locked_in_memoryScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value OFF -
Command-Line Format --log-error[=file_name]System Variable log_errorScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 默认错误日志目标。如果目标是控制台,值为
stderr。否则,目标是文件,并且log_error值是文件名。请参见第7.4.2节,“错误日志”。 -
Command-Line Format --log-error-services=valueSystem Variable log_error_servicesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value log_filter_internal; log_sink_internal错误日志的组件。该变量可能包含0、1或多个元素。在后一种情况下,元素可以使用分号或逗号分隔,optional后跟空格。给定的设置不能同时使用分号和逗号分隔符。组件顺序是有意义的,因为服务器将按照列表顺序执行组件。
任何可加载(不是内置)的组件名在
log_error_services中,如果该组件尚未加载,则隐式加载。更多信息,请参见第7.4.2.1节,“错误日志配置”。 -
Command-Line Format --log-error-suppression-list=valueSystem Variable log_error_suppression_listScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value 空字符串变量
log_error_suppression_list应用于错误日志事件,并指定在事件出现时要抑制的事件。例如,如果某种类型的警告被认为是错误日志中的“噪音”,因为它频繁出现,但不是感兴趣,可以被抑制。这项变量影响了log_filter_internal错误日志过滤器组件的过滤操作,该组件默认启用(请参见第7.5.3节,“错误日志组件”)。如果log_error_suppression_list被禁用,该变量无效。《
log_error_suppression_list》值可以是空字符串,以表示无抑制,或者是一串逗号分隔的错误代码,以表示要抑制的错误代码。错误代码可以以符号或数字形式指定。数字代码可以以或不以MY-前缀指定。数字部分的前导零不重要。以下是允许的代码格式示例:ER_SERVER_SHUTDOWN_COMPLETE MY-000031 000031 MY-31 31符号值优于数字值,以提高可读性和可移植性。关于允许的错误符号和数字,请参见MySQL 8.4 Error Message Reference。
《
log_error_suppression_list》的效果与《log_error_verbosity》的效果相结合。更多信息,请见第7.4.2.5节,“基于优先级的错误日志过滤(log_filter_internal)”。 -
Command-Line Format --log-error-verbosity=#System Variable log_error_verbosityScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 2Minimum Value 1Maximum Value 3《
log_error_verbosity》系统变量指定错误日志处理事件的详细程度。这一变量影响了log_filter_internal错误日志过滤器组件的过滤效果,如果log_filter_internal被禁用,那么《log_error_verbosity》没有效果。为错误日志设计的事件具有优先级《ERROR》、《WARNING》或《INFORMATION》。《
log_error_verbosity》根据优先级控制日志中写入的消息,如下表所示。log_error_verbosity Value Permitted Message Priorities 1 ERROR2 ERROR,WARNING3 ERROR,WARNING,INFORMATION还有一种优先级是
SYSTEM。系统消息关于非错误情况将被打印到错误日志中,独立于log_error_verbosity的值。这些消息包括启动和关闭消息,以及一些重要的设置变化。log_error_verbosity的效果与log_error_suppression_list的效果相结合。更多信息,请见第7.4.2.5节,“基于优先级的错误日志过滤(log_filter_internal)”。 -
Command-Line Format --log-output=nameSystem Variable log_outputScope 全局 Dynamic 是 SET_VARHint Applies否 Type 设置 Default Value FILEValid Values TABLEFILENONE通用查询日志和慢查询日志的输出目标。值是一个或多个用逗号分隔的单词,来自
TABLE、FILE和NONE。TABLE选择将日志写入general_log和slow_log表中的mysql系统架构。FILE选择将日志写入日志文件。NONE禁用日志。如果NONE在值中出现,它将优先于其他单词。TABLE和FILE都可以给出日志输出目标。这个变量选择日志输出目标,但不启用日志输出。要做到这点,请启用
general_log和slow_query_log系统变量。对于FILE日志记录,general_log_file和slow_query_log_file系统变量确定日志文件位置。更多信息,请见第7.4.1节,“选择通用查询日志和慢查询日志输出目标”。 -
Command-Line Format --log-queries-not-using-indexes[={OFF|ON}]System Variable log_queries_not_using_indexesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果启用了慢查询日志,并且启用了该变量,查询将被记录。见第7.4.5节,“慢查询日志”。该选项并不一定意味着没有使用索引。例如,使用全索引扫描的查询使用了索引,但将被记录,因为索引不会限制行数。
-
Command-Line Format --log-raw[={OFF|ON}]System Variable log_rawScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFFlog_raw系统变量最初设置为
--log-raw选项的值。见该选项的描述,以获取更多信息。系统变量也可以在运行时更改,以更改密码masking行为。 -
Command-Line Format --log-slow-admin-statements[={OFF|ON}]System Variable log_slow_admin_statementsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF将慢速管理员语句写入到慢查询日志中。管理员语句包括
ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、OPTIMIZE TABLE和REPAIR TABLE。 -
Command-Line Format --log-slow-extra[={OFF|ON}]System Variable log_slow_extraScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果慢查询日志启用,并且输出目标包括
FILE,服务器将在日志文件行中添加字段,以提供关于慢查询的信息。请参阅第7.4.5节,“慢查询日志”。TABLE输出不受影响。 -
Command-Line Format --log-timestamps=#System Variable log_timestampsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value UTCValid Values UTCSYSTEM该变量控制错误日志、一般查询日志和慢查询日志中的时间戳的时区。它不影响表格中(
mysql.general_log,mysql.slow_log)的时间戳,可以使用CONVERT_TZ()或设置会话变量time_zone来将其转换到任意时区。允许的
log_timestamps值是UTC(默认)和SYSTEM(本地系统时区)。时间戳使用ISO 8601/RFC 3339格式:
加上尾部值YYYY-MM-DDThh:mm:ss.uuuuuuZ表示UTC时间或±hh:mm(UTC偏移量)。 -
log_throttle_queries_not_using_indexesCommand-Line Format --log-throttle-queries-not-using-indexes=#System Variable log_throttle_queries_not_using_indexesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 4294967295如果
log_queries_not_using_indexes启用,log_throttle_queries_not_using_indexes变量将限制慢查询日志中的查询数量。值为0(默认)表示“无限制”。更多信息,请参阅第7.4.5节,“慢查询日志”。 -
Command-Line Format --long-query-time=#System Variable long_query_timeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 数字 Default Value 10Minimum Value 0Maximum Value 31536000Unit 秒 如果查询时间超过这个值,服务器将增加
Slow_queries状态变量。如果启用了慢查询日志,查询将被写入慢查询日志文件。这一值以实际时间为单位,而不是CPU时间,因此在轻负载系统上可能会超过阈值,而在重负载系统上可能不会。long_query_time的最小和默认值分别为0和10。最大值为31536000,相当于365天。该值可以指定到微秒的精度。请参阅第7.4.5节,“慢查询日志”。较小的值将导致更多的语句被认为是长时间运行的,结果慢查询日志需要更多的空间。如果值小于1秒,日志可能在短时间内变得很大。增加语句被认为是长时间运行的结果也可能导致MySQL Enterprise Monitor中的““excessive Number of Long Running Processes”警报”。因此,在生产环境中,很小的值应该只在测试环境中使用,或者在生产环境中只使用短时间。
mysqldump执行了全表扫描,这意味着其查询可能会超过
long_query_time设置的值。如果您想排除mysqldump生成的查询大多数或所有查询来自慢查询日志,可以使用--mysqld-long-query-time将会话变量的值更改为更高的值。 -
Command-Line Format --low-priority-updates[={OFF|ON}]System Variable low_priority_updatesScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果将其设置为
1,则所有INSERT、UPDATE、DELETE和LOCK TABLE WRITE语句将等待没有pending的SELECT或LOCK TABLE READ语句对该表。可以使用{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...来降低单个查询的优先级。这变量只影响使用表级锁定的存储引擎(如MyISAM、MEMORY和MERGE),见第10.11.2节,“表锁定问题”。设置会话变量的值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量,见第7.1.9.1节,“系统变量权限”。
-
System Variable lower_case_file_systemScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 该变量描述了文件系统中文件名的大小写敏感性。
OFF表示文件名大小写敏感,ON表示文件名大小写不敏感。这变量是只读的,因为它反映了文件系统属性,设置它将无效。 -
Command-Line Format --lower-case-table-names[=#]System Variable lower_case_table_namesScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value (macOS) 2Default Value (Unix) 0Default Value (Windows) 1Minimum Value 0Maximum Value 2如果设置为0,表名将存储为指定的名称,并且比较大小写敏感。如果设置为1,表名将存储为小写,并且比较大小写不敏感。如果设置为2,表名将存储为指定的名称,但比较大小写为小写。这选项也适用于数据库名和表别名。更多详细信息,请见第11.2.3节,“标识符大小写敏感性”。
该变量的默认值是平台相关的(见
lower_case_file_system)。在 Linux 和其他 Unix-like 系统上,默认值为0。在 Windows 上,默认值为1。在 macOS 上,默认值为2。在 Linux (和其他 Unix-like 系统上),将值设置为2不被支持;服务器将强制将值设置为0。您不应该将
lower_case_table_names设置为 0,如果您在运行 MySQL 的系统上数据目录位于一个不区分大小写的文件系统(例如 Windows 或 macOS)。这是一种不受支持的组合,可能会在运行一个错误的INSERT INTO ... SELECT ... FROM操作时导致服务器崩溃。使用tbl_nameMyISAM,使用不同大小写的表名可能会导致索引损坏。如果您尝试使用
--lower_case_table_names=0启动服务器,在不区分大小写的文件系统上,服务器将打印错误信息并退出。该变量的设置将影响复制过滤器选项的大小写敏感性。有关更多信息,请见第19.2.5节,“服务器评估复制过滤器规则”。
禁止在启动服务器时使用与初始化服务器时不同的
lower_case_table_names设置。限制是必要的,因为各种数据字典表字段的排序和比较是由初始化服务器时定义的设置确定,重新启动服务器时使用不同的设置将引入不一致。因此,在初始化服务器之前,需要配置
lower_case_table_names到所需的设置。在大多数情况下,这需要在 MySQL 选项文件中配置lower_case_table_names。对于 APT 安装在 Debian 和 Ubuntu 上,服务器将被初始化,您不能在选项文件中配置设置。您必须使用debconf-set-selection工具在安装 MySQL 使用 APT 之前启用lower_case_table_names。要做到这一点,请在安装 MySQL 使用 APT 之前运行以下命令:$> sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled" -
Command-Line Format --mandatory-roles=valueSystem Variable mandatory_rolesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value 空字符串服务器应该将这些角色视为强制性角色。实际上,这些角色将自动授予每个用户,但是设置
mandatory_roles不实际更改任何用户帐户,并且授予的角色在mysql.role_edges系统表中不可见。变量值是一个逗号分隔的角色名称列表。示例:
SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';设置
mandatory_roles的运行时值需要ROLE_ADMIN特权,除非SUPER特权(已弃用)或SYSTEM_VARIABLES_ADMIN特权通常需要设置一个全局系统变量的运行时值。角色名称由用户部分和主机部分组成,格式为
。如果省略主机部分,默认为user_name@host_name%。更多信息,请参见第8.2.5节,“指定角色名称”。mandatory_roles值是一个字符串,因此用户名称和主机名称,如果被引用,必须以允许在引号字符串中的引号方式写入。在
mandatory_roles值中指定的角色不能使用REVOKE或DROP ROLE或DROP USER语句来撤销或删除。为了防止会话默认成为系统会话,可以在
mandatory_roles值中列出一个具有SYSTEM_USER特权的角色:-
如果
mandatory_roles在启动时分配了一个具有SYSTEM_USER特权的角色,服务器将在错误日志中写入一条消息并退出。 -
如果
mandatory_roles在运行时分配了一个具有SYSTEM_USER特权的角色,错误将发生,并且mandatory_roles值将保持不变。
强制角色,像明确授予的角色,直到激活(见激活角色)才生效。在登录时,如果
activate_all_roles_on_login系统变量启用,则激活所有授予的角色;否则,为设置为默认角色。运行时,SET ROLE激活角色。分配给
mandatory_roles的角色,但在分配时不存在,但后来创建了,可能需要特殊处理以被视为强制角色。详见定义强制角色。SHOW GRANTS显示强制角色,根据Section 15.7.7.22, “SHOW GRANTS Statement”中描述的规则。 -
-
Command-Line Format --max-allowed-packet=#System Variable max_allowed_packetScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 67108864Minimum Value 1024Maximum Value 1073741824Unit 字节 Block Size 1024一个数据包或生成/中间字符串的最大大小,或者由
mysql_stmt_send_long_data()C API函数发送的参数的最大大小。默认值为64MB。数据包消息缓冲区初始化为
net_buffer_length字节,但可以增长到max_allowed_packet字节时。这个值默认很小,以捕捉可能错误的包。您必须增加这个值,如果您使用的是大型
BLOB列或长字符串。它应该与您想要使用的最大BLOB相同。协议对max_allowed_packet的限制为1GB。该值应该是1024的倍数;非倍数将被舍入到最近的倍数。当您更改消息缓冲区大小时,通过更改
max_allowed_packet变量的值,您也应该在客户端更改缓冲区大小,如果客户端程序允许。如果客户端程序不允许,您可以在命令行或选项文件中设置max_allowed_packet变量。例如,mysql和mysqldump的默认值分别为16MB和24MB,可以通过设置max_allowed_packet变量来更改客户端值。该变量的会话值是只读的。客户端可以接收的字节数不超过会话值。但是,服务器不向客户端发送字节数超过当前全局
max_allowed_packet值的字节数(如果全局值小于会话值,则可能小于会话值)。 -
Command-Line Format --max-connect-errors=#System Variable max_connect_errorsScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 100Minimum Value 1Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295当一个主机的连续连接请求被中断而没有成功连接时,服务器将阻止该主机的进一步连接。如果从一个主机成功连接到服务器,则该主机的错误计数将被清零。要解除阻止的主机,请刷新主机缓存;请参阅刷新主机缓存。
-
Command-Line Format --max-connections=#System Variable max_connectionsScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 151Minimum Value 1Maximum Value 100000同时连接的客户端连接的最大数量。最大有效值是
open_files_limit的实际值减去810,和实际设置的max_connections值之间的较小值。更多信息,请见第7.1.12.1节,“连接接口”。
-
Command-Line Format --max-delayed-threads=#Deprecated 是 System Variable max_delayed_threadsScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 20Minimum Value 0Maximum Value 16384这个系统变量已经弃用(因为
DELAYED插入不支持)并且将在未来MySQL版本中删除。设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有设置受限制的会话变量的权限。请见第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --max-digest-length=#System Variable max_digest_lengthScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 1024Minimum Value 0Maximum Value 1048576Unit 字节 每个会话用于计算normalized statement digests的内存保留字节数。该数量使用完毕后,会发生截断:在digest计算过程中不再收集或将其作为digest值的一部分。statements如果在该数量字节内不同,生产相同normalized statement digest并被认为是相同的,如果比较或聚合用于digest统计。
Warning将
max_digest_length设置为零禁用digest生产,也禁用需要digest的服务器功能,如MySQL Enterprise Firewall。减少
max_digest_length值减少内存使用,但使得更多语句的digest值变得不可区分。增加值允许更长语句被区分,但增加内存使用,特别是对于同时连接的会话较多的工作负载(服务器分配max_digest_length字节每个会话)。解析器使用该系统变量作为normalized 语句摘要的最大长度限制,它计算的。性能 Schema,如果它跟踪语句摘要,使用
performance_schema_max_digest_length系统变量作为摘要的最大长度限制。因此,如果performance_schema_max_digest_length小于max_digest_length,性能 Schema 中存储的摘要值将相对于原始摘要值进行截断。关于语句摘要的更多信息,请见第29.10节,“性能 Schema 语句摘要和采样”。
-
Command-Line Format --max-error-count=#System Variable max_error_countScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 1024Minimum Value 0Maximum Value 65535显示错误、警告和信息消息的最大数量,以便由
SHOW ERRORS和SHOW WARNINGS语句显示。这个值与诊断区域中的条件数相同,因此可以通过GET DIAGNOSTICS语句检查的条件数相同。设置会话值的系统变量是一个受限的操作。会话用户必须具有设置受限的会话变量的权限。请见第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --max-execution-time=#System Variable max_execution_timeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 0Minimum Value 0Maximum Value 4294967295Unit 毫秒 SELECT 语句的执行超时,单位为毫秒。如果值为 0,超时将被禁用。
max_execution_time的应用如下:-
全局
max_execution_time值提供了新连接的会话值。会话值适用于不包含MAX_EXECUTION_TIME(<em><code>N</code></em>)优化器提示或为0的<em><code>N</code></em>的SELECT执行语句。 -
max_execution_time适用于只读SELECT语句。不能只读的语句是那些调用存储函数,修改数据作为副作用的语句。 -
max_execution_time对于SELECT语句在存储程序中被忽略。
-
-
Command-Line Format --max-heap-table-size=#System Variable max_heap_table_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 16777216Minimum Value 16384Maximum Value (64-bit platforms) 18446744073709550592Maximum Value (32-bit platforms) 4294966272Unit 字节 Block Size 1024这个变量设置了用户创建的MEMORY表的最大大小。变量的值用于计算MEMORY表的MAX_ROWS值。
设置这个变量对现有MEMORY表没有影响,除非表被重新创建使用
CREATE TABLE语句或使用ALTER TABLE或TRUNCATE TABLE语句。服务器重启也将现有MEMORY表的最大大小设置为全局max_heap_table_size值。这个变量也用于与
tmp_table_size一起限制内存中临时表的大小。请参阅第10.4.4节,“MySQL内部临时表使用”。max_heap_table_size不会被复制。请参阅第19.5.1.21节,“复制和 MEMORY 表”,和第19.5.1.39节,“复制和变量”,获取更多信息。 -
Deprecated 是 System Variable max_insert_delayed_threadsScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 20Maximum Value 16384这个变量是
max_delayed_threads的同义词。像max_delayed_threads一样,它已被弃用(因为DELAYED插入不支持)且将在未来的 MySQL 发布中删除。设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。请参阅第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --max-join-size=#System Variable max_join_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 18446744073709551615Minimum Value 1Maximum Value 18446744073709551615这个变量表示了连接的最大行访问数。如果服务器的估计表明连接需要读取的行数超过
max_join_size,则语句将被拒绝。将这个变量设置为除
DEFAULT外的值将重置sql_big_selects的值为0。如果您再次设置sql_big_selects的值,max_join_size变量将被忽略。 -
Command-Line Format --max-length-for-sort-data=#Deprecated 是 System Variable max_length_for_sort_dataScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 4096Minimum Value 4Maximum Value 8388608Unit 字节 这个变量已经弃用,在 MySQL 8.4 中没有效果。
-
Command-Line Format --max-points-in-geometry=#System Variable max_points_in_geometryScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 65536Minimum Value 3Maximum Value 1048576ST_Buffer_Strategy() 函数的
points_per_circle参数的最大值。 -
Command-Line Format --max-prepared-stmt-count=#System Variable max_prepared_stmt_countScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 16382Minimum Value 0Maximum Value 4194304这个变量限制了服务器中的总 Prepared 语句数量。在环境中,可能会出现基于服务器内存耗尽的拒绝服务攻击,可以使用该变量来限制 Prepared 语句的数量。如果设置的值小于当前 Prepared 语句的数量,当前 Prepared 语句将不受影响,但不能再添加新的 Prepared 语句。将值设置为 0 将禁用 Prepared 语句。
-
Command-Line Format --max-seeks-for-key=#System Variable max_seeks_for_keyScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value (Windows) 4294967295Default Value (Other, 64-bit platforms) 18446744073709551615Default Value (Other, 32-bit platforms) 4294967295Minimum Value 1Maximum Value (Windows) 4294967295Maximum Value (Other, 64-bit platforms) 18446744073709551615Maximum Value (Other, 32-bit platforms) 4294967295限制索引搜索的最大次数。MySQL 优化器假设在搜索匹配行时,索引搜索的次数不会超过这个值,不管实际索引的 cardinality(see Section 15.7.7.23, “SHOW INDEX Statement”)。将这个值设置为一个低值(例如 100),可以强制 MySQL 优先使用索引,而不是表扫描。
-
Command-Line Format --max-sort-length=#System Variable max_sort_lengthScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 1024Minimum Value 4Maximum Value 8388608Unit 字节 排序字符串值时使用的字节数,使用
PAD SPACE排序时的值。服务器将使用最多max_sort_length字节的值,并忽略其它部分。因此,这些值在max_sort_length字节前相同的值将被视为相等,以便于GROUP BY、ORDER BY和DISTINCT操作。 (这与之前的MySQL版本不同,该设置将应用于所有值用于比较的值。)增加
max_sort_length的值可能需要增加sort_buffer_size的值。详见第10.2.1.16节,“ORDER BY Optimization” -
Command-Line Format --max-sp-recursion-depth[=#]System Variable max_sp_recursion_depthScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 255存储过程的递归调用次数。默认值为0,这完全禁用存储过程的递归调用。最大值为255。
存储过程的递归调用增加了对线程栈空间的需求。如果您增加
max_sp_recursion_depth的值,可能需要增加线程栈大小通过在服务器启动时增加thread_stack的值。 -
Command-Line Format --max-user-connections=#System Variable max_user_connectionsScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 4294967295允许任何给定MySQL用户帐户的同时连接数的最大值。值为0(默认)意味着“无限制”。
这个变量具有全局值,可以在服务器启动或运行时设置。它还具有只读的会话值,该值表示当前会话关联的帐户的实际同时连接限制。会话值的初始化方式如下:
-
如果用户帐户具有非零的
MAX_USER_CONNECTIONS资源限制,会话max_user_connections值将设置为该限制。 -
否则,会话
max_user_connections值将设置为全局值。
帐户资源限制使用
CREATE USER或ALTER USER语句指定。请参阅第8.2.21节,“设置帐户资源限制”。 -
-
Command-Line Format --max-write-lock-count=#System Variable max_write_lock_countScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value (Windows) 4294967295Default Value (Other, 64-bit platforms) 18446744073709551615Default Value (Other, 32-bit platforms) 4294967295Minimum Value 1Maximum Value (Windows) 4294967295Maximum Value (Other, 64-bit platforms) 18446744073709551615Maximum Value (Other, 32-bit platforms) 4294967295在写锁请求达到这个数量时,允许一些挂起的读锁请求被处理。在写锁请求中,读锁请求具有更高的优先级。然而,如果
max_write_lock_count设置为某个低值(例如10),读锁请求可能会优先于挂起的写锁请求,因为读锁请求已经被10个写锁请求所超越。通常,这种行为不会发生,因为max_write_lock_count默认值非常大。 -
Command-Line Format --mecab-rc-file=file_nameSystem Variable mecab_rc_fileScope Global Dynamic No SET_VARHint AppliesNo Type File name mecab_rc_file选项用于设置MeCab全文搜索解析器。
\
mecab_rc_file选项定义了 MeCab 配置文件的路径,该文件是 MeCab 的配置文件。该选项是只读的,不能在启动时设置。 MeCab 配置文件mecabrc是 MeCab 初始化所需的。关于 MeCab 全文搜索解析器的信息,请参见第14.9.9节,“MeCab Full-Text Parser Plugin”。
关于在 MeCab 配置文件
mecabrc中指定的选项,请参见MeCab 文档,在Google 开发者网站上。 -
Command-Line Format --min-examined-row-limit=#System Variable min_examined_row_limitScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295查询少于这个数字的行不被记录到慢查询日志中。
设置会话变量的值是受限制的操作。会话用户必须具有设置受限制会话变量的权限。请参见第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --myisam-data-pointer-size=#System Variable myisam_data_pointer_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 6Minimum Value 2Maximum Value 7Unit 字节 用于创建
MyISAM表时的默认指针大小,用于CREATE TABLE语句。该变量不能小于 2 或大于 7。默认值为 6。请参见第 B.3.2.10 节,“表已满”。 -
Command-Line Format --myisam-max-sort-file-size=#System Variable myisam_max_sort_file_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value (Windows) 2146435072Default Value (Other, 64-bit platforms) 9223372036853727232Default Value (Other, 32-bit platforms) 2147483648Minimum Value 0Maximum Value (Windows) 2146435072Maximum Value (Other, 64-bit platforms) 9223372036853727232Maximum Value (Other, 32-bit platforms) 2147483648Unit 字节 MySQL 在重建
REPAIR TABLE、ALTER TABLE或LOAD DATA时,允许使用的临时文件大小(以字节为单位)。如果文件大小超过这个值,索引将使用键缓存,而不是文件系统。这可以减慢性能。该值以字节为单位。如果
MyISAM索引文件超过这个大小,并且磁盘空间可用,增加该值可能会提高性能。磁盘空间必须在包含原始索引文件的目录中可用。 -
Command-Line Format --myisam-mmap-size=#System Variable myisam_mmap_sizeScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value (64-bit platforms) 18446744073709551615Default Value (32-bit platforms) 4294967295Minimum Value 7Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295Unit 字节 -
Command-Line Format --myisam-recover-options[=list]System Variable myisam_recover_optionsScope 全局 Dynamic 否 SET_VARHint Applies否 Type 枚举 Default Value OFFValid Values OFFDEFAULTBACKUPFORCEQUICK设置
MyISAM存储引擎恢复模式。变量值是OFF,DEFAULT,BACKUP,FORCE或QUICK的任意组合。如果您指定多个值,请使用逗号分隔。指定变量无值的服务器启动是相同的指定DEFAULT,指定明确的值""将禁用恢复(与OFF值相同)。如果恢复启用,每当 mysqld 打开一个MyISAM表,它将检查该表是否标记为崩溃或未正确关闭。如果是这样, mysqld 将对该表进行检查。如果该表损坏, mysqld 尝试修复它。以下选项影响修复的方式。
Option Description OFF不进行恢复。 DEFAULT不进行备份、强制或快速检查的恢复。 BACKUP如果恢复过程中数据文件被修改,保存 文件的备份为tbl_name.MYD。tbl_name-datetime.BAKFORCE即使将删除多行,也强制修复表。 QUICK不检查表中的行,如果没有删除块。 在服务器自动修复表之前,它将将修复信息写入错误日志。如果您想在用户干预下恢复大多数问题,可以使用选项
BACKUP,FORCE。这将强制修复表,即使一些行将被删除,但它将保留旧数据文件,以便您后来检查。 -
Command-Line Format --myisam-sort-buffer-size=#System Variable myisam_sort_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8388608Minimum Value 4096Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295Unit 字节 当对
MyISAM索引进行排序时,分配的缓冲区大小。在REPAIR TABLE或在创建索引时使用CREATE INDEX或ALTER TABLE。 -
Command-Line Format --myisam-stats-method=nameSystem Variable myisam_stats_methodScope 全局、会话Dynamic 是SET_VARHint Applies否Type 枚举Default Value nulls_unequalValid Values nulls_unequalnulls_equalnulls_ignored服务器在收集MyISAM表的索引值分布统计信息时,对NULL值的处理方式。这個变量有三个可能的值:nulls_equal、nulls_unequal和nulls_ignored。对于nulls_equal,所有NULL索引值被认为是相等,形成一个大小为NULL值的单个值组。对于nulls_unequal,NULL值被认为是不相等,每个NULL值形成一个大小为1的值组。对于nulls_ignored,NULL值被忽略。生成表统计信息的方法对优化器选择索引的执行方式进行了描述,见第10.3.8节,“InnoDB and MyISAM Index Statistics Collection”。 -
Command-Line Format --myisam-use-mmap[={OFF|ON}]System Variable myisam_use_mmapScope 全局Dynamic 是SET_VARHint Applies否Type 布尔Default Value OFF使用内存映射来读取和写入MyISAM表。 -
mysql_native_password_proxy_usersCommand-Line Format --mysql-native-password-proxy-users[={OFF|ON}]System Variable mysql_native_password_proxy_usersScope 全局Dynamic 是SET_VARHint Applies否Type 布尔Default Value OFF该变量控制是否支持
mysql_native_password内置身份验证插件(已弃用)的代理用户功能。它只有在check_proxy_users系统变量和mysql_native_password插件启用时才生效。关于用户代理,请见第8.2.19节,“Proxy Users”。 -
Command-Line Format --named-pipe[={OFF|ON}]System Variable named_pipeScope 全局 Dynamic 否 SET_VARHint Applies否 Platform Specific Windows Type 布尔 Default Value OFF(仅限Windows.) 指示服务器是否支持命名管道连接。
-
Command-Line Format --named-pipe-full-access-group=valueSystem Variable named_pipe_full_access_groupScope 全局 Dynamic 否 SET_VARHint Applies否 Platform Specific Windows Type 字符串 Default Value 空字符串Valid Values 空字符串有效的Windows本地组名称*(仅限Windows.) 在启用
named_pipe系统变量支持命名管道连接时,MySQL服务器将将访问控制授予客户端在创建的命名管道上,以便成功通信。一些MySQL客户端软件可以打开命名管道连接无需额外配置;然而,其他客户端软件可能仍然需要完全访问以打开命名管道连接。该变量设置Windows本地组的名称,该组的成员将被授予使用命名管道客户端的足够访问权限。默认值为空字符串,这意味着没有Windows用户被授予对命名管道的完全访问权限。
可以创建一个新的Windows本地组(例如:
mysql_access_client_users)并将其用作访问控制的替代方案。在这种情况下,限制组的成员数量,并在客户端软件升级时从组中移除用户。非组成员尝试打开连接到MySQL的命名管道客户端时将被拒绝访问,直到Windows管理员将用户添加到组中。新添加的用户必须重新登录以加入组(由Windows所需)。将值设置为
'*everyone*'提供了语言无关的方式来引用Windows中的Everyone组。Everyone组默认不安全。 -
Command-Line Format --net-buffer-length=#System Variable net_buffer_lengthScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 16384Minimum Value 1024Maximum Value 1048576Unit 字节 Block Size 1024每个客户端线程都关联一个连接缓冲区和结果缓冲区。两个缓冲区的初始大小由
net_buffer_length确定,但可以动态扩展到max_allowed_packet字节。结果缓冲区在每个SQL语句执行后将被缩小到net_buffer_length。这个变量通常不需要更改,但如果您有很少的内存,可以将其设置为客户端发送的语句的预期长度。如果语句超过这个长度,连接缓冲区将自动扩展。该变量的最大值为1MB。
这个变量的会话值是只读的。
-
Command-Line Format --net-read-timeout=#System Variable net_read_timeoutScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 30Minimum Value 1Maximum Value 31536000Unit 秒 连接读取超时的秒数。服务器读取客户端时,
net_read_timeout控制读取超时。服务器写入客户端时,net_write_timeout控制写入超时。见replica_net_timeout。 -
Command-Line Format --net-retry-count=#System Variable net_retry_countScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 10Minimum Value 1Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295如果对通信端口的读取或写入被中断,重试这个次数后才放弃。这值在 FreeBSD 上应该设置得很高,因为内部中断将发送给所有线程。
-
Command-Line Format --net-write-timeout=#System Variable net_write_timeoutScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 60Minimum Value 1Maximum Value 31536000Unit 秒 等待连接上写入一个块的秒数,直到写入操作失败。详见
net_read_timeout。 -
Command-Line Format --ngram-token-size=#System Variable ngram_token_sizeScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 2Minimum Value 1Maximum Value 10定义n-gram全文本解析器的n-gram token size。
ngram_token_size选项是只读的,不能在运行时修改。默认值为2(bigram)。最大值为10。了解如何配置该变量的更多信息,请见第14.9.8节,“ngram Full-Text Parser”。
-
Command-Line Format --offline-mode[={OFF|ON}]System Variable offline_modeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF在离线模式下,MySQL实例将断开客户端用户,除非他们具有相关权限,并且不允许他们建立新的连接。被拒绝访问的客户端将收到
ER_SERVER_OFFLINE_MODE错误。将服务器设置为离线模式,请将
offline_mode系统变量从OFF更改为ON。要恢复正常操作,请将offline_mode从ON更改为OFF。控制离线模式需要管理员账户拥有SYSTEM_VARIABLES_ADMIN特权和CONNECTION_ADMIN特权(或弃用的SUPER特权,涵盖这两个特权)。离线模式具有以下特征:
-
没有
CONNECTION_ADMIN或SUPER特权的客户端用户将在下一个请求中断开连接,并收到适当的错误。断开连接包括终止正在运行的语句和释放锁定。这些客户端用户也不能初始化新的连接,并收到适当的错误。 -
拥有
CONNECTION_ADMIN或SUPER特权的客户端用户不会断开连接,并且可以初始化新的连接以管理服务器。 -
如果将服务器设置为离线模式的用户没有
SYSTEM_USER特权,拥有SYSTEM_USER特权的客户端用户也不会断开连接。然而,这些用户不能在服务器处于离线模式时初始化新的连接,除非他们拥有CONNECTION_ADMIN或SUPER特权。只有他们的现有连接不能被终止,因为SYSTEM_USER特权是必要的,以杀死执行中的会话或语句。 -
复制线程允许继续将数据应用于服务器。
-
-
Command-Line Format --old-alter-table[={OFF|ON}]System Variable old_alter_tableScope Global, Session Dynamic Yes SET_VARHint AppliesNo Type Boolean Default Value OFF当该变量启用时,服务器不使用优化的方法来处理
ALTER TABLE操作。它会重新使用临时表,复制数据,并将临时表重命名为原始表,类似于MySQL 5.0和更早版本的操作。关于ALTER TABLE的操作信息,请见第15.1.9节,“ALTER TABLE 语句”。ALTER TABLE ... DROP PARTITIONwithold_alter_table=ON重建分区表,并尝试将从删除的分区中移动数据到另一个具有相容PARTITION ... VALUES定义的分区。无法移动到另一个分区的数据将被删除。在更早的版本中,ALTER TABLE ... DROP PARTITIONwithold_alter_table=ON将删除存储在分区中的数据,并删除分区。 -
Command-Line Format --open-files-limit=#System Variable open_files_limitScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 5000,可能需要调整Minimum Value 0Maximum Value 平台依赖可供mysqld从操作系统获取的文件描述符数量:
-
在启动时,mysqld使用
setrlimit()将描述符保留,使用由直接设置该变量或使用--open-files-limit选项来设置mysqld_safe。如果mysqld产生错误Too many open files,请尝试增加open_files_limit值。内部,该变量的最大值是最大无符号整数值,但实际最大值是平台依赖的。 -
在运行时,
open_files_limit的值表示操作系统允许 mysqld 使用的文件描述符数量,这可能与启动时请求的值不同。如果不能分配请求的文件描述符数量,mysqld 将在错误日志中写入警告。
实际的
open_files_limit值基于系统启动时指定的值(如果有)和max_connections和table_open_cache的值,使用以下公式:-
10 + max_connections + (table_open_cache * 2). 使用这些变量的默认值将得到 8161。在 Windows 上,只有 2048(C 运行时库文件描述符最大值)被添加到这个数字中。这总共是 10209,使用默认值的系统变量。
-
max_connections * 5 -
操作系统限制。
服务器尝试使用最大值中的文件描述符数量,如果不能获得那么多的描述符,服务器将尝试获得操作系统允许的最大数量。
实际值在系统上不能更改文件描述符数量的地方是 0。
在 Unix 上,这个值不能超过 ulimit -n 命令显示的值。在使用
systemd的 Linux 系统上,这个值不能超过LimitNOFILE(如果LimitNOFILE没有设置),否则在 Linux 上,这个值不能超过 ulimit -n。 -
-
Command-Line Format --optimizer-prune-level=#System Variable optimizer_prune_levelScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 1Minimum Value 0Maximum Value 1控制查询优化器在查询优化过程中应用的 heuristics,以 pruning 不太有希望的部分计划从优化器搜索空间中。值为 0 将禁用 heuristics,使优化器执行 exhaustive 搜索。值为 1 将使优化器根据中间计划中检索的行数来 pruning 计划。
-
Command-Line Format --optimizer-search-depth=#System Variable optimizer_search_depthScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 62Minimum Value 0Maximum Value 62查询优化器的搜索深度。值大于查询结果中的关系数,生成的查询计划更好,但生成时间更长。值小于查询结果中的关系数,生成查询计划更快,但生成的计划可能不太好。如果设置为0,系统将自动选择合理的值。
-
Command-Line Format --optimizer-switch=valueSystem Variable optimizer_switchScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 设置 Valid Values batched_key_access={on|off}block_nested_loop={on|off}condition_fanout_filter={on|off}derived_condition_pushdown={on|off}derived_merge={on|off}duplicateweedout={on|off}engine_condition_pushdown={on|off}firstmatch={on|off}hash_join={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}prefer_ordering_index={on|off}semijoin={on|off}skip_scan={on|off}subquery_materialization_cost_based={on|off}subquery_to_derived={on|off}use_index_extensions={on|off}use_invisible_indexes={on|off}Valid Values 批量键访问={on|off}块嵌套循环={on|off}条件分支过滤={on|off}派生合并={on|off}重复weedout={on|off}引擎条件推送={on|off}首匹配={on|off}哈希连接={on|off}索引条件推送={on|off}索引合并={on|off}索引合并交叉={on|off}索引合并排序并集={on|off}索引合并并集={on|off}松散扫描={on|off}物化={on|off}MRR={on|off}MRR基于成本={on|off}优先排序索引={on|off}半连接={on|off}跳过扫描={on|off}子查询物化基于成本={on|off}子查询到派生={on|off}使用索引扩展={on|off}使用不可见索引={on|off}Valid Values 批量键访问={on|off}块嵌套循环={on|off}条件分支过滤={on|off}派生合并={on|off}重复weedout={on|off}引擎条件推送={on|off}首匹配={on|off}哈希连接={on|off}索引条件推送={on|off}索引合并={on|off}索引合并交叉={on|off}索引合并排序并集={on|off}索引合并并集={on|off}松散扫描={on|off}物化={on|off}MRR={on|off}MRR基于成本={on|off}半连接={on|off}跳过扫描={on|off}子查询物化基于成本={on|off}子查询到派生={on|off}使用索引扩展={on|off}使用不可见索引={on|off}Valid Values 批处理键访问={on|off}块嵌套循环={on|off}条件扇出过滤={on|off}派生合并={on|off}重复weedout={on|off}引擎条件推送={on|off}首匹配={on|off}索引条件推送={on|off}索引合并={on|off}索引合并交叉={on|off}索引合并排序并集={on|off}索引合并并集={on|off}松散扫描={on|off}物化={on|off}MRR={on|off}MRR基于成本={on|off}半连接={on|off}跳过扫描={on|off}子查询物化基于成本={on|off}使用索引扩展={on|off}使用不可见索引={on|off}系统变量
optimizer_switch控制优化器行为。该变量的值是一个标志集,每个标志都有一个值为on或off,表示相应的优化器行为是否启用或禁用。这变量具有全局和会话值,可以在运行时更改。全局默认值可以在服务器启动时设置。要查看当前的优化器标志,请选择变量值:
mysql> SELECT @@optimizer_switch\G *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on, index_merge_sort_union=on,index_merge_intersection=on, engine_condition_pushdown=on,index_condition_pushdown=on, mrr=on,mrr_cost_based=on,block_nested_loop=on, batched_key_access=off,materialization=on,semijoin=on, loosescan=on,firstmatch=on,duplicateweedout=on, subquery_materialization_cost_based=on, use_index_extensions=on,condition_fanout_filter=on, derived_merge=on,use_invisible_indexes=off,skip_scan=on, hash_join=on,subquery_to_derived=off, prefer_ordering_index=on,hypergraph_optimizer=off, derived_condition_pushdown=on,hash_set_operations=on 1 row in set (0.00 sec)关于该变量的语法和控制的优化器行为的详细信息,请见第10.9.2节,“可切换优化”。
-
Command-Line Format --optimizer-trace=valueSystem Variable optimizer_traceScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 该变量控制优化器跟踪。详细信息,请见MySQL Internals: Tracing the Optimizer。
-
Command-Line Format --optimizer-trace-features=valueSystem Variable optimizer_trace_featuresScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 该变量启用或禁用选择的优化器跟踪功能。详细信息,请见MySQL Internals: Tracing the Optimizer.
-
Command-Line Format --optimizer-trace-limit=#System Variable optimizer_trace_limitScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1Minimum Value 0Maximum Value 2147483647显示的最大优化器跟踪数量。详细信息,请见MySQL Internals: Tracing the Optimizer.
-
Command-Line Format --optimizer-trace-max-mem-size=#System Variable optimizer_trace_max_mem_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 1048576Minimum Value 0Maximum Value 4294967295Unit 字节 存储的优化器跟踪的最大累积大小。详细信息,请见MySQL Internals: Tracing the Optimizer.
-
Command-Line Format --optimizer-trace-offset=#System Variable optimizer_trace_offsetScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value -1Minimum Value -2147483647Maximum Value 2147483647优化器跟踪的偏移量。详细信息,请见MySQL Internals: Tracing the Optimizer.
-
performance_schema_xxx性能 Schema 系统变量列表见Section 29.15, “Performance Schema System Variables”。这些变量可能用于配置性能 Schema 操作。
-
Command-Line Format --parser-max-mem-size=#System Variable parser_max_mem_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value (64-bit platforms) 18446744073709551615Default Value (32-bit platforms) 4294967295Minimum Value 10000000Maximum Value (64-bit platforms) 18446744073709551615Maximum Value (32-bit platforms) 4294967295Unit 字节 解析器可用的最大内存量。默认值不限制内存可用量,可以将其减少以保护对长或复杂SQL语句的解析可能导致的内存不足情况。
-
Command-Line Format --partial-revokes[={OFF|ON}]System Variable partial_revokesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF(如果部分撤销不存在)ON(如果部分撤销存在)启用该变量使得可以部分撤销权限。特别是,对于拥有全局权限的用户,
partial_revokes允许在特定的架构中撤销权限,而不是撤销所有权限。例如,对于拥有全局UPDATE权限的用户,可以限制其在mysql架构中执行UPDATE操作。换言之,该用户的全局UPDATE权限部分撤销。启用
partial_revokes后,不能禁用该变量,如果存在任何账户具有权限限制,禁用partial_revokes将失败。-
在启动时尝试禁用
partial_revokes,服务器将记录错误信息并启用partial_revokes。 -
在运行时尝试禁用
partial_revokes,将出现错误,并且partial_revokes的值保持不变。
要禁用
partial_revokes,首先修改每个具有部分撤销权限的账户,或者重新授予权限或删除账户。Note在权限分配中,启用
partial_revokes将使MySQL将未转义的_和%SQL通配符字符在架构名称中解释为字面字符,就像它们被转义为\_和\%一样。由于这将改变MySQL解释权限的方式,因此在可能启用partial_revokes的安装中,可能需要避免在权限分配中使用未转义的通配符字符。此外,使用
_和%作为通配符字符在授权中的使用已经被弃用,您应该预期在未来版本的MySQL中将其支持移除。有关更多信息,包括删除部分撤销的指令,请见第8.2.12节,“权限限制使用部分撤销”。
-
-
Command-Line Format --password-history=#System Variable password_historyScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 4294967295该变量定义了控制前密码重用限制的全局策略。对于之前使用的帐户密码,该变量指示了必须在重用密码之前发生的最少密码更改次数。如果值为0(默认),则没有基于密码更改次数的重用限制。
对该变量的更改将立即应用于使用
PASSWORD HISTORY DEFAULT选项定义的所有帐户。全局密码更改次数限制可以在个别帐户中使用
PASSWORD HISTORY选项的CREATE USER和ALTER USER语句中进行覆盖。请见第8.2.15节,“密码管理”。 -
Command-Line Format --password-require-current[={OFF|ON}]System Variable password_require_currentScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF该变量定义了控制帐户密码更改时是否需要指定当前密码的全局策略。
对该变量的更改将立即应用于使用
PASSWORD REQUIRE CURRENT DEFAULT选项定义的所有帐户。全球验证所需的策略可以在使用
PASSWORD REQUIRE选项的CREATE USER和ALTER USER语句中为单个帐户进行override。请参阅第8.2.15节,“密码管理”。 -
Command-Line Format --password-reuse-interval=#System Variable password_reuse_intervalScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 0Minimum Value 0Maximum Value 4294967295Unit 天 该变量定义了全球密码重用策略,基于时间的延迟。对于之前使用的帐户密码,该变量指示了在重用密码之前必须经过的天数。如果值为0(默认值),则没有基于时间的重用限制。
对该变量的更改将立即应用于使用
PASSWORD REUSE INTERVAL DEFAULT选项定义的所有帐户。全球时间延迟密码重用策略可以在使用
PASSWORD REUSE INTERVAL选项的CREATE USER和ALTER USER语句中为单个帐户进行override。请参阅第8.2.15节,“密码管理”。 -
Command-Line Format --persisted-globals-load[={OFF|ON}]System Variable persisted_globals_loadScope Global Dynamic No SET_VARHint AppliesNo Type Boolean Default Value ON是否从数据目录中的
mysqld-auto.cnf文件中加载 persisted 配置设置。服务器通常在启动时处理该文件(见第6.2.2.2节,“使用选项文件”)。禁用persisted_globals_load将使服务器启动序列跳过mysqld-auto.cnf。要修改
mysqld-auto.cnf的内容,使用SET PERSIST、SET PERSIST_ONLY和RESET PERSIST语句。详见第7.1.9.3节,“ Persisted System Variables”。 -
persist_only_admin_x509_subjectCommand-Line Format --persist-only-admin-x509-subject=stringSystem Variable persist_only_admin_x509_subjectScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value 空字符串SET PERSIST和SET PERSIST_ONLY使得系统变量可以被 persisted 到mysqld-auto.cnf选项文件中(见第15.7.6.1节,“SET Syntax for Variable Assignment”)。persisting系统变量使得可以在服务器重启后应用配置更改,这对远程管理非常有用。但是,有些系统变量是不可 persist 的或只能在某些限制条件下 persist。系统变量
persist_only_admin_x509_subject指定了用户必须具有的SSL证书X.509主体值,以便可以 persist persist-限制的系统变量。默认值是空字符串,这意味着不能 persist 任何用户的 persist-限制的系统变量。如果
persist_only_admin_x509_subject非空,使用加密连接连接到服务器并提供指定主体值的SSL证书的用户,可以使用SET PERSIST_ONLY来 persist persist-限制的系统变量。关于 persist-限制的系统变量和启用persist_only_admin_x509_subject的配置信息,请见第7.1.9.4节,“Nonpersistible and Persist-Restricted System Variables”。 -
persist_sensitive_variables_in_plaintextCommand-Line Format --persist_sensitive_variables_in_plaintext[={OFF|ON}]System Variable persist_sensitive_variables_in_plaintextScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ONpersist_sensitive_variables_in_plaintext控制服务器是否允许将敏感系统变量的值存储在未加密的格式中,如果在使用SET PERSIST将系统变量的值设置时,keyring 组件支持不可用。它还控制服务器是否可以启动,如果加密的系统变量值不能被解密。注意,keyring 插件不支持安全存储敏感系统变量的值;必须在 MySQL 服务器实例上启用keyring 组件(见第8.4.4节,“MySQL Keyring”)以支持安全存储。默认设置为
ON,如果keyring 组件支持可用,服务器将加密值;否则,如果keyring 组件支持不可用,服务器将将敏感系统变量的值存储在未加密的格式中(带警告)。下次设置任何 persisted 系统变量时,如果keyring 组件支持可用,服务器将加密未加密的敏感系统变量的值。ON设置也允许服务器在加密系统变量值不能被解密时启动,在这种情况下,服务器将发出警告,并使用默认值来设置系统变量的值。在这种情况下,不能更改系统变量的值,直到它们可以被解密。最安全的设置为
OFF,这意味着敏感系统变量的值不能在keyring 组件支持不可用时被 persisted。如果设置为OFF,服务器也不能在加密系统变量值不能被解密时启动。 -
Command-Line Format --pid-file=file_nameSystem Variable pid_fileScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 服务器将写入进程 ID 的文件路径名。服务器在数据目录中创建文件,除非指定绝对路径名以指定不同的目录。如果您指定了这个变量,必须指定一个值。如果您没有指定这个变量,MySQL 将使用默认值
,其中host_name.pidhost_name是主机名称。进程 ID 文件由其他程序,如mysqld_safe,用于确定服务器的进程 ID。在 Windows 上,这个变量还影响默认错误日志文件名。请参阅第7.4.2节,“错误日志”。
-
Command-Line Format --plugin-dir=dir_nameSystem Variable plugin_dirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 Default Value BASEDIR/lib/plugin插件目录的路径名。
如果插件目录是可写的,用户可能可以使用
SELECT ... INTO DUMPFILE将可执行代码写入目录中的文件。这可以通过将plugin_dir设置为只读或将secure_file_priv设置为安全文件目录来防止。 -
Command-Line Format --port=port_numSystem Variable portScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 3306Minimum Value 0Maximum Value 65535服务器监听 TCP/IP 连接的端口号。这可以使用
--port选项设置。 -
Command-Line Format --preload-buffer-size=#System Variable preload_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 32768Minimum Value 1024Maximum Value 1073741824Unit 字节 预加载索引时分配的缓冲区大小。
设置会话值的系统变量是受限的操作。会话用户必须具有足够的权限来设置受限的会话变量。请参阅第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --print-identified-with-as-hex[={OFF|ON}]System Variable print_identified_with_as_hexScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF在
SHOW CREATE USER的输出中,IDENTIFIED WITH子句中的密码哈希值可能包含不可打印的字符,这些字符可能会对终端显示和其他环境产生不良影响。启用print_identified_with_as_hex可以将这些哈希值显示为十六进制字符串,而不是常规字符串。哈希值中不包含不可打印字符的仍然显示为常规字符串,即使启用了该变量。 -
如果设置为0或
OFF(默认值),语句 profiling 将被禁用。如果设置为1或ON,语句 profiling 将被启用,并且SHOW PROFILE和SHOW PROFILES语句将提供 profiling 信息。请参阅Section 15.7.7.32, “SHOW PROFILES Statement”。该变量已弃用;在将来 MySQL 发布中将被删除。
-
如果启用
profiling,则将维护的语句数量。默认值为15。最大值为100。将值设置为0将禁用 profiling。请参阅Section 15.7.7.32, “SHOW PROFILES Statement”。该变量已弃用;在将来 MySQL 发布中将被删除。
-
protocol_compression_algorithmsCommand-Line Format --protocol-compression-algorithms=valueSystem Variable protocol_compression_algorithmsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 设置 Default Value zlib,zstd,uncompressedValid Values zlibzstduncompressed服务器允许的压缩算法列表。这些算法包括来自客户端程序和参与源/副本复制或组复制的服务器的连接。压缩不适用于
FEDERATED表的连接。protocol_compression_algorithms不控制X协议的连接压缩。请参阅第22.5.5节,“X插件连接压缩”了解如何操作。变量值是一个逗号分隔的压缩算法名称列表,可以是任意顺序,来自以下项目(不区分大小写):
-
zlib: 允许使用zlib压缩算法的连接。 -
zstd: 允许使用zstd压缩算法的连接。 -
uncompressed: 允许未压缩的连接。如果在protocol_compression_algorithms值中不包含该算法名称,服务器不允许未压缩的连接,只允许使用其他算法指定的压缩连接,没有退回到未压缩的连接。
默认值为
zlib,zstd,uncompressed,表示服务器允许所有压缩算法。更多信息,请参阅第6.2.8节,“连接压缩控制”。
-
-
System Variable protocol_versionScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 10Minimum Value 0Maximum Value 4294967295MySQL 服务器使用的客户端/服务器协议版本。
-
System Variable proxy_userScope 会话 Dynamic 否 SET_VARHint Applies否 Type 字符串 如果当前客户端是另一个用户的代理,那么这个变量是代理用户帐户名称。否则,这个变量是
NULL。请参阅第8.2.19节,“代理用户”。 -
System Variable pseudo_replica_modeScope 会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 pseudo_replica_mode是服务器内部使用的变量。它帮助正确地处理来自较老或较新的服务器的事务。mysqlbinlog 在执行任何 SQL 语句之前将pseudo_replica_mode设置为 true。将
pseudo_replica_mode的会话值是受限制的操作。会话用户必须拥有REPLICATION_APPLIER特权(见第19.3.3节,“Replication Privilege Checks”)或具有设置受限制会话变量的权限(见第7.1.9.1节,“System Variable Privileges”)。然而,请注意该变量不供用户设置;它将自动由复制基础结构设置。pseudo_replica_mode对于XA事务的处理方式如下,可以附加到或从会话中分离(默认情况下是会话,该会话执行XA START语句):-
如果为真,并且会话已经执行了内部使用的
BINLOG语句,XA事务将在事务的第一部分完成XA PREPARE后自动从会话中分离,以便任何具有XA_RECOVER_ADMIN特权的会话可以提交或回滚事务。 -
如果为假,XA事务将与会话保持关联直到会话关闭或服务器重启时才分离。
pseudo_replica_mode对于original_server_version系统变量和original_commit_timestamp复制延迟时间戳有以下影响:-
如果为真,则不显式设置
original_commit_timestamp或original_server_version的事务被假设来自另一个未知的服务器,因此将0(未知)分配给时间戳和系统变量。 -
如果为假,则不显式设置
original_commit_timestamp或original_server_version的事务被假设来自当前服务器,因此将当前时间戳和当前服务器的版本分配给时间戳和系统变量。
pseudo_replica_mode对处理设置一个或多个不支持(已删除或未知)的SQL模式的语句有以下影响:-
如果为真,服务器将忽略不支持的模式并发出警告。
-
如果为假,服务器将拒绝语句并返回
ER_UNSUPPORTED_SQL_MODE错误。
-
-
Deprecated 是 System Variable pseudo_slave_modeScope 会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 已弃用别名为
pseudo_replica_mode。 -
System Variable pseudo_thread_idScope 会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 2147483647Minimum Value 0Maximum Value 2147483647该变量用于内部服务器使用。
Warning将会话值更改为
pseudo_thread_id系统变量将更改CONNECTION_ID()函数返回的值。将会话值设置为该系统变量是受限制的操作。会话用户必须具有设置受限制的会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --query-alloc-block-size=#System Variable query_alloc_block_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8192Minimum Value 1024Maximum Value 4294966272Unit 字节 Block Size 1024内存块的分配大小,用于存储语句解析和执行期间创建的对象。如果您遇到内存碎片问题,可能需要增加该参数。
字节块的大小为1024。MySQL 服务器在存储该系统变量之前将值向下舍入到下一个字节块的整数倍。解析器允许的最大值是平台的最大无符号整数值(4294967295或2^32-1对于32位系统,18446744073709551615或2^64-1对于64位系统),但实际最大值是字节块的下一个整数倍。
-
Command-Line Format --query-prealloc-size=#Deprecated 是 System Variable query_prealloc_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8192Minimum Value 8192Maximum Value (64-bit platforms) 18446744073709550592Maximum Value (32-bit platforms) 4294966272Unit 字节 Block Size 1024query_prealloc_size已弃用,设置它无效,您应该期望在未来的MySQL版本中删除它。 -
System Variable rand_seed1Scope 会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value N/AMinimum Value 0Maximum Value 4294967295变量
rand_seed1和rand_seed2只存在于会话变量中,可以设置,但不能读取。这些变量——但不是它们的值——在SHOW VARIABLES的输出中显示。这些变量的目的是支持
RAND()函数的复制。对于调用RAND()的语句,源端将传递两个值给副本,副本使用这些值来设置会话变量rand_seed1和rand_seed2,以便副本生成的随机数与源端相同。 -
请查看
rand_seed1的描述。 -
Command-Line Format --range-alloc-block-size=#System Variable range_alloc_block_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 4096Minimum Value 4096Maximum Value (64-bit platforms) 18446744073709550592Maximum Value 4294966272Unit 字节 Block Size 1024当执行范围优化时分配的块大小(以字节为单位)。
字节的块大小为1024。MySQL Server在存储该系统变量的值之前将其值向下舍入到块大小的下一个整数倍。解析器允许的最大值为平台的最大无符号整数值(4294967295或2^32-1在32位系统上,18446744073709551615或2^64-1在64位系统上),但实际的最大值是块大小的下一个整数倍。
-
Command-Line Format --range-optimizer-max-mem-size=#System Variable range_optimizer_max_mem_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8388608Minimum Value 0Maximum Value 18446744073709551615Unit 字节 范围优化器的内存使用限制。值为0表示“无限制”。如果优化器估计使用的内存超过限制,它将放弃该计划并考虑其他计划。更多信息,请见Limiting Memory Use for Range Optimization。
-
System Variable rbr_exec_modeScope 会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value STRICTValid Values STRICTIDEMPOTENT为mysqlbinlog内部使用。该变量将服务器切换到
IDEMPOTENT模式和STRICT模式。IDEMPOTENT模式会抑制在BINLOG语句中出现的重复键和找不到键错误。该模式在重新播放基于行的二进制日志时非常有用,以避免与现有数据冲突。mysqlbinlog在指定--idempotent选项时设置该模式。SET SESSION RBR_EXEC_MODE=IDEMPOTENT; -
Command-Line Format --read-buffer-size=#System Variable read_buffer_sizeScope Global, Session Dynamic Yes SET_VARHint AppliesYes Type Integer Default Value 131072Minimum Value 8192Maximum Value 2147479552Unit 字节 Block Size 4096每个线程在扫描
MyISAM表时分配一个缓冲区的大小(以字节为单位)。如果您执行多个顺序扫描,您可能想增加该值,default为131072。该值应该是4KB的倍数。如果设置的值不是4KB的倍数,则将其下舍到最近的4KB倍数。该选项在以下情况下也用于其他存储引擎,除了
InnoDB:-
在排序行时缓存索引在临时文件(不是临时表)中的结果。
-
在批量插入分区时。
-
在缓存嵌套查询的结果时。
read_buffer_size在其他存储引擎中还有一种使用方式:用于确定MEMORY表的内存块大小。select_into_buffer_size用于SELECT INTO DUMPFILE和SELECT INTO OUTFILE语句的I/O缓冲区大小(在所有其他情况下使用read_buffer_size)。关于不同操作中的内存使用信息,请见第10.12.3.1节,“MySQL如何使用内存”。
-
-
Command-Line Format --read-only[={OFF|ON}]System Variable read_onlyScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果启用
read_only系统变量,服务器允许的唯一客户端更新是由拥有CONNECTION_ADMIN特权(或弃用的SUPER特权)的用户。该变量默认处于禁用状态。服务器还支持
super_read_only系统变量(默认禁用),该变量具有以下效果:-
如果启用
super_read_only,服务器禁止客户端更新,即使是拥有CONNECTION_ADMIN或SUPER特权的用户。 -
将
super_read_only设置为ON隐式强制read_only设置为ON。 -
将
read_only设置为OFF隐式强制super_read_only设置为OFF。
当
read_only启用且super_read_only启用时,服务器仍然允许这些操作:-
由复制线程执行的更新,如果服务器是一个副本。在复制设置中,可以启用
read_only在副本服务器上,以确保副本服务器仅从源服务器接受更新,而不是从客户端。 -
将系统表
mysql.gtid_executed写入,这个表存储了执行的交易ID,该交易ID不在当前二进制日志文件中。 -
使用
ANALYZE TABLE或OPTIMIZE TABLE语句。读取模式的目的是防止对表结构或内容的更改。分析和优化不属于更改的范畴。这意味着,例如,可以使用mysqlcheck--all-databases--analyze对只读副本进行一致性检查。 -
使用
FLUSH STATUS语句,这些语句总是写入到二进制日志中。 -
对临时表的操作。
-
将日志表(
mysql.general_log和mysql.slow_log)中的插入操作;见第7.4.1节,“选择通用查询日志和慢查询日志输出目的地”。 -
对性能Schema表的更新,例如
UPDATE或TRUNCATE TABLE操作。
在复制源服务器上设置
read_only的值不会被复制到副本服务器上。该值可以在副本服务器上独立设置,不受源服务器的设置影响。以下条件适用于尝试启用
read_only(包括隐式尝试结果来自启用super_read_only):-
尝试失败,并出现错误,如果您拥有任何明确锁(使用
LOCK TABLES)或有待处理的事务。 -
尝试阻塞其他客户端请求表锁或事务开始请求,直到锁释放和语句和事务结束为止。尝试启用
read_only时,其他客户端的请求也会被阻塞,直到read_only被设置为止。 -
尝试阻塞,如果有活动事务持有元数据锁,直到那些事务结束为止。
-
read_only可以在您持有全局读锁(使用FLUSH TABLES WITH READ LOCK)时启用,因为这不涉及表锁。
-
-
Command-Line Format --read-rnd-buffer-size=#System Variable read_rnd_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 262144Minimum Value 1Maximum Value 2147483647Unit 字节 该变量用于从MyISAM表中读取数据,以及对任何存储引擎进行Multi-Range Read优化。
在对MyISAM表进行排序读取操作时,rows将通过该缓冲区读取,以避免磁盘寻道。详见第10.2.1.16节,“ORDER BY Optimization”。将该变量设置为大值可以大大提高ORDER BY性能。但是,这是一个客户端分配的缓冲区,因此您不应该将全局变量设置为大值。相反,在需要运行大查询的客户端中更改会话变量。
关于内存使用的更多信息,请见第10.12.3.1节,“How MySQL Uses Memory”。关于Multi-Range Read优化的信息,请见第10.2.1.11节,“Multi-Range Read Optimization”。
-
Command-Line Format --regexp-stack-limit=#System Variable regexp_stack_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8000000Minimum Value 0Maximum Value 2147483647Unit 字节 该变量用于指定用于正则表达式匹配操作的内存栈的最大可用字节数,该操作由
REGEXP_LIKE()和类似函数执行(详见第14.8.2节,“Regular Expressions”)。 -
Command-Line Format --regexp-time-limit=#System Variable regexp_time_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 32Minimum Value 0Maximum Value 2147483647对正则表达式匹配操作的时间限制,包括
REGEXP_LIKE()和类似函数(见第14.8.2节,“正则表达式”)。这个限制是指匹配引擎执行的最大步骤数,因此只间接地影响执行时间。通常情况下,它是以毫秒为单位的。 -
System Variable require_row_formatScope Session Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF这个变量是由复制和mysqlbinlog内部服务器使用。它限制了会话中的DML事件只能执行在行基于二进制日志格式中,并且不能创建临时表。不能满足限制的查询将失败。
将这个系统变量的会话值设置为
ON不需要任何权限。将这个系统变量的会话值设置为OFF是受限制的操作,会话用户必须具有设置受限制的会话变量的权限。见第7.1.9.1节,“系统变量权限”。 -
Command-Line Format --require-secure-transport[={OFF|ON}]System Variable require_secure_transportScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF是否要求客户端连接到服务器时使用某种形式的安全传输。启用这个变量时,服务器仅允许使用TLS/SSL加密的TCP/IP连接或使用套接字文件(在Unix上)或共享内存(在Windows上)的连接。服务器将拒绝非安全连接尝试,这些尝试将以
ER_SECURE_TRANSPORT_REQUIRED错误失败。这个功能补充了每个帐户的SSL要求,这些要求优先。例如,如果一个帐户被定义为
REQUIRE SSL,启用require_secure_transport不能使得使用套接字文件的帐户连接到服务器。可能会出现服务器没有可靠传输的情况。例如,在 Windows 上启动服务器时,如果没有指定 SSL 证书或密钥文件,并且禁用了
shared_memory系统变量,那么服务器将在启动时写入错误日志并退出。尝试在启动时启用require_secure_transport变量将导致服务器写入错误日志并退出。尝试在运行时启用变量将失败,并返回ER_NO_SECURE_TRANSPORTS_CONFIGURED错误。详见强制加密连接。
-
System Variable resultset_metadataScope Session Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value FULLValid Values FULLNONE对于可选的元数据传输连接,客户端将设置
resultset_metadata系统变量,以控制服务器是否返回结果集元数据。允许的值是FULL(返回所有元数据,这是默认值)和NONE(返回无元数据)。对于非元数据可选的连接,设置
resultset_metadata到NONE将导致错误。关于管理结果集元数据传输的详细信息,请见Optional Result Set Metadata。
-
secondary_engine_cost_thresholdSystem Variable secondary_engine_cost_thresholdScope Session Dynamic 是 SET_VARHint Applies是 Type 数字 Default Value 100000.000000Minimum Value 0Maximum Value DBL_MAX (maximum double value)查询离线到次要引擎的优化成本阈值。
用于HeatWave。详见MySQL HeatWave User Guide。
-
Command-Line Format --schema-definition-cache=#System Variable schema_definition_cacheScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 256Minimum Value 256Maximum Value 524288定义了 schema 定义对象的限制数量,包括已使用和未使用的对象,可以在字典对象缓存中保留。
未使用的 schema 定义对象仅在使用的数量小于由
schema_definition_cache定义的容量时保留在字典对象缓存中。设置为
0时,schema 定义对象仅在使用时保留在字典对象缓存中。更多信息,请见第16.4节,“字典对象缓存”。
-
Command-Line Format --secure-file-priv=dir_nameSystem Variable secure_file_privScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value 平台相关Valid Values 空字符串dirnameNULL该变量用于限制数据导入和导出操作,例如执行
LOAD DATA和SELECT ... INTO OUTFILE语句,以及LOAD_FILE()函数。这些操作仅允许对拥有FILE特权的用户执行。secure_file_priv可以设置为以下值:-
如果为空,变量无效。这不是安全的设置。
-
如果设置为目录名称,服务器将限制导入和导出操作,以便只在该目录中工作。目录必须存在;服务器不创建它。
-
如果设置为
NULL,服务器将禁用导入和导出操作。
默认值是平台相关的,取决于
INSTALL_LAYOUTCMake 选项的值,如下表所示。如果您从源代码构建,使用INSTALL_SECURE_FILE_PRIVDIRCMake 选项来指定明确的secure_file_priv值。INSTALL_LAYOUTValueDefault secure_file_privValueSTANDALONE空 DEB,RPM,SVR4/var/lib/mysql-files否则 mysql-files在CMAKE_INSTALL_PREFIX值下服务器在启动时检查
secure_file_priv的值,并在错误日志中记录警告,如果值不安全。非空值被认为是不安全的,如果值为空、是数据目录或其子目录、或所有用户都可以访问的目录。如果secure_file_priv设置为不存在的路径,服务器将在错误日志中记录错误信息并退出。 -
-
Command-Line Format --select-into-buffer-size=#System Variable select_into_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 131072Minimum Value 8192Maximum Value 2147479552Unit 字节 Block Size 4096使用
SELECT INTO OUTFILE或SELECT INTO DUMPFILE将数据写入一个或多个文件以进行备份、数据迁移或其他目的时,可以使用缓冲区来写入数据到存储设备,以确定缓冲区同步时机,以避免写入延迟 stall 其他查询。select_into_buffer_size将覆盖read_buffer_size的值。 (select_into_buffer_size和read_buffer_size具有相同的默认、最大和最小值。) 您还可以使用select_into_disk_sync_delay设置同步延迟。设置会话变量的值是受限制的操作。会话用户必须具有设置受限制的会话变量的权限。请参阅第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --select-into-disk-sync={ON|OFF}System Variable select_into_disk_syncScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFFValid Values OFFON当设置为
ON时,启用了输出文件的缓冲同步写入操作,用于长时间运行的SELECT INTO OUTFILE或SELECT INTO DUMPFILE语句。 -
Command-Line Format --select-into-disk-sync-delay=#System Variable select_into_disk_sync_delayScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 0Minimum Value 0Maximum Value 31536000Unit 毫秒 当启用了输出文件的缓冲同步写入操作时,这个变量设置了可选的延迟(以毫秒为单位),用于同步写入操作。
0(默认值)表示没有延迟。设置会话变量的操作是受限制的。会话用户必须具有足够的权限来设置受限制的会话变量。见第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --session-track-gtids=valueSystem Variable session_track_gtidsScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value OFFValid Values OFFOWN_GTIDALL_GTIDS控制服务器是否将GTIDs返回给客户端,以便客户端使用它们来跟踪服务器状态。根据变量值,服务器在每个事务结束时将其GTIDs捕获并将其返回给客户端作为确认。可能的
session_track_gtids值如下所示:-
OFF: 服务器不将GTID返回给客户端。这是默认设置。 -
OWN_GTID: 服务器返回自当前会话中自上次确认以来的所有事务的GTID。通常,这是最后一个事务的单个GTID,但如果单个客户端请求导致多个事务,则服务器返回包含所有相关GTID的GTID集。 -
ALL_GTIDS: 服务器返回其gtid_executed系统变量的全局值,该变量在事务成功提交后由服务器读取。该GTID集除了事务刚刚提交的GTID外,还包括服务器上的所有客户端事务,以及可能在事务当前被确认时提交的事务。
session_track_gtids不能在事务上下文中设置。有关会话状态跟踪的更多信息,请见第7.1.18节,“服务器跟踪客户端会话状态”。
-
-
Command-Line Format --session-track-schema[={OFF|ON}]System Variable session_track_schemaScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value ON控制服务器是否跟踪当前会话中的默认架构(数据库)设置,并通知客户端提供架构名称。
如果架构名称跟踪器启用,名称通知将在每次设置默认架构时发生,即使新架构名称与旧架构名称相同。
有关会话状态跟踪的更多信息,请见第7.1.18节,“服务器跟踪客户端会话状态”。
-
Command-Line Format --session-track-state-change[={OFF|ON}]System Variable session_track_state_changeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF控制服务器是否跟踪当前会话的状态变化,并在状态变化时通知客户端。状态变化可以报告以下客户端会话状态属性的变化:
-
默认架构(数据库).
-
会话特定的系统变量值.
-
用户定义的变量.
-
临时表.
-
预备语句.
如果启用了会话状态跟踪器,通知将在每个跟踪的会话属性发生变化时发生,即使新值与旧值相同。例如,将用户定义的变量设置为其当前值将导致通知。
变量
session_track_state_change仅控制变化的通知,而不是变化的内容。例如,状态变化通知将在设置默认架构或跟踪会话系统变量时发生,但通知不包括架构名称或变量值。要接收架构名称或会话系统变量值的通知,请使用session_track_schema或session_track_system_variables系统变量,分别。Note将
session_track_state_change的值分配给自己不是状态变化,并且不会报告为这样。然而,如果其名称列在session_track_system_variables的值中,则对其的任何分配将导致通知新的值。有关会话状态跟踪的更多信息,请见第7.1.18节,“服务器跟踪客户会话状态”。
-
-
session_track_system_variablesCommand-Line Format --session-track-system-variables=#System Variable session_track_system_variablesScope Global, Session Dynamic Yes SET_VARHint AppliesNo Type String Default Value time_zone, autocommit, character_set_client, character_set_results, character_set_connection控制服务器是否跟踪会话系统变量的分配,并通知客户端每个变量的名称和值。变量值是一个以逗号分隔的变量列表,其中跟踪分配的变量。默认情况下,通知已启用对
time_zone、autocommit、character_set_client、character_set_results和character_set_connection的变量。 (后三个变量是SET NAMES影响的变量。)要启用每个语句的语句ID的显示,请使用
statement_id变量。例如:mysql> SET @@SESSION.session_track_system_variables='statement_id' mysql> SELECT 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.0006 sec) Statement ID: 603835特殊值
*(星号)会导致服务器跟踪所有会话变量的分配。如果给定,这个值必须单独指定,不要指定特定的系统变量名称。此值也启用了每个成功处理的语句的语句ID显示。要禁用会话变量分配的通知,设置
session_track_system_variables到空字符串。如果启用了会话系统变量跟踪,通知将发生在所有跟踪的会话变量的分配中,即使新的值与旧值相同。
关于会话状态跟踪的更多信息,请见第7.1.18节,“服务器跟踪客户会话状态”。
-
session_track_transaction_infoCommand-Line Format --session-track-transaction-info=valueSystem Variable session_track_transaction_infoScope 全局,会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value OFFValid Values OFFSTATECHARACTERISTICS控制服务器是否跟踪当前会话中的事务状态,并通知客户端使该信息可用。这些
session_track_transaction_info值允许:-
OFF:禁用事务状态跟踪。这是默认值。 -
STATE:启用事务状态跟踪,但不跟踪特征。状态跟踪使客户端能够确定事务是否在进行,并且是否可以将其移到另一个会话中而不回滚。 -
CHARACTERISTICS:启用事务状态跟踪,包括特征跟踪。特征跟踪使客户端能够确定如何在另一个会话中重新启动事务,以便具有原始会话的特征。以下特征对于重新启动事务是有用的:ISOLATION LEVEL READ ONLY READ WRITE WITH CONSISTENT SNAPSHOT
为了安全地将事务移到另一个会话中,客户端必须跟踪不仅事务状态,还有事务特征。此外,客户端还必须跟踪
transaction_isolation和transaction_read_only系统变量,以正确确定会话默认值。 (要跟踪这些变量,请将其添加到session_track_system_variables系统变量的值中。)关于会话状态跟踪的更多信息,请见第7.1.18节,“服务器跟踪客户会话状态”。
-
-
Command-Line Format --set-operations-buffer-size=#System Variable set_operations_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 256KMinimum Value 16KMaximum Value 1 GB设置
INTERSECT和EXCEPT操作的哈希表缓冲区大小,当hash_set_operations优化器开关为ON时。在一般情况下,增加该缓冲区的大小可以提高这些操作的性能,当哈希优化启用时。 -
sha256_password_auto_generate_rsa_keysCommand-Line Format --sha256-password-auto-generate-rsa-keys[={OFF|ON}]Deprecated 是 System Variable sha256_password_auto_generate_rsa_keysScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ON服务器使用该变量来确定是否自动生成RSA私钥/公钥对文件,如果它们不在数据目录中。
在启动时,服务器自动生成RSA私钥/公钥对文件,如果满足以下条件:
sha256_password_auto_generate_rsa_keys或caching_sha2_password_auto_generate_rsa_keys系统变量启用;没有指定RSA选项;RSA文件不在数据目录中。这些私钥/公钥对文件使得使用RSA加密的密码交换在未加密连接上进行身份验证,见第8.4.1.3节,“SHA-256可插拔身份验证”和第8.4.1.2节,“Caching SHA-2可插拔身份验证”。关于RSA文件自动生成的更多信息,包括文件名和特征,见第8.3.3.1节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”
系统变量
auto_generate_certs与之相关,但控制使用 SSL 证书和密钥文件的自动生成,以便使用 SSL 进行安全连接。 -
sha256_password_private_key_pathCommand-Line Format --sha256-password-private-key-path=file_nameDeprecated 是 System Variable sha256_password_private_key_pathScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 Default Value private_key.pem该变量的值是
sha256_password身份验证插件的 RSA 私钥文件路径。如果文件名是相对路径,则将其解释为服务器数据目录相对路径。该文件必须是 PEM 格式。Important由于该文件存储私钥,因此其访问权限应限制为只有 MySQL 服务器才能读取。
关于
sha256_password,见第8.4.1.3节,“SHA-256 可插拔身份验证” -
Command-Line Format --sha256-password-proxy-users[={OFF|ON}]Deprecated 是 System Variable sha256_password_proxy_usersScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF该变量控制
sha256_password内置身份验证插件是否支持代理用户。如果check_proxy_users系统变量启用,则无效。关于用户代理,请见第8.2.19节,“代理用户” -
sha256_password_public_key_pathCommand-Line Format --sha256-password-public-key-path=file_nameDeprecated 是 System Variable sha256_password_public_key_pathScope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 Default Value public_key.pem该变量的值是
sha256_password身份验证插件的 RSA 公钥文件路径。如果文件名是相对路径,它将相对于服务器数据目录解释。文件必须以 PEM 格式保存。因为该文件存储的是公钥,可以自由分发给客户端用户。 (使用 RSA 密码加密连接到服务器的客户端必须使用与服务器相同的公钥。)有关
sha256_password的信息,包括客户端指定 RSA 公钥的信息,请见第8.4.1.3节,“SHA-256 可插拔身份验证”。 -
Command-Line Format --shared-memory[={OFF|ON}]System Variable shared_memoryScope 全局 Dynamic 否 SET_VARHint Applies否 Platform Specific Windows Type 布尔 Default Value OFF(仅限 Windows。) 服务器是否允许共享内存连接。
-
Command-Line Format --shared-memory-base-name=nameSystem Variable shared_memory_base_nameScope 全局 Dynamic 否 SET_VARHint Applies否 Platform Specific Windows Type 字符串 Default Value MYSQL(仅限 Windows。) 共享内存连接使用的共享内存名称。这对于在单个物理机上运行多个 MySQL 实例时非常有用。默认名称是
MYSQL。名称是大小写敏感的。该变量仅在服务器启动时使用
shared_memory系统变量启用支持共享内存连接时生效。 -
show_create_table_skip_secondary_engineCommand-Line Format --show-create-table-skip-secondary-engine[={OFF|ON}]System Variable show_create_table_skip_secondary_engineScope 会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF启用
show_create_table_skip_secondary_engine将使SHOW CREATE TABLE输出和CREATE TABLE语句中排除mysqldump工具dump的--show-create-skip-secondary-engine选项。mysqldump提供了
--show-create-skip-secondary-engine选项。当指定时,它将启用show_create_table_skip_secondary_engine系统变量,以便在dump操作期间生效。用于HeatWave。请参阅MySQL HeatWave User Guide。
-
Command-Line Format --show-create-table-verbosity[={OFF|ON}]System Variable show_create_table_verbosityScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFFSHOW CREATE TABLEnormally does not show theROW_FORMATtable option if the row format is the default format. Enabling this variable causesSHOW CREATE TABLEto displayROW_FORMATregardless of whether it is the default format. -
show_gipk_in_create_table_and_information_schemaCommand-Line Format --show-gipk-in-create-table-and-information-schema[={OFF|ON}]System Variable show_gipk_in_create_table_and_information_schemaScope Global, Session Dynamic Yes SET_VARHint AppliesNo Type Boolean Default Value ONWhether generated invisible primary keys are visible in the output of
SHOWstatements and in Information Schema tables. When this variable is set toOFF, such keys are not shown.This variable is not replicated.
更多信息,请见第15.1.20.11节,“生成的不可见主键”.
-
Command-Line Format --skip-external-locking[={OFF|ON}]System Variable skip_external_lockingScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value ON如果mysqld使用外部锁定(系统锁定),则该变量为
OFF;如果外部锁定被禁用,则该变量为ON。这只影响MyISAM表的访问。该变量可以通过
--external-locking或--skip-external-locking选项设置。外部锁定默认禁用。外部锁定只影响
MyISAM表的访问。有关详细信息,包括在什么情况下可以和不能使用,请见第10.11.5节,“外部锁定”. -
Command-Line Format --skip-name-resolve[={OFF|ON}]System Variable skip_name_resolveScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value OFF是否在检查客户端连接时解析主机名。如果该变量为
OFF,mysqld在检查客户端连接时解析主机名。如果该变量为ON,mysqld使用IP地址;在这种情况下,所有Host列值在授权表中必须是IP地址。请见第7.1.12.3节,“DNS 查询和主机缓存”.根据系统网络配置和帐户的
Host值,客户端可能需要使用明确的--host选项,例如--host=127.0.0.1或--host=::1.连接到主机
127.0.0.1通常会将其解析到localhost账户。然而,如果服务器以skip_name_resolve启用,这将失败。如果您计划这样做,请确保存在可以接受连接的账户。例如,要使用--host=127.0.0.1或--host=::1连接到root账户,创建这些账户:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password'; CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password'; -
Command-Line Format --skip-networking[={OFF|ON}]System Variable skip_networkingScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value OFF这个变量控制服务器是否允许TCP/IP连接。默认情况下,它禁用了TCP连接。如果启用,服务器只允许本地(非TCP/IP)连接,并且所有与mysqld的交互必须使用命名管道或共享内存(在Windows上)或Unix套接字文件(在Unix上)。这项选项对系统非常有用,其中只允许本地客户端。请参阅第7.1.12.3节,“DNS Lookups and the Host Cache”。
由于使用
--skip-grant-tables禁用身份验证检查,服务器也禁用远程连接,以启用skip_networking。 -
Command-Line Format --skip-show-databaseSystem Variable skip_show_databaseScope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔 Default Value OFF这可以防止用户使用
SHOW DATABASES语句,如果他们没有SHOW DATABASES特权。这可以提高安全性,如果您对用户可以查看其他用户的数据库有所担忧。该变量的效果取决于SHOW DATABASES特权:如果变量值为ON,则SHOW DATABASES语句只能由拥有SHOW DATABASES特权的用户执行,并且语句将显示所有数据库名称。如果变量值为OFF,则SHOW DATABASES语句可以由所有用户执行,但是只显示用户拥有SHOW DATABASES或其他特权的数据库名称。Caution由于任何静态全局特权都是所有数据库的特权,因此任何静态全局特权都允许用户使用
SHOW DATABASES语句或通过检查SCHEMATA表中的INFORMATION_SCHEMA,除了通过部分撤销限制的数据库外。 -
Command-Line Format --slow-launch-time=#System Variable slow_launch_timeScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 2Minimum Value 0Maximum Value 31536000Unit 秒 如果创建线程需要超过这个时间秒,服务器将增加
Slow_launch_threads状态变量。 -
Command-Line Format --slow-query-log[={OFF|ON}]System Variable slow_query_logScope Global Dynamic Yes SET_VARHint AppliesNo Type Boolean Default Value OFF是否启用慢查询日志。该值可以是0(或
OFF)以禁用日志或1(或ON)以启用日志。日志输出的目标由log_output系统变量控制;如果该值是NONE,则不写入任何日志条目,即使日志启用。“慢”由
long_query_time变量的值确定。请参阅第7.4.5节,“慢查询日志”。 -
Command-Line Format --slow-query-log-file=file_nameSystem Variable slow_query_log_fileScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value 主机名-slow.log慢查询日志文件的名称。默认值为
,但可以使用主机名-slow.log--slow_query_log_file选项来更改初始值。 -
Command-Line Format --socket={file_name|pipe_name}System Variable socketScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value (Windows) MySQLDefault Value (Other) /tmp/mysql.sock在Unix平台上,这个变量是本地客户端连接使用的套接字文件名称。默认值为
/tmp/mysql.sock。(对于某些分发格式,目录可能不同,例如RPMs中的/var/lib/mysql。)在Windows上,这个变量是本地客户端连接使用的命名管道名称。默认值为
MySQL(不区分大小写)。 -
Command-Line Format --sort-buffer-size=#System Variable sort_buffer_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 262144Minimum Value 32768Maximum Value (Windows) 4294967295Maximum Value (Other, 64-bit platforms) 18446744073709551615Maximum Value (Other, 32-bit platforms) 4294967295Unit 字节 每个会话都需要对排序分配一个缓冲区的大小。
sort_buffer_size不特定于任何存储引擎,用于通用的优化。最小的sort_buffer_size值必须足够容纳15个排序缓冲区的元组。同时,增加max_sort_length的值可能需要增加sort_buffer_size的值。更多信息,请见第10.2.1.16节,“ORDER BY 优化”如果在
SHOW GLOBAL STATUS输出中看到每秒有许多Sort_merge_passes,可以考虑增加sort_buffer_size的值,以加速ORDER BY或GROUP BY操作,这些操作不能通过查询优化或改进索引来提高。优化器尝试计算需要的空间,但可以分配更多的空间,直到达到限制。将其设置为更大的值将使大多数查询执行排序操作变慢。最好是在会话设置中增加它,并且只对需要更大大小的会话。Linux平台上有256KB和2MB的阈值,超过这些值可能会导致内存分配速度变慢,因此您应该考虑保持在其中一个值以下。通过实验找到适合您的工作负载的最佳值。请见第B.3.3.5节,“MySQL 中的临时文件”
sort_buffer_size的最大允许设置为4GB−1。64位平台(除了64位 Windows外)允许更大的值,但将被截断到4GB−1,并显示警告。 -
System Variable sql_auto_is_nullScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF如果该变量启用,则在成功插入自动生成的AUTO_INCREMENT值后,可以通过以下形式的语句找到该值:
SELECT * FROM tbl_name WHERE auto_col IS NULL如果语句返回一行,返回的值与调用
LAST_INSERT_ID()函数时相同。有关详细信息,包括多行插入后的返回值,请参见第14.15节,“信息函数”。如果没有成功插入AUTO_INCREMENT值,SELECT语句返回无行。使用
IS NULL比较来获取AUTO_INCREMENT值的行为是某些ODBC程序,例如Access使用的。请参见获取自增值。可以通过设置sql_auto_is_null到OFF来禁用该行为。默认值
sql_auto_is_null是OFF。 -
System Variable sql_big_selectsScope 全局,会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value ON如果设置为
OFF,MySQL将中止可能需要很长时间执行的SELECT语句(即optimizer估计的检查行数超过max_join_size的值)。这对于在SELECT语句中发出不良WHERE子句时非常有用。新连接的默认值为ON,允许所有SELECT语句。如果将
max_join_size系统变量设置为除DEFAULT之外的值sql_big_selects将设置为OFF。 -
System Variable sql_buffer_resultScope 全局,会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF如果启用,
sql_buffer_result将强制将SELECT语句的结果存储在临时表中。这可以帮助 MySQL 早期释放表锁定,并在将结果发送给客户端时可以节省时间。默认值为OFF. -
sql_generate_invisible_primary_keyCommand-Line Format --sql-generate-invisible-primary-key[={OFF|ON}]System Variable sql_generate_invisible_primary_keyScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF是否将生成不可见的主键添加到任何
InnoDB表中,如果该表没有自动生成主键。这个变量不被复制。即使在副本上设置了该变量,它也将被忽略;这意味着,副本默认情况下不会为复制的表生成主键,如果源端的表没有自动生成主键。您可以通过在
CHANGE REPLICATION SOURCE TO语句中设置REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE,以便在副本上生成不可见的主键。更多信息和示例,请见
Section 15.1.20.11, “Generated Invisible Primary Keys”. -
System Variable sql_log_offScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFFValid Values OFF(启用日志记录)ON(禁用日志记录)这个变量控制当前会话是否禁用一般查询日志记录(假设一般查询日志本身是启用的)。默认值为
OFF(启用日志记录)。要禁用或启用当前会话的日志记录,可以将会话sql_log_off变量设置为ON或OFF.设置会话变量的操作是受限的。会话用户必须具有足够的权限来设置受限的会话变量。见
Section 7.1.9.1, “System Variable Privileges”. -
Command-Line Format --sql-mode=nameSystem Variable sql_modeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 设置 Default Value ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTIONValid Values ALLOW_INVALID_DATESANSI_QUOTESERROR_FOR_DIVISION_BY_ZEROHIGH_NOT_PRECEDENCEIGNORE_SPACENO_AUTO_VALUE_ON_ZERONO_BACKSLASH_ESCAPESNO_DIR_IN_CREATENO_ENGINE_SUBSTITUTIONNO_UNSIGNED_SUBTRACTIONNO_ZERO_DATENO_ZERO_IN_DATEONLY_FULL_GROUP_BYPAD_CHAR_TO_FULL_LENGTHPIPES_AS_CONCATREAL_AS_FLOATSTRICT_ALL_TABLESSTRICT_TRANS_TABLESTIME_TRUNCATE_FRACTIONAL当前服务器 SQL 模式,可以动态设置。详细信息,请参见第7.1.11节,“服务器 SQL 模式”。
NoteMySQL 安装程序可能在安装过程中配置 SQL 模式。
如果 SQL 模式与默认值或您期望的值不同,请检查服务器在启动时读取的选项文件中是否存在设置。
-
如果启用(默认),诊断将增加
Note级别的warning_count,并将其记录到服务器中。如果禁用,Note诊断将不增加warning_count,并且服务器将不记录它们。 mysqldump 包含了禁用该变量的输出,以便在重新加载dump文件时不产生警告,以免影响重新加载操作的完整性。 -
System Variable sql_quote_show_createScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value ON如果启用(默认),服务器将对
SHOW CREATE TABLE和SHOW CREATE DATABASE语句的标识符进行引用。如果禁用,引用将被禁用。这项选项默认启用,以便在需要引用时的复制工作。请参阅第15.7.7.11节,“SHOW CREATE TABLE Statement”和第15.7.7.7节,“SHOW CREATE DATABASE Statement”。 -
Command-Line Format --sql-require-primary-key[={OFF|ON}]System Variable sql_require_primary_keyScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF是否在创建新表或更改现有表的结构时强制要求表具有主键。
设置会话值的系统变量是受限制的操作。会话用户必须具有足够的权限以设置受限制的会话变量。请参阅第7.1.9.1节,“System Variable Privileges”。
启用该变量可以避免在没有主键的表上进行的更新或删除操作可能引起的性能问题。在复制源服务器上,这些操作可以使用单个表扫描,但在使用行基于复制时,结果是对每个要修改的行进行表扫描。具有主键的表扫描不再出现。
sql_require_primary_key适用于基本表和TEMPORARY表,并且对其值的更改将被复制到副本服务器。表必须使用支持复制的MySQL存储引擎。启用
sql_require_primary_key将产生以下效果:-
尝试创建一个没有主键的新表将失败,并且包括CREATE TABLE ... LIKE和CREATE TABLE ... SELECT。在CREATE TABLE部分包括主键定义除外。
-
尝试从现有表中删除主键将失败,唯一的例外是ALTER TABLE语句中同时删除主键并添加主键。
删除主键失败,即使表还包含一个
唯一不可空索引。 -
尝试导入没有主键的表将失败并出现错误。
REQUIRE_TABLE_PRIMARY_KEY_CHECK选项是CHANGE REPLICATION SOURCE TO语句的 replica 可以选择自己的主键检查策略。当该选项设置为ON时,对于一个复制通道,replica 始终使用ON的值作为sql_require_primary_key系统变量在复制操作中,要求主键。当该选项设置为OFF时,对于一个复制通道,replica 始终使用OFF的值作为sql_require_primary_key系统变量在复制操作中,不要求主键。在REQUIRE_TABLE_PRIMARY_KEY_CHECK选项设置为STREAM时(这是默认值),replica 使用来自源的每个事务的值。使用STREAM设置REQUIRE_TABLE_PRIMARY_KEY_CHECK选项时,如果对复制通道启用了权限检查,PRIVILEGE_CHECKS_USER帐户需要足够的权限来设置受限的会话变量,以便将sql_require_primary_key系统变量的会话值。使用ON或OFF设置时,不需要这些权限。更多信息,请参见第19.3.3节,“Replication Privilege Checks”。 -
-
System Variable sql_safe_updatesScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value OFF如果该变量启用,
UPDATE和DELETE语句不使用键在WHERE子句或LIMIT子句中将产生错误。这使得可以捕捉UPDATE和DELETE语句,其中键未正确使用,并将可能改变或删除大量行。默认值为OFF。对于mysql客户端,
sql_safe_updates可以通过使用--safe-updates选项启用。更多信息,请见使用安全更新模式 (--safe-updates)。 -
System Variable sql_select_limitScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 18446744073709551615Minimum Value 0Maximum Value 18446744073709551615SELECT 语句返回的最大行数。更多信息,请见使用安全更新模式 (--safe-updates)。
新连接的默认值是服务器允许的每个表的最大行数。典型的默认值是(232)−1 或(264)−1。如果您已经更改了限制,可以通过将值设置为
DEFAULT来恢复默认值。如果SELECT语句具有
LIMIT子句,LIMIT将优先于sql_select_limit的值。 -
System Variable sql_warningsScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF该变量控制单行
INSERT语句是否生成警告信息字符串。如果发生警告,服务器将生成信息字符串。默认值为OFF。将值设置为ON以生成信息字符串。 -
Command-Line Format --ssl-ca=file_nameSystem Variable ssl_caScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL该变量指定了证书授权机构(CA)证书文件的路径名。文件包含了PEM格式的证书授权机构列表。
该变量可以在运行时修改,以影响服务器用于新连接的TLS上下文,该连接在执行
ALTER INSTANCE RELOAD TLS或重启后如果变量值被持久化。见Server-Side Runtime Configuration and Monitoring for Encrypted Connections. -
Command-Line Format --ssl-capath=dir_nameSystem Variable ssl_capathScope 全局 Dynamic 是 SET_VARHint Applies否 Type 目录名称 Default Value NULL包含PEM格式的受信任SSL证书_authority(CA)证书文件的目录路径。
该变量可以在运行时修改,以影响服务器用于新连接的TLS上下文,该连接在执行
ALTER INSTANCE RELOAD TLS或重启后如果变量值被持久化。见Server-Side Runtime Configuration and Monitoring for Encrypted Connections. -
Command-Line Format --ssl-cert=file_nameSystem Variable ssl_certScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名称 Default Value NULL服务器SSL公钥证书文件的路径名称,格式为PEM。
如果服务器以
ssl_cert设置为使用任何受限加密或加密类别的证书,服务器启动时将禁用加密连接支持。关于加密限制的信息,请见Connection Cipher Configuration.该变量可以在运行时修改,以影响服务器用于新连接的TLS上下文,该连接在执行
ALTER INSTANCE RELOAD TLS或重启后如果变量值被持久化。见Server-Side Runtime Configuration and Monitoring for Encrypted Connections. -
Command-Line Format --ssl-cipher=nameSystem Variable ssl_cipherScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL用于TLSv1.2加密连接的加密cipher列表。如果列表中没有支持的cipher,使用该TLS协议的加密连接将无法工作。
列表可能包括以下值:
-
ECDHE-ECDSA-AES128-GCM-SHA256 -
ECDHE-ECDSA-AES256-GCM-SHA384 -
ECDHE-RSA-AES128-GCM-SHA256 -
ECDHE-RSA-AES256-GCM-SHA384 -
ECDHE-ECDSA-CHACHA20-POLY1305 -
ECDHE-RSA-CHACHA20-POLY1305 -
ECDHE-ECDSA-AES256-CCM -
ECDHE-ECDSA-AES128-CCM -
DHE-RSA-AES128-GCM-SHA256 -
DHE-RSA-AES256-GCM-SHA384 -
DHE-RSA-AES256-CCM -
DHE-RSA-AES128-CCM -
DHE-RSA-CHACHA20-POLY1305
尝试将不在这里显示的cipher值添加到cipher列表中时,会引发错误(
ER_BLOCKED_CIPHER)。为了获得最佳可移植性,cipher列表应该是cipher名称的列表,使用冒号分隔。以下示例显示了两个cipher名称之间使用冒号:
[mysqld] ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"OpenSSL支持 OpenSSL文档中描述的cipher语法,见https://www.openssl.org/docs/manmaster/man1/ciphers.html。
关于MySQL支持的加密cipher列表,请见Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”。
这个变量可以在运行时修改,以影响服务器用于新连接的TLS上下文。见Server-Side Runtime Configuration and Monitoring for Encrypted Connections。
-
-
Command-Line Format --ssl-crl=file_nameSystem Variable ssl_crlScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL包含证书撤销列表的文件路径,以PEM格式。
该变量可以在运行时修改,以影响服务器在执行
ALTER INSTANCE RELOAD TLS或重启后新建立的连接的TLS上下文。见服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-crlpath=dir_nameSystem Variable ssl_crlpathScope 全局 Dynamic 是 SET_VARHint Applies否 Type 目录名称 Default Value NULL包含PEM格式证书撤销列表文件的目录路径。
该变量可以在运行时修改,以影响服务器在执行
ALTER INSTANCE RELOAD TLS或重启后新建立的连接的TLS上下文。见服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-fips-mode={OFF|ON|STRICT}Deprecated 是 System Variable ssl_fips_modeScope 全局 Dynamic 否 SET_VARHint Applies否 Type 枚举 Default Value OFFValid Values OFF(或 0)ON(或 1)STRICT(或 2)控制服务器端是否启用FIPS模式。该
ssl_fips_mode系统变量不同于其他xxx">ssl_系统变量,因为它不是控制服务器是否允许加密连接,而是影响哪些加密操作被允许。见第8.8节,“FIPS支持”。xxx这些
ssl_fips_mode值是允许的:-
OFF(或 0):禁用FIPS模式。 -
ON(或 1):启用FIPS模式。 -
STRICT(或 2):启用“严格”FIPS模式。
Note如果 OpenSSL FIPS 对象模块不可用,唯一允许的
ssl_fips_mode值是OFF。在这种情况下,设置ssl_fips_mode到ON或STRICT将导致服务器产生错误信息并退出。这个选项已经弃用,并且已经设置为只读。预计在未来的 MySQL 版本中将其删除。
-
-
Command-Line Format --ssl-key=file_nameSystem Variable ssl_keyScope 全局 Dynamic 是 SET_VARHint Applies否 Type 文件名 Default Value NULL服务器 SSL 私钥文件的路径名,以 PEM 格式。为了更好的安全性,使用RSA 密钥大小至少2048 位的证书。
如果密钥文件被保护密码,服务器将提示用户输入密码。密码不能存储在文件中。如果密码错误,程序将继续像不能读取密钥一样。
这个变量可以在运行时修改,以影响服务器用于新连接的TLS上下文。见Server-Side Runtime Configuration and Monitoring for Encrypted Connections。
-
Command-Line Format --ssl_session_cache_mode={ON|OFF}System Variable ssl_session_cache_modeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value ONValid Values ONOFF控制服务器是否启用内存会话缓存和会话票据生成。默认模式是
ON(启用会话缓存模式)。将ssl_session_cache_mode系统变量的更改将在执行ALTER INSTANCE RELOAD TLS语句或重启后生效,如果变量值被持久化。这些
ssl_session_cache_mode值是允许的:-
ON:启用会话缓存模式。 -
OFF:禁用会话缓存模式。
服务器不在广告支持会话恢复,如果该系统变量的值为
OFF。在运行 OpenSSL 1.0.x 时,会话票据总是生成,但是票据在ssl_session_cache_mode启用时不可用。当前
ssl_session_cache_mode的值可以通过Ssl_session_cache_mode状态变量观察。 -
-
Command-Line Format --ssl_session_cache_timeoutSystem Variable ssl_session_cache_timeoutScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 300Minimum Value 0Maximum Value 84600Unit 秒 设置了在建立新加密连接到服务器时,允许重新使用先前的会话的时间段,条件是
ssl_session_cache_mode系统变量启用且先前的会话数据可用。如果会话超时,会话不能再被重新使用。默认值为 300 秒,最大值为 84600(或一天的秒数)。对
ssl_session_cache_timeout系统变量的更改,只在ALTER INSTANCE RELOAD TLS语句执行后或在重启时生效。当前ssl_session_cache_timeout的值可以通过Ssl_session_cache_timeout状态变量观察。 -
Command-Line Format --stored-program-cache=#System Variable stored_program_cacheScope Global Dynamic Yes SET_VARHint AppliesNo Type Integer Default Value 256Minimum Value 16Maximum Value 524288设置了软上限,用于存储程序每个连接的缓存数量。该变量的值是根据存储程序在 MySQL 服务器中维护的两个缓存中,分别用于存储存储程序和存储函数的数量。
每当存储程序被执行时,这个缓存大小将在首次或顶级语句在程序中被解析之前被检查;如果同类型的存储程序(存储程序或存储函数)数量超过指定的限制,该对应的缓存将被刷新,并之前为缓存对象分配的内存将被释放。这允许缓存安全地刷新,即使存在存储程序之间的依赖关系。
存储程序和存储函数缓存在与字典对象缓存的存储程序定义缓存部分并行存在。存储程序和存储函数缓存在每个连接上,而存储程序定义缓存在共享上。存储程序和存储函数缓存中的对象存在与字典对象缓存中的对象存在无关联,反之亦然。更多信息,请见第16.4节,“字典对象缓存”。
-
stored_program_definition_cacheCommand-Line Format --stored-program-definition-cache=#System Variable stored_program_definition_cacheScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 256Minimum Value 256Maximum Value 524288定义了字典对象缓存中存储程序定义对象的数量限制,包括已使用和未使用的对象。
未使用的存储程序定义对象仅在在使用的数量少于缓存容量时在字典对象缓存中保留。
设置为0意味着存储程序定义对象仅在使用时在字典对象缓存中保留。
存储程序定义缓存分区与使用
stored_program_cache选项配置的存储程序和存储函数缓存并行存在。选项
stored_program_cache设置了每个连接的存储程序或函数缓存的软上限,每次连接执行存储程序或函数时都会检查该限制。存储程序定义缓存分区则是共享缓存,用于存储其他用途的存储程序定义对象。存储程序定义缓存分区中的对象存在与存储程序缓存或存储函数缓存中的对象存在无关联,反之亦然。相关信息,请见第16.4节,“字典对象缓存”。
-
Command-Line Format --super-read-only[={OFF|ON}]System Variable super_read_onlyScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF如果
read_only系统变量启用,服务器允许的客户端更新仅来自拥有CONNECTION_ADMIN特权(或弃用的SUPER特权)的用户。如果super_read_only系统变量也启用,服务器禁止客户端更新,即使用户拥有CONNECTION_ADMIN或SUPER特权。请参阅read_only系统变量的描述,以了解读写模式的描述和read_only和super_read_only的交互信息。在
super_read_only启用时,客户端更新将被阻止,包括不一定看起来像更新的操作,如CREATE FUNCTION(安装可加载函数)、INSTALL PLUGIN和INSTALL COMPONENT。这些操作被禁止,因为它们涉及到mysql系统架构中的表。类似地,如果事件调度器启用,启用
super_read_only系统变量将阻止事件调度器更新事件“last executed”时间戳在events数据字典表中。这将导致事件调度器在下一次尝试执行计划事件时停止,并将错误信息写入服务器日志。 (在这种情况下,event_scheduler系统变量不会从ON切换到OFF。这意味着该变量将拒绝DBAintent,即使实际状态可能不同。) 如果super_read_only后续被禁用,服务器将自动重新启动事件调度器。在复制源服务器上更改
super_read_only的值不会被复制到副本服务器。该值可以在副本服务器上独立设置。 -
Command-Line Format --syseventlog.facility=valueSystem Variable syseventlog.facilityScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value 守护进程在
syslog中写入错误日志的facility(是什么类型的程序发送了消息)。这个变量在log_sink_syseventlog错误日志组件安装时不可用。请参阅第7.4.2.8节,“系统日志错误记录”。允许的值可能因操作系统而异,请查看您的系统
syslog文档。这个变量在 Windows 上不可用。
-
Command-Line Format --syseventlog.include-pid[={OFF|ON}]System Variable syseventlog.include_pidScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value 是是否将服务器进程ID添加到每行错误日志输出中,写入到
syslog中。这一个变量在log_sink_syseventlog错误日志组件安装时不可用。请参阅第7.4.2.8节,“系统日志错误记录”。这个变量在 Windows 上不可用。
-
Command-Line Format --syseventlog.tag=tagSystem Variable syseventlog.tagScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value 空字符串在
syslog或 Windows 事件日志中添加的标签。这个变量在log_sink_syseventlog错误日志组件安装时不可用。请参阅第7.4.2.8节,“系统日志错误记录”。默认情况下,不设置标签,因此服务器标识符将是
MySQL在 Windows 上,mysqld在其他平台上。如果指定的标签值为tag,则将其追加到服务器标识符的开头,结果是syslog标识符为mysqld-(或tagMySQL-在 Windows 上)。tag在 Windows 上,要使用不已经存在的标签,服务器必须以管理员权限运行,以便创建标签的注册表项。已存在的标签不需要管理员权限。
-
System Variable system_time_zoneScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 服务器系统时间区。服务器启动时,继承自机器默认的时间区,可能受到运行服务器或启动脚本的环境变量的修改。该值用于设置
system_time_zone。要显式指定系统时间区,可以设置环境变量TZ或使用--timezone选项的mysqld_safe脚本。此外,在服务器主机时间区变化(例如, daylight saving time)时,
system_time_zone反映该变化,这对应用程序有以下影响:-
引用
system_time_zone的查询将在日光节省时间变化前和后获取不同的值。 -
对于在日光节省时间变化前开始执行并在变化后结束的查询,
system_time_zone在查询中保持不变,因为该值通常在执行开始时缓存。
system_time_zone变量不同于time_zone变量。虽然它们可能具有相同的值,但后者用于初始化每个客户端连接的时间区。请参阅第7.1.15节,“MySQL Server Time Zone Support”。 -
-
Command-Line Format --table-definition-cache=#System Variable table_definition_cacheScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value -1(表示自动调整;不要分配该字面值)Minimum Value 400Maximum Value 524288可以存储在表定义缓存中的表定义数量。如果您使用大量表,可以创建一个大型表定义缓存以加速表打开。表定义缓存使用更少的空间,不像正常表缓存那样使用文件描述符。最小值为400。默认值基于以下公式, capped to a limit of 2000:
MIN(400 + table_open_cache / 2, 2000)对于
InnoDB,table_definition_cache设置作为对表实例在字典对象缓存和文件表空间的软限制,可以同时打开的文件表空间数量。如果字典对象缓存中的表实例数量超过
table_definition_cache限制,LRU机制将开始标记表实例为删除,并最终从字典对象缓存中删除它们。由于包含外键关系的表实例,不会被LRU列表中标记。可以同时打开的文件表空间数量受到
table_definition_cache和innodb_open_files设置的限制。如果两个变量都设置,则使用最高设置。如果两个变量都未设置,则使用table_definition_cache设置,该设置的默认值更高。如果打开的表空间数量超过table_definition_cache或innodb_open_files定义的限制,LRU机制将搜索LRU列表中的文件表空间,寻找已经flush完毕且不在扩展中的文件表空间。每次打开新的文件表空间时都会执行这个过程。只关闭不活动的文件表空间。表定义缓存与字典对象缓存的表定义缓存部分并行存在。两个缓存存储表定义,但服务于MySQL服务器的不同部分。缓存中的对象之间没有相互依赖关系。更多信息,请见第16.4章,“字典对象缓存”。
-
table_encryption_privilege_checkCommand-Line Format --table-encryption-privilege-check[={OFF|ON}]System Variable table_encryption_privilege_checkScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF控制
TABLE_ENCRYPTION_ADMIN特权检查,该检查在创建或更改加密的架构或通用表空间时发生,或者在创建或更改加密设置不同的表时发生。该检查默认禁用。在运行时设置
table_encryption_privilege_check需要SUPER特权。table_encryption_privilege_check支持SET PERSIST和SET PERSIST_ONLY语法。请见第7.1.9.3节,“Persisted System Variables”。更多信息,请见定义架构和通用表空间的加密默认值。
-
Command-Line Format --table-open-cache=#System Variable table_open_cacheScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 4000Minimum Value 1Maximum Value 524288所有线程的打开表的数量。增加该值将增加mysqld所需的文件描述符数量。该变量的实际值是
open_files_limit- 10 -和max_connections/ 2的实际值的较大值,以及400;即MAX( (open_files_limit - 10 - max_connections) / 2, 400 )您可以检查是否需要增加表缓存的大小,通过检查
Opened_tables状态变量。如果Opened_tables的值很大,您不经常使用FLUSH TABLES(强制所有表关闭并重新打开),那么您应该增加table_open_cache变量的值。关于表缓存的更多信息,请见第10.4.3.1节,“MySQL如何打开和关闭表”。 -
Command-Line Format --table-open-cache-instances=#System Variable table_open_cache_instancesScope Global Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 16Minimum Value 1Maximum Value 64表缓存实例的数量。为了提高可扩展性,减少会话之间的竞争,可以将表缓存分割成多个较小的缓存实例,每个实例的大小为
table_open_cache/table_open_cache_instances。会话需要锁定一个实例来访问它,以便执行DML语句。这将将缓存访问分配到多个实例中,从而提高性能在有许多会话访问表时。 (DDL语句仍然需要锁定整个缓存,但DDL语句的频率远远低于DML语句。)8或16是推荐的设置,在系统中使用16或更多核心时。然而,如果您有许多大型触发器在您的表中,这些触发器会导致高内存负载,那么默认的
table_open_cache_instances设置可能会导致内存使用过高。在这种情况下,可以将table_open_cache_instances设置为1,以限制内存使用。 -
Command-Line Format --tablespace-definition-cache=#System Variable tablespace_definition_cacheScope Global Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 256Minimum Value 256Maximum Value 524288定义了表空间定义对象的限制,包括已使用和未使用的对象,可以在字典对象缓存中保留的数量。
未使用的表空间定义对象仅在字典对象缓存中保留,直到使用的数量少于由
tablespace_definition_cache定义的容量。设置为
0时,表空间定义对象仅在使用时保留在字典对象缓存中。更多信息,请见第16.4节,“字典对象缓存”。
-
Command-Line Format --temptable-max-mmap=#System Variable temptable_max_mmapScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 2^64-1Unit 字节 定义了TempTable存储引擎可以从内存映射临时文件中分配的最大内存量(以字节为单位),以避免将数据写入到
InnoDB内部临时表中。设置为0(默认)将禁用从内存映射临时文件中分配内存。更多信息,请见第10.4.4节,“MySQL中内部临时表的使用”。在MySQL 8.4之前,这个选项设置为1 GiB,而不是0。
-
Command-Line Format --temptable-max-ram=#System Variable temptable_max_ramScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 3% of total memory: min 1 GB, max 4 GBMinimum Value 2097152Maximum Value 2^64-1Unit 字节 定义了TempTable存储引擎可以占用的最大内存量,以避免将数据写入到磁盘中。默认值是服务器上的总内存的3%,但最小值和最大值为1-4 GiB。更多信息,请见第10.4.4节,“MySQL中内部临时表的使用”。
在MySQL 8.4之前,默认值为总内存的1 GiB。
-
Command-Line Format --temptable-use-mmap[={OFF|ON}]Deprecated 是 System Variable temptable_use_mmapScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF定义了TempTable存储引擎是否将内存中临时表的空间分配为内存映射临时文件,当TempTable存储引擎占用的内存超过由
temptable_max_ram变量定义的限制时。禁用temptable_use_mmap(默认)时,TempTable存储引擎使用InnoDB磁盘内部临时表。更多信息,请见第10.4.4节,“MySQL中内部临时表的使用”。 -
Command-Line Format --thread-cache-size=#System Variable thread_cache_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value -1(表示自动调整;不要分配该字面值)Minimum Value 0Maximum Value 16384服务器应该缓存多少线程以供重用。当客户端断开连接,客户端的线程将被缓存在缓存中,如果缓存中有少于
thread_cache_size个线程。请求线程将被满足通过重用缓存中的线程,如果可能,然后才创建新的线程。这個变量可以增加以提高性能,如果您有很多新的连接。通常,这不会提供明显的性能改进,如果您有一个良好的线程实现。然而,如果您的服务器每秒看到数百个连接,您应该将thread_cache_size设置高 enough,以便大多数新的连接使用缓存线程。通过检查Connections和Threads_created状态变量,您可以看到线程缓存的效率。详细信息,请见第7.1.10节,“服务器状态变量”。默认值基于以下公式, capped to a limit of 100:
8 + (max_connections / 100) -
Command-Line Format --thread-handling=nameSystem Variable thread_handlingScope 全局 Dynamic 否 SET_VARHint Applies否 Type 枚举 Default Value one-thread-per-connectionValid Values no-threadsone-thread-per-connectionloaded-dynamically服务器用于连接线程的处理模型。允许的值是
no-threads(服务器使用单个线程处理一个连接)、one-thread-per-connection(服务器使用一个线程处理每个客户端连接)和loaded-dynamically(由线程池插件在初始化时设置)。no-threads对于 Linux 调试非常有用;见第7.9节,“Debugging MySQL”。 -
Command-Line Format --thread-pool-algorithm=#System Variable thread_pool_algorithmScope Global Dynamic No SET_VARHint AppliesNo Type Integer Default Value 0Minimum Value 0Maximum Value 1该变量控制线程池插件使用的算法:
-
0: 使用保守的低并发算法。 -
1: 使用激进的高并发算法,性能可能会在极高连接数时下降。
该变量仅在线程池插件启用时可用。见第7.6.3节,“MySQL Enterprise Thread Pool”。
-
-
thread_pool_dedicated_listenersCommand-Line Format --thread-pool-dedicated-listenersSystem Variable thread_pool_dedicated_listenersScope Global Dynamic No SET_VARHint AppliesNo Type Boolean Default Value OFF将每个线程组中的一个监听线程分配给连接,以便从连接中接收语句。
-
OFF: (默认) 不启用专门的监听线程。 -
ON: 将每个线程组中的一个监听线程分配给连接,以便从连接中接收语句。专门的监听线程不执行查询。
启用
thread_pool_dedicated_listeners仅在定义了thread_pool_max_transactions_limit时有用。否则,thread_pool_dedicated_listeners不应该启用。MySQL HeatWave 服务使用该变量,该变量仅在 MySQL Enterprise Edition 中可用,并且在 MySQL 8.4 中不受支持。
-
-
thread_pool_high_priority_connectionCommand-Line Format --thread-pool-high-priority-connection=#System Variable thread_pool_high_priority_connectionScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 1该变量影响执行前语句的排队。 如果值为0(false,缺省),语句排队使用低优先级和高优先级队列。如果值为1(true),排队语句总是进入高优先级队列。
该变量仅在启用线程池插件时可用。请参阅第7.6.3节,“MySQL Enterprise Thread Pool”。
-
thread_pool_max_active_query_threadsCommand-Line Format --thread-pool-max-active-query-threadsSystem Variable thread_pool_max_active_query_threadsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 512每个组中的活动(运行)查询线程的最大允许数量。如果值为0,线程池插件使用可用的线程数量。
该变量仅在启用线程池插件时可用。请参阅第7.6.3节,“MySQL Enterprise Thread Pool”。
-
thread_pool_max_transactions_limitCommand-Line Format --thread-pool-max-transactions-limitSystem Variable thread_pool_max_transactions_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 1000000线程池插件允许的最大事务数量。定义事务限制将一个线程绑定到事务中,直到它提交,这有助于在高并发情况下稳定通过率。
默认值为0表示没有事务限制。该变量是动态的,但不能在运行时从0更改为更高值或反之。非零值在启动时允许动态配置在运行时。需要
CONNECTION_ADMIN权限来在运行时配置thread_pool_max_transactions_limit。当您定义事务限制时,启用
thread_pool_dedicated_listeners将在每个线程组中创建一个专用监听线程。额外的专用监听线程消耗更多资源,影响线程池性能。因此,thread_pool_dedicated_listeners应该谨慎使用。当
thread_pool_max_transactions_limit定义的限制达到时,新的连接将出现假死状态,直到一个或多个现有事务完成。同样,在尝试在现有连接上启动新事务时也会出现这种情况。如果存在阻塞或长时间运行的连接,可能需要具有特权连接来访问服务器以增加限制、删除限制或杀死运行的事务。见特权连接。MySQL HeatWave 服务使用该变量,该变量仅在 MySQL Enterprise Edition 中可用,不支持在 MySQL 8.4 中。
-
thread_pool_max_unused_threadsCommand-Line Format --thread-pool-max-unused-threads=#System Variable thread_pool_max_unused_threadsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 4096线程池中允许的未使用线程最大数量。这使得可以限制睡眠线程占用的内存。
值为0(默认)意味着没有线程池限制。值为
N,其中N大于0,表示1个消费线程和N−1保留线程。在这种情况下,如果线程准备睡眠,但睡眠线程数量已经达到最大,线程将退出,而不是睡眠。睡眠线程是消费线程或保留线程之一。线程池允许一个线程作为消费线程睡眠。如果线程睡眠,但没有现有消费线程,它将睡眠作为消费线程。当线程需要被唤醒时,将选择消费线程。如果没有消费线程,可以选择保留线程。
该变量仅在启用线程池插件时可用。见Section 7.6.3, “MySQL Enterprise Thread Pool”。
-
Command-Line Format --thread-pool-prio-kickup-timer=#System Variable thread_pool_prio_kickup_timerScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1000Minimum Value 0Maximum Value 4294967294Unit 毫秒 该变量影响等待执行的语句在低优先级队列中的状态。该值是等待语句被移动到高优先级队列的毫秒数。默认值为 1000(1 秒)。
该变量仅在线程池插件启用时可用。请参阅第7.6.3节,“MySQL Enterprise Thread Pool”。
-
thread_pool_query_threads_per_groupCommand-Line Format --thread-pool-query-threads-per-groupSystem Variable thread_pool_query_threads_per_groupScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1Minimum Value 1Maximum Value 4096允许每个线程组中的查询线程数的最大值。最大值为 4096,但如果
thread_pool_max_transactions_limit设置了值,则thread_pool_query_threads_per_group不能超过该值。默认值为 1,这意味着每个线程组中只有一个活动查询线程,这在许多负载下工作良好。使用高并发线程池算法(
thread_pool_algorithm = 1)时,考虑增加值以解决因长事务而导致的响应时间延迟。需要
CONNECTION_ADMIN特权来在运行时配置thread_pool_query_threads_per_group。如果在运行时减少
thread_pool_query_threads_per_group的值,当前运行用户查询的线程将被允许完成,然后移到保留池或终止。如果在运行时增加该值,并且线程组需要更多线程,这些线程将从保留池中获取,如果可能,则创建新的线程。MySQL HeatWave 服务使用该变量,该变量仅在 MySQL Enterprise Edition 中可用,并且不支持 MySQL 8.4。
-
Command-Line Format --thread-pool-size=#System Variable thread_pool_sizeScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 16Minimum Value 1Maximum Value 512线程池中的线程组数。这是控制线程池性能的最重要参数。它影响了多少个语句可以同时执行。如果指定的值超出了允许的范围,线程池插件将不加载,服务器将在错误日志中写入一条消息。
这个变量只有在启用线程池插件时可用。见第7.6.3节,“MySQL Enterprise Thread Pool”。
-
Command-Line Format --thread-pool-stall-limit=#System Variable thread_pool_stall_limitScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 6Minimum Value 4Maximum Value 600Unit 毫秒 * 10 这个变量影响执行语句。值是语句开始执行后需要等待的时间,以便在语句变为阻塞状态时开始执行另一个语句。值以10毫秒为单位,故默认的6表示60ms。短的等待值允许线程更快地启动。短的值也更适合避免死锁情况。长的等待值对包含长时间运行语句的工作负载非常有用,以避免在当前语句执行时启动太多新的语句。
这个变量只有在启用线程池插件时可用。见第7.6.3节,“MySQL Enterprise Thread Pool”。
-
Command-Line Format --thread-pool-transaction-delaySystem Variable thread_pool_transaction_delayScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 0Minimum Value 0Maximum Value 300000执行新事务前的延迟期限,以毫秒为单位。最大值为300000(5分钟)。
在并发事务影响其他操作的性能时,可以使用事务延迟。例如,如果并发事务影响索引创建或在线缓冲池重置操作,可以配置事务延迟以减少资源竞争在这些操作执行时。
工作线程睡眠指定的毫秒数,以便执行新事务。
thread_pool_transaction_delay设置不影响来自特权连接(分配给Admin线程组)的查询。这些查询不受配置的事务延迟影响。 -
Command-Line Format --thread-stack=#System Variable thread_stackScope 全局 Dynamic 否 SET_VARHint Applies否 Type 整数 Default Value 1048576Minimum Value 131072Maximum Value (64-bit platforms) 18446744073709550592Maximum Value (32-bit platforms) 4294966272Unit 字节 Block Size 1024每个线程的堆栈大小。默认值足以满足正常操作。如果线程堆栈大小太小,它将限制服务器可以处理的SQL语句的复杂度、存储过程的递归深度和其他内存消耗的操作。
-
System Variable time_zoneScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 字符串 Default Value SYSTEMMinimum Value -13:59Maximum Value +14:00当前时区。这個變數用於初始化每个客户端连接的时区。默认情况下,这個变量的初始值是
'SYSTEM'(即使用system_time_zone的值)。该值可以在服务器启动时使用--default-time-zone选项指定。请参阅第7.1.15节,“MySQL Server Time Zone Support”。Note如果设置为
SYSTEM,每个MySQL函数调用都需要时间戳计算时将调用系统库函数来确定当前系统时区。这可能会受到全局锁定的保护,从而导致竞争。 -
System Variable timestampScope 会话 Dynamic 是 SET_VARHint Applies是 Type 数字 Default Value UNIX_TIMESTAMP()Minimum Value 1Maximum Value 2147483647设置这个客户端的时间。这用于从二进制日志中恢复行。
timestamp_value应该是一个Unix epoch时间戳(类似于UNIX_TIMESTAMP()的值,而不是'格式的值)或YYYY-MM-DD hh:mm:ss'DEFAULT。将
timestamp设置为常量值使其保持该值直到它被再次更改。将timestamp设置为DEFAULT使其值为当前日期和时间,以便在访问时获取。timestamp是一个DOUBLE而不是BIGINT,因为其值包括微秒部分。最大值对应于'2038-01-19 03:14:07'UTC,与TIMESTAMP数据类型相同。SET timestamp影响NOW()返回的值,但不影响SYSDATE()。这意味着在二进制日志中设置的时间戳设置对SYSDATE()的调用没有影响。服务器可以使用--sysdate-is-now选项来使SYSDATE()成为NOW()的同义词,在这种情况下SET timestamp影响两个函数。 -
tls_certificates_enforced_validationCommand-Line Format --tls-certificates-enforced-validation[={OFF|ON}]System Variable tls_certificates_enforced_validationScope Global Dynamic No SET_VARHint AppliesNo Type Boolean Default Value OFF在启动时,服务器确保每个必要的SSL证书文件的位置在默认数据目录中,如果命令行上没有提供文件位置。然而,服务器不验证证书文件,因此可以在启动时使用无效证书。系统变量
tls_certificates_enforced_validation控制是否在启动时强制证书验证。发现无效证书时,启用验证强制时启动执行将被中断。默认情况下,证书验证强制是禁用的(OFF)。验证强制可以通过在命令行中指定
--tls-certificates-enforced-validation选项来启用,或者不带ON值。启用验证强制后,证书也将在通过ALTER INSTANCE RELOAD TLS语句时被验证。这系统变量不能在重启时持久化。更多信息,请见配置证书验证强制。 -
Command-Line Format --tls-ciphersuites=ciphersuite_listSystem Variable tls_ciphersuitesScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL服务器允许的加密连接使用TLSv1.3的加密套件列表。值是一个或多个以冒号分隔的加密套件名称,从以下列表中选择:
-
TLS_AES_128_GCM_SHA256 -
TLS_AES_256_GCM_SHA384 -
TLS_CHACHA20_POLY1305_SHA256 -
TLS_AES_128_CCM_SHA256
尝试将不在这里列出的值添加到加密套件列表中时,会引发错误(
ER_BLOCKED_CIPHER)。可以为该变量命名的加密套件取决于MySQL使用的SSL库。如果该变量没有设置,它的默认值是
NULL第8.3.2节,“加密连接TLS协议和加密套件”。 -
-
Command-Line Format --tls-version=protocol_listSystem Variable tls_versionScope 全局Dynamic 是SET_VARHint Applies否Type 字符串Default Value TLSv1.2,TLSv1.3服务器允许的加密连接协议。值是一个或多个以逗号分隔的协议名称,不区分大小写。可以命名的协议取决于MySQL使用的SSL库。选择的协议应该避免留下“空洞”。更多信息,请见第8.3.2节,“加密连接TLS协议和加密套件”。该变量可以在运行时修改,以影响服务器用于新连接的TLS上下文。见服务器端运行时配置和监控加密连接。
Important-
MySQL 8.4不支持TLSv1和TLSv1.1连接协议。见TLSv1和TLSv1.1协议的移除支持以获取更多信息。
-
MySQL 8.4支持TLSv1.3协议,但前提是MySQL Server使用OpenSSL 1.1.1或更高版本编译。服务器在启动时检查OpenSSL版本,如果低于1.1.1,TLSv1.3将从默认值中删除。在这种情况下,默认值为
TLSv1.2。
-
-
Command-Line Format --tmp-table-size=#System Variable tmp_table_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 整数 Default Value 16777216Minimum Value 1024Maximum Value 18446744073709551615Unit 字节 定义了内存中临时表的最大大小,这些表由MEMORY和TempTable存储引擎创建。如果内存中临时表超过这个大小,它将自动转换为磁盘临时表。
变量
tmp_table_size不适用于用户创建的MEMORY表。用户创建的TempTable表不受支持。使用MEMORY存储引擎为内存中临时表时,实际大小限制是
tmp_table_size和max_heap_table_size的较小值。设置max_heap_table_size不适用于TempTable表。如果您执行许多复杂的GROUP BY查询,并且有大量内存,可以增加
tmp_table_size(和max_heap_table_size如果必要)的值,以便使用MEMORY存储引擎创建内存中临时表。您可以通过比较内存磁盘临时表的数量和总的临时表数量来比较。可以比较
Created_tmp_disk_tables和Created_tmp_tables的值。 -
Command-Line Format --tmpdir=dir_nameSystem Variable tmpdirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 用于创建临时文件的目录路径。可能有用的是,如果您的默认
/tmp目录位于一个存储空间太小的分区上。该变量可以设置为多个路径的列表,这些路径将按顺序使用。路径应该使用Unix上的冒号字符(:)或Windows上的分号字符(;)分隔。tmpdir可以是一个非永久的位置,如内存文件系统或重启服务器时清除的目录。如果MySQL服务器作为副本,并且您使用了非永久的位置来设置tmpdir,请考虑为副本设置不同的临时目录使用replica_load_tmpdir变量。对于副本,临时文件用于复制LOAD DATA语句的存储在这个目录中,因此在机器重启时可以存储这些文件,以便在重启后继续复制。关于临时文件存储位置的更多信息,请参见第B.3.3.5节,“MySQL中临时文件的存储位置”。
-
Command-Line Format --transaction-alloc-block-size=#System Variable transaction_alloc_block_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 8192Minimum Value 1024Maximum Value 131072Unit 字节 Block Size 1024每个事务内存池的增加量(以字节为单位)。请参见
transaction_prealloc_size的描述。 -
Command-Line Format --transaction-isolation=nameSystem Variable transaction_isolationScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value REPEATABLE-READValid Values READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE事务隔离级别。默认是
REPEATABLE-READ。事务隔离级别有三个作用域:全局、会话和下一个事务。这三个作用域的实现会导致一些非标准的隔离级别分配语义,如后文所述。
在启动时,可以使用
--transaction-isolation服务器选项来设置全局事务隔离级别。在运行时,可以使用
SET语句将transaction_isolation系统变量的值分配给一个名称,或者使用SET TRANSACTION语句。如果将transaction_isolation直接设置为一个包含空格的名称,名称应该被包含在引号中,空格被替换为破折号。例如,使用以下SET语句来设置全局值:SET GLOBAL transaction_isolation = 'READ-COMMITTED';设置全局
transaction_isolation值将设置所有后续会话的隔离级别。现有会话不受影响。要设置会话或下一个
transaction_isolation值,使用SET语句。对于大多数会话系统变量,使用这些语句是等效的方式来设置值:SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;如前所述,事务隔离级别有一个下一个事务作用域,除了全局和会话作用域之外。要启用下一个事务作用域,可以使用
SET语句将会话系统变量值分配给transaction_isolation:-
要设置会话隔离级别,可以使用以下语句:
SET @@SESSION.transaction_isolation = value; SET SESSION transaction_isolation = value; SET transaction_isolation = value;对每种语法,这些语义都适用:
-
将会话中所有后续事务的隔离级别设置为指定的隔离级别。
-
在事务中允许使用,但不会影响当前正在进行的事务。
-
如果在事务之间执行,会覆盖任何先前的语句,该语句设置了下一个事务的隔离级别。
-
等同于
SET SESSION TRANSACTION ISOLATION LEVEL(带有SESSION关键字)。
-
-
要设置下一个事务的隔离级别,请使用以下语法:
SET @@transaction_isolation = value;对该语法,这些语义都适用:
-
只将隔离级别设置为下一个单个事务中。
-
后续事务将重新设置为会话隔离级别。
-
在事务中不允许使用。
-
等同于
SET TRANSACTION ISOLATION LEVEL(不带有SESSION关键字)。
-
有关
SET TRANSACTION和transaction_isolation系统变量之间的关系,请参阅第15.3.7节,“SET TRANSACTION Statement”。 -
-
Command-Line Format --transaction-prealloc-size=#Deprecated 是 System Variable transaction_prealloc_sizeScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 4096Minimum Value 1024Maximum Value 131072Unit 字节 Block Size 1024每个事务都有一个内存池,从中各种事务相关的分配都可以从中获取内存。该池的初始大小是
transaction_prealloc_size字节。每次分配都无法从池中获取足够的内存时,池将增加transaction_alloc_block_size字节。事务结束时,池将被截断到transaction_prealloc_size字节。通过将transaction_prealloc_size设置为包含所有语句的单个事务中,可以避免许多malloc()调用。transaction_prealloc_size已弃用,设置该变量现在没有任何影响。预计transaction_prealloc_size将在未来的MySQL版本中被删除。 -
Command-Line Format --transaction-read-only[={OFF|ON}]System Variable transaction_read_onlyScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF事务访问模式。值可以是
OFF(读/写;默认)或ON(只读)。事务访问模式有三个范围:全局、会话和下一个事务。这三个范围的实现导致了一些非标准的访问模式分配语义,如后面所述。
要在启动时设置全局事务访问模式,可以使用
--transaction-read-only服务器选项。在运行时,可以使用
SET语句将值分配给transaction_read_only系统变量,或者使用SET TRANSACTION语句。例如,可以使用以下SET语句设置全局值:SET GLOBAL transaction_read_only = ON;设置全局
transaction_read_only值将设置所有后续会话的访问模式。现有会话不受影响。要设置会话或下一个级别
transaction_read_only值,可以使用SET语句。对于大多数会话系统变量,这些语句是等效的方式来设置值:SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;如前所述,事务访问模式还有一個下一个事务范围,除了全局和会话范围之外。要启用下一个事务范围,可以
SET语句分配会话系统变量值的非标准语义transaction_read_only,-
要设置会话访问模式,可以使用以下语句之一:
SET @@SESSION.transaction_read_only = value; SET SESSION transaction_read_only = value; SET transaction_read_only = value;对于每个语句,这些语义适用:
-
将访问模式设置为所有后续事务中执行的会话。
-
在事务中允许,但不影响当前事务的执行。
-
如果在事务之间执行,则覆盖任何先前的语句设置下一个事务访问模式。
-
对应于
SET SESSION TRANSACTION {READ WRITE | READ ONLY}(带有SESSION关键字)。
-
-
要设置下一个事务访问模式,可以使用以下语句:
SET @@transaction_read_only = value;对于该语句,这些语义适用:
-
将访问模式设置为下一个单个事务中执行的会话。
-
后续事务将重置到会话访问模式。
-
不允许在事务中使用。
-
对应
SET TRANSACTION {READ WRITE | READ ONLY}(不含SESSION关键字)。
-
有关
SET TRANSACTION和与transaction_read_only系统变量的关系,请参见第15.3.7节,“SET TRANSACTION 语句”。 -
-
System Variable unique_checksScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value ON如果设置为1(默认值),则在
InnoDB表中执行secondary索引的唯一性检查。如果设置为0,存储引擎可以假设输入数据中不包含唯一性违规。如果您确定您的数据不包含唯一性违规,可以将其设置为0,以加速大表的导入到InnoDB中。将该变量设置为0不要求存储引擎忽略唯一性违规。引擎仍然可以检查它们并在检测到违规时发出错误信息。
-
Command-Line Format --updatable-views-with-limit[={OFF|ON}]System Variable updatable_views_with_limitScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value 1该变量控制了是否可以在视图中执行更新操作,而视图不包含所有的主键列,如果更新语句包含
LIMIT子句。更新操作是UPDATE或DELETE语句。主键这里指的是PRIMARY KEY或UNIQUE索引,其中不包含NULL值。该变量可以有两个值:
-
1或YES: 发出警告(而不是错误信息)。这是默认值。 -
0或NO: 禁止更新操作。
-
-
System Variable use_secondary_engineScope 会话 Dynamic 是 SET_VARHint Applies是 Type 枚举 Default Value ONValid Values OFFONFORCED为将来使用。
是否执行查询使用辅助引擎。
与HeatWave一起使用。请参阅MySQL HeatWave用户指南。
-
validate_password.xxxvalidate_password组件实现了一组名为validate_password.
xxx的系统变量,这些变量影响该组件的密码测试;请参阅第8.4.3.2节,“密码验证选项和变量”。 -
服务器的版本号。这可能还包括服务器构建或配置信息的后缀。
-debug表示服务器在启用调试支持时构建。 -
System Variable version_commentScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 CMake配置程序有一个
COMPILATION_COMMENT_SERVER选项,允许在构建MySQL时指定注释。这变量包含注释的值。 -
System Variable version_compile_machineScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 服务器二进制文件的类型。
-
System Variable version_compile_osScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 MySQL构建时的操作系统类型。
-
System Variable version_compile_zlibScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 编译时使用的zlib库的版本。
-
Command-Line Format --wait-timeout=#System Variable wait_timeoutScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 28800Minimum Value 1Maximum Value (Windows) 2147483Maximum Value (Other) 31536000Unit 秒 服务器等待非交互连接上的活动时间,以便关闭连接。
线程启动时,会话
wait_timeout值将从全局wait_timeout值或全局interactive_timeout值初始化,取决于客户端类型(由mysql_real_connect()中的CLIENT_INTERACTIVE连接选项定义)。请参见interactive_timeout。 -
上一个语句生成的错误、警告和注意的数量。这变量是只读的。请参见Section 15.7.7.41, “SHOW WARNINGS Statement”。
-
Command-Line Format --windowing-use-high-precision[={OFF|ON}]System Variable windowing_use_high_precisionScope 全局、会话 Dynamic 是 SET_VARHint Applies是 Type 布尔 Default Value ON是否计算窗口操作不失精度。请参见Section 10.2.1.21, “Window Function Optimization”。
-
Command-Line Format --xa-detach-on-prepare[={OFF|ON}]System Variable xa_detach_on_prepareScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value ON当设置为
ON(启用)时,所有XA事务将与连接(会话)分离(断开)作为XA PREPARE的一部分。这意味着,即使原始连接未终止,XA事务也可以由另一个连接提交或回滚,并且该连接可以开始新的事务。在分离的XA事务中不能使用临时表。
当设置为
OFF(禁用)时,XA事务将严格与同一连接相关直到会话断开。建议您允许启用(默认行为)以便于复制。更多信息,请见第15.3.8.2节,“XA事务状态”。