Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Server System Variables

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 语句或性能模式系统变量表。请参阅 第 29.12.14 节,“性能模式系统变量表”

本节提供了每个系统变量的描述。有关系统变量摘要表,请参阅 第 7.1.5 节,“服务器系统变量参考”。有关系统变量操作的更多信息,请参阅 第 7.1.9 节,“使用系统变量”

有关系统变量的更多信息,请参阅以下节:

Note

一些变量描述引用了““启用””或““禁用””变量。这些变量可以使用 SET 语句启用或禁用,方法是将其设置为 ON1,或将其设置为 OFF0。布尔变量可以在启动时设置为 ONTRUEOFFFALSE(不区分大小写),以及 10。请参阅 第 6.2.2.4 节,“程序选项修饰符”

一些系统变量控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从分配给缓冲区的总内存中分配,而所需的空间量可能是平台相关的。这意味着当您将值分配给控制缓冲区大小的系统变量时,实际可用的空间量可能不同于分配的值。在某些情况下,实际值可能小于分配的值。服务器也可能将值调整为更高。例如,如果您将变量的值设置为0,而该变量的最小值为1024,服务器将值设置为1024。

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

Note

一些系统变量描述包括块大小,在这种情况下,服务器将存储的值舍入到下一个较低的块大小的整数倍,即 FLOOR(value) * block_size

示例:假设某个变量的块大小为4096,并将变量的值设置为100000(假设变量的最大值大于该数字)。由于100000 / 4096 = 24.4140625,服务器将自动将值降低到98304(24 * 4096)以便存储。

在某些情况下,变量的最大值是MySQL解析器允许的最大值,但不是块大小的精确倍数。在这种情况下,有效的最大值是块大小的下一个较低的倍数。

示例:某个系统变量的最大值显示为4294967295(232-1),其块大小为1024。4294967295 / 1024 = 4194303.9990234375,因此如果您将该变量设置为其状态的最大值,实际存储的值将是4194303 * 1024 = 4294966272。

一些系统变量采用文件名值。除非另有说明,默认文件位置是数据目录,如果值是相对路径名。要明确指定位置,请使用绝对路径名。假设数据目录是 /var/mysql/data。如果文件值变量是相对路径名,它将位于 /var/mysql/data 下。如果值是绝对路径名,其位置将由路径名指定。

  • activate_all_roles_on_login

    Command-Line Format --activate-all-roles-on-login[={OFF|ON}]
    System Variable activate_all_roles_on_login
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    是否在用户登录服务器时启用所有授予角色的自动激活:

    授予角色包括明确授予用户的角色和在 mandatory_roles 系统变量值中命名的角色。

    activate_all_roles_on_login 只适用于登录时,以及在定义器上下文中执行的存储程序和视图的开始执行时。要在会话中更改活动角色,请使用 SET ROLE。要更改存储程序的活动角色,该程序体应执行 SET ROLE

  • admin_address

    Command-Line Format --admin-address=addr
    System Variable admin_address
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type String

    监听管理网络接口的IP地址(参见第7.1.12.1节,“连接接口”)。没有默认的admin_address值。如果在启动时未指定此变量,服务器将不维护管理接口。服务器还具有bind_address系统变量,以配置常规(非管理)客户端TCP/IP连接。参见第7.1.12.1节,“连接接口”

    如果指定admin_address,其值必须满足以下要求:

    • 该值必须是一个单个IPv4地址、IPv6地址或主机名。

    • 该值不能指定通配符地址格式(*0.0.0.0::)。

    • 该值可以包括网络命名空间specifier。

    可以将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),服务器仅接受该IPv4或IPv6地址的TCP/IP连接。

    以下规则适用于指定网络命名空间:

    • 可以为IP地址或主机名指定网络命名空间。

    • 不能为通配符IP地址指定网络命名空间。

    • 对于给定的地址,网络命名空间是可选的。如果给定,必须作为/ns后缀紧跟在地址后。

    • 没有/ns后缀的地址使用主机系统的全局命名空间。因此,全局命名空间是默认的。

    • 具有/ns后缀的地址使用命名空间ns

    • 主机系统必须支持网络命名空间,每个命名的命名空间必须事先设置。命名不存在的命名空间将产生错误。

    有关网络命名空间的更多信息,请参见第7.1.14节,“网络命名空间支持”

    如果绑定到地址失败,服务器将产生错误并且不启动。

    admin_address系统变量与bind_address系统变量相似,但有以下差异:

  • admin_port

    Command-Line Format --admin-port=port_num
    System Variable admin_port
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type Integer
    Default Value 33062
    Minimum Value 0
    Maximum Value 65535

    用于管理网络接口的TCP/IP端口号(参见第7.1.12.1节,“连接接口”)。将此变量设置为0将使用默认值。

    设置admin_port没有效果,如果admin_address未指定,因为在那种情况下,服务器不维护管理网络接口。

  • admin_ssl_ca

    Command-Line Format --admin-ssl-ca=file_name
    System Variable admin_ssl_ca
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value NULL

    系统变量admin_ssl_ca类似于ssl_ca,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持

  • admin_ssl_capath

    Command-Line Format --admin-ssl-capath=dir_name
    System Variable admin_ssl_capath
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名
    Default Value NULL

    系统变量admin_ssl_capath类似于ssl_capath,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持

  • admin_ssl_cert

    Command-Line Format --admin-ssl-cert=file_name
    System Variable admin_ssl_cert
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value NULL

    系统变量admin_ssl_cert类似于ssl_cert,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持

  • admin_ssl_cipher

    Command-Line Format --admin-ssl-cipher=name
    System Variable admin_ssl_cipher
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    系统变量admin_ssl_cipher类似于ssl_cipher,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持

  • admin_ssl_crl

    Command-Line Format --admin-ssl-crl=file_name
    System Variable admin_ssl_crl
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value

    系统变量 admin_ssl_crlssl_crl 相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接

  • admin_ssl_crlpath

    Command-Line Format --admin-ssl-crlpath=dir_name
    System Variable admin_ssl_crlpath
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称
    Default Value

    系统变量 admin_ssl_crlpathssl_crlpath 相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接

  • admin_ssl_key

    Command-Line Format --admin-ssl-key=file_name
    System Variable admin_ssl_key
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名称
    Default Value

    系统变量 admin_ssl_keyssl_key 相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接

  • admin_tls_ciphersuites

    Command-Line Format --admin-tls-ciphersuites=ciphersuite_list
    System Variable admin_tls_ciphersuites
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value

    系统变量 admin_tls_ciphersuitestls_ciphersuites 相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接

  • admin_tls_version

    Command-Line Format --admin-tls-version=protocol_list
    System Variable admin_tls_version
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value TLSv1.2,TLSv1.3

    系统变量 admin_tls_versiontls_version 相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接

    Important
    • MySQL 8.0 中删除了对 TLSv1 和 TLSv1.1 连接协议的支持。请参阅 删除 TLSv1 和 TLSv1.1 协议的支持 以获取更多信息。

    • MySQL 8.3 支持 TLSv1.3 协议,前提是 MySQL 服务器使用 OpenSSL 1.1.1 或更高版本编译。服务器在启动时检查 OpenSSL 的版本,如果版本低于 1.1.1,TLSv1.3 将从默认值中删除。在这种情况下,默认值为 TLSv1.2

  • 身份验证策略

    Command-Line Format --身份验证策略=value
    System Variable 身份验证策略
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value *,,

    该变量用于管理多因素身份验证(MFA)功能。它适用于 CREATE USERALTER USER 语句中与账户定义相关的身份验证因子子句,其中“factor”对应于与账户关联的身份验证方法或插件:

    因为 身份验证策略 只适用于创建或修改账户时,因此对其值的更改不会影响现有的用户账户。

    Note

    尽管 身份验证策略 系统变量对 CREATE USERALTER USER 语句的身份验证相关子句施加了某些约束,但拥有 AUTHENTICATION_POLICY_ADMIN 权限的用户不受这些约束的限制。(警告将出现在语句中,否则将不被允许。)

    身份验证策略 的值是一个由 1、2 或 3 个逗号分隔的元素列表。每个元素可以是身份验证插件名称、星号 (*)、空或缺失。(例外:元素 1 不能为空或缺失。)在所有情况下,元素可以被空白字符包围,整个列表被单引号括起来。

    指定的值类型对应于元素 N 在列表中的影响是,是否需要 factor N 在账户定义中存在,以及哪些身份验证插件可以被使用:

    • 如果元素 N 是身份验证插件名称,factor N 的身份验证方法是必需的,必须使用指定的插件。

      此外,该插件将成为 factor N 身份验证方法的默认插件,用于不明确指定插件的身份验证规范。有关详细信息,请参阅 默认身份验证插件

      使用内部凭证存储的身份验证插件只能指定为第一个元素,不能重复。例如,以下设置是不允许的:

      • 身份验证策略 = 'caching_sha2_password, sha256_password'

      • 身份验证策略 = 'caching_sha2_password, authentication_webauthn, sha256_password'

    • 如果元素 N 是星号 (*),则需要 factor N 的身份验证方法。它可以使用任何适用于元素 N 的身份验证插件(如下所述)。

    • 如果元素 N 为空,则 factor N 的身份验证方法是可选的。如果给定,可以使用任何适用于元素 N 的身份验证插件(如下所述)。

    • 如果元素 N 缺失(即值中少于 N-1 个逗号),则 factor N 的身份验证方法是禁止的。例如,值为 '*' 只允许单个因素,从而强制单因素身份验证(1FA)对于使用 CREATE USER 或使用 ALTER USER 创建或更改的账户。

    authentication_policy 元素命名身份验证插件时,元素的允许插件名称受以下条件限制:

    • 元素 1 必须命名不需要注册步骤的插件。例如,authentication_webauthnauthentication_fido(已弃用)不能被命名。

    • 元素 2 和 3 必须命名不使用内部凭证存储的插件。

      有关哪些身份验证插件使用内部凭证存储的信息,请参阅 第 8.2.15 节,“密码管理”

    authentication_policy 元素 N* 时,factor N 在账户定义中的允许插件名称受以下条件限制:

    • 对于因素 1,账户定义可以使用任何插件。默认身份验证插件规则适用于不命名插件的身份验证规范。请参阅 默认身份验证插件

    • 对于因素 2 和 3,账户定义不能命名使用内部凭证存储的插件。例如,使用 '*,*','*,*,*','*,','*,,' authentication_policy 设置,使用内部凭证存储的插件只能用于第一个因素,不能重复。

    authentication_policy 元素 N 为空时,factor N 在账户定义中的允许插件名称受以下条件限制:

    • 对于因素 1,这不适用,因为元素 1 不能为空。

    • 对于因素 2 和 3,账户定义不能命名使用内部凭证存储的插件。

    空元素必须出现在列表的末尾,跟随非空元素。在其他 words,第一个元素不能为空,或者没有元素为空,或者最后一个元素为空,或者最后两个元素为空。例如,值为 ',,' 不允许,因为它将表明所有因素都是可选的。这是不可能的;账户必须至少有一个身份验证因素。

    默认值为 authentication_policy'*,,'。这意味着因素 1 在账户定义中是必需的,可以使用任何身份验证插件,而因素 2 和 3 是可选的,每个都可以使用不使用内部凭证存储的身份验证插件。

    以下表格显示了一些 authentication_policy 值和每个值所建立的账户创建或更改策略。

    表 7.4 示例 authentication_policy 值

    authentication_policy Value Effective Policy
    '*' 仅允许创建或更改具有一个因素的账户。
    '*,*' 仅允许创建或更改具有两个因素的账户。
    '*,*,*' 仅允许创建或更改具有三个因素的账户。
    '*,' 允许创建或更改具有一个或两个因素的账户。
    '*,,' 允许创建或修改账户,使用一个、两个或三个因素。
    '*,*,' 允许创建或修改账户,使用两个或三个因素。
    '*,auth_plugin' 允许创建或修改账户,使用两个因素,其中第一个因素可以是任何身份验证方法,第二个因素必须是命名的插件。
    'auth_plugin,*,' 允许创建或修改账户,使用两个或三个因素,其中第一个因素必须是命名的插件。
    'auth_plugin,' 允许创建或修改账户,使用一个或两个因素,其中第一个因素必须是命名的插件。
    'auth_plugin,auth_plugin,auth_plugin' 允许创建或修改账户,使用三个因素,其中每个因素必须使用命名的插件。

  • 身份验证Windows日志级别

    Command-Line Format --身份验证-windows-日志级别=#
    System Variable 身份验证Windows日志级别
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2
    Minimum Value 0
    Maximum Value 4

    该变量仅在启用了身份验证Windows插件并启用了调试代码时可用。请参阅第 8.4.1.6 节,“Windows 可插拔身份验证”

    该变量设置身份验证Windows插件的日志级别。以下表格显示了允许的值。

    Value Description
    0 不记录
    1 仅记录错误消息
    2 记录级别 1 消息和警告消息
    3 记录级别 2 消息和信息笔记
    4 记录级别 3 消息和调试消息
  • 身份验证Windows使用principal名称

    Command-Line Format --身份验证-windows-使用-principal-名称[={OFF|ON}]
    System Variable 身份验证Windows使用principal名称
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    该变量仅在启用了身份验证Windows插件时可用。请参阅第 8.4.1.6 节,“Windows 可插拔身份验证”

    使用 InitSecurityContext() 函数进行身份验证的客户端应该提供一个字符串,标识连接到的服务 (targetName)。MySQL 使用服务器运行的账户的 principal 名称 (UPN)。UPN 的形式为 user_id@computer_name,无需注册即可使用。该 UPN 在身份验证握手机开始时由服务器发送。

    该变量控制服务器是否在初始挑战中发送 UPN。默认情况下,该变量启用。出于安全原因,可以禁用该变量,以避免将服务器的账户名称以明文形式发送给客户端。如果禁用该变量,服务器总是发送 0x00 字节作为初始挑战,客户端不指定 targetName,因此使用 NTLM 身份验证。

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

  • 自动提交

    Command-Line Format --自动提交[={OFF|ON}]
    System Variable 自动提交
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    自动提交模式。如果设置为 1,则对表的所有更改立即生效。如果设置为 0,则必须使用 COMMIT 来接受事务或 ROLLBACK 来取消它。如果 autocommit 是 0 并将其更改为 1,MySQL 将执行自动 COMMIT 任何打开的事务。另一种开始事务的方式是使用 START TRANSACTIONBEGIN 语句。见 第 15.3.1 节,“START TRANSACTION, COMMIT, and ROLLBACK Statements”

    默认情况下,客户端连接以 autocommit 设置为 1 开始。要使客户端以默认值 0 开始,请使用 --autocommit=0 选项启动服务器。要使用选项文件设置变量,请包括以下行:

    [mysqld]
    autocommit=0
  • automatic_sp_privileges

    Command-Line Format --automatic-sp-privileges[={OFF|ON}]
    System Variable automatic_sp_privileges
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value ON

    当该变量的值为 1(默认值)时,服务器自动授予存储过程的创建者 EXECUTEALTER ROUTINE 权限,如果用户不能执行或更改或删除该过程。(ALTER ROUTINE 权限是删除该过程所需的。)服务器还自动从创建者中删除这些权限时删除该过程。

    过程的创建者是执行 CREATE 语句的账户。这可能与在过程定义中指定的 DEFINER 账户不同。

    如果您使用 --skip-new 选项启动 mysqldautomatic_sp_privileges 将被设置为 OFF

    另见 第 27.2.2 节,“Stored Routines and MySQL Privileges”

  • auto_generate_certs

    Command-Line Format --auto-generate-certs[={OFF|ON}]
    System Variable auto_generate_certs
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    Type Boolean
    Default Value ON

    该变量控制服务器是否在数据目录中自动生成 SSL 密钥和证书文件,如果它们不存在。

    在启动时,如果 auto_generate_certs 系统变量启用,未指定其他 SSL 选项,且服务器端 SSL 文件缺失于数据目录中,服务器将自动生成服务器端和客户端 SSL 证书和密钥文件。这些文件启用使用 SSL 的安全客户端连接;见 第 8.3.1 节,“Configuring MySQL to Use Encrypted Connections”

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

    系统变量sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys相关,但控制使用RSA在未加密连接上交换安全密码的RSA密钥对文件的自动生成。

  • avoid_temporal_upgrade

    Command-Line Format --avoid-temporal-upgrade[={OFF|ON}]
    Deprecated
    System Variable avoid_temporal_upgrade
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量控制是否ALTER TABLE隐式升级发现的时间列(TIMEDATETIMETIMESTAMP列)以前的5.6.4格式升级这些列需要重建表,防止快速更改操作的应用。

    该变量默认情况下禁用。启用它将导致ALTER TABLE不重建时间列,从而能够应用快速更改操作。

    该变量已弃用;预计在未来MySQL版本中删除。

  • back_log

    Command-Line Format --back-log=#
    System Variable back_log
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value -1(表示自动调整大小;不要将其设置为该值)
    Minimum Value 1
    Maximum Value 65535

    MySQL可以拥有的未决连接请求的数量。这在MySQL主线程在短时间内收到大量连接请求时发挥作用。那时,主线程需要一些时间(尽管非常短)来检查连接并启动新线程。back_log值指示在这短时间内可以堆叠的请求数量,然后MySQL暂时停止回答新请求。

    换言之,这个值是入站TCP/IP连接的监听队列的大小。您的操作系统对该队列的大小也有其限制。Unix listen()系统调用手册页应该有更多详细信息。请查看您的操作系统文档,以了解该变量的最大值。back_log不能设置高于操作系统限制。

    默认值是max_connections的值,这使得允许的积压量调整到最大允许的连接数。

  • basedir

    Command-Line Format --basedir=dir_name
    System Variable basedir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名
    Default Value MySQL安装目录的父目录

    MySQL安装的基本目录路径。

  • big_tables

    Command-Line Format --big-tables[={OFF|ON}]
    System Variable big_tables
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果启用,服务器将所有临时表存储在磁盘上,而不是在内存中。这将防止大多数 tbl_name 已满 错误对于 SELECT 操作,这些操作需要一个大型临时表,但也会减慢查询速度,对于那些可以使用内存表的查询。

    默认值为新连接是 OFF(使用内存临时表)。通常,不需要启用这个变量。当内存 内部 临时表由 TempTable 存储引擎(默认)管理时,最大内存量超过 TempTable 存储引擎可以占用的内存量时,TempTable 存储引擎将开始将数据存储到临时文件中。当内存临时表由 MEMORY 存储引擎管理时,内存表将自动转换为基于磁盘的表,如有需要。有关更多信息,请参阅 第 10.4.4 节,“MySQL 中的内部临时表使用”

  • bind_address

    Command-Line Format --bind-address=addr
    System Variable bind_address
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value *

    MySQL 服务器监听一个或多个网络套接字以接受 TCP/IP 连接。每个套接字绑定到一个地址,但一个地址可以映射到多个网络接口。要指定服务器如何监听 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 地址。

    服务器对不同类型的地址进行如下处理:

    • 如果地址是 *,服务器在所有服务器主机 IPv4 接口和所有 IPv6 接口上接受 TCP/IP 连接。使用这个地址来允许 IPv4 和 IPv6 连接在所有服务器接口上。如果变量指定了多个值,这个值不允许。

    • 如果地址是 0.0.0.0,服务器在所有服务器主机 IPv4 接口上接受 TCP/IP 连接。如果变量指定了多个值,这个值不允许。

    • 如果地址是 ::,服务器在所有服务器主机 IPv4 和 IPv6 接口上接受 TCP/IP 连接。如果变量指定了多个值,这个值不允许。

    • 如果地址是一个 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后缀的地址使用主机系统的全局命名空间。因此,全局命名空间是默认的。

    • 具有/ns后缀的地址使用命名空间ns

    • 主机系统必须支持网络命名空间,每个命名的命名空间必须事先设置。命名一个不存在的命名空间将产生错误。

    • 如果变量值指定了多个地址,可以包括全局命名空间、命名命名空间或混合。

    有关网络命名空间的更多信息,请参阅第 7.1.14 节,“网络命名空间支持”

    如果绑定到任何地址失败,服务器将产生错误并且不启动。

    示例:

    • bind_address=*

      服务器监听所有 IPv4 或 IPv6 地址,如指定的通配符 *

    • bind_address=198.51.100.20

      服务器仅监听 198.51.100.20 IPv4 地址。

    • bind_address=198.51.100.20,2001:db8:0:f101::1

      服务器监听 198.51.100.20 IPv4 地址和 2001:db8:0:f101::1 IPv6 地址。

    • 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.20 IPv4 地址在 red 命名空间中,2001:db8:0:f101::1 IPv6 地址在 blue 命名空间中,并且 192.0.2.50 IPv4 地址在全局命名空间中。

    bind_address 命名单个值(通配符或非通配符)时,服务器监听单个套接字,该套接字可能绑定到多个网络接口。当 bind_address 命名多个值时,服务器监听每个值一个套接字,每个套接字绑定到单个网络接口。套接字的数量与指定的值数量成线性关系。根据操作系统的连接接受效率,长值列表可能会产生性能损失。

    由于文件描述符分配给监听套接字和网络命名空间文件,因此可能需要增加 open_files_limit 系统变量。

    如果您打算将服务器绑定到特定地址,请确保 mysql.user 系统表中存在具有管理权限的帐户,以便您可以连接到该地址。否则,您无法关闭服务器。例如,如果您将服务器绑定到 *,您可以使用所有现有帐户连接到服务器。但是,如果您将服务器绑定到 ::1,它将仅接受来自该地址的连接。在这种情况下,首先确保 'root'@'::1' 帐户存在于 mysql.user 表中,以便您可以连接到服务器以关闭它。

  • block_encryption_mode

    Command-Line Format --block-encryption-mode=#
    System Variable block_encryption_mode
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String
    Default Value aes-128-ecb

    该变量控制块加密模式,对于块加密算法如 AES 生效。它影响 AES_ENCRYPT()AES_DECRYPT() 的加密。

    块加密模式 采用 aes-密钥长度-加密模式 格式,其中 密钥长度 是以位为单位的密钥长度,加密模式 是加密模式。该值不区分大小写。允许的 密钥长度 值为 128、192 和 256。允许的 加密模式 值为 ECBCBCCFB1CFB8CFB128OFB

    例如,该语句使 AES 加密函数使用 256 位密钥长度和 CBC 模式:

    SET block_encryption_mode = 'aes-256-cbc';

    尝试将 块加密模式 设置为包含不支持的密钥长度或 SSL 库不支持的模式时,会发生错误。

  • 构建 ID

    System Variable 构建 ID
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Platform Specific Linux

    这是一个 160 位 SHA1 签名,由链接器在 Linux 系统上编译服务器时生成(默认情况下启用),并将其转换为十六进制字符串。该只读值充当唯一的构建 ID,并在服务器启动时写入日志中。

    构建 ID 不支持其他平台。

  • 批量插入缓冲区大小

    Command-Line Format --批量插入缓冲区大小=#
    System Variable 批量插入缓冲区大小
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8388608
    Minimum Value 0
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295
    Unit 字节/线程

    MyISAM 使用特殊的树形缓存来加速批量插入 INSERT ... SELECTINSERT ... VALUES (...), (...), ...LOAD DATA 对非空表的数据添加时。该变量限制了每个线程的缓存树大小,以字节为单位。将其设置为 0 将禁用该优化。默认值为 8MB。

    设置该会话变量需要足够的权限。请参阅 第 7.1.9.1 节,“系统变量权限”

  • caching_sha2_password 摘要轮数

    Command-Line Format --caching-sha2-password 摘要轮数=#
    System Variable caching_sha2_password 摘要轮数
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 5000
    Minimum Value 5000
    Maximum Value 4095000

    该变量指定了 caching_sha2_password 身份验证插件用于密码存储的哈希轮数。

    将哈希轮数增加到默认值以上将导致性能损失,该损失与增加的数量相关:

    • 创建使用 caching_sha2_password 插件的帐户不会影响创建该帐户的客户端会话,但服务器必须执行哈希轮数以完成操作。

    • 对于使用该帐户的客户端连接,服务器必须执行哈希轮数并将结果保存在缓存中。结果是第一次客户端连接的登录时间较长,但不是后续连接。该行为在每次服务器重新启动后都会发生。

  • caching_sha2_password 自动生成 RSA 密钥

    Command-Line Format --caching-sha2-password-auto-generate-rsa-keys[={OFF|ON}]
    System Variable caching_sha2_password_auto_generate_rsa_keys
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    服务器使用该变量来确定是否在数据目录中自动生成 RSA 私钥/公钥文件对,如果它们尚不存在。

    在启动时,服务器自动在数据目录中生成 RSA 私钥/公钥文件对,如果所有以下条件都为真:sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys 系统变量启用;没有指定 RSA 选项;RSA 文件缺失于数据目录中。这些密钥文件使得使用 RSA 进行安全密码交换在未加密连接中对于使用 sha256_passwordcaching_sha2_password 插件认证的账户;见 第 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 进行安全连接。

  • caching_sha2_password_private_key_path

    Command-Line Format --caching-sha2-password-private-key-path=file_name
    System Variable caching_sha2_password_private_key_path
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value private_key.pem

    该变量指定了 caching_sha2_password 认证插件的 RSA 私钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。

    Important

    因为该文件存储了私钥,因此其访问模式应该限制为只有 MySQL 服务器可以读取。

    有关 caching_sha2_password 的信息,请参阅 第 8.4.1.2 节,“Caching SHA-2 可插拔认证”

  • caching_sha2_password_public_key_path

    Command-Line Format --caching-sha2-password-public-key-path=file_name
    System Variable caching_sha2_password_public_key_path
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value public_key.pem

    该变量指定了 caching_sha2_password 认证插件的 RSA 公钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。

    有关 caching_sha2_password 的信息,包括客户端请求 RSA 公钥的信息,请参阅 第 8.4.1.2 节,“Caching SHA-2 可插拔认证”

  • character_set_client

    System Variable character_set_client
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value utf8mb4

    客户端发送的语句的字符集。会话变量的值是根据客户端连接服务器时请求的字符集设置的。(许多客户端支持 --default-character-set 选项,以便明确指定该字符集。另见 第 12.4 节,“连接字符集和排序规则”。)全局变量的值用于设置会话值,在客户端请求的值未知或不可用时,或者服务器配置为忽略客户端请求时。这可能发生在客户端请求服务器不支持的字符集时,例如日本启用客户端请求 sjis 时连接到不支持 sjis 的服务器。

    有一些字符集不能用作客户端字符集。尝试使用它们作为 character_set_client 值将产生错误。见 不可用的客户端字符集

  • character_set_connection

    System Variable character_set_connection
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type String
    Default Value utf8mb4

    用于没有字符集引入符的文字和数字到字符串转换的字符集。关于引入符的信息,请参见 第 12.3.8 节,“字符集引入符”

  • character_set_database

    System Variable character_set_database
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type String
    Default Value utf8mb4
    Footnote 该选项是动态的,但只能由服务器设置。您不应该手动设置该变量。

    默认数据库使用的字符集。服务器在默认数据库更改时设置该变量。如果没有默认数据库,该变量的值与 character_set_server 相同。

    设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”

    全局 character_set_databasecollation_database 系统变量已弃用;预计它们将在未来版本的 MySQL 中被删除。

    将值分配给会话 character_set_databasecollation_database 系统变量已弃用,并且分配将产生警告。预计在未来版本的 MySQL 中,会话变量将变为只读的(并且分配将产生错误)。

  • character_set_filesystem

    Command-Line Format --character-set-filesystem=name
    System Variable character_set_filesystem
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type String
    Default Value binary

    文件系统字符集。此变量用于解释字符串文字,例如在 LOAD DATASELECT ... INTO OUTFILE 语句和 LOAD_FILE() 函数中。这些文件名从 character_set_client 转换为 character_set_filesystem,然后尝试打开文件。默认值是 binary,这意味着不进行转换。对于允许多字节文件名的系统,可能需要不同的值。例如,如果系统使用 UTF-8 表示文件名,设置 character_set_filesystem'utf8mb4'

    设置此系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见 第 7.1.9.1 节,“系统变量权限”

  • character_set_results

    System Variable character_set_results
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value utf8mb4

    用于将查询结果返回给客户端的字符集。这包括结果数据,如列值、结果元数据,如列名和错误消息。

  • character_set_server

    Command-Line Format --character-set-server=name
    System Variable character_set_server
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value utf8mb4

    服务器的默认字符集。见 第 12.15 节,“字符集配置”。如果您设置了这个变量,也应该设置 collation_server 以指定字符集的排序规则。

  • character_set_system

    System Variable character_set_system
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value utf8mb3

    服务器用于存储标识符的字符集。该值始终是 utf8mb3

  • character_sets_dir

    Command-Line Format --character-sets-dir=dir_name
    System Variable character_sets_dir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名

    字符集安装的目录。见 第 12.15 节,“字符集配置”

  • check_proxy_users

    Command-Line Format --check-proxy-users[={OFF|ON}]
    System Variable check_proxy_users
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

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

    如果启用了check_proxy_users系统变量,服务器将为任何请求代理用户映射的身份验证插件执行代理用户映射。然而,可能还需要启用插件特定的系统变量以利用服务器的代理用户映射支持:

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

  • collation_connection

    System Variable collation_connection
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    连接字符集的排序规则。collation_connection对于文字字符串的比较非常重要。对于列值的字符串比较,collation_connection不重要,因为列有其自己的排序规则,该排序规则具有更高的排序优先级(见第 12.8.4 节,“表达式中的排序强制”)。

    使用用户定义的排序规则名称为该变量将引发警告。

  • collation_database

    System Variable collation_database
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value utf8mb4_0900_ai_ci
    Footnote 该选项是动态的,但只能由服务器设置。您不应该手动设置该变量。

    默认数据库使用的排序规则。服务器在默认数据库更改时设置该变量。如果没有默认数据库,该变量的值与collation_server相同。

    全局character_set_databasecollation_database系统变量已弃用;预计它们将在未来版本的 MySQL 中被删除。

    将值分配给会话character_set_databasecollation_database系统变量已弃用,并且分配将产生警告。预计这些会话变量将在未来版本的 MySQL 中变为只读(并且分配将产生错误),以便继续访问会话变量以确定默认数据库的字符集和排序规则。

    使用用户定义的排序规则名称为collation_database将引发警告。

  • collation_server

    Command-Line Format --collation-server=name
    System Variable collation_server
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value utf8mb4_0900_ai_ci

    服务器的默认排序规则。请参阅第 12.15 节,“字符集配置”

    将用户定义的排序规则名称设置为该变量将引发警告。

  • completion_type

    Command-Line Format --completion-type=#
    System Variable completion_type
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value NO_CHAIN
    Valid Values

    不链

    释放

    0

    1

    2

    事务完成类型。该变量可以采用以下表格所示的值。变量可以使用名称值或对应的整数值分配。

    Value Description
    不链 (或 0) COMMITROLLBACK 不受影响。这是默认值。
    (或 1) COMMITROLLBACK 等同于 COMMIT AND CHAINROLLBACK AND CHAIN,分别。(一个新的事务立即以相同的隔离级别启动。)
    释放 (或 2) COMMITROLLBACK 等同于 COMMIT RELEASEROLLBACK RELEASE,分别。(服务器在终止事务后断开连接。)

    completion_type 影响以 START TRANSACTIONBEGIN 开始并以 COMMITROLLBACK 结束的事务。它不适用于隐式提交,例如执行以下语句时:Section 15.3.3, “Statements That Cause an Implicit Commit”。它也不适用于 XA COMMIT, XA ROLLBACK, 或者当 autocommit=1

  • component_scheduler.enabled

    Command-Line Format --component-scheduler.enabled[=value]
    System Variable component_scheduler.enabled
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value ON

    当在启动时设置为 OFF,后台线程不会启动。任务仍然可以被安排,但它们不会运行,直到 component_scheduler 被启用。当在启动时设置为 ON,组件将完全运作。

    也可以动态地设置该值,以获得以下效果:

    • ON 启动后台线程,立即开始服务队列。

    • OFF 信号终止后台线程,该线程等待终止。后台线程在访问队列以检查要执行的任务之前,检查终止标志。

  • concurrent_insert

    Command-Line Format --concurrent-insert[=value]
    System Variable concurrent_insert
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Enumeration
    Default Value AUTO
    Valid Values

    从不

    AUTO

    总是

    0

    1

    2

    如果 AUTO(默认),MySQL 允许 INSERTSELECT 语句并发运行对于 MyISAM 表没有空闲块的中间数据文件。

    该变量可以采用以下表格所示的值。变量可以使用名称值或对应的整数值分配。

    Value Description
    从不 (或 0) 禁用并发插入
    AUTO (或 1) (默认) 启用并发插入对于 MyISAM 表没有空闲块
    总是 (或 2) 启用并发插入对于所有 MyISAM 表,即使它们有空闲块。对于有空闲块的表,新的行将插入到表的末尾,如果它被另一个线程使用。否则,MySQL 获取普通写锁并将行插入到空闲块中。

    如果您使用 mysqld 选项 --skip-newconcurrent_insert 将被设置为 从不

    另请参阅 第 10.11.3 节,“并发插入”

  • connect_timeout

    Command-Line Format --connect-timeout=#
    System Variable connect_timeout
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 10
    Minimum Value 2
    Maximum Value 31536000
    Unit

    mysqld 服务器等待连接包之前响应 Bad handshake 的秒数。默认值为 10 秒。

    增加 connect_timeout 值可能有助于客户端经常遇到错误,如 Lost connection to MySQL server at 'XXX', system error: errno

  • connection_memory_chunk_size

    Command-Line Format --connection-memory-chunk-size=#
    System Variable connection_memory_chunk_size
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 8192
    Minimum Value 0
    Maximum Value 536870912
    Unit 字节

    设置全局内存使用情况计数器 Global_connection_memory 的块大小。状态变量仅在所有用户连接的总内存消耗改变超过该值时更新。禁用更新通过设置 connection_memory_chunk_size = 0

    内存计算不包括系统用户(如 MySQL 根用户)使用的内存,也不包括 InnoDB 缓冲池使用的内存。

    您必须拥有 SYSTEM_VARIABLES_ADMINSUPER 权限来设置该变量。

  • connection_memory_limit

    Command-Line Format --connection-memory-limit=#
    System Variable connection_memory_limit
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 18446744073709551615
    Minimum Value 2097152
    Maximum Value 18446744073709551615
    Unit 字节

    设置单个用户连接可以使用的最大内存量。如果任何用户连接使用超过此金额,来自该连接的所有查询将被拒绝,包括当前正在运行的查询。

    此变量设置的限制不适用于系统用户或 MySQL 根账户。InnoDB 缓冲池使用的内存也不包括在内。

    您必须拥有 SYSTEM_VARIABLES_ADMINSUPER 权限才能设置此变量。

  • core_file

    System Variable core_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果服务器意外退出,是否写入核心文件。此变量由 --core-file 选项设置。

  • create_admin_listener_thread

    Command-Line Format --create-admin-listener-thread[={OFF|ON}]
    System Variable create_admin_listener_thread
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否使用专用监听线程来处理管理网络接口的客户端连接(见 第 7.1.12.1 节,“连接接口”)。默认为 OFF,即管理器线程也处理普通连接的管理接口。

    根据平台类型和工作负载等因素,您可能发现某个设置对性能的影响。

    设置 create_admin_listener_thread 变量无效,如果 admin_address 未指定,因为在那种情况下服务器不维护管理网络接口。

  • cte_max_recursion_depth

    Command-Line Format --cte-max-recursion-depth=#
    System Variable cte_max_recursion_depth
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000
    Minimum Value 0
    Maximum Value 4294967295

    公共表表达式(CTE)最大递归深度。服务器将终止执行任何递归超过此变量值的 CTE。有关更多信息,请参阅 限制公共表表达式递归

  • datadir

    Command-Line Format --datadir=dir_name
    System Variable datadir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称

    MySQL 服务器数据目录的路径。相对路径将相对于当前目录解析。如果您期望服务器自动启动(即,在无法预先知道当前目录的上下文中),最好将 datadir 值指定为绝对路径。

  • debug

    Command-Line Format --debug[=debug_options]
    System Variable debug
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value (Unix) d:t:i:o,/tmp/mysqld.trace
    Default 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 包”

  • debug_sync

    System Variable debug_sync
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该变量是 Debug Sync 设施的用户界面。使用 Debug Sync 需要 MySQL 配置了 -DWITH_DEBUG=ON CMake 选项(见 第 2.8.7 节,“MySQL 源代码配置选项”);否则,该系统变量不可用。

    全局变量值是只读的,指示该设施是否启用。默认情况下,Debug Sync 是禁用的,debug_sync 的值是 OFF。如果服务器以 --debug-sync-timeout=N 启动,其中 N 是大于 0 的超时值,Debug Sync 将启用,debug_sync 的值将是 ON - current signal,后跟信号名称。此外,N 将成为单个同步点的默认超时值。

    会话值可以由任何用户读取,具有与全局变量相同的值。会话值可以设置以控制同步点。

    设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”

    有关 Debug Sync 设施的描述和如何使用同步点,请参阅 MySQL Internals: 测试同步

  • default_authentication_plugin

    Command-Line Format --default-authentication-plugin=plugin_name
    Deprecated
    System Variable default_authentication_plugin
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value caching_sha2_password
    Valid Values

    mysql_native_password

    sha256_password

    caching_sha2_password

    默认身份验证插件。这必须是一个使用内部凭证存储的插件,因此这些值是允许的:

    关于哪些身份验证插件使用内部凭证存储的信息,请参阅第 8.2.15 节,“密码管理”

    default_authentication_pluginauthentication_policy 系统变量一起使用,但优先级较低。详细信息,请参阅默认身份验证插件default_authentication_plugin 已弃用,将在未来 MySQL 版本中删除。

  • default_collation_for_utf8mb4

    System Variable default_collation_for_utf8mb4
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Valid Values

    utf8mb4_0900_ai_ci

    utf8mb4_general_ci

    Important

    系统变量 default_collation_for_utf8mb4 仅供 MySQL 复制使用。

    该变量由服务器设置为 utf8mb4 字符集的默认排序规则。变量的值从源服务器复制到副本服务器,以便副本服务器可以正确处理来自源服务器的数据,该源服务器具有不同的默认排序规则 utf8mb4。该变量主要用于支持从 MySQL 5.7 或更早版本的复制源服务器到 MySQL 8.0 或更高版本的副本服务器的复制,或者在 MySQL 5.7 主节点和一个或多个 MySQL 8.0 或更高版本的辅助节点的组复制中。 utf8mb4 在 MySQL 5.7 中的默认排序规则是 utf8mb4_general_ci,但在后续版本系列中是 utf8mb4_0900_ai_ci。如果副本服务器没有收到变量的值,它假设源服务器来自早期版本,并将值设置为之前的默认排序规则 utf8mb4_general_ci

    默认 utf8mb4 排序规则用于以下语句:

    另请参阅 第 12.9 节,“Unicode 支持”

  • default_password_lifetime

    Command-Line Format --default-password-lifetime=#
    System Variable default_password_lifetime
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 65535
    Unit

    该变量定义了全局自动密码过期策略。默认 default_password_lifetime 值为 0,表示禁用自动密码过期。如果 default_password_lifetime 的值是一个正整数 N,则表示允许的密码生命周期;密码必须每 N 天更改一次。

    全局密码过期策略可以根据需要被个体账户覆盖,使用 CREATE USERALTER USER 语句的密码过期选项。见 第 8.2.15 节,“密码管理”

  • default_storage_engine

    Command-Line Format --default-storage-engine=name
    System Variable default_storage_engine
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value InnoDB

    表的默认存储引擎。见 第 18 章,《替代存储引擎》。该变量仅设置永久表的存储引擎。要设置临时表的存储引擎,请设置 default_tmp_storage_engine 系统变量。

    要查看可用的存储引擎和启用的引擎,请使用 SHOW ENGINES 语句或查询 INFORMATION_SCHEMA ENGINES 表。

    如果您在服务器启动时禁用默认存储引擎,则必须将永久表和临时表的默认引擎设置为不同的引擎,否则服务器将不启动。

  • default_table_encryption

    Command-Line Format --default-table-encryption[={OFF|ON}]
    System Variable default_table_encryption
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    定义了在创建模式和通用表空间时应用的默认加密设置,除非指定了 ENCRYPTION 子句。

    变量 default_table_encryption 仅适用于用户创建的模式和通用表空间,不适用于 mysql 系统表空间。

    设置 default_table_encryption 的运行时值需要 SYSTEM_VARIABLES_ADMINTABLE_ENCRYPTION_ADMIN 权限,或者弃用的 SUPER 权限。

    default_table_encryption 支持 SET PERSISTSET PERSIST_ONLY 语法。见 第 7.1.9.3 节,“持久系统变量”

    更多信息,请参阅 定义模式和通用表空间的加密默认值

  • default_tmp_storage_engine

    Command-Line Format --default-tmp-storage-engine=name
    System Variable default_tmp_storage_engine
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value InnoDB

    默认存储引擎为 TEMPORARY 表(使用 CREATE TEMPORARY TABLE 创建)。要设置永久表的存储引擎,请设置 default_storage_engine 系统变量。也可以查看该变量的讨论,以了解可能的值。

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

  • default_week_format

    Command-Line Format --default-week-format=#
    System Variable default_week_format
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 7

    用于 WEEK() 函数的默认模式值。请参阅 第 14.7 节,“日期和时间函数”

  • delay_key_write

    Command-Line Format --delay-key-write[={OFF|ON|ALL}]
    System Variable delay_key_write
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value ON
    Valid Values

    OFF

    ON

    ALL

    该变量指定如何使用延迟键写入。它仅适用于 MyISAM 表。延迟键写入会导致键缓冲区在写入之间不被刷新。请参阅 第 18.2.1 节,“MyISAM 启动选项”

    该变量可以具有以下值,以影响 DELAY_KEY_WRITE 表选项,该选项可以在 CREATE TABLE 语句中使用。

    Option Description
    OFF DELAY_KEY_WRITE 被忽略。
    ON MySQL 将遵守在 CREATE TABLE 语句中指定的任何 DELAY_KEY_WRITE 选项。这是默认值。
    ALL 所有新打开的表都将被视为启用了 DELAY_KEY_WRITE 选项。
    Note

    如果您将该变量设置为 ALL,则不应在其他程序(例如另一个 MySQL 服务器或 myisamchk)中使用 MyISAM 表时表处于使用中。这将导致索引损坏。

    如果 DELAY_KEY_WRITE 为启用状态,则键缓冲区不会在每次索引更新时刷新,而是在表关闭时刷新。这将大大加速键写入,但是如果您使用此功能,应该通过设置 myisam_recover_options 系统变量(例如,myisam_recover_options='BACKUP,FORCE')来自动检查所有 MyISAM 表。请参阅 第 7.1.8 节,“服务器系统变量”第 18.2.1 节,“MyISAM 启动选项”

    如果您使用 mysqld 启动时带有 --skip-new,则 delay_key_write 将被设置为 OFF

    Warning

    如果您启用了外部锁定以 --external-locking,则对于使用延迟键写入的表没有索引损坏保护。

  • 延迟插入限制

    Command-Line Format --延迟插入限制=#
    Deprecated
    System Variable 延迟插入限制
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 100
    Minimum Value 1
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    该系统变量已弃用(因为DELAYED插入不受支持),您应该期望它在未来版本中被删除。

  • 延迟插入超时

    Command-Line Format --延迟插入超时=#
    Deprecated
    System Variable 延迟插入超时
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 1
    Maximum Value 31536000
    Unit

    该系统变量已弃用(因为DELAYED插入不受支持),您应该期望它在未来版本中被删除。

  • 延迟队列大小

    Command-Line Format --延迟队列大小=#
    Deprecated
    System Variable 延迟队列大小
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000
    Minimum Value 1
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    该系统变量已弃用(因为DELAYED插入不受支持),您应该期望它在未来版本中被删除。

  • 禁用存储引擎

    Command-Line Format --禁用存储引擎=engine[,engine]...
    System Variable 禁用存储引擎
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 空字符串

    该变量指示哪些存储引擎不能用于创建表或表空间。例如,要防止创建新的MyISAMFEDERATED表,启动服务器时在服务器选项文件中添加以下行:

    [mysqld]
    disabled_storage_engines="MyISAM,FEDERATED"

    默认情况下,禁用存储引擎为空(无引擎禁用),但可以设置为以逗号分隔的引擎列表(不区分大小写)。任何在值中命名的引擎都不能用于创建表或表空间,使用CREATE TABLECREATE TABLESPACE,也不能与ALTER TABLE ... ENGINEALTER TABLESPACE ... ENGINE一起使用以更改现有表或表空间的存储引擎。尝试这样做将导致ER_DISABLED_STORAGE_ENGINE错误。

    禁用存储引擎 不限制其他 DDL 语句对现有表的操作,例如 CREATE INDEXTRUNCATE TABLEANALYZE TABLEDROP TABLEDROP TABLESPACE。这允许现有表或表空间平滑过渡,以便使用禁用引擎的表或表空间可以迁移到允许的引擎,例如使用 ALTER TABLE ... ENGINE permitted_engine

    允许设置 default_storage_enginedefault_tmp_storage_engine 系统变量为禁用引擎。这可能会导致应用程序行为不稳定或失败,尽管这可能是在开发环境中识别使用禁用引擎的应用程序,以便修改它们。

    禁用存储引擎 在服务器启动时禁用,并且没有效果,如果服务器使用以下选项启动:--initialize--initialize-insecure--skip-grant-tables

  • 断开过期密码

    Command-Line Format --断开-过期-密码[={OFF|ON}]
    System Variable 断开过期密码
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    该变量控制服务器如何处理具有过期密码的客户端:

    • 如果客户端指示它可以处理过期密码,则 断开过期密码 的值无关紧要。服务器允许客户端连接,但将其置于沙盒模式。

    • 如果客户端不指示它可以处理过期密码,服务器根据 断开过期密码 的值来处理客户端:

    有关客户端和服务器设置之间的交互的更多信息,请参阅 第 8.2.16 节,“服务器处理过期密码”

  • 除法精度增量

    Command-Line Format --除法-精度-增量=#
    System Variable 除法精度增量
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4
    Minimum Value 0
    Maximum 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_rules

    Command-Line Format --dragnet.log-error-filter-rules=value
    System Variable dragnet.log_error_filter_rules
    Scope 全局
    Dynamic
    SET_VAR Hint 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_size

    Command-Line Format --enterprise-encryption.maximum-rsa-key-size=#
    System Variable enterprise_encryption.maximum_rsa_key_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4096
    Minimum Value 2048
    Maximum Value 16384

    该变量限制了MySQL Enterprise Encryption生成的RSA密钥的最大大小。该变量仅在MySQL Enterprise Encryption组件component_enterprise_encryption安装时可用。如果使用openssl_udf共享库提供MySQL Enterprise Encryption函数,该变量不可用。

    最低设置为2048位,这是当前最佳实践中RSA密钥的最小长度。默认设置为4096位。最高设置为16384位。生成更长的密钥可能会消耗大量CPU资源,因此可以使用该设置来限制密钥长度,以平衡安全性和资源使用情况。请注意,openssl_udf共享库提供的函数允许从1024位开始的密钥长度,在升级到该组件后,密钥的最小长度将大于此。请参阅第8.6.2节,“配置MySQL Enterprise Encryption”以获取更多信息。

  • enterprise_encryption.rsa_support_legacy_padding

    Command-Line Format --enterprise-encryption.rsa_support_legacy_padding[={OFF|ON}]
    System Variable enterprise_encryption.rsa_support_legacy_padding
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量控制了MySQL Enterprise Encryption使用openssl_udf共享库函数生成的加密数据和签名是否可以被MySQL Enterprise Encryption组件component_enterprise_encryption的函数解密或验证。该变量仅在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 企业加密” 以获取更多信息。

  • end_markers_in_json

    Command-Line Format --end-markers-in-json[={OFF|ON}]
    System Variable end_markers_in_json
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否在优化器 JSON 输出中添加结束标记。请参阅 MySQL Internals:end_markers_in_json 系统变量

  • eq_range_index_dive_limit

    Command-Line Format --eq-range-index-dive-limit=#
    System Variable eq_range_index_dive_limit
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 200
    Minimum Value 0
    Maximum Value 4294967295

    该变量指示了在等式范围比较条件中,优化器应该从使用索引dives 切换到使用索引统计信息来估算合格行数的等式范围数。如果 eq_range_index_dive_limit 大于 0,则优化器将使用现有的索引统计信息,而不是索引dives,以估算合格行数。

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

    在这两种情况下,表达式都包含 N 等式范围。优化器可以使用索引dives 或索引统计信息来估算行数。如果 eq_range_index_dive_limit 大于 0,优化器将使用现有的索引统计信息,而不是索引dives,以估算合格行数。因此,要允许使用索引dives 对于最多 N 等式范围,设置 eq_range_index_dive_limitN + 1。要禁用索引统计信息的使用并总是使用索引dives,不管 N 的值如何,设置 eq_range_index_dive_limit 为 0。

    有关更多信息,请参阅 等式范围优化

    要更新表索引统计信息以获取最佳估算,请使用 ANALYZE TABLE

  • error_count

    最后一条生成消息的语句的错误数。该变量是只读的。请参阅 第 15.7.7.18 节,“SHOW ERRORS 语句”

  • event_scheduler

    Command-Line Format --event-scheduler[=value]
    System Variable event_scheduler
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value ON
    Valid Values

    ON

    OFF

    DISABLED

    该变量启用或禁用事件计划程序,并启动或停止事件计划程序。可能的状态值为 ONOFFDISABLED。将事件计划程序设置为 OFF 不同于禁用事件计划程序,后者需要将状态设置为 DISABLED。该变量及其对事件计划程序操作的影响在 第 27.4.2 节,“事件计划程序配置” 中有更详细的讨论。

  • explain_format

    Command-Line Format --explain-format=format
    System Variable explain_format
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value TRADITIONAL
    Valid Values

    TRADITIONAL (默认)

    JSON

    TREE

    该变量确定在不指定 FORMAT 选项时 EXPLAIN 的默认输出格式。可能的值及其效果如下所示:

    • TRADITIONAL:使用 MySQL 的传统表格输出,如同 FORMAT=TRADITIONAL 被指定为 EXPLAIN 语句的一部分。这是变量的默认值。DEFAULT 也被支持作为 TRADITIONAL 的同义词,并且具有相同的效果。

      Note

      DEFAULT 不能用作 EXPLAIN 语句的 FORMAT 选项。

    • JSON:使用 JSON 输出格式,如同 FORMAT=JSON 被指定。

    • TREE:使用树形输出格式,如同 FORMAT=TREE 被指定。

    该变量的设置也影响 EXPLAIN ANALYZE。为此目的,DEFAULTTRADITIONAL 被解释为 TREE。如果 explain_format 的值为 JSON,并且没有 FORMAT 选项的 EXPLAIN ANALYZE 语句被发出,则该语句将引发错误 (ER_NOT_SUPPORTED_YET)。

    使用格式说明符与 EXPLAINEXPLAIN ANALYZE 将覆盖 explain_format 的设置。

    该变量对 EXPLAIN 输出没有影响,当该语句用于显示表列信息时。

    设置会话值 explain_format 不需要特殊权限;设置全局值需要 SYSTEM_VARIABLES_ADMIN(或已弃用的 SUPER 权限)。见 第 7.1.9.1 节,“系统变量权限”

    更多信息和示例,请参阅 获取执行计划信息

  • explain_json_format_version

    Command-Line Format --explain-json-format-version=#
    System Variable explain_json_format_version
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum Value 2

    确定 EXPLAIN FORMAT=JSON 语句使用的 JSON 输出格式的版本。将此变量设置为 1 将导致服务器使用 Version 1,该格式始终用于 MySQL 8.2 及更早版本的输出。该版本是 MySQL 8.3 的默认版本。将 explain_json_format_version 设置为 2 将导致使用 Version 2 格式;该 JSON 输出格式基于访问路径,旨在提供与未来版本的 MySQL 优化器的更好兼容性。

    有关使用示例,请参阅 获取执行计划信息

  • explicit_defaults_for_timestamp

    Command-Line Format --explicit-defaults-for-timestamp[={OFF|ON}]
    Deprecated
    System Variable explicit_defaults_for_timestamp
    Scope 全局、会话
    Dynamic
    SET_VAR Hint 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 值将设置该列为当前时间戳。例外:尝试将 NULL 插入到声明为 TIMESTAMP NOT NULL 的生成列中将被拒绝并出现错误。

    • 表中的第一个 TIMESTAMP 列,如果未明确声明 NULL 属性或明确的 DEFAULTON UPDATE 属性,将自动声明为 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 属性。

    • TIMESTAMP 列,除了第一个列外,如果未明确声明 NULL 属性或明确的 DEFAULT 属性,将自动声明为 DEFAULT '0000-00-00 00:00:00'(“零”时间戳)。对于插入的行,如果未指定该列的明确值,则该列将被分配 '0000-00-00 00:00:00',且不出现警告。

      根据是否启用严格 SQL 模式或 NO_ZERO_DATE SQL 模式,'0000-00-00 00:00:00' 的默认值可能无效。请注意,TRADITIONAL SQL 模式包括严格模式和 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_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 属性。这些属性必须明确指定。

    • 表中的第一个 TIMESTAMP 列与后续的 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 系统变量。

    Note

    explicit_defaults_for_timestamp 本身已经弃用,因为其唯一目的是控制弃用的 TIMESTAMP 行为,这些行为将在未来 MySQL 版本中删除。当这些行为被删除时,预计 explicit_defaults_for_timestamp 也将被删除。

    有关更多信息,请参阅 第 13.2.5 节,“自动初始化和更新 TIMESTAMP 和 DATETIME”

  • external_user

    System Variable external_user
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    在身份验证过程中使用的外部用户名,如由插件设置的那样。在使用本机(内置)MySQL 身份验证或插件不设置该值时,该变量为 NULL。请参阅 第 8.2.19 节,“代理用户”

  • flush

    Command-Line Format --flush[={OFF|ON}]
    System Variable 刷新
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果 ON, 服务器将在每个 SQL 语句后将所有更改刷新到磁盘。如果 查看 Section B.3.3.3, “如果 MySQL Keeps Crashing”。如果使用 mysqld 启动选项 --flush,则该变量将设置为 ON

    Note

    如果 刷新 已启用,则 刷新时间 的值无关紧要,且对 刷新时间 的更改无效。

  • 刷新时间

    Command-Line Format --flush-time=#
    System Variable 刷新时间
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 31536000
    Unit

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

    Note

    如果 刷新 已启用,则 刷新时间 的值无关紧要,且对 刷新时间 的更改无效。

  • 外键检查

    System Variable 外键检查
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    如果设置为 1(默认值),则检查外键约束。如果设置为 0,则忽略外键约束,除了少数例外情况。在重新创建已删除的表时,如果表定义不符合外键约束,会返回错误。同样,ALTER TABLE 操作将返回错误,如果外键定义不正确。更多信息,请参阅 Section 15.1.20.5, “FOREIGN KEY 约束”

    将该变量设置为 0 对 NDB 表的影响与对 InnoDB 表的影响相同。通常情况下,在正常操作中启用外键检查,以强制 参照完整性。禁用外键检查可以在重新加载 InnoDB 表时有用,以便在不同的顺序中重新加载表,而不受父/子关系的限制。请参阅 Section 15.1.20.5, “FOREIGN KEY 约束”

    foreign_key_checks 设置为 0 也会影响数据定义语句:DROP SCHEMA 删除模式,即使该模式包含有外键引用的表,而 DROP TABLE 删除表,即使该表有外键引用的其他表。

    Note

    foreign_key_checks 设置为 1 不会触发对现有表数据的扫描。因此,在 foreign_key_checks = 0 期间添加到表中的行不会被验证一致性。

    删除由外键约束所需的索引是不允许的,即使使用foreign_key_checks=0。在删除索引之前,必须删除外键约束。

  • ft_boolean_syntax

    Command-Line Format --ft-boolean-syntax=name
    System Variable ft_boolean_syntax
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value + -><()~*:""&|

    布尔全文搜索使用的运算符列表,使用 IN BOOLEAN MODE。见 第 14.9.2 节,“布尔全文搜索”

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

    • 运算符的功能由字符串中的位置确定。

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

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

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

    • 除了短语引号运算符在位置 11 和 12 之外,不允许重复。这些两个字符不需要相同,但它们是唯一可以重复的。

    • 位置 10、13 和 14(默认情况下分别设置为 :&|)保留供将来扩展使用。

  • ft_max_word_len

    Command-Line Format --ft-max-word-len=#
    System Variable ft_max_word_len
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 84
    Minimum Value 10
    Maximum Value 84

    MyISAM FULLTEXT 索引中包括的最大单词长度。

    Note

    FULLTEXT 索引在 MyISAM 表上必须在更改此变量后重新构建。使用 REPAIR TABLE tbl_name QUICK

  • ft_min_word_len

    Command-Line Format --ft-min-word-len=#
    System Variable ft_min_word_len
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4
    Minimum Value 1
    Maximum Value 82

    MyISAM FULLTEXT 索引中包括的最小单词长度。

    Note

    FULLTEXT 索引在 MyISAM 表上必须在更改此变量后重新构建。使用 REPAIR TABLE tbl_name QUICK

  • ft_query_expansion_limit

    Command-Line Format --ft-query-expansion-limit=#
    System Variable ft_query_expansion_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 20
    Minimum Value 0
    Maximum Value 1000

    使用 WITH QUERY EXPANSION 进行的全文搜索的顶级匹配数。

  • ft_stopword_file

    Command-Line Format --ft-stopword-file=file_name
    System Variable ft_stopword_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    从中读取全文搜索的停止词列表的文件 MyISAM 表。服务器在数据目录中查找该文件,除非给定绝对路径名以指定不同的目录。该文件中的所有单词都将被使用;注释将被 忽略。默认情况下,使用内置的停止词列表(如 storage/myisam/ft_static.c 文件中定义的)。将该变量设置为空字符串 ('') 将禁用停止词过滤。另见 第 14.9.4 节,“全文停止词”

    Note

    FULLTEXT 索引在 MyISAM 表上必须在更改此变量或停止词文件内容后重新构建。使用 REPAIR TABLE tbl_name QUICK

  • general_log

    Command-Line Format --general-log[={OFF|ON}]
    System Variable general_log
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否启用通用查询日志。该值可以是 0(或 OFF)以禁用日志或 1(或 ON)以启用日志。日志输出的目标由 log_output 系统变量控制;如果该值为 NONE,即使日志启用,也不会写入日志条目。

  • general_log_file

    Command-Line Format --general-log-file=file_name
    System Variable general_log_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value host_name.log

    通用查询日志文件的名称。默认值是 host_name.log,但可以使用 --general_log_file 选项更改初始值。

  • generated_random_password_length

    Command-Line Format --generated-random-password-length=#
    System Variable generated_random_password_length
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 20
    Minimum Value 5
    Maximum Value 255

    生成的随机密码的最大字符数,用于 CREATE USERALTER USERSET PASSWORD 语句。更多信息,请参见 随机密码生成

  • global_connection_memory_limit

    Command-Line Format --global-connection-memory-limit=#
    System Variable global_connection_memory_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 18446744073709551615
    Minimum Value 16777216
    Maximum Value 18446744073709551615
    Unit 字节

    设置所有用户连接的总内存使用量;即 Global_connection_memory 不应超过该值。任何时候该值超过该限制,所有用户查询(包括当前正在运行的查询)都将被拒绝,错误代码为 ER_GLOBAL_CONN_LIMIT

    系统用户(如 MySQL 根用户)的内存使用量也包括在该总量中,但不计入断开限制;这些用户永远不会因为内存使用量而断开连接。

    内存由 InnoDB 缓冲池排除在总计之外。

    您必须拥有 SYSTEM_VARIABLES_ADMINSUPER 权限来设置该变量。

  • global_connection_memory_tracking

    Command-Line Format --global-connection-memory-tracking={TRUE|FALSE}
    System Variable global_connection_memory_tracking
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value FALSE

    确定服务器是否计算 Global_connection_memory。该变量必须被明确启用;否则,内存计算将不执行,Global_connection_memory 将不被设置。

    您必须拥有 SYSTEM_VARIABLES_ADMINSUPER 权限来设置该变量。

  • group_concat_max_len

    Command-Line Format --group-concat-max-len=#
    System Variable group_concat_max_len
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1024
    Minimum Value 4
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

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

  • have_compress

    YES 如果 zlib 压缩库可供服务器使用,NO 如果不可用。如果不可用,则无法使用 COMPRESS()UNCOMPRESS() 函数。

  • have_dynamic_loading

    YES 如果 mysqld 支持动态加载插件,NO 如果不支持。如果值为 NO,则无法使用选项如 --plugin-load 在服务器启动时加载插件,或者使用 INSTALL PLUGIN 语句在运行时加载插件。

  • have_geometry

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

  • have_openssl

    该变量是 have_ssl 的同义词。

    have_openssl 已弃用,并将在未来 MySQL 版本中删除。有关 MySQL 连接接口的 TLS 属性,请参阅 tls_channel_status 表。

  • have_profiling

    YES 如果语句 profiling 能力存在,NO 如果不存在。如果存在,profiling 系统变量控制该能力是否启用或禁用。请参阅 第 15.7.7.33 节,“SHOW PROFILES 语句”

    该变量已弃用,并且您应该期望它在未来MySQL版本中被删除。

  • have_query_cache

    have_query_cache 已弃用,始终具有 NO 的值,并且您应该期望它在未来MySQL版本中被删除。

  • have_rtree_keys

    YES 如果 RTREE 索引可用, NO 如果不可用。(这些用于 MyISAM 表中的空间索引。)

  • have_ssl

    Deprecated
    System Variable have_ssl
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Valid Values

    YES(SSL 支持可用)

    DISABLED(SSL 支持被编译到服务器中,但服务器未使用必要选项启用它)

    YES 如果 mysqld 支持 SSL 连接, DISABLED 如果服务器被编译以支持 SSL,但未使用适当的连接加密选项启动。有关更多信息,请参阅 第 2.8.6 节,“配置 SSL 库支持”

    have_ssl 已弃用,并且您应该期望它在未来 MySQL 版本中被删除。有关 MySQL 连接接口的 TLS 属性的信息,请参阅 tls_channel_status 表格。

  • have_statement_timeout

    System Variable have_statement_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值

    是否启用语句执行超时功能(请参阅 语句执行时间优化器提示)。该值可以是 NO 如果该功能使用的后台线程无法初始化。

  • have_symlink

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

    该变量在 Windows 上没有意义。

    Note

    符号链接支持,连同控制它的 --symbolic-links 选项,已弃用;您应该期望它们在未来 MySQL 版本中被删除。此外,该选项默认情况下是禁用的。相关的 have_symlink 系统变量也已弃用,您应该期望它在未来 MySQL 版本中被删除。

  • histogram_generation_max_mem_size

    Command-Line Format --histogram-generation-max-mem-size=#
    System Variable histogram_generation_max_mem_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 20000000
    Minimum Value 1000000
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295
    Unit 字节

    生成histogram统计信息的最大内存量。见第10.9.6节,“优化器统计信息”,和第15.7.3.1节,“ANALYZE TABLE语句”

    设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见第7.1.9.1节,“系统变量权限”

  • 主机缓存大小

    Command-Line Format --主机缓存大小=#
    System Variable 主机缓存大小
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value -1(表示自动调整大小;不要分配这个文字值)
    Minimum Value 0
    Maximum Value 65536

    MySQL服务器维护一个内存中的主机缓存,该缓存包含客户端主机名和IP地址信息,并用于避免域名系统(DNS)查找;见第7.1.12.3节,“DNS查找和主机缓存”

    主机缓存大小变量控制主机缓存的大小,以及性能架构主机缓存表的大小,该表公开了缓存内容。设置主机缓存大小具有以下效果:

    • 将大小设置为0将禁用主机缓存。在缓存禁用时,服务器每次客户端连接时都会执行DNS查找。

    • 在运行时更改大小将导致隐式主机缓存刷新操作,该操作清除主机缓存,截断主机缓存表,并解除任何阻塞的主机。

    默认值是自动调整到128,加上max_connections的值,直到500,加上max_connections值每增加20的值,限制在2000。

  • 主机名

    System Variable 主机名
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    服务器在启动时将该变量设置为服务器主机名。最大长度为255个字符。

  • 身份

    该变量是last_insert_id变量的同义词。它存在于与其他数据库系统的兼容性中。你可以使用SELECT @@identity读取其值,并使用SET identity设置它。

  • 初始化连接

    Command-Line Format --初始化连接=name
    System Variable 初始化连接
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    一个字符串,服务器将其执行以连接每个客户端。该字符串由一个或多个SQL语句组成,使用分号字符分隔。

    对于拥有CONNECTION_ADMIN特权(或已弃用的SUPER特权)的用户,init_connect的内容不会被执行。这是为了防止init_connect的错误值阻止所有客户端连接。例如,值可能包含语法错误的语句,从而导致客户端连接失败。不执行init_connect对于拥有CONNECTION_ADMINSUPER特权的用户,使他们能够打开连接并修复init_connect值。

    init_connect执行将被跳过,对于任何客户端用户的过期密码。这是因为这样的用户无法执行任意语句,因此init_connect执行失败,导致客户端无法连接。跳过init_connect执行使用户能够连接并更改密码。

    服务器将丢弃init_connect值中的语句产生的任何结果集。

  • information_schema_stats_expiry

    Command-Line Format --information-schema-stats-expiry=#
    System Variable information_schema_stats_expiry
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 86400
    Minimum Value 0
    Maximum Value 31536000
    Unit

    一些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_statsmysql.table_stats词典表中检索缓存的值,以便查询这些列,这比从存储引擎中检索统计信息更高效。如果缓存的统计信息不可用或已过期,MySQL 将从存储引擎中检索最新的统计信息,并将其缓存在mysql.index_statsmysql.table_stats词典表中。随后的查询将检索缓存的统计信息,直到缓存的统计信息过期。服务器重启或第一次打开mysql.index_statsmysql.table_stats表不会自动更新缓存的统计信息。

    会话变量information_schema_stats_expiry定义了缓存统计信息的过期时间。默认为 86400 秒(24 小时),但时间期限可以延长到一年。

    要在任何时候更新缓存值,对于给定的表,使用ANALYZE TABLE

    要始终从存储引擎中检索最新的统计信息,并绕过缓存的值,设置information_schema_stats_expiry0

    查询统计信息列不会在以下情况下存储或更新mysql.index_statsmysql.table_stats词典表中的统计信息:

    统计缓存可能在多语句事务中更新,在事务提交前不知道。这可能会导致缓存包含不对应于已知提交状态的信息。这可以在 autocommit=0START TRANSACTION 后发生。

    information_schema_stats_expiry 是一个会话变量,每个客户会话可以定义其自己的过期值。从存储引擎检索并缓存的统计信息对其他会话可用。

    有关信息,请参阅 第 10.2.3 节,“优化 INFORMATION_SCHEMA 查询”

  • init_file

    Command-Line Format --init-file=file_name
    System Variable init_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    如果指定了该变量,将在启动过程中读取和执行包含 SQL 语句的文件。该文件支持以下构造:

    • delimiter ;,将语句分隔符设置为 ; 字符。

    • delimiter $$,将语句分隔符设置为 $$ 字符序列。

    • 同一行上的多个语句,以当前分隔符分隔。

    • 多行语句。

    • # 字符到行尾的注释。

    • --  序列到行尾的注释。

    • /* 序列到下一个 */ 序列的 C 样式注释,包括跨多行。

    • 用单引号 (') 或双引号 (") 字符括起来的多行字符串文字。

    如果服务器以 --initialize--initialize-insecure 选项启动,则它处于引导模式,某些功能不可用,限制了文件中的语句。这些语句包括与账户管理相关的语句(例如 CREATE USERGRANT),复制和全局事务标识符。请参阅 第 19.1.3 节,“使用全局事务标识符的复制”

    在服务器启动期间创建的线程用于执行任务,如创建数据字典、运行升级过程和创建系统表。为了确保稳定和可预测的环境,这些线程使用服务器内置的默认值执行,例如 sql_modecharacter_set_servercollation_servercompletion_typeexplicit_defaults_for_timestampdefault_table_encryption

    这些线程还用于执行启动服务器时指定的文件中的语句,以 init_file,因此这些语句将使用服务器内置的默认值执行。

  • innodb_xxx

    InnoDB 系统变量列在 第 17.14 节,“InnoDB 启动选项和系统变量”。这些变量控制了 InnoDB 表的许多方面,包括存储、内存使用和 I/O 模式,现在 InnoDB 是默认的存储引擎。

  • insert_id

    用于以下 INSERTALTER TABLE 语句插入自动递增值的值。这主要用于二进制日志。

  • interactive_timeout

    Command-Line Format --interactive-timeout=#
    System Variable interactive_timeout
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 28800
    Minimum Value 1
    Maximum Value 31536000
    Unit

    服务器在关闭交互式连接之前等待活动的秒数。交互式客户端定义为使用 CLIENT_INTERACTIVE 选项的客户端 mysql_real_connect()。见 also wait_timeout

  • internal_tmp_mem_storage_engine

    Command-Line Format --internal-tmp-mem-storage-engine=#
    System Variable internal_tmp_mem_storage_engine
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value TempTable
    Valid Values

    MEMORY

    TempTable

    内存内部临时表的存储引擎(见 第 10.4.4 节,“MySQL 中的内部临时表使用”)。允许的值是 TempTable(默认)和 MEMORY

    优化器使用 internal_tmp_mem_storage_engine 定义的存储引擎来处理内存内部临时表。

    配置会话设置 internal_tmp_mem_storage_engine 需要 SESSION_VARIABLES_ADMINSYSTEM_VARIABLES_ADMIN 权限。

  • join_buffer_size

    Command-Line Format --join-buffer-size=#
    System Variable join_buffer_size
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 262144
    Minimum Value 128
    Maximum Value (Windows) 4294967168
    Maximum Value (Other, 64-bit platforms) 18446744073709551488
    Maximum Value (Other, 32-bit platforms) 4294967168
    Unit 字节
    Block Size 128

    最小的缓冲区大小,用于普通索引扫描、范围索引扫描和不使用索引的连接,从而执行完整的表扫描。此变量还控制哈希连接所使用的内存量。通常,获取快速连接的最好方法是添加索引。增加join_buffer_size的值,以获取更快的完整连接,当添加索引不可行时。

    默认值为 256KB。允许的最大设置为 4GB−1。对于 64 位平台(除 64 位 Windows 外,large 值将被截断为 4GB−1 并发出警告)。块大小为 128,MySQL 服务器在存储系统变量之前将值舍入到下一个块大小的倍数。

    除非使用 Block Nested-Loop 或 Batched Key Access 算法,否则将缓冲区设置得太大不会带来任何好处,所有连接至少分配最小大小,因此请小心地将该变量设置为大值全局。更好的是将全局设置保持小,并在需要大连接的会话中更改会话设置,或者使用 SET_VAR 优化器提示(见 第 10.9.3 节,“优化器提示”)。内存分配时间可能会导致性能下降,如果全局大小大于大多数查询所需的大小。

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

    当使用 Batched Key Access 时,join_buffer_size 的值定义了每个请求中的批处理键的大小。缓冲区越大,对右侧表的顺序访问就越多,从而可以显著改善性能。

    有关连接缓冲区的更多信息,请参阅 第 10.2.1.7 节,“Nested-Loop Join 算法”。有关 Batched Key Access 的信息,请参阅 第 10.2.1.12 节,“Block Nested-Loop 和 Batched Key Access 连接”。有关哈希连接的信息,请参阅 第 10.2.1.4 节,“哈希连接优化”

  • keep_files_on_create

    Command-Line Format --keep-files-on-create[={OFF|ON}]
    System Variable keep_files_on_create
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    如果创建了一个没有 DATA DIRECTORY 选项的 MyISAM 表,在数据库目录中创建了 .MYD 文件。默认情况下,如果 MyISAM 在这种情况下找到现有的 .MYD 文件,它将覆盖该文件。同样,对于创建了没有 INDEX DIRECTORY 选项的表的 .MYI 文件也是如此。要抑制这种行为,请将 keep_files_on_create 变量设置为 ON (1),在这种情况下,MyISAM 不会覆盖现有的文件,而是返回错误。默认值为 OFF (0)。

    如果创建了一个带有 DATA DIRECTORYINDEX DIRECTORY 选项的 MyISAM 表,并且找到现有的 .MYD.MYI 文件,MyISAM 总是返回错误。它不会覆盖指定目录中的文件。

  • key_buffer_size

    Command-Line Format --key-buffer-size=#
    System Variable key_buffer_size
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 8388608
    Minimum Value 0
    Maximum Value (64-bit platforms) OS_PER_PROCESS_LIMIT
    Maximum Value (32-bit platforms) 4294967295
    Unit 字节

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

    最小允许设置为 0,但您不能在运行时将 key_buffer_size 设置为 0。将 key_buffer_size 设置为 0 只允许在启动时,在这种情况下键缓存不会被初始化。在运行时从 0 更改 key_buffer_size 设置为非零值将初始化键缓存。

    key_buffer_size 只能以 4096 字节的增量或倍数增加或减少。以非符合值增加或减少设置将产生警告并将设置截断为符合值。

    在 32 位平台上,key_buffer_size 的最大允许设置为 4GB-1。在 64 位平台上,允许更大的值。实际的最大大小可能小于可用物理 RAM 和操作系统或硬件平台施加的每进程 RAM 限制。该变量的值表示请求的内存量。内部,服务器将尽可能分配到该金额的内存,但实际分配可能小于该金额。

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

    对于写入多行时的更多速度,请使用 LOCK TABLES。请参阅 第 10.2.5.1 节,“优化 INSERT 语句”

    您可以通过发出 SHOW STATUS 语句并检查 Key_read_requestsKey_readsKey_write_requestsKey_writes 状态变量来检查键缓存的性能。(请参阅 第 15.7.7 节,“SHOW 语句”。)Key_reads/Key_read_requests 比率通常小于 0.01。Key_writes/Key_write_requests 比率通常接近 1,如果您主要使用更新和删除,或者如果您使用 DELAY_KEY_WRITE 表选项,可能会小得多。

    可以使用 key_buffer_sizeKey_blocks_unused 状态变量以及缓冲区块大小(可从 key_cache_block_size 系统变量中获得)来确定键缓存的使用率。

    1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)

    这个值是一个近似值,因为键缓冲区中的一些空间被内部分配用于管理结构。影响这些结构的开销的因素包括块大小和指针大小。随着块大小的增加,键缓冲区中损失的百分比趋于减少。较大的块将导致较少的读操作(因为每次读取更多的键),但相应地增加了读取不相关键的次数(如果块中的所有键都不是查询相关的)。

    可以创建多个 MyISAM 键缓存。每个缓存的大小限制为 4GB,不是作为一个组。见 第 10.10.2 节,“MyISAM 键缓存”

  • key_cache_age_threshold

    Command-Line Format --key-cache-age-threshold=#
    System Variable key_cache_age_threshold
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 100
    Maximum Value (64-bit platforms) 18446744073709551516
    Maximum Value (32-bit platforms) 4294967196
    Block Size 100

    该值控制键缓存的热子列表中的缓冲区被降级到温子列表中的速度。较低的值将导致降级发生得更快。最小值为 100。默认值为 300。见 第 10.10.2 节,“MyISAM 键缓存”

  • key_cache_block_size

    Command-Line Format --key-cache-block-size=#
    System Variable key_cache_block_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1024
    Minimum Value 512
    Maximum Value 16384
    Unit 字节
    Block Size 512

    键缓存中的块大小,以字节为单位。默认值为 1024。见 第 10.10.2 节,“MyISAM 键缓存”

  • key_cache_division_limit

    Command-Line Format --key-cache-division-limit=#
    System Variable key_cache_division_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 100
    Minimum Value 1
    Maximum Value 100

    键缓存缓冲区列表中的热子列表和温子列表之间的分界点。该值是温子列表的百分比。允许的值范围从 1 到 100。默认值为 100。见 第 10.10.2 节,“MyISAM 键缓存”

  • large_files_support

    System Variable large_files_support
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值

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

  • large_pages

    Command-Line Format --large-pages[={OFF|ON}]
    System Variable large_pages
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Platform Specific Linux
    Type 布尔值
    Default Value OFF

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

  • large_page_size

    System Variable 大页面大小
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 65535
    Unit 字节

    如果启用了大页面支持,这将显示内存页面的大小。大页面仅在 Linux 上受支持;在其他平台上,该变量的值始终为 0。见 第 10.12.3.3 节,“启用大页面支持”

  • 最后插入 ID

    LAST_INSERT_ID() 返回的值。这将存储在二进制日志中,当您在更新表时使用 LAST_INSERT_ID()。设置该变量不会更新 mysql_insert_id() C API 函数返回的值。

  • 错误消息语言

    Command-Line Format --lc-messages=name
    System Variable lc_messages
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value en_US

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

  • 错误消息目录

    Command-Line Format --lc-messages-dir=dir_name
    System Variable lc_messages_dir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称

    错误消息文件的目录。服务器将该值与 lc_messages 的值组合,以生成错误消息文件的位置。见 第 12.12 节,“设置错误消息语言”

  • 时间语言

    Command-Line Format --lc-time-names=value
    System Variable lc_time_names
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该变量指定了控制日期和月份名称和缩写的语言。这将影响 DATE_FORMAT()DAYNAME()MONTHNAME() 函数的输出。语言名称是 POSIX 风格的值,例如 'ja_JP''pt_BR'。默认值为 'en_US',无论系统的语言设置如何。详见 第 12.16 节,“MySQL 服务器语言支持”

  • 许可证

    System Variable license
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value GPL

    服务器的许可证类型。

  • 本地 infile

    Command-Line Format --local-infile[={OFF|ON}]
    System Variable local_infile
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value 关闭

    此变量控制服务器端 LOCAL 能力对于 LOAD DATA 语句。根据 local_infile 设置,服务器拒绝或允许客户端加载本地数据,客户端启用了 LOCAL

    要明确地使服务器拒绝或允许 LOAD DATA LOCAL 语句(无论客户端程序和库如何在构建时或运行时配置),请使用 mysqld 启动时禁用或启用 local_infilelocal_infile 也可以在运行时设置。有关更多信息,请参阅 第 8.1.6 节,“LOAD DATA LOCAL 安全注意事项”

  • lock_wait_timeout

    Command-Line Format --lock-wait-timeout=#
    System Variable lock_wait_timeout
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 31536000
    Minimum Value 1
    Maximum Value 31536000
    Unit

    该变量指定元数据锁的超时时间(以秒为单位)。允许的值范围从 1 到 31536000(1 年)。默认值为 31536000。

    该超时时间适用于所有使用元数据锁的语句。这些包括 DML 和 DDL 操作、视图、存储过程和存储函数,以及 LOCK TABLESFLUSH TABLES WITH READ LOCKHANDLER 语句。

    该超时时间不适用于系统表的隐式访问,例如 grant 表由 GRANTREVOKE 语句修改的表,或者日志表语句。该超时时间适用于直接访问系统表,例如使用 SELECTUPDATE

    超时值单独应用于每个元数据锁尝试。给定语句可能需要多个锁,因此语句可能会阻塞长于 lock_wait_timeout 值之前报告超时错误。当锁超时时,ER_LOCK_WAIT_TIMEOUT 将被报告。

    lock_wait_timeout 也定义了 LOCK INSTANCE FOR BACKUP 语句等待锁定的时间。

  • locked_in_memory

    System Variable locked_in_memory
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    是否 mysqld 使用 --memlock 锁定在内存中。

  • log_error

    Command-Line Format --log-error[=file_name]
    System Variable log_error
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    默认错误日志目标。如果目标是控制台,值为 stderr。否则,目标是一个文件,log_error 值是文件名。见 第 7.4.2 节,“错误日志”

  • log_error_services

    Command-Line Format --log-error-services=value
    System Variable log_error_services
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value log_filter_internal; log_sink_internal

    错误日志组件的启用列表。该变量可以包含 0、1 或多个元素的列表。在后一种情况下,元素可以用分号或逗号分隔,后跟空格。给定的设置不能同时使用分号和逗号分隔符。组件的顺序很重要,因为服务器按照列表顺序执行组件。

    任何在 log_error_services 中命名的可加载(不是内置的)组件将隐式加载,如果它尚未加载。有关更多信息,请参阅 第 7.4.2.1 节,“错误日志配置”

  • log_error_suppression_list

    Command-Line Format --log-error-suppression-list=value
    System Variable log_error_suppression_list
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 空字符串

    log_error_suppression_list 系统变量适用于错误日志中的事件,并指定了哪些事件在优先级为 WARNINGINFORMATION 时应被抑制。例如,如果某种类型的警告被认为是错误日志中的“噪音”,因为它经常发生但不感兴趣,可以将其抑制。该变量影响 log_filter_internal 错误日志过滤器组件的过滤操作,该组件默认启用(见 第 7.5.3 节,“错误日志组件”)。如果 log_filter_internal 被禁用,log_error_suppression_list 无效。

    log_error_suppression_list 值可以为空字符串以不进行抑制,或者是一个或多个以逗号分隔的值,指示要抑制的错误代码。错误代码可以以符号或数字形式指定。数字代码可以带或不带 MY- 前缀。数字部分的前导零不重要。允许的代码格式示例:

    ER_SERVER_SHUTDOWN_COMPLETE
    MY-000031
    000031
    MY-31
    31

    符号值优于数字值,以提高可读性和可移植性。有关允许的错误符号和数字的信息,请参阅 MySQL 8.3 错误信息参考

    log_error_suppression_list 的效果与 log_error_verbosity 的效果结合。有关更多信息,请参阅 第 7.4.2.5 节,“基于优先级的错误日志过滤(log_filter_internal)”

  • log_error_verbosity

    Command-Line Format --log-error-verbosity=#
    System Variable log_error_verbosity
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2
    Minimum Value 1
    Maximum Value 3

    log_error_verbosity 系统变量指定了错误日志的详细程度。此变量影响了 log_filter_internal 错误日志过滤器组件的过滤,后者默认启用(见 第 7.5.3 节,“错误日志组件”)。如果 log_filter_internal 被禁用,log_error_verbosity 无效。

    意图写入错误日志的事件具有 ERRORWARNINGINFORMATION 优先级。log_error_verbosity 根据允许写入日志的优先级控制详细程度,如下表所示。

    log_error_verbosity Value Permitted Message Priorities
    1 ERROR
    2 ERROR, WARNING
    3 ERROR, WARNING, INFORMATION

    还有一个 SYSTEM 优先级。系统消息关于非错误情况将被打印到错误日志,不管 log_error_verbosity 的值如何。这些消息包括启动和关闭消息,以及一些重要的设置更改。

    log_error_verbosity 的效果与 log_error_suppression_list 的效果结合。有关更多信息,请参阅 第 7.4.2.5 节,“基于优先级的错误日志过滤(log_filter_internal)”

  • log_output

    Command-Line Format --log-output=name
    System Variable log_output
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Set
    Default Value FILE
    Valid Values

    TABLE

    FILE

    NONE

    通用查询日志和慢查询日志的目标或目标之一。该值是一个或多个以逗号分隔的单词,选择自 TABLEFILENONETABLE 选择记录到 general_logslow_log 表中的 mysql 系统模式。 FILE 选择记录到日志文件。 NONE 禁用记录。如果 NONE 存在于值中,它将优先于其他单词。

    该变量选择日志输出目标,但不启用日志输出。要启用日志输出,需要启用 general_logslow_query_log 系统变量。对于 FILE 记录,general_log_fileslow_query_log_file 系统变量确定日志文件位置。有关更多信息,请参阅 第 7.4.1 节,“选择通用查询日志和慢查询日志输出目标”

  • log_queries_not_using_indexes

    Command-Line Format --log-queries-not-using-indexes[={OFF|ON}]
    System Variable log_queries_not_using_indexes
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    如果启用该变量并启用慢查询日志,预计检索所有行的查询将被记录。参见第 7.4.5 节,“慢查询日志”。该选项并不一定意味着没有使用索引。例如,使用完整索引扫描的查询使用索引,但将被记录,因为索引不会限制行数。

  • log_raw

    Command-Line Format --log-raw[={OFF|ON}]
    System Variable log_raw
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    log_raw 系统变量最初设置为 --log-raw 选项的值。请参阅该选项的描述以获取更多信息。系统变量也可以在运行时设置以更改密码屏蔽行为。

  • log_slow_admin_statements

    Command-Line Format --log-slow-admin-statements[={OFF|ON}]
    System Variable log_slow_admin_statements
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    包括慢管理语句在慢查询日志中写入的语句。管理语句包括 ALTER TABLEANALYZE TABLECHECK TABLECREATE INDEXDROP INDEXOPTIMIZE TABLEREPAIR TABLE

  • log_slow_extra

    Command-Line Format --log-slow-extra[={OFF|ON}]
    System Variable log_slow_extra
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果慢查询日志启用并且输出目标包括 FILE,服务器将写入额外字段到日志文件行,以提供关于慢语句的信息。请参阅 第 7.4.5 节,“慢查询日志”TABLE 输出不受影响。

  • log_timestamps

    Command-Line Format --log-timestamps=#
    System Variable log_timestamps
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value UTC
    Valid Values

    UTC

    SYSTEM

    该变量控制错误日志、一般查询日志和慢查询日志中时间戳的时区。它不影响一般查询日志和慢查询日志表 (mysql.general_logmysql.slow_log) 中的时区。从这些表中检索的行可以使用 CONVERT_TZ() 或通过设置会话 time_zone 系统变量将其转换为任何所需的时区。

    允许的 log_timestamps 值是 UTC(默认)和 SYSTEM(本地系统时区)。

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

  • 日志限制未使用索引的查询

    Command-Line Format --log-throttle-queries-not-using-indexes=#
    System Variable 日志限制未使用索引的查询
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    如果 日志未使用索引的查询 启用,则 日志限制未使用索引的查询 变量限制每分钟可以写入慢查询日志的查询数量。值为 0(默认)表示 无限制。更多信息,请参阅 第 7.4.5 节,“慢查询日志”

  • 长查询时间

    Command-Line Format --long-query-time=#
    System Variable 长查询时间
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 数字
    Default Value 10
    Minimum Value 0
    Maximum Value 31536000
    Unit

    如果查询时间超过这个值,服务器将增加 慢查询 状态变量。如果慢查询日志启用,查询将被记录到慢查询日志文件中。这个值是以实际时间测量的,而不是 CPU 时间,因此在轻负载系统上的查询可能在重负载系统上超过阈值。长查询时间 的最小和默认值分别为 0 和 10。最大值为 31536000,即 365 天的秒数。该值可以以微秒为单位指定。请参阅 第 7.4.5 节,“慢查询日志”

    这个变量的较小值将导致更多的语句被认为是长时间运行的,结果是慢查询日志需要更多的空间。对于非常小的值(小于 1 秒),日志可能在短时间内增长很大。在生产环境中,仅在短时间内使用非常小的值,或者在测试环境中使用。

    mysqldump 执行全表扫描,这意味着其查询经常超过 长查询时间 设置,该设置对常规查询很有用。如果您想排除大多数或所有由 mysqldump 生成的查询从慢查询日志中排除,可以使用 --mysqld-long-query-time 将会话值更改为较高的值。

  • 低优先级更新

    Command-Line Format --low-priority-updates[={OFF|ON}]
    System Variable 低优先级更新
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果设置为 1,所有 INSERTUPDATEDELETELOCK TABLE WRITE 语句将等待,直到没有挂起的 SELECTLOCK TABLE READ 在受影响的表上。同样的效果可以使用 {INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ... 来降低单个查询的优先级。该变量仅影响使用表级锁定的存储引擎(例如 MyISAMMEMORYMERGE)。见 第 10.11.2 节,“表锁定问题”

    设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见 第 7.1.9.1 节,“系统变量权限”

  • lower_case_file_system

    System Variable lower_case_file_system
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值

    该变量描述了数据目录所在文件系统的文件名大小写敏感性。OFF 表示文件名是大小写敏感的,ON 表示它们不是大小写敏感的。该变量是只读的,因为它反映了文件系统的属性,并且设置它不会对文件系统产生影响。

  • lower_case_table_names

    Command-Line Format --lower-case-table-names[=#]
    System Variable lower_case_table_names
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value (macOS) 2
    Default Value (Unix) 0
    Default Value (Windows) 1
    Minimum Value 0
    Maximum 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_name 操作时,使用错误的 tbl_name 大小写,导致索引损坏。

    如果你尝试在 case-insensitive 文件系统上启动服务器时,将打印错误消息并退出服务器。

    该变量的设置会影响复制过滤规则的大小写敏感性。更多信息,请参见 第 19.2.5 节,“服务器如何评估复制过滤规则”

    禁止使用与服务器初始化时不同的lower_case_table_names设置启动服务器。该限制是必要的,因为数据字典表字段使用的排序规则是在服务器初始化时确定的,而重新启动服务器时使用不同的设置将引入不一致。

    因此,需要在初始化服务器之前配置lower_case_table_names到所需的设置。在大多数情况下,这需要在 MySQL 选项文件中配置lower_case_table_names,然后启动 MySQL 服务器。对于 Debian 和 Ubuntu 的 APT 安装,但是服务器已经为您初始化了,没有机会在选项文件中提前配置该设置。在这种情况下,您必须使用 debconf-set-selection 实用程序在安装 MySQL 之前启用lower_case_table_names。为此,请在安装 MySQL 之前运行以下命令:

    $> sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled"
  • mandatory_roles

    Command-Line Format --mandatory-roles=value
    System Variable mandatory_roles
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 空字符串

    服务器应将其视为强制角色的角色。在实际上,这些角色将自动授予每个用户,尽管设置mandatory_roles不实际更改任何用户帐户,并且授予的角色不在 mysql.role_edges 系统表中可见。

    变量值是一个逗号分隔的角色名称列表。示例:

    SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';

    设置mandatory_roles的运行时值需要ROLE_ADMIN 权限,另外还需要SYSTEM_VARIABLES_ADMIN 权限(或已弃用的SUPER 权限)通常需要设置全局系统变量的运行时值。

    角色名称由用户部分和主机部分组成,以 user_name@host_name 格式表示。主机部分,如果省略,默认为 %。有关更多信息,请参阅 第 8.2.5 节,“指定角色名称”

    mandatory_roles 值是一个字符串,因此用户名和主机名,如果引号,必须以允许在引号字符串中的方式编写。

    mandatory_roles 值中命名的角色不能使用 REVOKEDROP ROLEDROP USER 撤销。

    要防止会话默认成为系统会话,不能在 mandatory_roles 系统变量值中列出具有 SYSTEM_USER 权限的角色:

    强制角色,如明确授予的角色,不会生效,直到激活(见激活角色)。在登录时,如果启用了activate_all_roles_on_login系统变量,则所有授予的角色将被激活;否则,对于设置为默认角色的角色或在运行时使用SET ROLE激活角色。

    如果在分配时不存在的角色,但稍后创建了这些角色,可能需要特殊处理以被视为强制角色。有关详细信息,请参阅定义强制角色

    SHOW GRANTS根据第15.7.7.22节“SHOW GRANTS语句”中的规则显示强制角色。

  • max_allowed_packet

    Command-Line Format --max-allowed-packet=#
    System Variable max_allowed_packet
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 67108864
    Minimum Value 1024
    Maximum Value 1073741824
    Unit 字节
    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值为1GB,但个别客户端程序可能会覆盖该值。例如:mysqlmysqldump的默认值分别为16MB和24MB。它们也允许您通过设置max_allowed_packet在命令行或选项文件中更改客户端值。

    该会话变量的值是只读的。客户端可以接收到多达会话值那么多字节。但是,服务器不会将超过当前全局max_allowed_packet值的字节发送到客户端。(全局值可能小于会话值,如果全局值在客户端连接后更改。)

  • max_connect_errors

    Command-Line Format --max-connect-errors=#
    System Variable max_connect_errors
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 100
    Minimum Value 1
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    max_connect_errors连续连接请求从主机被中断没有成功连接后,服务器将该主机阻止进一步的连接。如果在之前的连接被中断后,主机在少于max_connect_errors尝试后成功建立连接,主机的错误计数将被清零为零。要解除阻止的主机,请刷新主机缓存;见刷新主机缓存

  • max_connections

    Command-Line Format --max-connections=#
    System Variable max_connections
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 151
    Minimum Value 1
    Maximum Value 100000

    允许的最大同时客户端连接数。最大有效值是open_files_limit - 810的较小值和实际设置的max_connections值。

    更多信息,请见第 7.1.12.1 节,“连接接口”

  • max_delayed_threads

    Command-Line Format --max-delayed-threads=#
    Deprecated
    System Variable max_delayed_threads
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 20
    Minimum Value 0
    Maximum Value 16384

    该系统变量已弃用(因为DELAYED插入不受支持)并将在未来 MySQL 版本中删除。

    设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见第 7.1.9.1 节,“系统变量权限”

  • max_digest_length

    Command-Line Format --max-digest-length=#
    System Variable max_digest_length
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1024
    Minimum Value 0
    Maximum Value 1048576
    Unit 字节

    每个会话为计算 normalized 语句摘要保留的最大内存字节数。一旦达到该数量,截断将发生:不会收集或计算语句的摘要值。语句只有在截断点后不同,才会被认为相同。

    Warning

    max_digest_length设置为零将禁用摘要生产,也禁用服务器功能,如 MySQL Enterprise 防火墙。

    降低max_digest_length值将减少内存使用,但会使更多语句的摘要值变得不可区分。如果增加该值,将允许更长的语句被区分,但会增加内存使用,特别是在大量同时会话的工作负载中(服务器为每个会话分配max_digest_length字节)。

    解析器使用该系统变量作为 normalized 语句摘要的最大长度限制。性能模式,如果它跟踪语句摘要,将复制摘要值,使用 performance_schema_max_digest_length 系统变量作为存储摘要的最大长度限制。因此,如果 performance_schema_max_digest_length 小于 max_digest_length,性能模式中存储的摘要值将相对于原始摘要值被截断。

    有关语句摘要的更多信息,请参阅 第 29.10 节,“性能模式语句摘要和采样”

  • max_error_count

    Command-Line Format --max-error-count=#
    System Variable max_error_count
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1024
    Minimum Value 0
    Maximum Value 65535

    错误、警告和信息消息的最大数量,以便由 SHOW ERRORSSHOW WARNINGS 语句显示。这也是诊断区域中的条件区域数量,因此是可以由 GET DIAGNOSTICS 检查的条件数量。

    设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • max_execution_time

    Command-Line Format --max-execution-time=#
    System Variable max_execution_time
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295
    Unit 毫秒

    选择语句的执行超时时间,以毫秒为单位。如果值为 0,则不启用超时。

    max_execution_time 按照以下方式应用:

    • 全局 max_execution_time 值为新连接提供默认值。会话值适用于在会话中执行的选择语句,包括没有 MAX_EXECUTION_TIME(N) 优化器提示或 N 为 0 的语句。

    • max_execution_time 适用于只读选择语句。不是只读的语句是那些作为副作用修改数据的存储过程。

    • max_execution_time 在存储程序中的选择语句中被忽略。

  • max_heap_table_size

    Command-Line Format --max-heap-table-size=#
    System Variable max_heap_table_size
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 16777216
    Minimum Value 16384
    Maximum Value (64-bit platforms) 18446744073709550592
    Maximum Value (32-bit platforms) 4294966272
    Unit 字节
    Block Size 1024

    该变量设置用户创建的 MEMORY 表格的最大大小。该变量的值用于计算 MEMORY 表格的 MAX_ROWS 值。

    设置该变量不会影响任何现有的 MEMORY 表格,除非该表格被重新创建,例如使用 CREATE TABLE 或修改使用 ALTER TABLETRUNCATE 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 节,“复制和变量”,以获取更多信息。

  • max_insert_delayed_threads

    Deprecated
    System Variable max_insert_delayed_threads
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 20
    Maximum Value 16384

    该变量是 max_delayed_threads 的同义词。像 max_delayed_threads 一样,它已经弃用(因为不支持 DELAYED 插入)并将在未来 MySQL 版本中删除。

    设置该会话变量需要足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”

  • max_join_size

    Command-Line Format --max-join-size=#
    System Variable max_join_size
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 18446744073709551615
    Minimum Value 1
    Maximum Value 18446744073709551615

    该变量表示基本表格的最大行访问数。如果服务器估算表明需要从基本表格中读取的行数超过 max_join_size,则该语句将被拒绝并显示错误。

    如果将该变量设置为非 DEFAULT 值,将重置 sql_big_selects 的值为 0。如果您再次设置 sql_big_selects 的值,则 max_join_size 变量将被忽略。

  • max_length_for_sort_data

    Command-Line Format --max-length-for-sort-data=#
    Deprecated
    System Variable max_length_for_sort_data
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4096
    Minimum Value 4
    Maximum Value 8388608
    Unit 字节

    该变量已经弃用,在 MySQL 8.3 中无效。

  • 最大几何点数

    Command-Line Format --max-points-in-geometry=#
    System Variable 最大几何点数
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 65536
    Minimum Value 3
    Maximum Value 1048576

    ST_Buffer_Strategy() 函数的 points_per_circle 参数的最大值。

  • 最大预备语句计数

    Command-Line Format --max-prepared-stmt-count=#
    System Variable 最大预备语句计数
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 16382
    Minimum Value 0
    Maximum Value 4194304

    该变量限制服务器中的总预备语句数。在可能遭受基于服务器内存溢出的拒绝服务攻击的环境中,可以使用该变量。如果将值设置得低于当前预备语句数,现有的语句不受影响,可以继续使用,但不能准备新的语句,直到当前数降低到限制以下。将值设置为 0 将禁用预备语句。

  • 最大键查找次数

    Command-Line Format --max-seeks-for-key=#
    System Variable 最大键查找次数
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value (Windows) 4294967295
    Default Value (Other, 64-bit platforms) 18446744073709551615
    Default Value (Other, 32-bit platforms) 4294967295
    Minimum Value 1
    Maximum Value (Windows) 4294967295
    Maximum Value (Other, 64-bit platforms) 18446744073709551615
    Maximum Value (Other, 32-bit platforms) 4294967295

    限制基于键的行查找时的最大查找次数。MySQL 优化器假设在扫描索引时最多需要该数量的键查找,ardless of the actual cardinality of the index(见 第 15.7.7.23 节,“SHOW INDEX 语句”)。通过将其设置为较低的值(例如 100),可以强制 MySQL 优先使用索引而不是表扫描。

  • 最大排序长度

    Command-Line Format --max-sort-length=#
    System Variable 最大排序长度
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1024
    Minimum Value 4
    Maximum Value 8388608
    Unit 字节

    用于排序字符串值的字节数,该值使用 PAD SPACE 排序规则。服务器仅使用该值的前 最大排序长度 字节,并忽略其余部分。因此,对于 GROUP BY、ORDER BY 和 DISTINCT 操作,这些值在比较时被视为相等。(这与 MySQL 旧版本的行为不同,在旧版本中,该设置应用于所有比较值。)

    增加 最大排序长度 的值可能需要增加 sort_buffer_size 的值。详见 第 10.2.1.16 节,“ORDER BY 优化”

  • 最大存储过程递归深度

    Command-Line Format --max-sp-recursion-depth[=#]
    System Variable 最大存储过程递归深度
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 255

    存储过程的递归调用次数。该选项的默认值为 0,完全禁用存储过程中的递归。如果增加该选项的值,可能需要在服务器启动时增加线程栈大小,方法是增加 thread_stack 的值。

    存储过程递归增加了线程栈空间的需求。如果您增加 max_sp_recursion_depth 的值,可能需要在服务器启动时增加线程栈大小,方法是增加 thread_stack 的值。

  • 最大用户连接数

    Command-Line Format --max-user-connections=#
    System Variable max_user_connections
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    允许的最大同时连接数,该值为 0(默认)表示“无限制”。

    该变量有一个全局值,可以在服务器启动或运行时设置。它也具有一个只读的会话值,该值表示当前会话的有效同时连接限制。

    账户资源限制可以使用 CREATE USERALTER USER 语句指定。请参阅 第 8.2.21 节,“设置账户资源限制”

  • 最大写锁计数

    Command-Line Format --max-write-lock-count=#
    System Variable max_write_lock_count
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value (Windows) 4294967295
    Default Value (Other, 64-bit platforms) 18446744073709551615
    Default Value (Other, 32-bit platforms) 4294967295
    Minimum Value 1
    Maximum Value (Windows) 4294967295
    Maximum Value (Other, 64-bit platforms) 18446744073709551615
    Maximum Value (Other, 32-bit platforms) 4294967295

    在达到这个写锁计数后,允许一些挂起的读锁请求被处理。在写锁请求中,写锁请求的优先级高于读锁请求。然而,如果 max_write_lock_count 设置为一个很小的值(例如 10),读锁请求可能会被优先处理,以便在 10 个写锁请求之后处理。

  • MeCab 配置文件

    Command-Line Format --mecab-rc-file=file_name
    System Variable mecab_rc_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    mecab_rc_file 选项用于设置 MeCab 全文解析器。

    mecab_rc_file 选项定义了 MeCab 配置文件 mecabrc 的路径,该文件是 MeCab 的配置文件。该选项是只读的,仅可以在启动时设置。mecabrc 配置文件是 MeCab 初始化所需的。

    关于 MeCab 全文解析器的信息,请参阅 第 14.9.9 节,“MeCab 全文解析器插件”

    关于可以在 MeCab mecabrc 配置文件中指定的选项,请参阅 MeCab 文档Google 开发者 站点。

  • min_examined_row_limit

    Command-Line Format --min-examined-row-limit=#
    System Variable min_examined_row_limit
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    查询少于该数字的行数将不会记录到慢查询日志中。

    设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • myisam_data_pointer_size

    Command-Line Format --myisam-data-pointer-size=#
    System Variable myisam_data_pointer_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 6
    Minimum Value 2
    Maximum Value 7
    Unit 字节

    默认指针大小(以字节为单位),用于 CREATE TABLE 语句中没有指定 MAX_ROWS 选项时的 MyISAM 表。该变量不能小于 2 或大于 7。默认值为 6。请参阅 B.3.2.10 节,“表已满”

  • myisam_max_sort_file_size

    Command-Line Format --myisam-max-sort-file-size=#
    System Variable myisam_max_sort_file_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value (Windows) 2146435072
    Default Value (Other, 64-bit platforms) 9223372036853727232
    Default Value (Other, 32-bit platforms) 2147483648
    Minimum Value 0
    Maximum Value (Windows) 2146435072
    Maximum Value (Other, 64-bit platforms) 9223372036853727232
    Maximum Value (Other, 32-bit platforms) 2147483648
    Unit 字节

    MySQL 在重新创建 MyISAM 索引时(在 REPAIR TABLEALTER TABLELOAD DATA 中)允许使用的最大临时文件大小。如果文件大小超过该值,索引将使用键缓存创建,这将更慢。该值以字节为单位。

    如果 MyISAM 索引文件超过该大小且磁盘空间可用,增加该值可能会提高性能。该空间必须在包含原始索引文件的文件系统中可用。

  • myisam_mmap_size

    Command-Line Format --myisam-mmap-size=#
    System Variable myisam_mmap_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value (64-bit platforms) 18446744073709551615
    Default Value (32-bit platforms) 4294967295
    Minimum Value 7
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295
    Unit 字节

    使用的最大内存量,以便在内存映射压缩后的MyISAM文件。如果使用了许多压缩的MyISAM表,则可以减少该值以减少内存交换问题的可能性。

  • myisam_recover_options

    Command-Line Format --myisam-recover-options[=list]
    System Variable myisam_recover_options
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value OFF
    Valid Values

    OFF

    DEFAULT

    BACKUP

    FORCE

    QUICK

    设置mysqldMyISAM存储引擎恢复模式。变量值是OFF、DEFAULTBACKUPFORCEQUICK的任何组合。如果指定多个值,请用逗号分隔。指定变量而不带值时,在服务器启动时相当于指定DEFAULT,指定空字符串值时禁用恢复(与OFF相同)。如果启用恢复,每次mysqld打开MyISAM表时,它都会检查表是否崩溃或未正确关闭。(最后一个选项仅在禁用外部锁定时有效。)如果是这种情况,mysqld将对表进行检查。如果表损坏,mysqld将尝试修复它。

    以下选项影响修复的方式。

    Option Description
    OFF 不进行恢复。
    DEFAULT 不备份、强制或快速检查的恢复。
    BACKUP 如果数据文件在恢复期间被修改,保存tbl_name.MYD文件的备份为tbl_name-datetime.BAK。
    FORCE 即使我们将从.MYD文件中删除多行,也强制恢复。
    QUICK 如果没有删除块,不检查表中的行。

    在服务器自动修复表之前,它将在错误日志中写入一条关于修复的笔记。如果您想在不需要用户干预的情况下从大多数问题中恢复,可以使用选项BACKUP,FORCE。这将强制修复表,即使删除了一些行,但它会将旧数据文件保存为备份,以便您以后检查发生了什么。

    参见第 18.2.1 节,“MyISAM 启动选项”

  • myisam_sort_buffer_size

    Command-Line Format --myisam-sort-buffer-size=#
    System Variable myisam_sort_buffer_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8388608
    Minimum Value 4096
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295
    Unit 字节

    在使用REPAIR TABLE语句或使用CREATE INDEXALTER TABLE创建索引时,分配的缓冲区大小,以便排序MyISAM索引。

  • myisam_stats_method

    Command-Line Format --myisam-stats-method=name
    System Variable MyISAM 统计方法
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value nulls_unequal
    Valid Values

    nulls_unequal

    nulls_equal

    nulls_ignored

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

    用于生成表统计信息的方法会影响优化器选择索引的方式,如 第 10.3.8 节,“InnoDB 和 MyISAM 索引统计信息收集” 中所述。

  • MyISAM 使用内存映射

    Command-Line Format --myisam-use-mmap[={OFF|ON}]
    System Variable myisam_use_mmap
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    使用内存映射来读取和写入 MyISAM 表。

  • mysql_native_password 代理用户

    Command-Line Format --mysql-native-password-proxy-users[={OFF|ON}]
    System Variable mysql_native_password_proxy_users
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量控制是否启用 mysql_native_password 内置身份验证插件(已弃用)对代理用户的支持。只有在 check_proxy_users 系统变量和 mysql_native_password 插件启用时才生效。有关用户代理的信息,请参阅 第 8.2.19 节,“代理用户”

  • 命名管道

    Command-Line Format --named-pipe[={OFF|ON}]
    System Variable named_pipe
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Platform Specific Windows
    Type 布尔值
    Default Value OFF

    (仅 Windows) 指示服务器是否支持命名管道连接。

  • 命名管道完全访问组

    Command-Line Format --named-pipe-full-access-group=value
    System Variable named_pipe_full_access_group
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Platform Specific Windows
    Type 字符串
    Default Value 空字符串
    Valid Values

    空字符串

    有效的 Windows 本地组名

    *everyone*

    (仅 Windows) 当 named_pipe 系统变量启用以支持命名管道连接时,服务器创建的命名管道的访问控制被设置为最小必要值,以便成功通信。一些 MySQL 客户端软件可以打开命名管道连接,而不需要任何额外配置;但是,其他客户端软件可能仍需要完全访问权限来打开命名管道连接。

    该变量设置了 Windows 本地组的名称,其成员被授予了足够的访问权限,以便使用命名管道客户端。默认值为空字符串,这意味着没有 Windows 用户被授予了对命名管道的完全访问权限。

    可以创建一个新的 Windows 本地组名(例如,mysql_access_client_users),然后在绝对必要时使用该组名来替换默认值。在这种情况下,限制组成员资格尽可能少,删除组成员资格时客户端软件升级。非组成员尝试使用受影响的命名管道客户端连接 MySQL 将被拒绝访问,直到 Windows 管理员将用户添加到组中。新添加的用户必须注销并重新登录以加入组(Windows 所需)。

    将值设置为 '*everyone*' 提供了一种语言独立的方式来引用 Windows 中的 Everyone 组。Everyone 组默认情况下不安全。

  • net_buffer_length

    Command-Line Format --net-buffer-length=#
    System Variable net_buffer_length
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 16384
    Minimum Value 1024
    Maximum Value 1048576
    Unit 字节
    Block Size 1024

    每个客户端线程都与连接缓冲区和结果缓冲区相关。两者都从 net_buffer_length 开始,但可以根据需要动态扩展到 max_allowed_packet 字节。结果缓冲区在每个 SQL 语句后缩小到 net_buffer_length

    通常不应该更改此变量,但如果您有非常少的内存,可以将其设置为客户端发送的语句的预期长度。如果语句超过此长度,连接缓冲区将自动扩展。net_buffer_length 的最大值为 1MB。

    该会话变量的值是只读的。

  • net_read_timeout

    Command-Line Format --net-read-timeout=#
    System Variable net_read_timeout
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 30
    Minimum Value 1
    Maximum Value 31536000
    Unit

    等待来自连接的更多数据的秒数,然后中止读取。当服务器从客户端读取时,net_read_timeout 是控制中止的超时值。当服务器写入客户端时,net_write_timeout 是控制中止的超时值。另见 replica_net_timeout

  • net_retry_count

    Command-Line Format --net-retry-count=#
    System Variable net_retry_count
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 1
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    如果在通信端口上读取或写入被中断,重试这么多次,然后放弃。在 FreeBSD 上,该值应该设置得非常高,因为内部中断被发送到所有线程。

  • net_write_timeout

    Command-Line Format --net-write-timeout=#
    System Variable net_write_timeout
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 60
    Minimum Value 1
    Maximum Value 31536000
    Unit

    等待块写入连接的秒数,然后abort写入。见net_read_timeout

  • new

    Command-Line Format --new[={OFF|ON}]
    Deprecated
    System Variable new
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Disabled by skip-new
    Type 布尔值
    Default Value OFF

    该变量在 MySQL 4.0 中用于打开一些 4.1 行为,现在保留了向后兼容性。其值始终为 OFF

    该变量自 MySQL 8.2.0 起弃用,并将在未来版本中删除。

    在 NDB Cluster 中,将该变量设置为 ON 可以使用其他分区类型,而不是 KEYLINEAR KEYNDB 表。该实验功能不支持生产环境,现在弃用,将在未来版本中删除。有关更多信息,请参阅 用户定义的分区和 NDB 存储引擎 (NDB Cluster)

  • ngram_token_size

    Command-Line Format --ngram-token-size=#
    System Variable ngram_token_size
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2
    Minimum Value 1
    Maximum Value 10

    定义 n-gram 全文解析器的 n-gram 令牌大小。该 ngram_token_size 选项只能在启动时修改。默认值为 2(bigram)。最大值为 10。

    有关如何配置该变量的更多信息,请参阅 第 14.9.8 节,“ngram 全文解析器”

  • offline_mode

    Command-Line Format --offline-mode[={OFF|ON}]
    System Variable offline_mode
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    在离线模式下,MySQL 实例断开客户端用户的连接,除非他们具有相关权限,不允许他们启动新连接。被拒绝访问的客户端收到 ER_SERVER_OFFLINE_MODE 错误。

    要将服务器置于离线模式,请将 offline_mode 系统变量从 OFF 更改为 ON。要恢复正常操作,请将 offline_modeON 更改为 OFF。要控制离线模式,管理员帐户必须具有 SYSTEM_VARIABLES_ADMIN 权限和 CONNECTION_ADMIN 权限(或弃用的 SUPER 权限,该权限涵盖这两个权限)。 CONNECTION_ADMIN 权限是必需的,以防止意外锁定。

    离线模式具有以下特征:

    • 连接的客户端用户如果没有 CONNECTION_ADMIN 权限(或弃用的 SUPER 权限),将在下一个请求时断开连接,并收到适当的错误。断开连接包括终止正在运行的语句和释放锁。这些客户端也不能启动新连接,并收到适当的错误。

    • 连接的客户端用户拥有 CONNECTION_ADMINSUPER 权限,不会断开连接,可以启动新的连接来管理服务器。

    • 如果将服务器置于离线模式的用户不具有 SYSTEM_USER 权限,连接的客户端用户拥有 SYSTEM_USER 权限也不会断开连接。然而,这些用户不能启动新的连接到服务器,除非他们也具有 CONNECTION_ADMINSUPER 权限。只有他们现有的连接不能被终止,因为 SYSTEM_USER 权限是必要的,以杀死会话或执行语句的权限。

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

  • old

    Command-Line Format --old[={OFF|ON}]
    Deprecated
    System Variable old
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    old 是一个兼容变量。它默认情况下是禁用的,但可以在启动时启用,以恢复服务器到旧版本的行为。

    old 启用时,它将索引提示的默认范围更改为 MySQL 5.1.17 之前的版本中使用的范围。也就是说,索引提示没有 FOR 子句仅适用于行检索,而不适用于 ORDER BYGROUP BY 子句的解析。(见 第 10.9.4 节,“索引提示”。)请注意,在复制设置中启用它。使用基于语句的二进制日志记录时,源和副本之间的不同模式可能会导致复制错误。

    该变量从 MySQL 8.2.0 起弃用,并将在未来版本中删除。

  • old_alter_table

    Command-Line Format --old-alter-table[={OFF|ON}]
    System Variable old_alter_table
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

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

    ALTER TABLE ... DROP PARTITIONold_alter_table=ON 重建分区表,并尝试将数据从删除的分区移动到另一个具有兼容的 PARTITION ... VALUES 定义的分区中。无法移动到另一个分区的数据将被删除。在早期版本中,ALTER TABLE ... DROP PARTITIONold_alter_table=ON 删除数据并删除分区。

  • open_files_limit

    Command-Line Format --open-files-limit=#
    System Variable open_files_limit
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 5000,可能调整
    Minimum Value 0
    Maximum 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_connectionstable_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 未设置,则为 DefaultLimitNOFILE);否则,在 Linux 上,该值不能超过 ulimit -n

  • optimizer_prune_level

    Command-Line Format --optimizer-prune-level=#
    System Variable optimizer_prune_level
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies Yes
    Type Integer
    Default Value 1
    Minimum Value 0
    Maximum Value 1

    控制查询优化器在搜索空间中应用的启发式规则,以修剪不太有希望的部分计划。如果值为 0,则优化器将执行详尽搜索。如果值为 1,则优化器将根据中间计划检索的行数修剪计划。

  • optimizer_search_depth

    Command-Line Format --optimizer-search-depth=#
    System Variable optimizer_search_depth
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies Yes
    Type Integer
    Default Value 62
    Minimum Value 0
    Maximum Value 62

    查询优化器执行搜索的最大深度。查询结果中关系数量较大的值将生成更好的查询计划,但生成执行计划需要更长的时间。查询结果中关系数量较小的值将更快地返回执行计划,但生成的计划可能远远不是最优的。如果设置为 0,系统将自动选择一个合理的值。

  • 优化器开关

    Command-Line Format --优化器开关=value
    System Variable 优化器开关
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 设置
    Valid Values

    批量键访问={on|off}

    块嵌套循环={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}

    多范围读={on|off}

    多范围读基于成本={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}

    多范围读={on|off}

    多范围读基于成本={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}

    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}

    optimizer_switch 系统变量启用对优化器行为的控制。该变量的值是一个标志集,每个标志的值为 onoff,以指示相应的优化器行为是否启用或禁用。该变量具有全局和会话值,可以在运行时更改。全局默认值可以在服务器启动时设置。

    要查看当前的优化器标志,请选择变量值:

    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

    有关该变量的语法和它控制的优化器行为的更多信息,请参见 第 10.9.2 节,“可切换优化”

  • optimizer_trace

    Command-Line Format --optimizer-trace=value
    System Variable optimizer_trace
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String

    该变量控制优化器跟踪。有关详细信息,请参见 MySQL Internals: 优化器跟踪

  • optimizer_trace_features

    Command-Line Format --optimizer-trace-features=value
    System Variable optimizer_trace_features
    Scope Global, Session
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String

    该变量启用或禁用所选的优化器跟踪功能。有关详细信息,请参阅MySQL Internals:优化器跟踪

  • optimizer_trace_limit

    Command-Line Format --optimizer-trace-limit=#
    System Variable optimizer_trace_limit
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 0
    Maximum Value 2147483647

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

  • optimizer_trace_max_mem_size

    Command-Line Format --optimizer-trace-max-mem-size=#
    System Variable optimizer_trace_max_mem_size
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1048576
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

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

  • optimizer_trace_offset

    Command-Line Format --optimizer-trace-offset=#
    System Variable optimizer_trace_offset
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value -1
    Minimum Value -2147483647
    Maximum Value 2147483647

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

  • performance_schema_xxx

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

  • parser_max_mem_size

    Command-Line Format --parser-max-mem-size=#
    System Variable parser_max_mem_size
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value (64-bit platforms) 18446744073709551615
    Default Value (32-bit platforms) 4294967295
    Minimum Value 10000000
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295
    Unit 字节

    解析器可用的最大内存量。默认值不限制内存量。可以减少该值以保护against内存溢出情况,caused by parsing长或复杂的SQL语句。

  • partial_revokes

    Command-Line Format --partial-revokes[={OFF|ON}]
    System Variable partial_revokes
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value

    OFF(如果部分撤销不存在)

    ON(如果部分撤销存在)

    启用该变量使得部分撤销权限成为可能。具体来说,对于在全局级别具有权限的用户,partial_revokes使得可以撤销特定模式的权限,同时保留其他模式的权限。例如,具有全局UPDATE权限的用户可以被限制在mysql系统模式上行使该权限。(或者,从另一个角度来说,该用户被允许在所有模式上行使UPDATE权限,除了mysql模式。)在这个意义上,该用户的全局UPDATE权限被部分撤销。

    一旦启用,partial_revokes不能被禁用,如果有任何账户具有权限限制。如果存在这样的账户,禁用partial_revokes将失败:

    要禁用partial_revokes,首先需要修改每个具有部分撤销权限的账户,或者重新授予权限,或者删除账户。

    Note

    在权限分配中,启用partial_revokes使得MySQL将模式名称中的未转义的_% SQL通配符字符解释为文字字符,就像它们已经被转义为\_\%一样。因为这改变了MySQL对权限的解释,因此在安装中可能启用partial_revokes时,可能需要避免在权限分配中使用未转义的通配符。

    此外,从MySQL 8.2.0开始,在授权中使用_%作为通配符已经弃用,并且您应该期望在未来版本的MySQL中删除对它们的支持。

    有关更多信息,包括删除部分撤销的说明,请参阅第 8.2.12 节,“使用部分撤销限制权限”

  • password_history

    Command-Line Format --password-history=#
    System Variable password_history
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    该变量定义了全局策略,以控制基于最少密码更改次数的以前密码的重用。对于以前使用的账户密码,该变量指示了在可以重用密码之前需要进行的最少密码更改次数。如果值为 0(默认值),则没有基于密码更改次数的重用限制。

    对该变量的更改立即应用于所有使用PASSWORD HISTORY DEFAULT选项定义的账户。

    全局密码更改次数密码重用策略可以使用PASSWORD HISTORY选项的CREATE USERALTER USER语句覆盖。请参阅第 8.2.15 节,“密码管理”

  • password_require_current

    Command-Line Format --password-require-current[={OFF|ON}]
    System Variable 需要当前密码
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量定义了全局策略,以控制是否需要指定当前密码以更改账户密码。

    对该变量的更改将立即应用于所有使用 PASSWORD REQUIRE CURRENT DEFAULT 选项定义的账户。

    可以使用 CREATE USERALTER USER 语句的 PASSWORD REQUIRE 选项覆盖个别账户的全局策略。见 第 8.2.15 节,“密码管理”

  • 密码重用间隔

    Command-Line Format --password-reuse-interval=#
    System Variable 密码重用间隔
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295
    Unit

    该变量定义了全局策略,以控制基于时间过去的密码重用。对于以前使用的账户密码,该变量指定了必须经过的天数,才能重新使用该密码。如果值为 0(默认值),则没有基于时间过去的密码重用限制。

    对该变量的更改将立即应用于所有使用 PASSWORD REUSE INTERVAL DEFAULT 选项定义的账户。

    可以使用 CREATE USERALTER USER 语句的 PASSWORD REUSE INTERVAL 选项覆盖个别账户的全局策略。见 第 8.2.15 节,“密码管理”

  • 加载持久全局变量

    Command-Line Format --persisted-globals-load[={OFF|ON}]
    System Variable 加载持久全局变量
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    是否从数据目录中的 mysqld-auto.cnf 文件加载持久配置设置。服务器通常在启动时处理该文件,位于所有其他选项文件之后(见 第 6.2.2.2 节,“使用选项文件”)。禁用 加载持久全局变量 将导致服务器启动序列跳过 mysqld-auto.cnf

    要修改 mysqld-auto.cnf 的内容,请使用 SET PERSISTSET PERSIST_ONLYRESET PERSIST 语句。见 第 7.1.9.3 节,“持久系统变量”

  • 仅管理员 X509 主题

    Command-Line Format --persist-only-admin-x509-subject=string
    System Variable 仅管理员 X509 主题
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 空字符串

    SET PERSISTSET PERSIST_ONLY 可以将系统变量持久化到 mysqld-auto.cnf 选项文件中(见 第 15.7.6.1 节,“SET 语法用于变量赋值”)。持久化系统变量可以在服务器重启后生效,这对于远程管理非常方便,不需要直接访问 MySQL 服务器主机选项文件。然而,一些系统变量不能持久化或只能在特定条件下持久化。

    系统变量 persist_only_admin_x509_subject 指定了 SSL 证书 X.509 主题值,用户必须具有该值才能持久化系统变量。默认值为空字符串,这样禁用了主题检查,使得持久化受限的系统变量不能被任何用户持久化。

    如果 persist_only_admin_x509_subject 不为空,用户可以使用加密连接并提供 SSL 证书的指定主题值,然后使用 SET PERSIST_ONLY 持久化持久化受限的系统变量。有关持久化受限系统变量的信息和配置 MySQL 以启用 persist_only_admin_x509_subject 的说明,请参阅 第 7.1.9.4 节,“不可持久化和持久化受限系统变量”

  • persist_sensitive_variables_in_plaintext

    Command-Line Format --persist_sensitive_variables_in_plaintext[={OFF|ON}]
    System Variable persist_sensitive_variables_in_plaintext
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    persist_sensitive_variables_in_plaintext 控制服务器是否允许以明文格式存储敏感系统变量的值,如果 keyring 组件支持不可用时使用 SET PERSIST 设置系统变量的值。它还控制服务器是否可以启动,如果加密值无法解密。请注意,keyring 插件不支持敏感系统变量的安全存储;MySQL 服务器实例必须启用 keyring 组件(见 第 8.4.4 节,“MySQL Keyring”)以支持安全存储。

    默认设置为 ON,如果 keyring 组件支持可用,则加密值,否则以明文格式存储(并发出警告)。下次设置任何持久化系统变量时,如果 keyring 支持可用,则服务器将加密未加密的敏感系统变量的值。 ON 设置还允许服务器启动,如果加密系统变量值无法解密,在这种情况下,发出警告并使用默认值。

    最安全的设置为 OFF,这意味着敏感系统变量值不能持久化,如果 keyring 组件支持不可用。 OFF 设置还意味着服务器不会启动,如果加密系统变量值无法解密。

    有关更多信息,请参阅 持久化敏感系统变量

  • pid_file

    Command-Line Format --pid-file=file_name
    System Variable pid_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    文件中服务器写入其进程ID的路径名。服务器在数据目录中创建文件,除非指定了绝对路径名以指定不同的目录。如果您指定了这个变量,必须指定一个值。如果您不指定这个变量,MySQL将使用默认值:主机名.pid,其中:主机名是主机机器的名称。

    进程ID文件由其他程序,如:mysqld_safe,用于确定服务器的进程ID。在 Windows 上,这个变量还影响默认错误日志文件名。见:第 7.4.2 节,“错误日志”

  • plugin_dir

    Command-Line Format --plugin-dir=dir_name
    System Variable plugin_dir
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 目录名
    Default Value BASEDIR/lib/plugin

    插件目录的路径名。

    如果插件目录可由服务器写入,可能允许用户使用:SELECT ... INTO DUMPFILE 将可执行代码写入目录中的文件。这可以通过使:plugin_dir 只读或将:secure_file_priv 设置为一个安全的目录来防止。

  • port

    Command-Line Format --port=port_num
    System Variable port
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 3306
    Minimum Value 0
    Maximum Value 65535

    服务器监听 TCP/IP 连接的端口号。这个变量可以使用:--port 选项设置。

  • preload_buffer_size

    Command-Line Format --preload-buffer-size=#
    System Variable preload_buffer_size
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32768
    Minimum Value 1024
    Maximum Value 1073741824
    Unit 字节

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

    设置这个系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见:第 7.1.9.1 节,“系统变量权限”

  • print_identified_with_as_hex

    Command-Line Format --print-identified-with-as-hex[={OFF|ON}]
    System Variable print_identified_with_as_hex
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    在:SHOW CREATE USER 的输出中,IDENTIFIED WITH 子句中的密码哈希值可能包含不可打印字符,这些字符可能对终端显示和其他环境产生不良影响。启用:print_identified_with_as_hex 导致:SHOW CREATE USER 将这些哈希值显示为十六进制字符串,而不是普通字符串文字。哈希值中不包含不可打印字符的仍然显示为普通字符串文字,即使启用了这个变量。

  • 配置文件

    如果设置为 0 或 OFF(默认值),则禁用语句配置文件。如果设置为 1 或 ON,则启用语句配置文件,并且 SHOW PROFILESHOW PROFILES 语句提供了访问配置文件信息的权限。见 第 15.7.7.33 节,“SHOW PROFILES 语句”

    该变量已弃用;预计在未来 MySQL 版本中删除。

  • 配置文件历史记录大小

    如果 配置文件 启用,则维护配置文件信息的语句数。默认值为 15。最大值为 100。将值设置为 0 将禁用配置文件。见 第 15.7.7.33 节,“SHOW PROFILES 语句”

    该变量已弃用;预计在未来 MySQL 版本中删除。

  • 协议压缩算法

    Command-Line Format --protocol-compression-algorithms=value
    System Variable 协议压缩算法
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 设置
    Default Value zlib,zstd,uncompressed
    Valid Values

    zlib

    zstd

    uncompressed

    服务器允许的压缩算法,用于传入连接。这些连接包括客户端程序和参与源/副本复制或组复制的服务器。压缩不适用于 FEDERATED 表的连接。

    协议压缩算法 不控制 X 协议的连接压缩。见 第 22.5.5 节,“连接压缩与 X 插件” 了解其工作原理。

    变量值是一个或多个以逗号分隔的压缩算法名称列表,选择以下项目(不区分大小写):

    • zlib: 允许使用 zlib 压缩算法的连接。

    • zstd: 允许使用 zstd 压缩算法的连接。

    • uncompressed: 允许未压缩的连接。如果该算法名称不在 协议压缩算法 值中,服务器不允许未压缩的连接。它仅允许使用其他指定算法的压缩连接,没有回退到未压缩的连接。

    默认值 zlib,zstd,uncompressed 表示服务器允许所有压缩算法。

    更多信息,请见 第 6.2.8 节,“连接压缩控制”

  • 协议版本

    System Variable 协议版本
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 4294967295

    MySQL 服务器使用的客户端/服务器协议版本。

  • 代理用户

    System Variable 代理用户
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    如果当前客户端是另一个用户的代理,则该变量是代理用户帐户名称。否则,该变量是 NULL。参见 第 8.2.19 节,“代理用户”

  • 伪复制模式

    System Variable 伪复制模式
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值

    伪复制模式 用于服务器内部使用。它有助于正确处理来自旧服务器或新服务器的交易。 mysqlbinlog 在执行任何 SQL 语句之前将 伪复制模式 设置为 true。

    设置会话值 伪复制模式 是一个受限操作。会话用户必须具有 REPLICATION_APPLIER 权限(见 第 19.3.3 节,“复制权限检查”),或足以设置受限会话变量的权限(见 第 7.1.9.1 节,“系统变量权限”)。然而,请注意,该变量不是供用户设置的;它是由复制基础结构自动设置的。

    伪复制模式 对于预备 XA 事务的处理有以下影响,这些事务可以附加到或从处理会话中分离(默认情况下,是发出 XA START 的会话):

    • 如果为 true,并且处理会话已经执行了内部使用的 BINLOG 语句,XA 事务将自动从会话中分离,以便可以由任何具有 XA_RECOVER_ADMIN 权限的会话提交或回滚。

    • 如果为 false,XA 事务将保持附加到处理会话,直到该会话断开连接或服务器重新启动。在这期间,其他会话无法提交事务。

    伪复制模式 对于原始提交时间戳复制延迟时间戳和 original_server_version 系统变量有以下影响:

    • 如果为 true,未明确设置 original_commit_timestamporiginal_server_version 的事务将被假定来自其他未知服务器,因此将时间戳和系统变量设置为 0,表示未知。

    • 如果为 false,未明确设置 original_commit_timestamporiginal_server_version 的事务将被假定来自当前服务器,因此将当前时间戳和当前服务器版本分配给时间戳和系统变量。

    伪复制模式 对于处理设置一个或多个不支持的 SQL 模式的语句有以下影响:

    • 如果为 true,服务器将忽略不支持的模式并发出警告。

    • 如果为 false,服务器将以 ER_UNSUPPORTED_SQL_MODE 拒绝语句。

  • 伪从属模式

    Deprecated
    System Variable 伪从属模式
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔

    已弃用的别名,用于 pseudo_replica_mode

  • pseudo_thread_id

    System Variable pseudo_thread_id
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2147483647
    Minimum Value 0
    Maximum Value 2147483647

    该变量用于服务器内部使用。

    Warning

    更改会话值 pseudo_thread_id 系统变量将更改 CONNECTION_ID() 函数返回的值。

    设置会话值的该系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • query_alloc_block_size

    Command-Line Format --query-alloc-block-size=#
    System Variable query_alloc_block_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8192
    Minimum Value 1024
    Maximum Value 4294966272
    Unit 字节
    Block Size 1024

    在语句解析和执行期间创建对象的内存块的分配大小。如果您遇到内存碎片问题,可能需要增加该参数。

    块大小为 1024 字节。MySQL 服务器在存储系统变量值之前将非块大小的值向下舍入到最近的块大小。

  • query_prealloc_size

    Command-Line Format --query-prealloc-size=#
    Deprecated
    System Variable query_prealloc_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8192
    Minimum Value 8192
    Maximum Value (64-bit platforms) 18446744073709550592
    Maximum Value (32-bit platforms) 4294966272
    Unit 字节
    Block Size 1024

    query_prealloc_size 已弃用,设置它没有效果;您应该期待在未来版本的 MySQL 中删除它。

  • rand_seed1

    System Variable rand_seed1
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value N/A
    Minimum Value 0
    Maximum Value 4294967295

    变量 rand_seed1rand_seed2 只存在于会话变量中,可以设置但不能读取。这些变量(但不是它们的值)将显示在 SHOW VARIABLES 的输出中。

    这些变量的目的是支持RAND()函数的复制。对于调用RAND()的语句,源服务器将两个值传递给副本,其中它们被用来种子随机数生成器。副本使用这些值设置会话变量rand_seed1rand_seed2RAND()在副本上生成与源服务器相同的值。

  • rand_seed2

    请参阅rand_seed1的描述。

  • range_alloc_block_size

    Command-Line Format --range-alloc-block-size=#
    System Variable range_alloc_block_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4096
    Minimum Value 4096
    Maximum Value (64-bit platforms) 18446744073709550592
    Maximum Value 4294966272
    Unit 字节
    Block Size 1024

    执行范围优化时分配的块大小(以字节为单位)。

    块大小以1024为基数。MySQL Server在存储系统变量之前将非exact多倍的值向下舍入到最近的块大小。

  • range_optimizer_max_mem_size

    Command-Line Format --range-optimizer-max-mem-size=#
    System Variable range_optimizer_max_mem_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8388608
    Minimum Value 0
    Maximum Value 18446744073709551615
    Unit 字节

    范围优化器的内存消耗限制。值为0表示“无限制”。如果执行计划考虑的范围访问方法的内存使用量超过限制,优化器将放弃该计划并考虑其他计划。有关更多信息,请参阅限制范围优化的内存使用

  • rbr_exec_mode

    System Variable rbr_exec_mode
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value STRICT
    Valid Values

    STRICT

    IDEMPOTENT

    用于mysqlbinlog的内部使用。此变量在服务器之间切换IDEMPOTENT模式和STRICT模式。IDEMPOTENT模式会抑制BINLOG语句中的重复键和找不到键错误,生成mysqlbinlog时。这模式在重放基于行的二进制日志时很有用,可能会与现有数据冲突。mysqlbinlog在指定--idempotent选项时设置此模式,写入以下内容到输出中:

    SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
  • 读取缓冲区大小

    Command-Line Format --读取缓冲区大小=#
    System Variable 读取缓冲区大小
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 131072
    Minimum Value 8192
    Maximum Value 2147479552
    Unit 字节
    Block Size 4096

    每个线程执行顺序扫描MyISAM表时,分配一个缓冲区大小(以字节为单位)用于每个表的扫描。如果您执行了许多顺序扫描,可能需要增加该值,默认为131072。该变量的值应该是4KB的倍数。如果设置的值不是4KB的倍数,将其值四舍五入到最近的4KB倍数。

    此选项还用于以下所有其他存储引擎的上下文,除了InnoDB

    • 用于缓存临时文件(不是临时表)中的索引,当对行进行ORDER BY排序时。

    • 用于批量插入分区。

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

    读取缓冲区大小还用于另一种存储引擎特定的方式:确定MEMORY表的内存块大小。

    select_into_buffer_size用于SELECT INTO DUMPFILE和SELECT INTO OUTFILE语句的I/O缓存缓冲区。(读取缓冲区大小用于所有其他情况下的I/O缓存缓冲区大小。)

    有关不同操作期间内存使用情况的更多信息,请参阅第10.12.3.1节,“MySQL如何使用内存”

  • 只读

    Command-Line Format --只读[={OFF|ON}]
    System Variable 只读
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果只读系统变量启用,服务器仅允许具有CONNECTION_ADMIN特权(或已弃用的SUPER特权)的用户执行客户端更新。该变量默认情况下禁用。

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

    只读启用时,并且当超级只读启用时,服务器仍然允许这些操作:

    • 由复制线程执行的更新,如果服务器是副本。在复制设置中,启用read_only在副本服务器上可以确保副本仅从源服务器接受更新,而不是从客户端。

    • 写入系统表mysql.gtid_executed,该表存储了执行的事务的GTID,该事务不在当前二进制日志文件中。

    • 使用ANALYZE TABLEOPTIMIZE TABLE语句。只读模式的目的是防止表结构或内容的更改。分析和优化不属于这种更改。这意味着,例如,在只读副本上可以使用mysqlcheck --all-databases --analyze进行一致性检查。

    • 使用FLUSH STATUS语句,这些语句总是写入二进制日志。

    • TEMPORARY表的操作。

    • 插入日志表(mysql.general_logmysql.slow_log);见第7.4.1节,“选择通用查询日志和慢查询日志输出目标”

    • 对性能模式表的更新,例如UPDATETRUNCATE TABLE操作。

    在复制源服务器上对read_only的更改不会被复制到副本服务器上。该值可以在副本服务器上独立于源服务器设置。

    以下条件适用于尝试启用read_only(包括隐式尝试,结果来自启用super_read_only):

    • 如果您拥有任何显式锁(使用LOCK TABLES获取)或拥有挂起的事务,尝试将失败并出现错误。

    • 尝试将阻塞,直到其他客户端释放锁和事务结束。同时,其他客户端对表锁或事务的请求也将被阻塞,直到read_only被设置。

    • 尝试将阻塞,如果有活动的事务持有元数据锁,直到这些事务结束。

    • read_only可以在您持有全局读锁(使用FLUSH TABLES WITH READ LOCK获取)时启用,因为这不涉及表锁。

  • read_rnd_buffer_size

    Command-Line Format --read-rnd-buffer-size=#
    System Variable read_rnd_buffer_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 262144
    Minimum Value 1
    Maximum Value 2147483647
    Unit 字节

    该变量用于从MyISAM表中读取数据,并且对于任何存储引擎,用于多范围读取优化。

    当从MyISAM表中按键排序顺序读取行时,行将通过该缓冲区读取,以避免磁盘寻道。见第10.2.1.16节,“ORDER BY优化”。将该变量设置为大值可以大幅提高ORDER BY性能。但是,这是一个为每个客户端分配的缓冲区,因此您不应该将全局变量设置为大值。相反,仅从需要运行大查询的客户端会话变量更改。

    有关不同操作期间内存使用情况的更多信息,请参阅 第 10.12.3.1 节,“MySQL 如何使用内存”。有关 Multi-Range Read 优化的信息,请参阅 第 10.2.1.11 节,“Multi-Range Read 优化”

  • regexp_stack_limit

    Command-Line Format --regexp-stack-limit=#
    System Variable regexp_stack_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8000000
    Minimum Value 0
    Maximum Value 2147483647
    Unit 字节

    用于正则表达式匹配操作的内部堆栈的最大可用内存(以字节为单位),这些操作由 REGEXP_LIKE() 和类似函数执行(见 第 14.8.2 节,“正则表达式”)。

  • regexp_time_limit

    Command-Line Format --regexp-time-limit=#
    System Variable regexp_time_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 32
    Minimum Value 0
    Maximum Value 2147483647

    正则表达式匹配操作的时间限制,以步骤数表示,影响执行时间间接地。通常,它是毫秒级别的。

  • require_row_format

    System Variable require_row_format
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量用于服务器内部的复制和 mysqlbinlog。它将 DML 事件限制为行基于二进制日志记录格式的事件,临时表不能被创建。查询不遵守限制将失败。

    将会话值设置为 ON 不需要特权。将会话值设置为 OFF 是一个受限操作,会话用户必须具有足够的特权来设置受限会话变量。见 第 7.1.9.1 节,“系统变量特权”

  • require_secure_transport

    Command-Line Format --require-secure-transport[={OFF|ON}]
    System Variable require_secure_transport
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否需要客户端连接到服务器使用某种形式的安全传输。当启用该变量时,服务器仅允许使用 TLS/SSL 加密的 TCP/IP 连接或 Unix 套接字文件(在 Unix 上)或共享内存(在 Windows 上)的连接。服务器拒绝非安全连接尝试,失败时将出现 ER_SECURE_TRANSPORT_REQUIRED 错误。

    该功能补充了每个帐户的 SSL 要求,后者优先。例如,如果帐户定义了 REQUIRE SSL,启用 require_secure_transport 不会使得可以使用 Unix 套接字文件连接到该帐户。

    服务器可能没有安全传输可用。例如,在Windows上启动服务器时,如果没有指定SSL证书或密钥文件,并禁用了shared_memory系统变量,那么服务器将写入错误日志并退出。在这些条件下,尝试在启动时启用require_secure_transport将导致服务器写入错误日志并退出。尝试在运行时启用该变量将失败,并返回ER_NO_SECURE_TRANSPORTS_CONFIGURED错误。

    另见配置强制加密连接

  • resultset_metadata

    System Variable resultset_metadata
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value FULL
    Valid Values

    FULL

    NONE

    对于元数据传输可选的连接,客户端设置resultset_metadata系统变量,以控制服务器是否返回结果集元数据。允许的值是FULL(返回所有元数据;这是默认值)和NONE(不返回元数据)。

    对于不可选的连接,设置resultset_metadataNONE将产生错误。

    有关管理结果集元数据传输的详细信息,请参阅可选结果集元数据

  • secondary_engine_cost_threshold

    System Variable secondary_engine_cost_threshold
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 数字
    Default Value 100000.000000
    Minimum Value 0
    Maximum Value DBL_MAX (最大双精度值)

    查询卸载到辅助引擎的优化器成本阈值。

    用于HeatWave。请参阅MySQL HeatWave 用户指南

  • schema_definition_cache

    Command-Line Format --schema-definition-cache=#
    System Variable schema_definition_cache
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 256
    Minimum Value 256
    Maximum Value 524288

    定义了schema定义对象的缓存限制,包括使用和未使用的对象。

    未使用的schema定义对象仅在缓存中保留,当使用中的对象数量小于schema_definition_cache定义的容量时。

    schema_definition_cache设置为0意味着schema定义对象仅在使用时保留在缓存中。

    有关详细信息,请参阅第 16.4 节,“数据词典对象缓存”

  • secure_file_priv

    Command-Line Format --secure-file-priv=dir_name
    System Variable secure_file_priv
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 平台特定
    Valid Values

    空字符串

    dirname

    NULL

    该变量用于限制数据导入和导出操作的影响,例如由 LOAD DATASELECT ... INTO OUTFILE 语句和 LOAD_FILE() 函数执行的操作。这些操作仅允许具有 FILE 权限的用户。

    secure_file_priv 可以设置如下:

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

    • 如果设置为目录的名称,则服务器将导入和导出操作限制为仅在该目录中工作。该目录必须存在;服务器不会创建它。

    • 如果设置为 NULL,则服务器禁用导入和导出操作。

    默认值取决于 INSTALL_LAYOUT CMake 选项的值,如下表所示。要明确指定默认 secure_file_priv 值,如果您从源代码构建,请使用 INSTALL_SECURE_FILE_PRIVDIR CMake 选项。

    INSTALL_LAYOUT Value Default secure_file_priv Value
    独立
    DEB, RPM, SVR4 /var/lib/mysql-files
    否则 mysql-filesCMAKE_INSTALL_PREFIX 值下

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

  • select_into_buffer_size

    Command-Line Format --select-into-buffer-size=#
    System Variable select_into_buffer_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 131072
    Minimum Value 8192
    Maximum Value 2147479552
    Unit 字节
    Block Size 4096

    使用 SELECT INTO OUTFILESELECT INTO DUMPFILE 将数据转储到一个或多个文件中,以便创建备份、迁移数据或其他目的时,写入操作通常可以缓冲,然后触发大量写入 I/O 活动到磁盘或其他存储设备,并且可能会阻止其他对延迟敏感的查询。您可以使用该变量来控制写入数据到存储设备的缓冲区大小,以确定何时应该发生缓冲区同步,从而防止这种写入停顿的发生。

    select_into_buffer_size 覆盖了 read_buffer_size 的值。(select_into_buffer_sizeread_buffer_size 具有相同的默认、最大和最小值。)您还可以使用 select_into_disk_sync_delay 设置超时,以便在每次同步发生时观察。

    设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • select_into_disk_sync

    Command-Line Format --select-into-disk-sync={ON|OFF}
    System Variable 同步磁盘写入
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF
    Valid Values

    OFF

    ON

    当设置为 ON 时,启用长时间运行的 SELECT INTO OUTFILESELECT INTO DUMPFILE 语句使用 select_into_buffer_size 的缓冲区同步写入到输出文件。

  • select_into_disk_sync_delay

    Command-Line Format --select-into-disk-sync-delay=#
    System Variable select_into_disk_sync_delay
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 31536000
    Unit 毫秒

    当缓冲区同步写入到输出文件由 select_into_disk_sync 启用时,该变量设置一个可选的延迟(以毫秒为单位)在同步后。0(默认)表示无延迟。

    设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • session_track_gtids

    Command-Line Format --session-track-gtids=value
    System Variable session_track_gtids
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value OFF
    Valid Values

    OFF

    OWN_GTID

    ALL_GTIDS

    控制服务器是否将 GTIDs 返回给客户端,以便客户端跟踪服务器状态。在每个事务执行结束时,服务器的 GTIDs 将被捕获并返回给客户端作为确认的一部分。session_track_gtids 的可能值如下:

    • OFF:服务器不返回 GTIDs 给客户端。这是默认值。

    • OWN_GTID:服务器返回当前会话中所有已提交事务的 GTIDs。

    • ALL_GTIDS:服务器返回其 gtid_executed 系统变量的全局值,该值在事务提交后读取。除了当前事务的 GTID 之外,还包括所有客户端提交的所有事务的 GTIDs。

    session_track_gtids 不能在事务上下文中设置。

    有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”

  • session_track_schema

    Command-Line Format --session-track-schema[={OFF|ON}]
    System Variable session_track_schema
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    控制服务器是否跟踪当前会话中的默认模式(数据库)设置,并将模式名称通知客户端。

    如果启用了模式名称跟踪器,每次设置默认模式时都会发生名称通知,即使新模式名称与旧模式名称相同。

    有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”

  • session_track_state_change

    Command-Line Format --session-track-state-change[={OFF|ON}]
    System Variable session_track_state_change
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    控制服务器是否跟踪当前会话的状态变化,并在状态变化时通知客户端。可以报告的状态变化包括:

    • 默认模式(数据库)。

    • 会话特定系统变量的值。

    • 用户定义的变量。

    • 临时表。

    • 预备语句。

    如果启用了会话状态跟踪器,对于每个跟踪的会话属性的变化都会发生通知,即使新属性值与旧属性值相同。例如,将用户定义的变量设置为当前值将导致通知。

    变量 session_track_state_change 只控制状态变化的通知,而不控制变化的内容。例如,状态变化通知将在默认模式设置或跟踪会话系统变量时发生,但通知不包括模式名称或变量值。要接收模式名称或会话系统变量值的通知,请使用 session_track_schemasession_track_system_variables 系统变量。

    Note

    将值分配给 session_track_state_change 本身不被视为状态变化,不会被报告为状态变化。然而,如果其名称列在 session_track_system_variables 的值中,那么对其的任何分配都会导致通知新的值。

    有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”

  • session_track_system_variables

    Command-Line Format --session-track-system-variables=#
    System Variable session_track_system_variables
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value time_zone, autocommit, character_set_client, character_set_results, character_set_connection

    控制服务器是否跟踪会话系统变量的分配,并将变量名称和值通知客户端。变量值是一个逗号分隔的变量列表,用于跟踪分配。默认情况下,启用了对 time_zoneautocommitcharacter_set_clientcharacter_set_resultscharacter_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_info

    Command-Line Format --session-track-transaction-info=value
    System Variable session_track_transaction_info
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value OFF
    Valid Values

    OFF

    STATE

    CHARACTERISTICS

    控制服务器是否跟踪当前会话中的事务状态和特征,并通知客户端以使这些信息可用。这些 session_track_transaction_info 值是允许的:

    • OFF:禁用事务状态跟踪。这是默认值。

    • STATE:启用事务状态跟踪,但不包括特征跟踪。状态跟踪使客户端能够确定事务是否在进行中,并且是否可以在不回滚的情况下将其移到另一个会话中。

    • CHARACTERISTICS:启用事务状态跟踪,包括特征跟踪。特征跟踪使客户端能够确定如何在另一个会话中重新启动事务,以便它具有与原始会话相同的特征。

      ISOLATION LEVEL
      READ ONLY
      READ WRITE
      WITH CONSISTENT SNAPSHOT

    要使客户端安全地将事务重新定位到另一个会话中,它必须跟踪不仅是事务状态,还有事务特征。此外,客户端还必须跟踪 transaction_isolationtransaction_read_only 系统变量,以正确地确定会话默认值。(要跟踪这些变量,请将它们列在 session_track_system_variables 系统变量的值中。)

    有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”

  • set_operations_buffer_size

    Command-Line Format --set-operations-buffer-size=#
    System Variable set_operations_buffer_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 256K
    Minimum Value 16K
    Maximum Value 1 GB

    设置 INTERSECTEXCEPT 操作的缓冲区大小,当 hash_set_operations 优化器开关启用时。在一般情况下,增加该缓冲区的大小可以提高这些操作的性能,当哈希优化启用时。

  • sha256_password_auto_generate_rsa_keys

    Command-Line Format --sha256-password-auto-generate-rsa-keys[={OFF|ON}]
    System Variable sha256_password_auto_generate_rsa_keys
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    服务器使用该变量来确定是否在数据目录中自动生成 RSA 私钥/公钥文件,如果它们尚不存在。

    在启动时,服务器自动在数据目录中生成RSA私钥/公钥文件,如果满足以下所有条件:sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys系统变量启用;没有RSA选项指定;RSA文件从数据目录中缺失。这些密钥文件启用了使用RSA在未加密连接上安全密码交换的功能,用于sha256_passwordcaching_sha2_password插件认证的账户;见第 8.4.1.3 节,“SHA-256 Pluggable Authentication”第 8.4.1.2 节,“Caching SHA-2 Pluggable Authentication”

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

    系统变量auto_generate_certs与之相关,但控制了 SSL 证书和密钥文件的自动生成,以便使用 SSL 进行安全连接。

  • sha256_password_private_key_path

    Command-Line Format --sha256-password-private-key-path=file_name
    System Variable sha256_password_private_key_path
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value private_key.pem

    该变量的值是 sha256_password 认证插件的 RSA 私钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。

    Important

    因为该文件存储私钥,因此其访问模式应该限制为仅 MySQL 服务器可以读取。

    有关 sha256_password 的信息,请参阅第 8.4.1.3 节,“SHA-256 Pluggable Authentication”

  • sha256_password_proxy_users

    Command-Line Format --sha256-password-proxy-users[={OFF|ON}]
    System Variable sha256_password_proxy_users
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量控制 sha256_password 内置认证插件是否支持代理用户。只有在check_proxy_users系统变量启用时才生效。有关用户代理的信息,请参阅第 8.2.19 节,“Proxy Users”

  • sha256_password_public_key_path

    Command-Line Format --sha256-password-public-key-path=file_name
    System Variable sha256_password_public_key_path
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value public_key.pem

    该变量的值是 sha256_password 认证插件的 RSA 公钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。因为该文件存储公钥,可以自由地将其分发给客户端用户。(客户端在使用 RSA 密码加密连接到服务器时,必须使用与服务器相同的公钥。)

    有关 sha256_password 的信息,包括客户端如何指定 RSA 公钥,请参阅第 8.4.1.3 节,“SHA-256 Pluggable Authentication”

  • 共享内存

    Command-Line Format --shared-memory[={OFF|ON}]
    System Variable 共享内存
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Platform Specific Windows
    Type 布尔值
    Default Value OFF

    (仅限 Windows) 是否允许服务器使用共享内存连接。

  • 共享内存基准名称

    Command-Line Format --shared-memory-base-name=name
    System Variable 共享内存基准名称
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Platform Specific Windows
    Type 字符串
    Default Value MYSQL

    (仅限 Windows) 用于共享内存连接的共享内存名称。这在运行多个 MySQL 实例的单个物理机器上非常有用。默认名称是 MYSQL。名称区分大小写。

    如果服务器以 共享内存 系统变量启用以支持共享内存连接,则此变量适用。

  • 跳过次要引擎的SHOW CREATE TABLE

    Command-Line Format --show-create-table-skip-secondary-engine[={OFF|ON}]
    System Variable 跳过次要引擎的SHOW CREATE TABLE
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    启用 跳过次要引擎的SHOW CREATE TABLE 将从 SHOW CREATE TABLE 输出中排除 SECONDARY ENGINE 子句,并从 CREATE TABLE 语句中dumped by mysqldump 实用程序。

    mysqldump 提供了 --show-create-skip-secondary-engine 选项。当指定时,它将启用 跳过次要引擎的SHOW CREATE TABLE 系统变量,以便在dump操作期间。

    用于 HeatWave。请参阅 MySQL HeatWave 用户指南

  • SHOW CREATE TABLE 详细信息

    Command-Line Format --show-create-table-verbosity[={OFF|ON}]
    System Variable SHOW CREATE TABLE 详细信息
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    SHOW CREATE TABLE 通常不会显示表的 ROW_FORMAT 选项,除非它不是默认格式。启用此变量将导致 SHOW CREATE TABLE 显示 ROW_FORMAT,无论它是否是默认格式。

  • 在CREATE TABLE和信息模式中显示GIPK

    Command-Line Format --show-gipk-in-create-table-and-information-schema[={OFF|ON}]
    System Variable 在CREATE TABLE和信息模式中显示GIPK
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    是否在 SHOW 语句的输出和信息模式表中显示生成的不可见主键。当该变量设置为 OFF 时,这些键将不被显示。

    该变量不被复制。

    有关更多信息,请参阅 第 15.1.20.11 节,“生成的不可见主键”

  • show_old_temporals

    Command-Line Format --show-old-temporals[={OFF|ON}]
    Deprecated
    System Variable show_old_temporals
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否在 SHOW CREATE TABLE 输出中包括注释,以标记在 pre-5.6.4 格式中发现的时间列 (TIMEDATETIMETIMESTAMP 列没有小数秒精度支持)。该变量默认情况下是禁用的。如果启用,SHOW CREATE TABLE 输出将如下所示:

    CREATE TABLE `mytbl` (
      `ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `dt` datetime /* 5.5 binary format */ DEFAULT NULL,
      `t` time /* 5.5 binary format */ DEFAULT NULL
    ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    信息模式 COLUMNS 表的 COLUMN_TYPE 列的输出也将受到类似的影响。

    该变量已弃用,并将在未来 MySQL 版本中删除。

    设置会话值的系统变量是一个受限的操作。会话用户必须具有足够的权限来设置受限的会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • skip_external_locking

    Command-Line Format --skip-external-locking[={OFF|ON}]
    System Variable skip_external_locking
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    如果 mysqld 使用外部锁定(系统锁定),则该变量为 OFF,否则为 ON。这只影响 MyISAM 表访问。

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

    外部锁定只影响 MyISAM 表访问。有关更多信息,包括可以和不能使用外部锁定的条件,请参阅 第 10.11.5 节,“外部锁定”

  • skip_name_resolve

    Command-Line Format --skip-name-resolve[={OFF|ON}]
    System Variable skip_name_resolve
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否在检查客户端连接时解析主机名。如果该变量为 OFFmysqld 在检查客户端连接时解析主机名。如果它是 ONmysqld 只使用 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 启用,那么这将失败。如果您计划这样做,请确保存在可以接受连接的账户。例如,要作为 root 使用 --host=127.0.0.1--host=::1,创建这些账户:

    CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
    CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
  • skip_networking

    Command-Line Format --skip-networking[={OFF|ON}]
    System Variable skip_networking
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量控制服务器是否允许 TCP/IP 连接。默认情况下,它是禁用的(允许 TCP 连接)。如果启用,服务器仅允许本地(非 TCP/IP)连接,并且所有与 mysqld 的交互都必须使用命名管道或共享内存(在 Windows 上)或 Unix 套接字文件(在 Unix 上)。该选项对于仅允许本地客户端的系统非常推荐。见 第 7.1.12.3 节,“DNS 查找和主机缓存”

    因为使用 --skip-grant-tables 启动服务器禁用身份验证检查,服务器也禁用远程连接,通过启用 skip_networking

  • skip_show_database

    Command-Line Format --skip-show-database
    System Variable skip_show_database
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    这阻止人们使用 SHOW DATABASES 语句,除非他们拥有 SHOW DATABASES 权限。这可以提高安全性,如果您担心用户能够看到其他用户的数据库。其效果取决于 SHOW DATABASES 权限:如果变量值为 ONSHOW DATABASES 语句仅允许拥有 SHOW DATABASES 权限的用户,并显示所有数据库名称。如果值为 OFFSHOW DATABASES 语句允许所有用户,但仅显示用户拥有 SHOW DATABASES 或其他权限的数据库名称。

    Caution

    因为任何静态全局权限被认为是所有数据库的权限,因此任何静态全局权限使用户可以使用 SHOW DATABASES 或通过检查 SCHEMATA 表中的 INFORMATION_SCHEMA,除了在数据库级别上被部分撤销的数据库。

  • slow_launch_time

    Command-Line Format --slow-launch-time=#
    System Variable slow_launch_time
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 2
    Minimum Value 0
    Maximum Value 31536000
    Unit

    如果创建线程需要超过这个时间,服务器将增加 Slow_launch_threads 状态变量。

  • slow_query_log

    Command-Line Format --slow-query-log[={OFF|ON}]
    System Variable slow_query_log
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否启用慢查询日志。该值可以是 0(或 OFF)以禁用日志或 1(或 ON)以启用日志。日志输出的目标由 log_output 系统变量控制;如果该值为 NONE,即使日志启用,也不会写入日志条目。

    是由 long_query_time 变量的值确定的。见 第 7.4.5 节,“慢查询日志”

  • slow_query_log_file

    Command-Line Format --slow-query-log-file=file_name
    System Variable slow_query_log_file
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value host_name-slow.log

    慢查询日志文件的名称。默认值是 host_name-slow.log,但可以使用 --slow_query_log_file 选项更改初始值。

  • socket

    Command-Line Format --socket={file_name|pipe_name}
    System Variable socket
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value (Windows) MySQL
    Default Value (Other) /tmp/mysql.sock

    在 Unix 平台上,该变量是用于本地客户端连接的套接字文件的名称。默认值是 /tmp/mysql.sock。(对于某些发行版格式,目录可能不同,例如 /var/lib/mysql 用于 RPM。)

    在 Windows 平台上,该变量是用于本地客户端连接的命名管道的名称。默认值是 MySQL(不区分大小写)。

  • sort_buffer_size

    Command-Line Format --sort-buffer-size=#
    System Variable sort_buffer_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 262144
    Minimum Value 32768
    Maximum Value (Windows) 4294967295
    Maximum Value (Other, 64-bit platforms) 18446744073709551615
    Maximum Value (Other, 32-bit platforms) 4294967295
    Unit 字节

    每个会话必须执行排序的缓冲区大小。sort_buffer_size 不特定于任何存储引擎,并且以一般方式进行优化。至少sort_buffer_size值必须足够大以容纳十五个元组在排序缓冲区中。此外,增加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 并发出警告)允许更大的值。

  • sql_auto_is_null

    System Variable sql_auto_is_null
    Scope Global, Session
    Dynamic
    SET_VAR Hint 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_nullOFF

  • sql_big_selects

    System Variable sql_big_selects
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    如果设置为 OFF, MySQL 将中止可能需要很长时间执行的 SELECT 语句(即,优化器估计要检查的行数超过 max_join_size 的值)。这在发出不明智的 WHERE 语句时很有用。默认值为 ON,允许所有 SELECT 语句。

    如果您将 max_join_size 系统变量设置为除 DEFAULT 以外的值,sql_big_selects 将被设置为 OFF

  • sql_buffer_result

    System Variable sql_buffer_result
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果启用,sql_buffer_result 将强制 SELECT 语句的结果放入临时表中。这可以帮助 MySQL 早期释放表锁,并且在发送结果到客户端需要很长时间时非常有用。默认值为 OFF

  • sql_generate_invisible_primary_key

    Command-Line Format --sql-generate-invisible-primary-key[={OFF|ON}]
    System Variable sql_generate_invisible_primary_key
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否在创建没有主键的 InnoDB 表时生成不可见的主键。

    该变量不被复制。此外,即使在副本上设置了该变量,复制应用程序线程也会忽略它;这意味着,默认情况下,副本不会为从源创建的没有主键的表生成主键。您可以通过在 CHANGE REPLICATION SOURCE TO 语句中设置 REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE 来强制副本生成不可见的主键,可能指定复制通道。

    有关更多信息和示例,请参阅 第 15.1.20.11 节,“生成不可见的主键”

  • sql_log_off

    System Variable sql_log_off
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF
    Valid Values

    OFF(启用日志记录)

    ON(禁用日志记录)

    该变量控制当前会话的通用查询日志记录是否被禁用(假设通用查询日志本身已启用)。默认值为 OFF(即启用日志记录)。要禁用或启用当前会话的通用查询日志记录,请将会话 sql_log_off 变量设置为 ONOFF

    设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”

  • sql_mode

    Command-Line Format --sql-mode=name
    System Variable sql_mode
    Scope 全局、会话
    Dynamic
    SET_VAR Hint 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_SUBSTITUTION
    Valid Values

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    TIME_TRUNCATE_FRACTIONAL

    当前服务器 SQL 模式,可以动态设置。详细信息,请参阅 第 7.1.11 节,“服务器 SQL 模式”

    Note

    MySQL 安装程序可能在安装过程中配置 SQL 模式。

    如果 SQL 模式不同于默认值或您期望的值,请检查启动时读取的选项文件中的设置。

  • sql_notes

    System Variable sql_notes
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    如果启用(默认),诊断信息的 Note 级别将增加 warning_count,服务器将记录它们。如果禁用,Note 诊断信息不会增加 warning_count,服务器不会记录它们。mysqldump 包括输出以禁用该变量,以便重新加载转储文件时不会生成警告信息。

  • sql_quote_show_create

    System Variable sql_quote_show_create
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    如果启用(默认),服务器将为 SHOW CREATE TABLESHOW CREATE DATABASE 语句引用标识符。如果禁用,引用将被禁用。该选项默认启用,以便复制工作正常。详细信息,请参阅 第 15.7.7.11 节,“SHOW CREATE TABLE 语句”第 15.7.7.7 节,“SHOW CREATE DATABASE 语句”

  • sql_require_primary_key

    Command-Line Format --sql-require-primary-key[={OFF|ON}]
    System Variable sql_require_primary_key
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    是否强制创建新表或修改现有表的结构时需要主键。

    设置会话值的系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。详细信息,请参阅 第 7.1.9.1 节,“系统变量权限”

    启用该变量可以避免基于行的复制中可能出现的性能问题,当表没有主键时。假设一个表没有主键,并且更新或删除修改了多行。在复制源服务器上,这个操作可以使用单个表扫描,但是在复制到副本服务器时,结果将是每行修改的表扫描。使用主键,这些表扫描将不会发生。

    sql_require_primary_key适用于基本表和TEMPORARY表,并且对其值的更改将被复制到副本服务器。表必须使用可以参与复制的 MySQL 存储引擎。

    启用时,sql_require_primary_key具有以下效果:

    • 尝试创建没有主键的新表将失败并报错。这包括CREATE TABLE ... LIKE。它还包括CREATE TABLE ... SELECTCREATE TABLE部分包括主键定义。

    • 尝试从现有表中删除主键将失败并报错,除非在同一个ALTER TABLE语句中删除主键并添加主键。

      即使表也包含UNIQUE NOT NULL索引,删除主键仍将失败。

    • 尝试导入没有主键的表将失败并报错。

    REQUIRE_TABLE_PRIMARY_KEY_CHECK选项的CHANGE REPLICATION SOURCE TO语句使副本可以选择自己的主键策略。当选项设置为ON时,副本总是使用ON值的sql_require_primary_key系统变量在复制操作中,需要主键。当选项设置为OFF时,副本总是使用OFF值的sql_require_primary_key系统变量在复制操作中,因此永远不需要主键,即使源需要一个。当REQUIRE_TABLE_PRIMARY_KEY_CHECK选项设置为STREAM时,默认情况下,副本使用从源复制的值,每个事务。使用STREAM设置的REQUIRE_TABLE_PRIMARY_KEY_CHECK选项时,如果使用了复制通道的权限检查,PRIVILEGE_CHECKS_USER帐户需要足够的权限来设置受限会话变量,以便设置sql_require_primary_key系统变量的会话值。使用ONOFF设置时,帐户不需要这些权限。有关更多信息,请参阅第 19.3.3 节,“复制权限检查”

  • sql_safe_updates

    System Variable sql_safe_updates
    Scope Global, Session
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果启用该变量,UPDATEDELETE语句如果不使用WHERE子句或LIMIT子句将产生错误。这使得可以捕捉UPDATEDELETE语句,其中键未被正确使用,并且可能会更改或删除大量行。默认值是OFF

    对于mysql客户端,sql_safe_updates可以使用--safe-updates选项启用。有关更多信息,请参阅使用安全更新模式 (--safe-updates)

  • 选择限制

    System Variable 选择限制
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 18446744073709551615
    Minimum Value 0
    Maximum Value 18446744073709551615

    SELECT 语句返回的最大行数。有关更多信息,请参阅 使用安全更新模式 (--safe-updates)

    新连接的默认值是服务器允许每个表的最大行数。典型的默认值是 (232)−1 或 (264)−1。如果您已经更改了限制,可以通过将值设置为 DEFAULT 来恢复默认值。

    如果 SELECT 语句具有 LIMIT 子句,则 LIMIT 将优先于 选择限制 的值。

  • SQL 警告

    System Variable SQL 警告
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该变量控制单行 INSERT 语句是否在出现警告时生成信息字符串。默认值为 OFF。将值设置为 ON 以生成信息字符串。

  • SSL 证书颁发机构

    Command-Line Format --ssl-ca=file_name
    System Variable SSL 证书颁发机构
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value NULL

    Certificate Authority (CA) 证书文件的路径名,在 PEM 格式中。该文件包含受信任的 SSL 证书颁发机构列表。

    可以在运行时修改该变量,以影响服务器使用的 TLS 上下文,用于新连接或在执行 ALTER INSTANCE RELOAD TLS 后的重启。如果变量值被持久化,请参阅 服务器端运行时配置和监控加密连接

  • SSL 证书颁发机构路径

    Command-Line Format --ssl-capath=dir_name
    System Variable SSL 证书颁发机构路径
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名
    Default Value NULL

    包含受信任的 SSL 证书颁发机构证书文件的目录路径名,在 PEM 格式中。

    可以在运行时修改该变量,以影响服务器使用的 TLS 上下文,用于新连接或在执行 ALTER INSTANCE RELOAD TLS 后的重启。如果变量值被持久化,请参阅 服务器端运行时配置和监控加密连接

  • SSL 证书

    Command-Line Format --ssl-cert=file_name
    System Variable SSL 证书
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value NULL

    服务器 SSL 公钥证书文件的路径名,在 PEM 格式中。

    如果服务器以ssl_cert设置为使用任何受限密码或密码类别的证书启动,则服务器将禁用加密连接支持。有关密码限制的信息,请参阅连接密码配置

    可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行ALTER INSTANCE RELOAD TLS或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接

  • ssl_cipher

    Command-Line Format --ssl-cipher=name
    System Variable ssl_cipher
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    TLS协议1.2及以下版本的加密连接的允许加密密码列表。如果列表中没有支持的密码,加密连接将不工作。

    为了最大限度地提高可移植性,密码列表应该是一个或多个密码名称,以冒号分隔。以下示例显示了两个密码名称,以冒号分隔:

    [mysqld]
    ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"

    OpenSSL支持在https://www.openssl.org/docs/manmaster/man1/ciphers.html中描述的语法来指定密码。

    有关MySQL支持的加密密码的信息,请参阅第8.3.2节,“加密连接TLS协议和密码”

    可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行ALTER INSTANCE RELOAD TLS或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接

  • ssl_crl

    Command-Line Format --ssl-crl=file_name
    System Variable ssl_crl
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value NULL

    包含PEM格式证书撤销列表的文件路径名。

    可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行ALTER INSTANCE RELOAD TLS或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接

  • ssl_crlpath

    Command-Line Format --ssl-crlpath=dir_name
    System Variable ssl_crlpath
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名
    Default Value NULL

    包含PEM格式证书撤销列表文件的目录路径。

    可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行ALTER INSTANCE RELOAD TLS或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接

  • ssl_fips_mode

    Command-Line Format --ssl-fips-mode={OFF|ON|STRICT}
    Deprecated
    System Variable ssl_fips_mode
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value OFF
    Valid Values

    OFF (或 0)

    ON (或 1)

    STRICT (或 2)

    控制服务器端是否启用 FIPS 模式。ssl_fips_mode 系统变量不同于其他 ssl_xxx 系统变量,它不用于控制服务器是否允许加密连接,而是影响哪些加密操作被允许。见 第 8.8 节,“FIPS 支持”

    这些 ssl_fips_mode 值是允许的:

    • OFF (或 0):禁用 FIPS 模式。

    • ON (或 1):启用 FIPS 模式。

    • STRICT (或 2):启用“严格”FIPS 模式。

    Note

    如果 OpenSSL FIPS 对象模块不可用,则 ssl_fips_mode 的唯一允许值是 OFF。在这种情况下,在启动时将 ssl_fips_mode 设置为 ONSTRICT 将导致服务器产生错误消息并退出。

    该选项已弃用,并将在未来版本的 MySQL 中删除。

  • ssl_key

    Command-Line Format --ssl-key=file_name
    System Variable ssl_key
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value NULL

    服务器 SSL 私钥文件的路径名,以 PEM 格式。为了更好的安全性,使用至少 2048 位的 RSA 密钥。

    如果密钥文件受到密码保护,服务器将提示用户输入密码。密码必须交互式输入;不能存储在文件中。如果密码不正确,程序将继续执行,如同无法读取密钥。

    可以在运行时修改该变量,以影响服务器使用的 TLS 上下文,用于新建立的连接或在 ALTER INSTANCE RELOAD TLS 语句执行后,或者在重启后如果变量值被持久化。见 Server-Side Runtime Configuration and Monitoring for Encrypted Connections

  • ssl_session_cache_mode

    Command-Line Format --ssl_session_cache_mode={ON|OFF}
    System Variable ssl_session_cache_mode
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON
    Valid Values

    ON

    OFF

    控制服务器端是否启用会话缓存模式和服务器生成的会话票据。默认模式是 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_timeout

    Command-Line Format --ssl_session_cache_timeout
    System Variable ssl_session_cache_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 0
    Maximum Value 84600
    Unit

    设置在建立新的加密连接到服务器时,允许之前会话重用的时间段,前提是 ssl_session_cache_mode 系统变量启用且之前会话数据可用。如果会话超时期限到期,会话将不再可重用。

    默认值为 300 秒,最大值为 84600(或一天的秒数)。对 ssl_session_cache_timeout 系统变量的更改只有在执行 ALTER INSTANCE RELOAD TLS 语句后或在变量值被持久化后重启服务器时才生效。当前的有效值可以通过 Ssl_session_cache_timeout 状态变量观察。

  • stored_program_cache

    Command-Line Format --stored-program-cache=#
    System Variable stored_program_cache
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 256
    Minimum Value 16
    Maximum Value 524288

    设置每个连接的存储程序缓存的软上限。该变量的值指定了存储过程和存储函数的缓存大小。

    每当存储程序执行时,该缓存大小将被检查;如果同类型的存储程序(存储过程或存储函数)数量超过该变量指定的限制,则对应的缓存将被刷新,并释放之前分配的缓存对象的内存。这允许缓存安全地被刷新,即使存在存储程序之间的依赖关系。

    存储过程和存储函数缓存与 dictionary object cache 的存储程序定义缓存分区并行存在。存储过程和存储函数缓存是每个连接的,而存储程序定义缓存是共享的。存储过程和存储函数缓存中的对象存在与存储程序定义缓存中的对象存在无关。更多信息,请参阅 第 16.4 节,“Dictionary Object Cache”

  • stored_program_definition_cache

    Command-Line Format --stored-program-definition-cache=#
    System Variable stored_program_definition_cache
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 256
    Minimum Value 256
    Maximum Value 524288

    定义了存储程序定义对象的缓存限制,包括已使用和未使用的对象,可以在字典对象缓存中保留。

    未使用的存储程序定义对象仅在字典对象缓存中保留,当使用中的对象数量少于由 stored_program_definition_cache 定义的容量时。

    设置为 0 意味着存储程序定义对象仅在使用时保留在字典对象缓存中。

    存储程序定义缓存分区与存储过程和存储函数缓存并行存在,这些缓存是使用 stored_program_cache 选项配置的。

    stored_program_cache 选项设置了每个连接的缓存存储过程或函数的软上限,每次连接执行存储过程或函数时都会检查该限制。存储程序定义缓存分区是共享缓存,用于存储其他目的的存储程序定义对象。存储程序定义缓存分区中的对象存在与存储过程缓存或存储函数缓存中的对象存在无关。

    有关信息,请参阅 第 16.4 节,“字典对象缓存”

  • super_read_only

    Command-Line Format --super-read-only[={OFF|ON}]
    System Variable super_read_only
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    如果 read_only 系统变量启用,服务器仅允许具有 CONNECTION_ADMIN 权限(或已弃用的 SUPER 权限)的用户执行客户端更新。如果 super_read_only 系统变量也启用,服务器将禁止来自具有 CONNECTION_ADMINSUPER 权限的用户的客户端更新。请参阅 read_only 系统变量的描述,以了解只读模式和 read_onlysuper_read_only 之间的交互。

    启用 super_read_only 后,客户端更新将被禁止,包括不一定是更新操作的操作,例如 CREATE FUNCTION(安装可加载函数)、INSTALL PLUGININSTALL COMPONENT。这些操作被禁止,因为它们涉及到 mysql 系统模式表的更改。

    类似地,如果事件计划程序启用,启用 super_read_only 系统变量将禁止事件计划程序更新事件 最后执行 时间戳在 events 数据字典表中。这将导致事件计划程序停止下一次尝试执行计划事件时,写入服务器错误日志。(在这种情况下,event_scheduler 系统变量不会从 ON 更改为 OFF。这意味着该变量拒绝 DBA 的意图,即事件计划程序启用或禁用,而实际状态可能不同)。如果 super_read_only 后续禁用,服务器将自动重新启动事件计划程序。

    在复制源服务器上对 super_read_only 的更改不会被复制到副本服务器上。该值可以在副本上独立于源服务器上的设置。

  • syseventlog.facility

    Command-Line Format --syseventlog.facility=value
    System Variable syseventlog.facility
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value daemon

    错误日志输出到 syslog 的设施(是什么类型的程序发送消息)。此变量仅在安装了 log_sink_syseventlog 错误日志组件时可用。见 第 7.4.2.8 节,“错误日志记录到系统日志”

    允许的值可能因操作系统而异,请查看系统 syslog 文档。

    此变量在 Windows 上不存在。

  • syseventlog.include_pid

    Command-Line Format --syseventlog.include-pid[={OFF|ON}]
    System Variable syseventlog.include_pid
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    是否在错误日志输出到 syslog 中包括服务器进程 ID。此变量仅在安装了 log_sink_syseventlog 错误日志组件时可用。见 第 7.4.2.8 节,“错误日志记录到系统日志”

    此变量在 Windows 上不存在。

  • syseventlog.tag

    Command-Line Format --syseventlog.tag=tag
    System Variable syseventlog.tag
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 空字符串

    错误日志输出到 syslog 或 Windows 事件日志中的标签。此变量仅在安装了 log_sink_syseventlog 错误日志组件时可用。见 第 7.4.2.8 节,“错误日志记录到系统日志”

    默认情况下,不设置标签,因此服务器标识符只是 MySQL 在 Windows 上,和 mysqld 在其他平台上。如果指定了标签值 tag,它将被追加到服务器标识符中,结果是 syslog 标识符 mysqld-tag(或 MySQL-tag 在 Windows 上)。

    在 Windows 上,要使用不存在的标签,服务器必须从管理员权限账户运行,以便创建注册表条目用于该标签。提升权限不是必需的,如果标签已经存在。

  • system_time_zone

    System Variable system_time_zone
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    服务器系统时区。当服务器开始执行时,它从机器默认值继承时区设置,可能被启动脚本或账户环境修改。该值用于设置 system_time_zone。要明确指定系统时区,请设置 TZ 环境变量或使用 --timezone 选项的 mysqld_safe 脚本。

    除了启动时初始化外,如果服务器主机时区更改(例如,因夏令时),system_time_zone 反映该更改,对应用程序有以下影响:

    • 查询引用 system_time_zone 将在日光节约时间更改前后获取不同的值。

    • 对于在夏令时更改之前开始执行并在更改后结束的查询,system_time_zone 在查询中保持不变,因为该值通常在执行开始时被缓存。

    system_time_zone 变量不同于 time_zone 变量。虽然它们可能具有相同的值,但后者用于初始化每个客户端的时区。请参阅 第 7.1.15 节,“MySQL 服务器时区支持”

  • table_definition_cache

    Command-Line Format --table-definition-cache=#
    System Variable table_definition_cache
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value -1(表示自动调整大小;不要将该文字值分配)
    Minimum Value 400
    Maximum Value 524288

    表定义缓存可以存储的表定义数量。如果您使用大量表,可以创建一个大型表定义缓存以加速表的打开。表定义缓存占用较少的空间,不使用文件描述符,与普通表缓存不同。最小值为 400。默认值基于以下公式,限制在 2000:

    MIN(400 + table_open_cache / 2, 2000)

    对于 InnoDBtable_definition_cache 设置作为字典对象缓存中的表实例数量和文件每表表空间的软限制。

    如果字典对象缓存中的表实例数量超过 table_definition_cache 限制,LRU 机制将开始标记表实例以便逐步删除它们。如果打开的表数量超过 table_definition_cache 限制,可能是由于具有外键关系的表实例未被放入 LRU 列表。

    文件每表表空间的打开数量限制由 table_definition_cacheinnodb_open_files 设置共同确定。如果两个变量都被设置,则使用最高的设置。如果两个变量都未被设置,则使用 table_definition_cache 设置,该设置具有较高的默认值。如果打开的表空间数量超过 table_definition_cacheinnodb_open_files 限制,LRU 机制将搜索 LRU 列表以查找完全刷新且不再被扩展的表空间文件。该过程在每次打开新表空间时执行。只有不活动的表空间被关闭。

    表定义缓存与字典对象缓存的表定义缓存分区并行存在。两个缓存都存储表定义,但服务于 MySQL 服务器的不同部分。一个缓存中的对象不依赖于另一个缓存中的对象存在。有关更多信息,请参阅 第 16.4 节,“字典对象缓存”

  • table_encryption_privilege_check

    Command-Line Format --table-encryption-privilege-check[={OFF|ON}]
    System Variable table_encryption_privilege_check
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    控制在创建或更改带有不同于TABLE_ENCRYPTION_ADMIN特权检查的模式或通用表空间时的加密设置,或者在创建或更改带有不同于默认模式加密的表时的加密设置。该检查默认情况下被禁用。

    在运行时设置table_encryption_privilege_check需要SUPER特权。

    table_encryption_privilege_check支持SET PERSISTSET PERSIST_ONLY语法。见第 7.1.9.3 节,“Persisted System Variables”

    有关更多信息,请参阅定义模式和通用表空间的加密默认值

  • table_open_cache

    Command-Line Format --table-open-cache=#
    System Variable table_open_cache
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4000
    Minimum Value 1
    Maximum 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 如何打开和关闭表”

  • table_open_cache_instances

    Command-Line Format --table-open-cache-instances=#
    System Variable table_open_cache_instances
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 16
    Minimum Value 1
    Maximum Value 64

    打开表缓存实例的数量。为了通过减少会话之间的争用来提高可扩展性,打开表缓存可以被分区为多个较小的缓存实例,每个实例的大小为table_open_cache / table_open_cache_instances。会话只需要锁定一个实例来访问它以进行 DML 语句。这将缓存访问分段到实例中,允许在有许多会话访问表时提高性能。(DDL 语句仍然需要锁定整个缓存,但这种语句非常少见。)

    在系统上使用16个或更多核心时,建议将其设置为8或16。然而,如果您在表上有许多大触发器,导致高内存负载,那么默认的table_open_cache_instances设置可能会导致过高的内存使用。在那种情况下,将table_open_cache_instances设置为1,以限制内存使用。

  • tablespace_definition_cache

    Command-Line Format --tablespace-definition-cache=#
    System Variable tablespace_definition_cache
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 256
    Minimum Value 256
    Maximum Value 524288

    定义了表空间定义对象缓存中的对象数量限制,包括使用和未使用的对象。

    未使用的表空间定义对象仅在使用中的对象数量少于tablespace_definition_cache定义的容量时保留在字典对象缓存中。

    tablespace_definition_cache设置为0意味着表空间定义对象仅在使用时保留在字典对象缓存中。

    有关更多信息,请参阅第16.4节,“Dictionary Object Cache”

  • temptable_max_mmap

    Command-Line Format --temptable-max-mmap=#
    System Variable temptable_max_mmap
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1073741824
    Minimum Value 0
    Maximum Value 2^64-1
    Unit 字节

    定义了TempTable存储引擎从内存映射临时文件中分配的最大内存量(以字节为单位),然后开始将数据存储到InnoDB内部临时表中。将其设置为0将禁用从内存映射临时文件中分配内存。有关更多信息,请参阅第10.4.4节,“Internal Temporary Table Use in MySQL”

  • temptable_max_ram

    Command-Line Format --temptable-max-ram=#
    System Variable temptable_max_ram
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1073741824
    Minimum Value 2097152
    Maximum Value 2^64-1
    Unit 字节

    定义了TempTable存储引擎占用的最大内存量,然后开始将数据存储到磁盘上。默认值为1073741824字节(1GiB)。有关更多信息,请参阅第10.4.4节,“Internal Temporary Table Use in MySQL”

  • temptable_use_mmap

    Command-Line Format --temptable-use-mmap[={OFF|ON}]
    Deprecated
    System Variable temptable_use_mmap
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    定义了TempTable存储引擎是否将内部内存临时表分配为内存映射临时文件,当TempTable存储引擎占用的内存量超过temptable_max_ram变量定义的限制时。禁用temptable_use_mmap时,TempTable存储引擎将使用InnoDB磁盘内部临时表代替。有关更多信息,请参阅第10.4.4节,“Internal Temporary Table Use in MySQL”

  • 线程缓存大小

    Command-Line Format --thread-cache-size=#
    System Variable 线程缓存大小
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value -1(表示自动调整大小,不要将其设置为该值)
    Minimum Value 0
    Maximum Value 16384

    服务器应该缓存多少个线程以便重用。当客户端断开连接时,如果缓存中少于 线程缓存大小 个线程,则将客户端的线程放入缓存中。请求线程时,如果可能,会从缓存中重用线程,只有当缓存为空时才创建新线程。这个变量可以增加以提高性能,如果您有很多新的连接。通常,如果您有一个好的线程实现,这不会提供明显的性能改进。然而,如果您的服务器每秒看到数百个连接,您应该将 线程缓存大小 设置得足够高,以便大多数新的连接使用缓存的线程。通过检查 ConnectionsThreads_created 状态变量的差异,您可以看到线程缓存的效率。详见 第 7.1.10 节,“服务器状态变量”

    默认值基于以下公式,限制在 100 以内:

    8 + (max_connections / 100)
  • 线程处理

    Command-Line Format --thread-handling=name
    System Variable 线程处理
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value one-thread-per-connection
    Valid Values

    no-threads

    one-thread-per-connection

    loaded-dynamically

    服务器使用的线程处理模型。允许的值是 no-threads(服务器使用单个线程来处理一个连接)、one-thread-per-connection(服务器使用一个线程来处理每个客户端连接)和 loaded-dynamically(由线程池插件在初始化时设置)。 no-threads 在 Linux 下用于调试;详见 第 7.9 节,“调试 MySQL”

  • 线程池算法

    Command-Line Format --thread-pool-algorithm=#
    System Variable 线程池算法
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1

    该变量控制线程池插件使用的算法:

    • 0:使用保守的低并发算法。

    • 1:使用激进的高并发算法,该算法在最佳线程数下性能更好,但如果连接数非常高,性能可能会下降。

    该变量仅在线程池插件启用时可用。详见 第 7.6.3 节,“MySQL Enterprise 线程池”

  • 线程池专用监听器

    Command-Line Format --thread-pool-dedicated-listeners
    System Variable 线程池专用监听器
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    在每个线程组中专门分配一个监听器线程来监听来自分配给该组的连接的入站语句。

    • OFF:(默认)禁用专用监听器线程。

    • ON:在每个线程组中分配一个监听线程,以监听来自连接的入站语句。专用监听线程不执行查询。

    仅当定义了事务限制 thread_pool_max_transactions_limit 时,启用 thread_pool_dedicated_listeners 才是有用的。否则,不应启用 thread_pool_dedicated_listeners

    MySQL HeatWave 服务使用此变量,该变量仅在 MySQL Enterprise Edition 中可用,不支持 MySQL 8.3。

  • thread_pool_high_priority_connection

    Command-Line Format --thread-pool-high-priority-connection=#
    System Variable thread_pool_high_priority_connection
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1

    该变量影响语句的排队顺序。如果值为 0(false,默认值),语句排队使用低优先级和高优先级队列。如果值为 1(true),排队语句总是进入高优先级队列。

    该变量仅在启用线程池插件时可用。请参阅 第 7.6.3 节,“MySQL Enterprise 线程池”

  • thread_pool_max_active_query_threads

    Command-Line Format --thread-pool-max-active-query-threads
    System Variable thread_pool_max_active_query_threads
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 512

    每个组的活动(运行)查询线程的最大允许数量。如果值为 0,线程池插件将使用所有可用的线程。

    该变量仅在启用线程池插件时可用。请参阅 第 7.6.3 节,“MySQL Enterprise 线程池”

  • thread_pool_max_transactions_limit

    Command-Line Format --thread-pool-max-transactions-limit
    System Variable thread_pool_max_transactions_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 1000000

    线程池插件允许的最大事务数量。定义事务限制可以将线程绑定到事务直到提交,从而帮助在高并发情况下稳定吞吐量。

    默认值为 0,表示没有事务限制。该变量是动态的,但不能在运行时从 0 更改为更高的值,反之亦然。非零值在启动时允许动态配置在运行时。CONNECTION_ADMIN 权限是配置 thread_pool_max_transactions_limit 在运行时所需的。

    当您定义事务限制时,启用 thread_pool_dedicated_listeners 将在每个线程组中创建一个专用监听线程。额外的专用监听线程将消耗更多资源并影响线程池性能。thread_pool_dedicated_listeners 应该谨慎使用。

    当达到thread_pool_max_transactions_limit定义的限制时,新的连接似乎会hang,直到一个或多个现有的事务完成。同样,当尝试在现有的连接上启动新事务时,也会发生这种情况。如果现有的连接被阻止或长时间运行,可能需要特权连接来访问服务器,以增加限制、删除限制或杀死正在运行的事务。请参阅特权连接

    MySQL HeatWave 服务使用这个变量,该变量仅在 MySQL Enterprise Edition 中可用,不支持 MySQL 8.3。

  • thread_pool_max_unused_threads

    Command-Line Format --thread-pool-max-unused-threads=#
    System Variable thread_pool_max_unused_threads
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4096

    线程池中未使用线程的最大允许数量。此变量使得可以限制睡眠线程使用的内存量。

    值为 0(默认)表示没有睡眠线程的限制。值为 N,其中 N 大于 0,表示 1 个消费者线程和 N-1 个备用线程。在这种情况下,如果线程准备睡眠但睡眠线程的数量已经达到最大值,则线程退出而不是睡眠。

    睡眠线程要么是消费者线程,要么是备用线程。线程池允许一个线程作为消费者线程睡眠。如果线程睡眠并且没有现有的消费者线程,它睡眠作为消费者线程。当需要唤醒线程时,选择消费者线程,如果没有消费者线程,则选择备用线程。

    该变量仅在启用线程池插件时可用。请参阅第 7.6.3 节,“MySQL Enterprise Thread Pool”

  • thread_pool_prio_kickup_timer

    Command-Line Format --thread-pool-prio-kickup-timer=#
    System Variable thread_pool_prio_kickup_timer
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000
    Minimum Value 0
    Maximum Value 4294967294
    Unit 毫秒

    该变量影响等待执行的语句队列中的语句。该值是等待语句被移到高优先级队列前的毫秒数。默认值为 1000(1 秒)。

    该变量仅在启用线程池插件时可用。请参阅第 7.6.3 节,“MySQL Enterprise Thread Pool”

  • thread_pool_query_threads_per_group

    Command-Line Format --thread-pool-query-threads-per-group
    System Variable thread_pool_query_threads_per_group
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum 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.3。

  • thread_pool_size

    Command-Line Format --thread-pool-size=#
    System Variable thread_pool_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 16
    Minimum Value 1
    Maximum Value 512

    线程池中的线程组数。这是控制线程池性能的最重要参数。它影响可以同时执行的语句数量。如果指定的值超出允许的范围,线程池插件将不会加载,并且服务器将写入错误日志。

    该变量仅在 thread pool 插件启用时可用。见 第 7.6.3 节,“MySQL Enterprise 线程池”

  • thread_pool_stall_limit

    Command-Line Format --thread-pool-stall-limit=#
    System Variable thread_pool_stall_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 6
    Minimum Value 4
    Maximum Value 600
    Unit 毫秒 * 10

    该变量影响执行语句。该值是语句开始执行后被定义为停滞的时间量,在此时间后,线程池允许线程组开始执行另一个语句。该值以 10 毫秒为单位,因此默认值 6 表示 60ms。短等待值允许线程更快启动。短值也更好地避免了死锁情况。长等待值对包含长时间运行语句的工作负载非常有用,以避免启动太多新的语句,而当前语句正在执行。

    该变量仅在 thread pool 插件启用时可用。见 第 7.6.3 节,“MySQL Enterprise 线程池”

  • thread_pool_transaction_delay

    Command-Line Format --thread-pool-transaction-delay
    System Variable thread_pool_transaction_delay
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 300000

    执行新事务前的延迟期限,以毫秒为单位。最大值为 300000(5 分钟)。

    事务延迟可以在并行事务影响其他操作的性能时使用。例如,如果并行事务影响索引创建或在线缓冲池调整操作,可以配置事务延迟以减少资源争用。

    工作线程在执行新事务前将睡眠指定的毫秒数。

    thread_pool_transaction_delay 设置不影响来自特权连接(分配给 Admin 线程组)的查询。这些查询不受配置的事务延迟的影响。

  • thread_stack

    Command-Line Format --thread-stack=#
    System Variable thread_stack
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1048576
    Minimum Value 131072
    Maximum Value (64-bit platforms) 18446744073709550592
    Maximum Value (32-bit platforms) 4294966272
    Unit 字节
    Block Size 1024

    每个线程的堆栈大小。默认值足够正常操作。如果线程堆栈大小太小,将限制服务器可以处理的 SQL 语句的复杂性、存储过程的递归深度和其他内存消耗的操作。

  • time_zone

    System Variable time_zone
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value SYSTEM
    Minimum Value -13:59
    Maximum Value +14:00

    当前时区。此变量用于初始化每个客户端的时区。默认情况下,初始值为 'SYSTEM'(这意味着,使用 使用 system_time_zone 的值”)。可以在服务器启动时使用 --default-time-zone 选项指定值。请参阅 第 7.1.15 节,“MySQL 服务器时区支持”

    Note

    如果设置为 SYSTEM,每个 MySQL 函数调用都需要时区计算,会调用系统库来确定当前系统时区。这可能会导致全局互斥锁争用。

  • timestamp

    System Variable timestamp
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 数字
    Default Value UNIX_TIMESTAMP()
    Minimum Value 1
    Maximum Value 2147483647

    设置客户端的时间。用于从二进制日志还原行时获取原始时间戳。timestamp_value 应该是一个 Unix 纪元时间戳(类似于 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_validation

    Command-Line Format --tls-certificates-enforced-validation[={OFF|ON}]
    System Variable tls_certificates_enforced_validation
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value 关闭

    在启动期间,服务器确保每个所需的SSL证书文件的位置在默认数据目录中,如果文件位置没有在命令行上指定。然而,服务器不验证证书文件,因此可以在启动时使用无效的证书。tls_certificates_enforced_validation系统变量控制是否在启动时强制证书验证。如果启用了验证强制,发现无效证书将停止启动执行。默认情况下,证书验证强制是禁用(关闭)。

    可以通过在命令行上指定--tls-certificates-enforced-validation选项启用验证强制,带或不带ON值。当启用验证强制时,证书也将在通过ALTER INSTANCE RELOAD TLS语句重新加载时进行验证。此系统变量不能在重新启动后持久化。有关更多信息,请参阅配置证书验证强制

  • tls_ciphersuites

    Command-Line Format --tls-ciphersuites=ciphersuite_list
    System Variable tls_ciphersuites
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    服务器允许用于TLSv1.3加密连接的密码套件列表。该值是一个或多个以冒号分隔的密码套件名称。

    可以命名的密码套件取决于编译MySQL时使用的SSL库。如果未设置该变量,其默认值为NULL第8.3.2节,“加密连接TLS协议和密码”

  • tls_version

    Command-Line Format --tls-version=protocol_list
    System Variable tls_version
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value TLSv1.2,TLSv1.3

    服务器允许用于加密连接的协议列表。该值是一个或多个以逗号分隔的协议名称,不区分大小写。可以命名的协议取决于编译MySQL时使用的SSL库。选择的协议不应留下“漏洞”在列表中。有关详细信息,请参阅第8.3.2节,“加密连接TLS协议和密码”

    可以在运行时修改该变量,以影响服务器用于新连接的TLS上下文。请参阅服务器端运行时配置和监控加密连接

    Important
    • MySQL 8.3不支持TLSv1和TLSv1.1连接协议。请参阅删除对TLSv1和TLSv1.1协议的支持以获取更多信息。

    • 在MySQL 8.3中,提供了TLSv1.3协议的支持,前提是MySQL Server使用OpenSSL 1.1.1或更高版本编译。如果OpenSSL版本低于1.1.1,TLSv1.3将从默认值中删除。在这种情况下,默认值为TLSv1.2

  • tmp_table_size

    Command-Line Format --tmp-table-size=#
    System Variable tmp_table_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 16777216
    Minimum Value 1024
    Maximum Value 18446744073709551615
    Unit 字节

    定义了内部内存临时表的最大大小,由MEMORYTempTable存储引擎创建。如果内部内存临时表超过此大小,它将自动转换为磁盘内部临时表。

    变量tmp_table_size不适用于用户创建的MEMORY表。用户创建的TempTable表不受支持。

    使用MEMORY存储引擎时,实际大小限制是tmp_table_sizemax_heap_table_size的较小值。max_heap_table_size设置不适用于TempTable表。

    如果您执行了许多高级的GROUP BY查询,并且您有很多内存,那么增加tmp_table_size的值(如果必要,增加max_heap_table_size的值)。

    您可以通过比较Created_tmp_disk_tablesCreated_tmp_tables值来比较内部磁盘临时表的数量和内部临时表的总数量。

    另见第 10.4.4 节,“MySQL 中的内部临时表使用”

  • tmpdir

    Command-Line Format --tmpdir=dir_name
    System Variable tmpdir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称

    用于创建临时文件的目录的路径。如果您的默认 /tmp 目录位于太小的分区中无法容纳临时表,这可能很有用。该变量可以设置为多个以冒号分隔的路径(在 Unix 中)或以分号分隔的路径(在 Windows 中)。

    tmpdir 可以是一个非永久的位置,例如基于内存的文件系统的目录或在服务器主机重新启动时被清除的目录。如果 MySQL 服务器作为副本,并且您使用非永久的位置 для tmpdir,请考虑使用 replica_load_tmpdir 变量为副本设置不同的临时目录。

    有关临时文件的存储位置的更多信息,请参见B.3.3.5 节,“MySQL 存储临时文件的位置”

  • transaction_alloc_block_size

    Command-Line Format --transaction-alloc-block-size=#
    System Variable transaction_alloc_block_size
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 8192
    Minimum Value 1024
    Maximum Value 131072
    Unit 字节
    Block Size 1024

    每个事务内存池需要增加的字节数。请参见 transaction_prealloc_size 的描述。

  • transaction_isolation

    Command-Line Format --事务隔离级别=name
    System Variable 事务隔离级别
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value 可重复读
    Valid Values

    未提交读

    已提交读

    可重复读

    可串行化

    事务隔离级别。默认是 可重复读

    事务隔离级别有三个作用域:全局、会话和下一个事务。这三个作用域的实现导致了一些非标准的隔离级别赋值语义,如后面所述。

    要在启动时设置全局事务隔离级别,请使用 --事务隔离 服务器选项。

    在运行时,可以使用 SET 语句将值分配给 事务隔离 系统变量,或者使用 SET TRANSACTION 语句。如果您直接将 事务隔离 设置为包含空格的隔离级别名称,则名称应该用引号括起来,并将空格替换为破折号。例如,使用以下 SET 语句设置全局值:

    SET GLOBAL transaction_isolation = 'READ-COMMITTED';

    设置全局 事务隔离 值将设置所有后续会话的隔离级别。现有会话不受影响。

    要设置会话或下一个事务的 事务隔离 值,请使用 SET 语句。大多数会话系统变量的这些语句是等效的方式来设置值:

    SET @@SESSION.var_name = value;
    SET SESSION var_name = value;
    SET var_name = value;
    SET @@var_name = value;

    如前所述,事务隔离级别有三个作用域:全局、会话和下一个事务。SET 语句的语义对于 事务隔离 不是标准的:

    • 要设置会话隔离级别,请使用任何以下语法:

      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 和其与 事务隔离 系统变量的关系,请参阅 第 15.3.7 节,“SET TRANSACTION 语句”

  • 事务预分配大小

    Command-Line Format --事务预分配大小=#
    Deprecated
    System Variable 事务预分配大小
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 4096
    Minimum Value 1024
    Maximum Value 131072
    Unit 字节
    Block Size 1024

    每个事务都有一个内存池,用于各种事务相关的分配内存。池的初始大小是 事务预分配大小 字节。对于每个无法从池中满足的分配,因为池中没有足够的内存,池将增加 事务分配块大小 字节。当事务结束时,池将被截断到 事务预分配大小 字节。通过使 事务预分配大小 足够大以容纳单个事务中的所有语句,可以避免许多 malloc() 调用。

    事务预分配大小 已弃用,不再对其进行设置。

  • 事务只读

    Command-Line Format --事务只读[={OFF|ON}]
    System Variable 事务只读
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    事务访问模式。值可以是 OFF(读写;默认)或 ON(只读)。

    事务访问模式有三个作用域:全局、会话和下一个事务。这三个作用域的实现导致了一些非标准的访问模式赋值语义,如后面所述。

    要在启动时设置全局事务访问模式,使用 --事务只读 服务器选项。

    在运行时,可以使用 SET 语句直接设置 事务只读 系统变量的值,或者使用 SET TRANSACTION 语句间接设置。

    SET GLOBAL transaction_read_only = ON;

    设置全局 事务只读 值将设置所有后续会话的访问模式。现有会话不受影响。

    要设置会话或下一个 事务只读 值,使用 SET 语句。

    SET @@SESSION.var_name = value;
    SET SESSION var_name = value;
    SET var_name = value;
    SET @@var_name = value;

    如前所述,事务访问模式有三个作用域:全局、会话和下一个事务。

    • 要设置会话访问模式,使用以下语法:

      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 语句”

  • unique_checks

    System Variable unique_checks
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    如果设置为 1(默认值),则在 InnoDB 表中执行唯一性检查。如果设置为 0,存储引擎可以假设输入数据中没有唯一性违规。如果您确定您的数据不包含唯一性违规,可以将其设置为 0,以加速大型表的导入到 InnoDB

    将该变量设置为 0 不会 要求 存储引擎忽略重复键。引擎仍然可以检查重复键并在检测到时发出重复键错误。

  • updatable_views_with_limit

    Command-Line Format --updatable-views-with-limit[={OFF|ON}]
    System Variable updatable_views_with_limit
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value 1

    该变量控制是否可以在视图中执行更新操作,即使视图不包含基本表的所有列,如果更新语句包含 LIMIT 子句。(这种更新通常是由 GUI 工具生成的。)更新是指 UPDATEDELETE 语句。这里的主键是指 PRIMARY KEY,或一个 UNIQUE 索引,其中没有列可以包含 NULL

    该变量可以有两个值:

    • 1YES:仅发出警告(而不是错误消息)。这是默认值。

    • 0NO:禁止更新。

  • use_secondary_engine

    System Variable use_secondary_engine
    Scope 会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value ON
    Valid Values

    OFF

    ON

    FORCED

    未来使用。

    是否执行查询使用辅助引擎。

    用于 HeatWave。请参阅 MySQL HeatWave 用户指南

  • validate_password.xxx

    validate_password 组件实现了一组系统变量,名称形式为 validate_password.xxx。这些变量影响密码测试;请参阅 第 8.4.3.2 节,“密码验证选项和变量”

  • version

    服务器的版本号。该值可能还包括服务器构建或配置信息的后缀。-debug 表示服务器是带有调试支持构建的。

  • version_comment

    System Variable version_comment
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    CMake 配置程序具有一个 COMPILATION_COMMENT_SERVER 选项,允许在构建 MySQL 时指定注释。该变量包含该注释的值。

  • 版本编译机器

    System Variable 版本编译机器
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    服务器二进制文件的类型。

  • 版本编译操作系统

    System Variable 版本编译操作系统
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    MySQL 构建时的操作系统类型。

  • 版本编译 zlib

    System Variable 版本编译 zlib
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    编译时使用的 zlib 库版本。

  • 等待超时

    Command-Line Format --wait-timeout=#
    System Variable 等待超时
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 28800
    Minimum Value 1
    Maximum Value (Windows) 2147483
    Maximum Value (Other) 31536000
    Unit

    服务器在非交互式连接上等待活动的秒数,然后关闭连接。

    在线程启动时,会话 等待超时 值将从全局 等待超时 值或全局 交互超时 值初始化,具体取决于客户端类型(由 CLIENT_INTERACTIVE 连接选项到 mysql_real_connect() 定义)。见 交互超时

  • 警告计数

    最后一条语句生成的错误、警告和注意的数量。该变量是只读的。见 第 15.7.7.44 节,“SHOW WARNINGS 语句”

  • 窗口使用高精度

    Command-Line Format --windowing-use-high-precision[={OFF|ON}]
    System Variable 窗口使用高精度
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    是否在窗口操作中计算高精度。见 第 10.2.1.21 节,“窗口函数优化”

  • XA 分离准备

    Command-Line Format --xa-detach-on-prepare[={OFF|ON}]
    System Variable XA 分离准备
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    当设置为 ON(启用)时,所有XA事务将从连接(会话)中断开(断开)作为 XA PREPARE的一部分。这意味着XA事务可以由另一个连接提交或回滚,即使原始连接尚未终止,并且该连接可以启动新事务。

    临时表不能在断开的XA事务中使用。

    当它被设置为 OFF(禁用)时,XA事务将严格关联到同一个连接,直到会话断开。建议您允许它被启用(默认行为)以便复制。

    有关更多信息,请参阅 第 15.3.8.2 节,“XA事务状态”