MySQL 服务器维护许多配置其操作的系统变量。每个系统变量都有一个默认值。可以在服务器启动时使用命令行或选项文件中的选项设置系统变量。它们中的大多数都可以在运行时使用
SET
语句动态更改,这使您无需停止并重新启动服务器即可修改服务器的操作。您还可以在表达式中使用系统变量值。
在运行时,设置全局系统变量值需要
SUPER
特权。设置会话系统变量值通常不需要特殊权限,并且可以由任何用户完成,但也有例外。有关详细信息,请参阅第 5.1.8.1 节,“系统变量权限”
有几种方法可以查看系统变量的名称和值:
要查看服务器根据其编译的默认值和它读取的任何选项文件使用的值,请使用以下命令:
mysqld --verbose --help
要查看服务器仅基于其编译默认值使用的值,忽略任何选项文件中的设置,请使用以下命令:
mysqld --no-defaults --verbose --help
要查看正在运行的服务器使用的当前值,请使用
SHOW VARIABLES
语句或 Performance Schema 系统变量表。请参阅 第 25.12.13 节,“性能模式系统变量表”。
本节提供了每个系统变量的描述。有关系统变量汇总表,请参阅 第 5.1.4 节,“服务器系统变量参考”。有关系统变量操作的更多信息,请参阅 第 5.1.8 节,“使用系统变量”。
有关其他系统变量信息,请参阅以下部分:
第 5.1.8 节,“使用系统变量”,讨论了设置和显示系统变量值的语法。
第 5.1.8.2 节,“动态系统变量”,列出了可以在运行时设置的变量。
有关调整系统变量的信息可以在 第 5.1.1 节“配置服务器”中找到。
第 14.15 节,“InnoDB 启动选项和系统变量”,列出了
InnoDB
系统变量。第 21.4.3.9.2 节,“NDB Cluster 系统变量”,列出了特定于 NDB Cluster 的系统变量。
有关特定于复制的服务器系统变量的信息,请参阅第 16.1.6 节,“复制和二进制日志记录选项和变量”。
以下一些变量描述涉及
“启用”或“禁用”变量。这些变量可以通过将它们设置为 或 来启用
SET
,或者通过将它们设置为 或ON
来
1
禁用
。布尔变量可以在启动时设置为值
、、
和(不区分大小写),以及和
。请参阅第 4.2.2.4 节,“程序选项修饰符”。
OFF
0
ON
TRUE
OFF
FALSE
1
0
一些系统变量控制缓冲区或高速缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常是从分配给缓冲区的总内存中分配的,所需的空间量可能取决于平台。这意味着当您将值分配给控制缓冲区大小的系统变量时,实际可用的空间量可能与分配的值不同。在某些情况下,金额可能小于分配的值。服务器也可以向上调整一个值。例如,如果将值 0 分配给最小值为 1024 的变量,则服务器会将值设置为 1024。
除非另有说明,否则缓冲区大小、长度和堆栈大小的值以字节为单位给出。
一些系统变量采用文件名值。除非另有说明,否则如果值为相对路径名,则默认文件位置为数据目录。要明确指定位置,请使用绝对路径名。假设数据目录是
/var/mysql/data
. 如果文件值变量作为相对路径名给出,则它位于
/var/mysql/data
. 如果该值是绝对路径名,则其位置由路径名给出。
authentication_windows_log_level
命令行格式 --authentication-windows-log-level=#
系统变量 authentication_windows_log_level
范围 全球的 动态的 不 类型 整数 默认值 2
最小值 0
最大值 4
仅当
authentication_windows
启用 Windows 身份验证插件并启用调试代码时,此变量才可用。请参阅 第 6.4.1.8 节,“Windows 可插入身份验证”。此变量设置 Windows 身份验证插件的日志记录级别。下表显示了允许的值。
价值 描述 0 没有记录 1个 仅记录错误消息 2个 记录级别 1 消息和警告消息 3个 记录 2 级消息和信息说明 4个 记录 3 级消息和调试消息 authentication_windows_use_principal_name
命令行格式 --authentication-windows-use-principal-name[={OFF|ON}]
系统变量 authentication_windows_use_principal_name
范围 全球的 动态的 不 类型 布尔值 默认值 ON
此变量仅在
authentication_windows
启用 Windows 身份验证插件时可用。请参阅 第 6.4.1.8 节,“Windows 可插入身份验证”。使用该
InitSecurityContext()
函数进行身份验证的客户端应该提供一个字符串来标识它所连接的服务 (targetName
)。MySQL 使用运行服务器的帐户的主体名称 (UPN)。UPN 具有表格 ,无需在任何地方注册即可使用。此 UPN 由服务器在身份验证握手开始时发送。user_id
@computer_name
此变量控制服务器是否在初始质询中发送 UPN。默认情况下,启用该变量。出于安全原因,可以禁用它以避免将服务器的帐户名称作为明文发送给客户端。如果禁用该变量,服务器总是
0x00
在第一个质询中发送一个字节,客户端不指定targetName
,因此使用 NTLM 身份验证。如果服务器无法获取其 UPN(这主要发生在不支持 Kerberos 身份验证的环境中),则服务器不会发送 UPN,而是使用 NTLM 身份验证。
-
命令行格式 --autocommit[={OFF|ON}]
系统变量 autocommit
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
自动提交模式。如果设置为 1,则对表的所有更改都会立即生效。如果设置为 0,则必须使用它
COMMIT
来接受交易或ROLLBACK
取消交易。如果autocommit
是 0 并且您将其更改为 1,则 MySQL 会自动执行COMMIT
任何打开的事务。开始事务的另一种方法是使用START TRANSACTION
orBEGIN
语句。请参阅第 13.3.1 节,“START TRANSACTION、COMMIT 和 ROLLBACK 语句”。默认情况下,客户端连接以
autocommit
设置为 1 开始。要使客户端以默认值 0 开始,请 通过使用该选项autocommit
启动服务器来设置全局值 。--autocommit=0
要使用选项文件设置变量,请包括以下行:[mysqld] autocommit=0
-
命令行格式 --automatic-sp-privileges[={OFF|ON}]
系统变量 automatic_sp_privileges
范围 全球的 动态的 是的 类型 布尔值 默认值 ON
当此变量的值为 1(默认值)时 ,如果用户无法执行和更改或删除例程,服务器会自动将权限授予存储例程的创建者
EXECUTE
。ALTER ROUTINE
(ALTER ROUTINE
删除例程需要特权。)当例程被删除时,服务器也会自动删除创建者的那些特权。如果automatic_sp_privileges
为 0,服务器不会自动添加或删除这些权限。例程的创建者是用于为其执行
CREATE
语句的帐户。这可能与DEFINER
在例程定义中命名为的帐户不同。如果您使用 启动mysqld,
--skip-new
则automatic_sp_privileges
设置为OFF
. -
命令行格式 --auto-generate-certs[={OFF|ON}]
系统变量 auto_generate_certs
范围 全球的 动态的 不 类型 布尔值 默认值 ON
如果服务器是使用 OpenSSL 编译的,则此变量可用(请参阅第 6.3.4 节,“SSL 库相关功能”)。它控制服务器是否在数据目录中自动生成 SSL 密钥和证书文件(如果它们尚不存在)。
在启动时,如果启用了系统变量,服务器会自动在数据目录中生成服务器端和客户端 SSL 证书和密钥文件, 除指定
auto_generate_certs
之外--ssl
没有指定任何 SSL 选项,并且数据中缺少服务器端 SSL 文件目录。这些文件启用使用 SSL 的安全客户端连接;参见 第 6.3.1 节,“配置 MySQL 以使用加密连接”。有关 SSL 文件自动生成的更多信息,包括文件名和特征,请参阅 第 6.3.3.1 节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”
系统变量是相关的
sha256_password_auto_generate_rsa_keys
,但控制在未加密连接上使用 RSA 进行安全密码交换所需的 RSA 密钥对文件的自动生成。 -
命令行格式 --avoid-temporal-upgrade[={OFF|ON}]
弃用 是的 系统变量 avoid_temporal_upgrade
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
此变量控制是否
ALTER TABLE
隐式升级发现采用 5.6.4 之前格式的时间列(TIME
、DATETIME
和TIMESTAMP
不支持小数秒精度的列)。升级此类列需要重建表,这会阻止使用可能以其他方式应用于要执行的操作的快速更改。默认情况下禁用此变量。启用它会导致
ALTER TABLE
不重建时间列,从而能够利用可能的快速更改。此变量已弃用;希望在未来的 MySQL 版本中将其删除。
-
命令行格式 --back-log=#
系统变量 back_log
范围 全球的 动态的 不 类型 整数 默认值 -1
(表示自动调整大小;不要分配此文字值)最小值 1
最大值 65535
MySQL 可以拥有的未完成连接请求数。当主 MySQL 线程在很短的时间内收到非常多的连接请求时,这就会发挥作用。然后主线程需要一些时间(虽然很少)来检查连接并启动一个新线程。该
back_log
值表示在 MySQL 暂时停止响应新请求之前的这段短时间内可以堆叠多少请求。仅当您期望在短时间内有大量连接时才需要增加此值。换句话说,此值是传入 TCP/IP 连接的侦听队列的大小。您的操作系统对此队列的大小有自己的限制。Unix 系统调用的手册页
listen()
应该有更多详细信息。检查您的操作系统文档以了解此变量的最大值。back_log
不能设置高于您的操作系统限制。默认值基于以下公式,上限为 900:
50 + (max_connections / 5)
-
命令行格式 --basedir=dir_name
系统变量 basedir
范围 全球的 动态的 不 类型 目录名称 默认值 configuration-dependent default
MySQL 安装基本目录的路径。
-
命令行格式 --big-tables[={OFF|ON}]
系统变量 big_tables
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
如果启用,服务器会将所有临时表存储在磁盘上而不是内存中。这可以防止需要大型临时表的操作的大多数错误,但也会减慢内存表就足够的查询。
The table
tbl_name
is fullSELECT
新连接的默认值为
OFF
(使用内存临时表)。通常,永远不需要启用此变量,因为服务器能够通过将内存用于小型临时表并根据需要切换到基于磁盘的表来自动处理大型结果集。 -
命令行格式 --bind-address=addr
系统变量 bind_address
范围 全球的 动态的 不 类型 细绳 默认值 *
MySQL 服务器在单个网络套接字上侦听 TCP/IP 连接。此套接字绑定到单个地址,但一个地址可以映射到多个网络接口。要指定地址,请 在服务器启动时设置,其中是 IPv4 或 IPv6 地址或主机名。如果 是主机名,服务器会将名称解析为 IP 地址并绑定到该地址。如果主机名解析为多个 IP 地址,则服务器使用第一个 IPv4 地址(如果有),否则使用第一个 IPv6 地址。
bind_address=
addr
addr
addr
服务器按如下方式处理不同类型的地址:
如果地址是
*
,则服务器接受所有服务器主机 IPv4 接口上的 TCP/IP 连接,如果服务器主机支持 IPv6,则接受所有 IPv6 接口上的 TCP/IP 连接。使用此地址允许所有服务器接口上的 IPv4 和 IPv6 连接。此值为默认值。如果地址为
0.0.0.0
,则服务器接受所有服务器主机 IPv4 接口上的 TCP/IP 连接。如果地址为
::
,则服务器接受所有服务器主机 IPv4 和 IPv6 接口上的 TCP/IP 连接。如果地址是 IPv4 映射地址,则服务器接受该地址的 IPv4 或 IPv6 格式的 TCP/IP 连接。例如,如果服务器绑定到
::ffff:127.0.0.1
,则客户端可以使用--host=127.0.0.1
或 进行连接--host=::ffff:127.0.0.1
。如果该地址是“常规” IPv4 或 IPv6 地址(例如
127.0.0.1
或::1
),则服务器仅接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。
如果绑定到该地址失败,则服务器会产生错误并且不会启动。
如果您打算将服务器绑定到特定地址,请确保
mysql.user
系统表包含一个具有管理权限的帐户,您可以使用该帐户连接到该地址。否则,您无法关闭服务器。例如,如果将服务器绑定到*
,则可以使用所有现有帐户连接到它。但是,如果您将服务器绑定到::1
,它只接受该地址上的连接。在这种情况下,首先要确保该'root'@'::1'
帐户存在于mysql.user
表中,这样您仍然可以连接到服务器以将其关闭。此变量对嵌入式服务器 (
libmysqld
) 没有影响,并且在嵌入式服务器中不可见。 -
命令行格式 --block-encryption-mode=#
系统变量 block_encryption_mode
范围 全局,会话 动态的 是的 类型 细绳 默认值 aes-128-ecb
此变量控制基于块的算法(例如 AES)的块加密模式。
AES_ENCRYPT()
它会影响和 的加密AES_DECRYPT()
。block_encryption_mode
采用 格式值,其中以位为单位的密钥长度是加密模式。该值不区分大小写。允许 的值为 128、192 和 256。允许的加密模式取决于 MySQL 是使用 OpenSSL 还是 yaSSL 编译的:aes-
keylen
-mode
keylen
mode
keylen
对于 OpenSSL,允许
mode
的值为:ECB
,CBC
,CFB1
,CFB8
,CFB128
,OFB
对于 yaSSL,允许
mode
的值为:ECB
,CBC
例如,此语句导致 AES 加密函数使用 256 位的密钥长度和 CBC 模式:
SET block_encryption_mode = 'aes-256-cbc';
尝试设置
block_encryption_mode
为包含不受支持的密钥长度或 SSL 库不支持的模式的值时会发生错误。 -
命令行格式 --bulk-insert-buffer-size=#
系统变量 bulk_insert_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 8388608
最小值 0
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节/线程 MyISAM
使用特殊的树状缓存来加快INSERT ... SELECT
、INSERT ... VALUES (...), (...), ...
和LOAD DATA
向非空表添加数据时的批量插入。该变量以每个线程的字节为单位限制缓存树的大小。将其设置为 0 将禁用此优化。默认值为 8MB。 -
系统变量 character_set_client
范围 全局,会话 动态的 是的 类型 细绳 默认值 utf8
从客户端到达的语句的字符集。当客户端连接到服务器时,使用客户端请求的字符集设置此变量的会话值。(许多客户端支持
--default-character-set
显式指定此字符集的选项。另请参阅 第 10.4 节,“连接字符集和排序规则”。)变量的全局值用于在客户端请求的情况下设置会话值值未知或不可用,或者服务器配置为忽略客户端请求:客户端请求服务器不知道的字符集。例如,支持日语的客户端
sjis
在连接到未配置sjis
支持的服务器时发出请求。客户端来自 MySQL 4.1 之前的 MySQL 版本,因此不请求字符集。
mysqld以该
--skip-character-set-client-handshake
选项启动,这导致它忽略客户端字符集配置。这重现了 MySQL 4.0 的行为,如果您希望升级服务器而不升级所有客户端,这将很有用。
某些字符集不能用作客户端字符集。尝试将它们用作
character_set_client
值会产生错误。请参阅 不允许的客户端字符集。 -
系统变量 character_set_connection
范围 全局,会话 动态的 是的 类型 细绳 默认值 utf8
用于在没有字符集引入器的情况下指定的文字和数字到字符串转换的字符集。有关介绍人的信息,请参阅 第 10.3.8 节,“字符集介绍人”。
-
系统变量 character_set_database
范围 全局,会话 动态的 是的 类型 细绳 默认值 latin1
脚注 此选项是动态的,但只能由服务器设置。您不应手动设置此变量。 默认数据库使用的字符集。每当默认数据库更改时,服务器都会设置此变量。如果没有默认数据库,则该变量的值与
character_set_server
.全局 变量
character_set_database
和collation_database
系统变量在 MySQL 5.7 中已弃用;希望它们在未来版本的 MySQL 中被删除。为会话
character_set_database
和collation_database
系统变量赋值在 MySQL 5.7 中已弃用,赋值会产生警告。您应该期望会话变量在 MySQL 的未来版本中变为只读并且赋值会产生错误,同时仍然可以访问会话变量以确定默认数据库的数据库字符集和排序规则。 -
命令行格式 --character-set-filesystem=name
系统变量 character_set_filesystem
范围 全局,会话 动态的 是的 类型 细绳 默认值 binary
文件系统字符集。此变量用于解释引用文件名的字符串文字,例如在
LOAD DATA
andSELECT ... INTO OUTFILE
语句和LOAD_FILE()
函数中。 在尝试打开文件之前,此类文件名将从 转换为character_set_client
。character_set_filesystem
默认值为binary
,表示不发生转换。对于允许多字节文件名的系统,不同的值可能更合适。例如,如果系统使用 UTF-8 表示文件名,则设置character_set_filesystem
为'utf8mb4'
. -
系统变量 character_set_results
范围 全局,会话 动态的 是的 类型 细绳 默认值 utf8
用于向客户端返回查询结果的字符集。这包括结果数据(例如列值)、结果元数据(例如列名)和错误消息。
-
命令行格式 --character-set-server=name
系统变量 character_set_server
范围 全局,会话 动态的 是的 类型 细绳 默认值 latin1
服务器默认字符集。请参阅 第 10.15 节,“字符集配置”。如果设置此变量,则还应设置
collation_server
为指定字符集的排序规则。 -
系统变量 character_set_system
范围 全球的 动态的 不 类型 细绳 默认值 utf8
服务器用于存储标识符的字符集。该值始终为
utf8
。 -
命令行格式 --character-sets-dir=dir_name
系统变量 character_sets_dir
范围 全球的 动态的 不 类型 目录名称 安装字符集的目录。请参阅 第 10.15 节,“字符集配置”。
-
命令行格式 --check-proxy-users[={OFF|ON}]
系统变量 check_proxy_users
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
一些身份验证插件为自己实现代理用户映射(例如,PAM 和 Windows 身份验证插件)。其他认证插件默认不支持代理用户。其中,一些可以请求 MySQL 服务器本身根据授予的代理权限映射代理用户:
mysql_native_password
,sha256_password
。如果
check_proxy_users
启用了系统变量,则服务器会为发出此类请求的任何身份验证插件执行代理用户映射。但是,可能还需要启用特定于插件的系统变量以利用服务器代理用户映射支持:对于
mysql_native_password
插件,启用mysql_native_password_proxy_users
.对于
sha256_password
插件,启用sha256_password_proxy_users
.
有关用户代理的信息,请参阅 第 6.2.14 节,“代理用户”。
-
系统变量 collation_connection
范围 全局,会话 动态的 是的 类型 细绳 连接字符集的排序规则。
collation_connection
对于文字字符串的比较很重要。对于字符串与列值的比较,collation_connection
无关紧要,因为列有自己的排序规则,它具有更高的排序规则优先级(请参阅 第 10.8.4 节,“表达式中的排序规则强制性”)。 -
系统变量 collation_database
范围 全局,会话 动态的 是的 类型 细绳 默认值 latin1_swedish_ci
脚注 此选项是动态的,但只能由服务器设置。您不应手动设置此变量。 默认数据库使用的排序规则。每当默认数据库更改时,服务器都会设置此变量。如果没有默认数据库,则该变量的值与
collation_server
.全局 变量
character_set_database
和collation_database
系统变量在 MySQL 5.7 中已弃用;希望它们在未来版本的 MySQL 中被删除。为会话
character_set_database
和collation_database
系统变量赋值在 MySQL 5.7 中已弃用,赋值会产生警告。期望会话变量在 MySQL 的未来版本中变为只读并且分配会产生错误,同时仍然可以访问会话变量以确定默认数据库的数据库字符集和排序规则。 -
命令行格式 --collation-server=name
系统变量 collation_server
范围 全局,会话 动态的 是的 类型 细绳 默认值 latin1_swedish_ci
服务器的默认排序规则。请参阅 第 10.15 节,“字符集配置”。
-
命令行格式 --completion-type=#
系统变量 completion_type
范围 全局,会话 动态的 是的 类型 枚举 默认值 NO_CHAIN
有效值 NO_CHAIN
CHAIN
RELEASE
0
1
2
事务完成类型。此变量可以采用下表中显示的值。可以使用名称值或相应的整数值来分配变量。
价值 描述 NO_CHAIN
(或 0)COMMIT
并且ROLLBACK
不受影响。这是默认值。CHAIN
(或 1)COMMIT
和ROLLBACK
分别相当于COMMIT AND CHAIN
和ROLLBACK AND CHAIN
。(新事务立即开始,隔离级别与刚刚终止的事务相同。)RELEASE
(或 2)COMMIT
和ROLLBACK
分别相当于COMMIT RELEASE
和ROLLBACK RELEASE
。(服务器在终止事务后断开连接。)completion_type
影响以or 开头并以START TRANSACTION
orBEGIN
结尾的事务。它不适用于因执行第 13.3.3 节“导致隐式提交的语句”中列出的语句而导致的隐式提交。它也不适用于 , , 或 when 。COMMIT
ROLLBACK
XA COMMIT
XA ROLLBACK
autocommit=1
-
命令行格式 --concurrent-insert[=value]
系统变量 concurrent_insert
范围 全球的 动态的 是的 类型 枚举 默认值 AUTO
有效值 NEVER
AUTO
ALWAYS
0
1
2
如果
AUTO
(默认),MySQL 允许INSERT
和 statements 对于数据文件中间没有空闲块的表SELECT
并发运行。MyISAM
此变量可以采用下表中显示的值。可以使用名称值或相应的整数值来分配变量。
价值 描述 NEVER
(或 0)禁用并发插入 AUTO
(或 1)MyISAM
(默认)为没有孔的表启用并发插入ALWAYS
(或 2)为所有表启用并发插入 MyISAM
,即使是那些有漏洞的表。对于有洞的表,如果另一个线程正在使用它,则在表的末尾插入新行。否则,MySQL 获取一个正常的写锁并将该行插入到洞中。如果您使用 启动mysqld,
--skip-new
则concurrent_insert
设置为NEVER
. -
命令行格式 --connect-timeout=#
系统变量 connect_timeout
范围 全球的 动态的 是的 类型 整数 默认值 10
最小值 2
最大值 31536000
单元 秒 mysqld 服务器在响应之前等待连接数据包 的秒数
Bad handshake
。默认值为 10 秒。connect_timeout
如果客户经常遇到表单错误, 增加该 值可能会有所帮助。Lost connection to MySQL server at '
XXX
', system error:errno
-
系统变量 core_file
范围 全球的 动态的 不 类型 布尔值 默认值 OFF
如果服务器意外退出,是否写入核心文件。该变量由
--core-file
选项设置。 -
命令行格式 --datadir=dir_name
系统变量 datadir
范围 全球的 动态的 不 类型 目录名称 MySQL 服务器数据目录的路径。相对路径是相对于当前目录解析的。如果您希望服务器自动启动(即,在您无法假设当前目录是什么的上下文中),最好将该
datadir
值指定为绝对路径。 此变量未使用。它已被弃用并在 MySQL 8.0 中被删除。
此变量未使用。它已被弃用并在 MySQL 8.0 中被删除。
-
命令行格式 --debug[=debug_options]
系统变量 debug
范围 全局,会话 动态的 是的 类型 细绳 默认值 (Unix) d:t:i:o,/tmp/mysqld.trace
默认值 (Windows) d:t:i:O,\mysqld.trace
此变量指示当前调试设置。它仅适用于构建有调试支持的服务器。初始值来自
--debug
服务器启动时给出的选项实例的值。全局和会话值可以在运行时设置。设置这个系统变量的会话值是一个受限的操作。会话用户必须具有足以设置受限会话变量的权限。请参阅 第 5.1.8.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 | +---------+
有关详细信息,请参阅第 5.8.3 节,“DBUG 包”。
-
系统变量 debug_sync
范围 会议 动态的 是的 类型 细绳 此变量是调试同步工具的用户界面。使用调试同步需要使用CMake选项配置 MySQL(请参阅 第 2.9.7 节,“MySQL 源配置选项”)。如果未编译 Debug Sync,则此系统变量不可用。
-DENABLE_DEBUG_SYNC=1
全局变量值是只读的,表示该工具是否已启用。默认情况下,Debug Sync 处于禁用状态,
debug_sync
值为OFF
. 如果服务器以 启动 ,其中是大于 0 的超时值,则启用调试同步并且 的值 后跟信号名称。此外, 成为各个同步点的默认超时。--debug-sync-timeout=
N
N
debug_sync
ON - current signal
N
会话值可以被任何用户读取并且与全局变量具有相同的值。可以设置会话值来控制同步点。
设置这个系统变量的会话值是一个受限的操作。会话用户必须具有足以设置受限会话变量的权限。请参阅 第 5.1.8.1 节,“系统变量权限”。
有关调试同步工具的描述以及如何使用同步点,请参阅 MySQL 内部结构:测试同步。
-
命令行格式 --default-authentication-plugin=plugin_name
系统变量 default_authentication_plugin
范围 全球的 动态的 不 类型 枚举 默认值 mysql_native_password
有效值 mysql_native_password
sha256_password
默认身份验证插件。这些值是允许的:
mysql_native_password
:使用MySQL本机密码;请参阅 第 6.4.1.1 节,“本机可插入身份验证”。sha256_password
:使用 SHA-256 密码;请参阅第 6.4.1.5 节,“SHA-256 可插入身份验证”。
笔记如果此变量的值不是
mysql_native_password
,则 MySQL 5.5.7 之前的客户端无法连接,因为在允许的默认身份验证插件中,它们只理解mysql_native_password
身份验证协议。该
default_authentication_plugin
值影响服务器操作的这些方面:它确定服务器将哪个身份验证插件分配给创建的新帐户
CREATE USER
以及GRANT
未明确指定身份验证插件的语句。old_passwords
系统变量会影响使用mysql_native_password
或sha256_password
身份验证插件的帐户 的密码散列。如果默认身份验证插件是这些插件之一,服务器将old_passwords
在启动时设置为插件密码哈希方法所需的值。对于使用以下任一语句创建的帐户,服务器将该帐户与默认身份验证插件相关联,并为该帐户分配给定的密码,并根据该插件的要求进行哈希处理:
CREATE USER ... IDENTIFIED BY 'cleartext password'; GRANT ... IDENTIFIED BY 'cleartext password';
对于使用以下任一语句创建的帐户,服务器将该帐户与默认身份验证插件相关联,并为该帐户分配给定的密码哈希(如果密码哈希具有插件要求的格式):
CREATE USER ... IDENTIFIED BY PASSWORD 'encrypted password'; GRANT ... IDENTIFIED BY PASSWORD 'encrypted password';
如果密码哈希不是默认身份验证插件要求的格式,则语句失败。
-
命令行格式 --default-password-lifetime=#
系统变量 default_password_lifetime
范围 全球的 动态的 是的 类型 整数 默认值 (≥ 5.7.11) 0
默认值(≤ 5.7.10) 360
最小值 0
最大值 65535
单元 天 此变量定义全局自动密码过期策略。默认
default_password_lifetime
值为 0,即禁用自动密码过期。如果 的值为default_password_lifetime
正整数N
,则表示允许的密码生存期;必须每天更改密码N
。ALTER USER
可以使用语句 的密码过期选项根据需要为单个帐户覆盖全局密码过期策略。请参阅第 6.2.11 节,“密码管理”。笔记在 MySQL 5.7.11 之前,默认
default_password_lifetime
值为 360(密码必须大约每年更改一次)。对于这些版本,请注意,如果您不对default_password_lifetime
变量或单个用户帐户进行任何更改,则所有用户密码将在 360 天后过期,并且所有用户帐户都会在这种情况下开始以受限模式运行。连接到服务器的客户端(实际上是用户)会收到一条错误消息,指示必须更改密码:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
然而,对于自动连接到服务器的客户端来说,这很容易被忽略,例如从脚本建立的连接。为避免此类客户端因密码过期而突然停止工作,请确保更改这些客户端的密码过期设置,如下所示:
ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
或者,将
default_password_lifetime
变量设置为0
,从而为所有用户禁用自动密码过期。 -
命令行格式 --default-storage-engine=name
系统变量 default_storage_engine
范围 全局,会话 动态的 是的 类型 枚举 默认值 InnoDB
表的默认存储引擎。请参阅 第 15 章,替代存储引擎。此变量仅为永久表设置存储引擎。
TEMPORARY
要为表 设置存储引擎,请设置default_tmp_storage_engine
系统变量。要查看可用和启用的存储引擎,请使用
SHOW ENGINES
语句或查询INFORMATION_SCHEMA
ENGINES
表。如果在服务器启动时禁用默认存储引擎,则必须将永久和
TEMPORARY
表的默认引擎设置为不同的引擎,否则服务器无法启动。 -
命令行格式 --default-tmp-storage-engine=name
系统变量 default_tmp_storage_engine
范围 全局,会话 动态的 是的 类型 枚举 默认值 InnoDB
表的默认存储引擎
TEMPORARY
(使用创建CREATE TEMPORARY TABLE
)。要为永久表设置存储引擎,请设置default_storage_engine
系统变量。另请参阅该变量关于可能值的讨论。如果在服务器启动时禁用默认存储引擎,则必须将永久和
TEMPORARY
表的默认引擎设置为不同的引擎,否则服务器无法启动。 -
命令行格式 --default-week-format=#
系统变量 default_week_format
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 7
用于
WEEK()
函数的默认模式值。请参阅 第 12.7 节,“日期和时间函数”。 -
命令行格式 --delay-key-write[={OFF|ON|ALL}]
系统变量 delay_key_write
范围 全球的 动态的 是的 类型 枚举 默认值 ON
有效值 OFF
ON
ALL
此变量指定如何使用延迟键写入。它仅适用于
MyISAM
表格。延迟的密钥写入导致密钥缓冲区在写入之间不被刷新。另见第 15.2.1 节,“MyISAM 启动选项”。此变量可以具有以下值之一,以影响
DELAY_KEY_WRITE
可在CREATE TABLE
语句中使用的表选项的处理。选项 描述 OFF
DELAY_KEY_WRITE
被忽略。ON
MySQL 尊重语句中 DELAY_KEY_WRITE
指定的任何选项 。CREATE TABLE
这是默认值。ALL
所有新打开的表都被视为是在 DELAY_KEY_WRITE
启用该选项的情况下创建的。笔记如果将此变量设置为
ALL
,则在使用表时不应使用MyISAM
另一个程序(例如另一个 MySQL 服务器或 myisamchk)中的表。这样做会导致索引损坏。如果
DELAY_KEY_WRITE
为表启用,则不会在每次索引更新时为表刷新键缓冲区,但仅在表关闭时刷新。这大大加快了对键的写入速度,但如果您使用此功能,则应通过使用系统变量集(例如, )MyISAM
启动服务器来添加对所有表的 自动检查。参见第 5.1.7 节,“服务器系统变量”和 第 15.2.1 节,“MyISAM 启动选项”。myisam_recover_options
myisam_recover_options='BACKUP,FORCE'
如果您使用 启动mysqld,
--skip-new
则delay_key_write
设置为OFF
.警告如果使用 启用外部锁定
--external-locking
,则无法防止使用延迟键写入的表的索引损坏。 -
命令行格式 --delayed-insert-limit=#
弃用 是的 系统变量 delayed_insert_limit
范围 全球的 动态的 是的 类型 整数 默认值 100
最小值 1
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
此系统变量已弃用(因为
DELAYED
不支持插入);希望在未来的版本中将其删除。 -
命令行格式 --delayed-insert-timeout=#
弃用 是的 系统变量 delayed_insert_timeout
范围 全球的 动态的 是的 类型 整数 默认值 300
最小值 1
最大值 31536000
单元 秒 此系统变量已弃用(因为
DELAYED
不支持插入);希望在未来的版本中将其删除。 -
命令行格式 --delayed-queue-size=#
弃用 是的 系统变量 delayed_queue_size
范围 全球的 动态的 是的 类型 整数 默认值 1000
最小值 1
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
此系统变量已弃用(因为
DELAYED
不支持插入);希望在未来的版本中将其删除。 -
命令行格式 --disabled-storage-engines=engine[,engine]...
系统变量 disabled_storage_engines
范围 全球的 动态的 不 类型 细绳 默认值 empty string
此变量指示哪些存储引擎不能用于创建表或表空间。例如,要防止创建新 表
MyISAM
或FEDERATED
表,请在服务器选项文件中使用以下行启动服务器:[mysqld] disabled_storage_engines="MyISAM,FEDERATED"
默认情况下,
disabled_storage_engines
为空(未禁用任何引擎),但可以将其设置为一个或多个引擎的逗号分隔列表(不区分大小写)。值中指定的任何引擎都不能用于使用 或 来创建表或表空间CREATE TABLE
,CREATE TABLESPACE
也不能用于ALTER TABLE ... ENGINE
orALTER TABLESPACE ... ENGINE
更改现有表或表空间的存储引擎。尝试这样做会导致ER_DISABLED_STORAGE_ENGINE
错误。disabled_storage_engines
不限制现有表的其他 DDL 语句,例如CREATE INDEX
、TRUNCATE TABLE
、ANALYZE TABLE
、DROP TABLE
或DROP TABLESPACE
。这允许平滑过渡,以便使用禁用引擎的现有表或表空间可以通过诸如 .ALTER TABLE ... ENGINE
permitted_engine
允许将
default_storage_engine
或default_tmp_storage_engine
系统变量设置为禁用的存储引擎。这可能导致应用程序行为不稳定或失败,尽管这在开发环境中可能是一种有用的技术,用于识别使用禁用引擎的应用程序,以便可以修改它们。disabled_storage_engines
如果使用以下任何选项启动服务器,则禁用并且无效:--bootstrap
,--initialize
,--initialize-insecure
,--skip-grant-tables
。笔记设置
disabled_storage_engines
可能会导致mysql_upgrade出现问题。有关详细信息,请参阅第 4.4.7 节,“mysql_upgrade — 检查和升级 MySQL 表”。 disconnect_on_expired_password
命令行格式 --disconnect-on-expired-password[={OFF|ON}]
系统变量 disconnect_on_expired_password
范围 全球的 动态的 不 类型 布尔值 默认值 ON
此变量控制服务器如何处理密码过期的客户端:
如果客户端指示它可以处理过期密码,则 的值
disconnect_on_expired_password
无关紧要。服务器允许客户端连接但将其置于沙盒模式。如果客户端没有表示可以处理过期的密码,则服务器根据 的值来处理客户端
disconnect_on_expired_password
:如果
disconnect_on_expired_password
: 启用,服务器将断开客户端连接。如果
disconnect_on_expired_password
: 被禁用,服务器允许客户端连接但将其置于沙盒模式。
有关与过期密码处理相关的客户端和服务器设置交互的更多信息,请参阅 第 6.2.12 节,“过期密码的服务器处理”。
-
命令行格式 --div-precision-increment=#
系统变量 div_precision_increment
范围 全局,会话 动态的 是的 类型 整数 默认值 4
最小值 0
最大值 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 | +----------------+
-
命令行格式 --end-markers-in-json[={OFF|ON}]
系统变量 end_markers_in_json
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
优化器 JSON 输出是否应添加结束标记。请参阅 MySQL 内部结构:end_markers_in_json 系统变量。
-
命令行格式 --eq-range-index-dive-limit=#
系统变量 eq_range_index_dive_limit
范围 全局,会话 动态的 是的 类型 整数 默认值 200
最小值 0
最大值 4294967295
当优化器在估计符合条件的行数时应从使用索引潜水切换到索引统计信息时,此变量指示相等比较条件中的相等范围数。它适用于具有以下任一等效形式的表达式的计算,其中优化器使用非唯一索引来查找
col_name
值:col_name IN(val1, ..., valN) col_name = val1 OR ... OR col_name = valN
在这两种情况下,表达式都包含
N
相等范围。优化器可以使用索引潜水或索引统计信息进行行估计。如果eq_range_index_dive_limit
大于 0,优化器使用现有的索引统计信息而不是索引潜水,如果有eq_range_index_dive_limit
或更多的平等范围。因此,要允许在N
相等范围内使用索引潜水,请设置eq_range_index_dive_limit
为N
+ 1。要禁用索引统计信息并始终使用索引潜水,而不管N
,请设置eq_range_index_dive_limit
为 0。有关详细信息,请参阅 多值比较的相等范围优化。
要更新表索引统计信息以获得最佳估计,请使用
ANALYZE TABLE
. 由生成消息的最后一条语句导致的错误数。该变量是只读的。请参阅 第 13.7.5.17 节,“显示错误语句”。
-
命令行格式 --event-scheduler[=value]
系统变量 event_scheduler
范围 全球的 动态的 是的 类型 枚举 默认值 OFF
有效值 OFF
ON
DISABLED
此变量启用或禁用以及启动或停止事件调度程序。可能的状态值为
ON
、OFF
和DISABLED
。开启 Event SchedulerOFF
与禁用 Event Scheduler 不同,后者需要将状态设置为DISABLED
。该变量及其对事件调度程序操作的影响在第 23.4.2 节“事件调度程序配置”中进行了更详细的讨论 explicit_defaults_for_timestamp
命令行格式 --explicit-defaults-for-timestamp[={OFF|ON}]
弃用 是的 系统变量 explicit_defaults_for_timestamp
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
此系统变量确定服务器是否为列中的默认值和
NULL
值处理 启用某些非标准行为TIMESTAMP
。默认情况下,explicit_defaults_for_timestamp
禁用,这会启用非标准行为。如果
explicit_defaults_for_timestamp
禁用,服务器将启用非标准行为并按TIMESTAMP
如下方式处理列:TIMESTAMP
未使用该属性显式声明的列NULL
将自动使用该NOT NULL
属性声明。允许为这样的列分配一个值,NULL
并将该列设置为当前时间戳。表中的第一
TIMESTAMP
列,如果未使用NULL
属性或显式DEFAULT
或ON UPDATE
属性显式声明,则自动使用DEFAULT CURRENT_TIMESTAMP
andON UPDATE CURRENT_TIMESTAMP
属性声明。TIMESTAMP
第一列之后的列,如果未使用NULL
属性或显式DEFAULT
属性显式声明,则自动声明为DEFAULT '0000-00-00 00:00:00'
(“零”时间戳)。对于没有为此类列指定显式值的插入行,将分配该列'0000-00-00 00:00:00'
并且不会出现警告。根据是否
NO_ZERO_DATE
启用严格 SQL 模式或 SQL 模式,默认值'0000-00-00 00:00:00'
可能无效。请注意,TRADITIONAL
SQL 模式包括严格模式和NO_ZERO_DATE
. 请参阅 第 5.1.10 节,“服务器 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 模式,则结果对于单行插入是错误的,或者'0000-00-00 00:00:00'
对于禁用了严格 SQL 模式的多行插入,结果是插入的。在任何情况下都不会为列分配一个值,NULL
将其设置为当前时间戳。TIMESTAMP
使用属性显式声明NOT NULL
和没有显式DEFAULT
属性的列被视为没有默认值。对于没有为此类列指定显式值的插入行,结果取决于 SQL 模式。如果启用严格 SQL 模式,则会发生错误。如果未启用严格 SQL 模式,则使用隐式默认值声明该列,'0000-00-00 00:00:00'
并出现警告。这类似于 MySQL 处理其他时间类型的方式,例如DATETIME
.没有
TIMESTAMP
列自动声明为DEFAULT CURRENT_TIMESTAMP
orON UPDATE CURRENT_TIMESTAMP
属性。必须明确指定这些属性。
如果
explicit_defaults_for_timestamp
在服务器启动时被禁用,错误日志中会出现此警告:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
如警告所示,要禁用已弃用的非标准行为,请
explicit_defaults_for_timestamp
在服务器启动时启用系统变量。笔记explicit_defaults_for_timestamp
本身已被弃用,因为它的唯一目的是允许控制TIMESTAMP
将在 MySQL 的未来版本中删除的已弃用行为。当删除这些行为时,explicit_defaults_for_timestamp
不再有任何目的,您可以期望它也被删除。有关其他信息,请参阅 第 11.2.6 节,“TIMESTAMP 和 DATETIME 的自动初始化和更新”。
-
系统变量 external_user
范围 会议 动态的 不 类型 细绳 身份验证过程中使用的外部用户名,由用于对客户端进行身份验证的插件设置。使用本机(内置)MySQL 身份验证,或者如果插件未设置该值,则此变量为
NULL
. 请参阅第 6.2.14 节,“代理用户”。 -
命令行格式 --flush[={OFF|ON}]
系统变量 flush
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
如果
ON
,则服务器在每个 SQL 语句后将所有更改刷新(同步)到磁盘。通常,MySQL 仅在每个 SQL 语句之后才将所有更改写入磁盘,并让操作系统处理同步到磁盘的操作。请参阅第 B.3.3.3 节,“如果 MySQL 持续崩溃怎么办”。如果您使用该 选项ON
启动 mysqld ,则此变量设置为。--flush
笔记如果
flush
启用,则值flush_time
无关紧要,并且更改为flush_time
对刷新行为没有影响。 -
命令行格式 --flush-time=#
系统变量 flush_time
范围 全球的 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 31536000
单元 秒 如果将其设置为非零值,则每秒钟关闭所有表
flush_time
以释放资源并将未刷新的数据同步到磁盘。此选项最好只用在资源最少的系统上。笔记如果
flush
启用,则值flush_time
无关紧要,并且更改为flush_time
对刷新行为没有影响。 -
系统变量 foreign_key_checks
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
如果设置为 1(默认值),则检查外键约束。如果设置为 0,则忽略外键约束,但有几个例外。重新创建已删除的表时,如果表定义不符合引用该表的外键约束,则会返回错误。同样,
ALTER TABLE
如果外键定义的格式不正确,则操作会返回错误。有关详细信息,请参阅 第 13.1.18.5 节,“外键约束”。设置此变量对表的影响与对
NDB
表 的影响相同InnoDB
。通常,您在正常操作期间启用此设置,以强制执行 参照完整性。InnoDB
禁用外键检查对于以不同于父/子关系所需顺序的顺序重新加载表很有用。请参阅 第 13.1.18.5 节,“外键约束”。设置
foreign_key_checks
为 0 也会影响数据定义语句:DROP SCHEMA
删除架构,即使它包含具有由架构外部的表引用的外键的表,并DROP TABLE
删除具有被其他表引用的外键的表。笔记设置
foreign_key_checks
为 1 不会触发现有表数据的扫描。因此,添加到表foreign_key_checks=0
中的行不会进行一致性验证。不允许删除外键约束所需的索引,即使使用
foreign_key_checks=0
. 在删除索引之前必须删除外键约束(错误#70260)。 -
命令行格式 --ft-boolean-syntax=name
系统变量 ft_boolean_syntax
范围 全球的 动态的 是的 类型 细绳 默认值 + -><()~*:""&|
使用 执行的布尔全文搜索支持的运算符列表
IN BOOLEAN MODE
。请参阅 第 12.10.2 节,“布尔全文搜索”。默认变量值为
'+ -><()~*:""&|'
. 更改值的规则如下:运算符函数由字符串中的位置决定。
替换值必须为 14 个字符。
每个字符必须是 ASCII 非字母数字字符。
第一个或第二个字符必须是空格。
除了位置 11 和 12 中的短语引用运算符外,不允许重复。这两个字符不需要相同,但它们是仅有的两个可以相同的字符。
位置 10、13 和 14(默认设置为
:
、&
和|
)保留用于将来的扩展。
-
命令行格式 --ft-max-word-len=#
系统变量 ft_max_word_len
范围 全球的 动态的 不 类型 整数 默认值 84
最小值 10
最大值 84
要包含在
MyISAM
FULLTEXT
索引中的单词的最大长度。笔记FULLTEXT
MyISAM
更改此变量后必须重建表上的索引 。使用。REPAIR TABLE
tbl_name
QUICK -
命令行格式 --ft-min-word-len=#
系统变量 ft_min_word_len
范围 全球的 动态的 不 类型 整数 默认值 4
最小值 1
最大值 82
要包含在
MyISAM
FULLTEXT
索引中的单词的最小长度。笔记FULLTEXT
MyISAM
更改此变量后必须重建表上的索引 。使用。REPAIR TABLE
tbl_name
QUICK -
命令行格式 --ft-query-expansion-limit=#
系统变量 ft_query_expansion_limit
范围 全球的 动态的 不 类型 整数 默认值 20
最小值 0
最大值 1000
用于使用 执行的全文搜索的最佳匹配数
WITH QUERY EXPANSION
。 -
命令行格式 --ft-stopword-file=file_name
系统变量 ft_stopword_file
范围 全球的 动态的 不 类型 文件名 从中读取表全文搜索停用词列表的文件
MyISAM
。服务器在数据目录中查找文件,除非给出绝对路径名以指定不同的目录。使用了文件中的所有单词;评论 不被尊重。默认情况下,使用内置的停用词列表(如storage/myisam/ft_static.c
文件中所定义)。将此变量设置为空字符串 (''
) 会禁用停用词过滤。另见 第 12.10.4 节,“全文停用词”。笔记FULLTEXT
MyISAM
更改此变量或停用词文件的内容后,必须重建表上的索引 。使用。REPAIR TABLE
tbl_name
QUICK -
命令行格式 --general-log[={OFF|ON}]
系统变量 general_log
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
是否开启通用查询日志。该值可以是 0(或
OFF
)以禁用日志或 1(或ON
)以启用日志。日志输出的目的地由log_output
系统变量控制;如果该值为NONE
,则即使启用了日志,也不会写入任何日志条目。 -
命令行格式 --general-log-file=file_name
系统变量 general_log_file
范围 全球的 动态的 是的 类型 文件名 默认值 host_name.log
一般查询日志文件的名称。默认值为
,但可以使用host_name
.log--general_log_file
选项更改初始值。 -
命令行格式 --group-concat-max-len=#
系统变量 group_concat_max_len
范围 全局,会话 动态的 是的 类型 整数 默认值 1024
最小值 4
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
函数允许的最大结果长度(以字节为单位)
GROUP_CONCAT()
。默认值为 1024。 YES
zlib
压缩库是否可用于服务器, 否则NO
。如果不是,则 不能使用COMPRESS()
和 函数。UNCOMPRESS()
YES
crypt()
系统调用是否可用于服务器,否则NO
。如果不是,则ENCRYPT()
不能使用该功能。笔记该
ENCRYPT()
函数在 MySQL 5.7 中已弃用,将在未来的 MySQL 版本中删除,不应再使用。(对于单向散列,请考虑SHA2()
改用。)因此,have_crypt
也已弃用;希望在未来的版本中将其删除。YES
如果mysqld支持动态加载插件,NO
如果不支持。如果值为NO
,则不能使用诸如--plugin-load
在服务器启动时INSTALL PLUGIN
加载插件或在运行时加载插件的语句等选项。YES
如果服务器支持空间数据类型,NO
如果不支持。此变量是 的同义词
have_ssl
。YES
如果存在语句分析功能,NO
如果不存在。如果存在,profiling
系统变量控制是启用还是禁用此功能。请参阅 第 13.7.5.31 节,“SHOW PROFILES 语句”。此变量已弃用;希望在未来的 MySQL 版本中将其删除。
YES
如果mysqld支持查询缓存,NO
如果不支持。笔记查询缓存从 MySQL 5.7.20 开始弃用,并在 MySQL 8.0 中删除。弃用包括
have_query_cache
.YES
如果RTREE
索引可用,NO
如果没有。(这些用于MyISAM
表中的空间索引。)-
系统变量 have_ssl
范围 全球的 动态的 不 类型 细绳 有效值 YES
(提供 SSL 支持)DISABLED
(SSL 支持已编译到服务器中,但服务器未启动启用它的必要选项)YES
如果mysqld支持 SSL 连接,DISABLED
如果服务器是使用 SSL 支持编译的,但没有使用适当的连接加密选项启动。有关详细信息,请参阅 第 2.9.6 节 “配置 SSL 库支持”。 -
系统变量 have_statement_timeout
范围 全球的 动态的 不 类型 布尔值 语句执行超时功能是否可用(请参阅语句执行时间优化器提示)。
NO
如果无法初始化此功能使用的后台线程,则 该值可以。 YES
如果启用了符号链接支持,NO
如果没有。这在 Unix 上是必需的,以支持DATA DIRECTORY
和INDEX DIRECTORY
表选项。如果服务器以该--skip-symbolic-links
选项启动,则值为DISABLED
.此变量在 Windows 上没有意义。
-
命令行格式 --host-cache-size=#
系统变量 host_cache_size
范围 全球的 动态的 是的 类型 整数 默认值 -1
(表示自动调整大小;不要分配此文字值)最小值 0
最大值 65536
MySQL 服务器维护一个内存中的主机缓存,其中包含客户端主机名和 IP 地址信息,用于避免域名系统 (DNS) 查找;参见 第 5.1.11.2 节,“DNS 查找和主机缓存”。
该
host_cache_size
变量控制主机缓存的大小,以及host_cache
公开缓存内容的性能模式表的大小。设置host_cache_size
具有以下效果:将大小设置为 0 会禁用主机缓存。禁用缓存后,服务器会在每次客户端连接时执行 DNS 查找。
在运行时更改大小会导致隐式主机缓存刷新操作,该操作会清除主机缓存、截断
host_cache
表并取消阻止任何被阻止的主机。
默认值自动调整为 128,值
max_connections
达到 500 时加 1,值超过 500 时每增加 20 加 1max_connections
,上限为 2000。使用该
--skip-host-cache
选项类似于将host_cache_size
系统变量设置为 0,但host_cache_size
更灵活,因为它还可以用于在运行时调整、启用和禁用主机缓存,而不仅仅是在服务器启动时。使用 启动服务器
--skip-host-cache
不会阻止对 值的运行时更改host_cache_size
,但此类更改没有任何效果,即使host_cache_size
设置大于 0,也不会重新启用缓存。出于上一段中给出的原因,首选 设置
host_cache_size
系统变量而不是 选项。--skip-host-cache
此外,该--skip-host-cache
选项在 MySQL 8.0 中已弃用,预计在未来的 MySQL 版本中将其移除。 -
系统变量 hostname
范围 全球的 动态的 不 类型 细绳 服务器在启动时将此变量设置为服务器主机名。
此变量是变量的同义词
last_insert_id
。它的存在是为了与其他数据库系统兼容。您可以使用 读取它的值SELECT @@identity
,并使用 设置它SET identity
。-
弃用 5.7.16 系统变量 ignore_db_dirs
范围 全球的 动态的 不 类型 细绳 不被视为数据目录中的数据库目录的名称的逗号分隔列表。该值是根据
--ignore-db-dir
服务器启动时给定的任何实例设置的。从 MySQL 5.7.11 开始,
--ignore-db-dir
可以在数据目录初始化时使用mysqld --initialize来指定服务器应该忽略的目录,以评估现有数据目录是否被认为是空的。请参阅 第 2.10.1 节,“初始化数据目录”。此系统变量在 MySQL 5.7 中已弃用。随着 MySQL 8.0 中数据字典的引入,它变得多余并在该版本中被删除。
-
命令行格式 --init-connect=name
系统变量 init_connect
范围 全球的 动态的 是的 类型 细绳 服务器为每个连接的客户端执行的字符串。该字符串由一个或多个 SQL 语句组成,以分号字符分隔。
对于有
SUPER
权限的 用户,init_connect
不执行的内容。这样做是为了使错误的值init_connect
不会阻止所有客户端连接。例如,该值可能包含语法错误的语句,从而导致客户端连接失败。不init_connect
为具有特权的用户执行SUPER
使他们能够打开连接并修复init_connect
值。从 MySQL 5.7.22 开始,
init_connect
任何密码过期的客户端用户都会跳过执行。这样做是因为这样的用户不能执行任意语句,因此init_connect
执行失败,导致客户端无法连接。跳过init_connect
执行使用户能够连接和更改密码。服务器丢弃由 的值中的语句生成的任何结果集
init_connect
。 -
命令行格式 --init-file=file_name
系统变量 init_file
范围 全球的 动态的 不 类型 文件名 如果指定,此变量将命名一个文件,其中包含在启动过程中要读取和执行的 SQL 语句。每条语句必须在一行中,并且不应包含注释。
如果服务器使用 、 或 选项中的任何一个启动
--bootstrap
,--initialize
它将--initialize-insecure
以引导程序模式运行,并且某些功能不可用,从而限制了文件中允许的语句。这些包括与帐户管理(例如CREATE USER
或GRANT
)、复制和全局事务标识符相关的语句。请参阅 第 16.1.3 节,“使用全局事务标识符进行复制”。 innodb_
xxx
InnoDB
系统变量在第 14.15 节,“InnoDB 启动选项和系统变量”中列出。这些变量控制表的存储、内存使用和 I/O 模式的许多方面,InnoDB
并且现在InnoDB
是默认存储引擎尤其重要。插入值时 由以下
INSERT
or 语句使用的值。这主要与二进制日志一起使用。ALTER TABLE
AUTO_INCREMENT
-
命令行格式 --interactive-timeout=#
系统变量 interactive_timeout
范围 全局,会话 动态的 是的 类型 整数 默认值 28800
最小值 1
最大值 31536000
单元 秒 服务器在关闭交互式连接之前等待其活动的秒数。交互式客户端定义为使用
CLIENT_INTERACTIVE
选项 的客户端mysql_real_connect()
。另见wait_timeout
。 internal_tmp_disk_storage_engine
命令行格式 --internal-tmp-disk-storage-engine=#
系统变量 internal_tmp_disk_storage_engine
范围 全球的 动态的 是的 类型 枚举 默认值 INNODB
有效值 MYISAM
INNODB
磁盘内部临时表的存储引擎(参见 第 8.4.4 节,“MySQL 中的内部临时表使用”)。允许的值为
MYISAM
andINNODB
(默认值)。优化器使用
internal_tmp_disk_storage_engine
为磁盘内部临时表 定义 的存储引擎。使用
internal_tmp_disk_storage_engine=INNODB
(默认)时,生成超过InnoDB
行或列限制的磁盘内部临时表的查询返回行大小太大或列太多 错误。解决方法是设置internal_tmp_disk_storage_engine
为MYISAM
.-
命令行格式 --join-buffer-size=#
系统变量 join_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 262144
最小值 128
最大值 (Windows) 4294967168
最大值(其他,64 位平台) 18446744073709551488
最大值(其他,32 位平台) 4294967168
单元 字节 块大小 128
用于普通索引扫描、范围索引扫描和不使用索引并因此执行全表扫描的连接的缓冲区的最小大小。通常,获得快速连接的最佳方式是添加索引。
join_buffer_size
在无法添加索引时增加 的值 以获得更快的完全连接。为两个表之间的每个完全连接分配一个连接缓冲区。对于未使用索引的多个表之间的复杂连接,可能需要多个连接缓冲区。默认值为 256KB。最大允许设置为
join_buffer_size
4GB−1。64 位平台允许更大的值(64 位 Windows 除外,大值被截断为 4GB-1 并发出警告)。块大小为 128,并且不是块大小的精确倍数的值在存储系统变量的值之前由 MySQL 服务器向下舍入到块大小的下一个较小倍数。解析器允许值最大为平台的最大无符号整数值(4294967295 或 2 32 -1 对于 32 位系统,18446744073709551615 或 2 64−1 对于 64 位系统),但实际最大值比块大小小。除非使用 Block Nested-Loop 或 Batched Key Access 算法,否则将缓冲区设置得大于保存每个匹配行所需的大小没有任何好处,并且所有连接至少分配最小大小,因此在将此变量设置为全球范围内的巨大价值。最好保持全局设置较小,并且仅在进行大型连接的会话中将会话设置更改为较大的值。如果全局大小大于大多数使用它的查询所需的内存分配时间,则可能会导致性能大幅下降。
当使用 Block Nested-Loop 时,更大的连接缓冲区可能是有益的,直到第一个表中所有行的所有必需列都存储在连接缓冲区中。这取决于查询;最佳大小可能小于保存第一个表中的所有行。
当使用 Batched Key Access 时, 的值
join_buffer_size
定义了对存储引擎的每个请求中的批量密钥的大小。缓冲区越大,对连接操作的右侧表进行的顺序访问就越多,这可以显着提高性能。有关连接缓冲的其他信息,请参阅 第 8.2.1.6 节,“嵌套循环连接算法”。有关批量密钥访问的信息,请参阅 第 8.2.1.11 节,“阻止嵌套循环和批量密钥访问连接”。
-
命令行格式 --keep-files-on-create[={OFF|ON}]
系统变量 keep_files_on_create
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
如果
MyISAM
创建表时不带任何DATA DIRECTORY
选项,.MYD
则会在数据库目录中创建文件。默认情况下,如果在这种情况下MyISAM
找到现有.MYD
文件,它会覆盖它。这同样适用于.MYI
没有INDEX DIRECTORY
选项创建的表的文件。要抑制此行为,请将keep_files_on_create
变量设置为ON
(1),在这种情况下MyISAM
不会覆盖现有文件并返回错误。默认值为OFF
(0)。如果使用or选项
MyISAM
创建表 并且找到现有的 or文件,MyISAM 总是返回错误。它不会覆盖指定目录中的文件。DATA DIRECTORY
INDEX DIRECTORY
.MYD
.MYI
-
命令行格式 --key-buffer-size=#
系统变量 key_buffer_size
范围 全球的 动态的 是的 类型 整数 默认值 8388608
最小值 0
最大值(64 位平台) OS_PER_PROCESS_LIMIT
最大值(32 位平台) 4294967295
单元 字节 表的索引块
MyISAM
被缓冲并由所有线程共享。key_buffer_size
是用于索引块的缓冲区的大小。密钥缓冲区也称为密钥缓存。允许的最小设置为 0,但不能
key_buffer_size
动态设置为 0。设置为 0 会丢弃密钥缓存,这在运行时是不允许的。key_buffer_size
仅在启动时允许设置 为 0,在这种情况下,密钥缓存不会被初始化。在运行时将key_buffer_size
设置从值 0 更改为允许的非零值会初始化密钥缓存。key_buffer_size
只能以 4096 字节的增量或倍数增加或减少。通过不合格的值增加或减少设置会产生警告并将设置截断为合格的值。key_buffer_size
在 32 位平台上 ,最大允许设置为 4GB−1。64 位平台允许更大的值。有效的最大大小可能会更小,具体取决于您的可用物理 RAM 和操作系统或硬件平台强加的每个进程 RAM 限制。此变量的值指示请求的内存量。在内部,服务器会分配尽可能多的内存至此数量,但实际分配的内存可能会更少。您可以增加该值以获得更好的索引处理所有读取和多次写入;在一个主要功能是运行 MySQL 的系统上使用
MyISAM
存储引擎,机器总内存的 25% 是该变量的可接受值。但是,您应该知道,如果您将该值设置得太大(例如,超过机器总内存的 50%),您的系统可能会开始分页并变得极其缓慢。这是因为MySQL依赖于操作系统对数据读取进行文件系统缓存,所以你必须为文件系统缓存留出一些空间。您还应该考虑除MyISAM
.要在同时写入多行时获得更快的速度,请使用
LOCK TABLES
. 请参阅 第 8.2.4.1 节,“优化 INSERT 语句”。您可以通过发出
SHOW STATUS
语句并检查Key_read_requests
、Key_reads
、Key_write_requests
和Key_writes
status 变量来检查密钥缓冲区的性能。(请参阅第 13.7.5 节,“SHOW 语句”。)Key_reads/Key_read_requests
比率通常应小于 0.01。如果您主要使用更新和删除,该 比率通常接近 1,但如果您倾向于执行同时影响许多行的更新,或者如果您使用表选项 ,则该Key_writes/Key_write_requests
比率可能会小得多 。DELAY_KEY_WRITE
使用中的密钥缓冲区的分数可以
key_buffer_size
结合Key_blocks_unused
状态变量和缓冲区块大小来确定,缓冲区块大小可从key_cache_block_size
系统变量中获得:1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
该值是一个近似值,因为密钥缓冲区中的一些空间是在内部为管理结构分配的。影响这些结构的开销量的因素包括块大小和指针大小。随着块大小的增加,因开销而丢失的密钥缓冲区的百分比趋于降低。较大的块会导致较少数量的读取操作(因为每次读取会获得更多的键),但相反会增加未检查的键的读取(如果不是块中的所有键都与查询相关)。
可以创建多个
MyISAM
密钥缓存。4GB 的大小限制单独适用于每个缓存,而不是作为一个组。参见 第 8.10.2 节,“MyISAM 密钥缓存”。 -
命令行格式 --key-cache-age-threshold=#
系统变量 key_cache_age_threshold
范围 全球的 动态的 是的 类型 整数 默认值 300
最小值 100
最大值(64 位平台) 18446744073709551516
最大值(32 位平台) 4294967196
块大小 100
该值控制缓冲区从键缓存的热子列表降级到暖子列表。较低的值会导致降级更快。最小值为 100。默认值为 300。请参阅第 8.10.2 节,“MyISAM 密钥缓存”。
块大小为 100。在存储系统变量的值之前,MySQL 服务器会将不是块大小精确倍数的值向下舍入为块大小的下一个较低倍数。解析器允许值最大为平台的最大无符号整数值(对于 32 位系统为 4294967295 或 2 32 -1,对于 64 位系统为 18446744073709551615 或 2 64 -1),但实际最大值比块大小小.
-
命令行格式 --key-cache-block-size=#
系统变量 key_cache_block_size
范围 全球的 动态的 是的 类型 整数 默认值 1024
最小值 512
最大值 16384
单元 字节 块大小 512
键缓存中块的大小(以字节为单位)。默认值为 1024。请参阅第 8.10.2 节,“MyISAM 密钥缓存”。
-
命令行格式 --key-cache-division-limit=#
系统变量 key_cache_division_limit
范围 全球的 动态的 是的 类型 整数 默认值 100
最小值 1
最大值 100
键缓存缓冲区列表的热子列表和温子列表之间的划分点。该值是用于暖子列表的缓冲区列表的百分比。允许的值范围从 1 到 100。默认值为 100。请参阅 第 8.10.2 节,“MyISAM 密钥缓存”。
-
系统变量 large_files_support
范围 全球的 动态的 不 类型 布尔值 mysqld 是否使用大文件支持选项编译。
-
命令行格式 --large-pages[={OFF|ON}]
系统变量 large_pages
范围 全球的 动态的 不 特定于平台 Linux 类型 布尔值 默认值 OFF
是否启用大页面支持(通过
--large-pages
选项)。请参阅 第 8.12.4.2 节,“启用大页面支持”。 -
系统变量 large_page_size
范围 全球的 动态的 不 类型 整数 默认值 0
最小值 0
最大值 65535
单元 字节 如果启用了大页面支持,这将显示内存页面的大小。仅在 Linux 上支持大内存页;在其他平台上,此变量的值始终为 0。请参阅第 8.12.4.2 节,“启用大页面支持”。
要从 返回的值
LAST_INSERT_ID()
。当您LAST_INSERT_ID()
在更新表的语句中使用时,它存储在二进制日志中。设置此变量不会更新mysql_insert_id()
C API 函数返回的值。-
命令行格式 --lc-messages=name
系统变量 lc_messages
范围 全局,会话 动态的 是的 类型 细绳 默认值 en_US
用于错误消息的语言环境。默认值为
en_US
。服务器将参数转换为语言名称并将其与 的值组合lc_messages_dir
以生成错误消息文件的位置。请参阅 第 10.12 节,“设置错误消息语言”。 -
命令行格式 --lc-messages-dir=dir_name
系统变量 lc_messages_dir
范围 全球的 动态的 不 类型 目录名称 错误信息所在的目录。服务器使用该值和 的值
lc_messages
来生成错误消息文件的位置。请参阅 第 10.12 节,“设置错误消息语言”。 -
命令行格式 --lc-time-names=value
系统变量 lc_time_names
范围 全局,会话 动态的 是的 类型 细绳 此变量指定区域设置,该区域设置控制用于显示日期和月份名称及缩写的语言。此变量影响
DATE_FORMAT()
,DAYNAME()
和MONTHNAME()
函数的输出。语言环境名称是 POSIX 样式的值,例如'ja_JP'
或'pt_BR'
。默认值'en_US'
与系统的区域设置无关。有关详细信息,请参阅 第 10.16 节,“MySQL 服务器语言环境支持”。 -
系统变量 license
范围 全球的 动态的 不 类型 细绳 默认值 GPL
服务器拥有的许可证类型。
-
命令行格式 --local-infile[={OFF|ON}]
系统变量 local_infile
范围 全球的 动态的 是的 类型 布尔值 默认值 ON
此变量控制语句 的服务器端
LOCAL
功能。LOAD DATA
根据 设置,服务器拒绝或允许在客户端启用的客户端local_infile
加载本地数据。LOCAL
要显式地使服务器拒绝或允许
LOAD DATA LOCAL
语句(无论客户端程序和库在构建时或运行时如何配置) ,分别以 禁用或启用的 方式启动mysqld 。也可以在运行时设置。有关详细信息,请参阅 第 6.1.6 节,“LOAD DATA LOCAL 的安全注意事项”。local_infile
local_infile
-
命令行格式 --lock-wait-timeout=#
系统变量 lock_wait_timeout
范围 全局,会话 动态的 是的 类型 整数 默认值 31536000
最小值 1
最大值 31536000
单元 秒 此变量指定尝试获取元数据锁的超时时间(以秒为单位)。允许的值范围从 1 到 31536000(1 年)。默认值为 31536000。
此超时适用于所有使用元数据锁的语句。这些包括对表、视图、存储过程和存储函数以及 、 和 语句的 DML 和
LOCK TABLES
DDLFLUSH TABLES WITH READ LOCK
操作HANDLER
。此超时不适用于对
mysql
数据库中系统表的隐式访问,例如由GRANT
orREVOKE
语句或表日志记录语句修改的授权表。超时确实适用于直接访问的系统表,例如使用SELECT
或UPDATE
。超时值分别适用于每个元数据锁定尝试。一个给定的语句可能需要多个锁,因此语句阻塞的时间可能比
lock_wait_timeout
报告超时错误之前的值更长。当发生锁超时时,ER_LOCK_WAIT_TIMEOUT
被报告。lock_wait_timeout
不适用于延迟插入,它总是以 1 年的超时执行。这样做是为了避免不必要的超时,因为发出延迟插入的会话不会收到延迟插入超时的通知。 -
系统变量 locked_in_memory
范围 全球的 动态的 不 类型 布尔值 默认值 OFF
-
命令行格式 --log-error[=file_name]
系统变量 log_error
范围 全球的 动态的 不 类型 文件名 错误日志输出目的地。如果目标是控制台,则值为
stderr
. 否则,目标是文件,log_error
值是文件名。请参阅第 5.4.2 节,“错误日志”。 -
命令行格式 --log-error-verbosity=#
系统变量 log_error_verbosity
范围 全球的 动态的 是的 类型 整数 默认值 3
最小值 1
最大值 3
服务器将错误、警告和注释消息写入错误日志的详细程度。下表显示了允许的值。默认值为 3。
log_error_verbosity 值 允许的消息 1个 错误信息 2个 错误和警告信息 3个 错误、警告和信息消息 log_error_verbosity
在 MySQL 5.7.2 中添加。它优于旧的系统变量,应该使用它来代替旧的log_warnings
系统变量。log_warnings
有关该变量如何与 相关的信息, 请参阅 的描述log_error_verbosity
。特别是,赋值给赋值log_warnings
给log_error_verbosity
,反之亦然。 -
命令行格式 --log-output=name
系统变量 log_output
范围 全球的 动态的 是的 类型 放 默认值 FILE
有效值 TABLE
FILE
NONE
一般查询日志和慢速查询日志输出的目的地。
TABLE
该值是从,FILE
, 和中选择的一个或多个以逗号分隔的单词的列表NONE
。TABLE
选择记录到 系统数据库 中的general_log
和slow_log
表 。选择日志记录到日志文件。 禁用日志记录。如果 存在于值中,则它优先于存在的任何其他词。 并且可以同时给出以选择两个日志输出目的地。mysql
FILE
NONE
NONE
TABLE
FILE
该变量选择日志输出目的地,但不启用日志输出。为此,请启用
general_log
和slow_query_log
系统变量。对于FILE
日志记录,general_log_file
和slow_query_log_file
系统变量确定日志文件位置。有关详细信息,请参阅第 5.4.1 节,“选择一般查询日志和慢速查询日志输出目的地”。 -
命令行格式 --log-queries-not-using-indexes[={OFF|ON}]
系统变量 log_queries_not_using_indexes
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
如果在启用慢速查询日志的情况下启用此变量,则会记录预期检索所有行的查询。请参阅 第 5.4.5 节,“慢速查询日志”。该选项并不一定意味着不使用索引。例如,使用全索引扫描的查询使用索引但会被记录下来,因为索引不会限制行数。
-
命令行格式 --log-slow-admin-statements[={OFF|ON}]
系统变量 log_slow_admin_statements
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
在写入慢速查询日志的语句中包含慢速管理语句。行政报表包括
ALTER TABLE
、ANALYZE TABLE
、CHECK TABLE
、CREATE INDEX
、DROP INDEX
、OPTIMIZE TABLE
和REPAIR TABLE
。 -
命令行格式 --log-syslog[={OFF|ON}]
系统变量 log_syslog
范围 全球的 动态的 是的 类型 布尔值 默认值 (Unix) OFF
默认值 (Windows) ON
是否将错误日志输出写入系统日志。
syslog
这是 Windows、 Unix 和类 Unix 系统上的事件日志。默认值是特定于平台的:在 Windows 上,默认情况下启用事件日志输出。
在 Unix 和类 Unix 系统上,
syslog
默认情况下禁用输出。
无论默认情况如何,
log_syslog
都可以明确设置以控制任何支持平台上的输出。系统日志输出控制不同于将错误输出发送到文件或控制台。错误输出可以根据需要定向到文件或控制台,以补充或代替系统日志。请参阅第 5.4.2 节,“错误日志”。
-
命令行格式 --log-syslog-facility=value
系统变量 log_syslog_facility
范围 全球的 动态的 是的 类型 细绳 默认值 daemon
写入错误日志输出的工具
syslog
(发送消息的程序类型)。log_syslog
除非启用系统变量,否则此变量无效 。请参阅第 5.4.2.3 节,“错误记录到系统日志”。允许的值可能因操作系统而异;请查阅您的系统
syslog
文档。Windows 上不存在此变量。
-
命令行格式 --log-syslog-include-pid[={OFF|ON}]
系统变量 log_syslog_include_pid
范围 全球的 动态的 是的 类型 布尔值 默认值 ON
是否在写入 的每行错误日志输出中包含服务器进程 ID
syslog
。log_syslog
除非启用系统变量,否则此变量无效 。请参阅第 5.4.2.3 节,“错误记录到系统日志”。Windows 上不存在此变量。
-
命令行格式 --log-syslog-tag=tag
系统变量 log_syslog_tag
范围 全球的 动态的 是的 类型 细绳 默认值 empty string
要添加到写入到 的错误日志输出中的服务器标识符的标记
syslog
。log_syslog
除非启用系统变量,否则此变量无效 。请参阅第 5.4.2.3 节,“错误记录到系统日志”。默认情况下,服务器标识符
mysqld
没有标记。如果指定了标记值tag
,它会附加到带有前导连字符的服务器标识符,从而生成标识符 。mysqld-
tag
在 Windows 上,要使用尚不存在的标签,必须从具有管理员权限的帐户运行服务器,以允许为标签创建注册表项。如果标签已经存在,则不需要提升权限。
-
命令行格式 --log-timestamps=#
系统变量 log_timestamps
范围 全球的 动态的 是的 类型 枚举 默认值 UTC
有效值 UTC
SYSTEM
此变量控制写入错误日志的消息中时间戳的时区,以及写入文件的一般查询日志和慢查询日志消息中的时间戳。不影响写入表(
mysql.general_log
,mysql.slow_log
)的一般查询日志和慢查询日志消息的时区。CONVERT_TZ()
使用或通过设置会话time_zone
系统变量 ,可以将从这些表中检索的行从本地系统时区转换为任何所需的时区 。允许的
log_timestamps
值为UTC
(默认值)和SYSTEM
(本地系统时区)。时间戳使用 ISO 8601 / RFC 3339 格式编写: 加上表示祖鲁时间 (UTC) 或(与 UTC 的偏移量)的尾值。
YYYY-MM-DD
Thh:mm:ss.uuuuuu
Z
±hh:mm
log_throttle_queries_not_using_indexes
命令行格式 --log-throttle-queries-not-using-indexes=#
系统变量 log_throttle_queries_not_using_indexes
范围 全球的 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 4294967295
如果
log_queries_not_using_indexes
启用,该log_throttle_queries_not_using_indexes
变量会限制每分钟可以写入慢速查询日志的此类查询的数量。值 0(默认值)表示“无限制”。有关详细信息,请参阅 第 5.4.5 节,“慢速查询日志”。-
命令行格式 --log-warnings[=#]
弃用 是的 系统变量 log_warnings
范围 全球的 动态的 是的 类型 整数 默认值 2
最小值 0
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
是否向错误日志生成额外的警告消息。从 MySQL 5.7.2 开始,以前由 管理的信息项由
log_warnings
管理log_error_verbosity
,它优于旧系统变量,并且应该使用旧log_warnings
系统变量。(log_warnings
系统变量和--log-warnings
命令行选项已弃用;希望它们在 MySQL 的未来版本中被删除。)log_warnings
默认启用(MySQL 5.7.2 之前默认为 1,从 5.7.2 开始为 2)。要禁用它,请将其设置为 0。如果该值大于 0,服务器将记录有关对基于语句的日志记录不安全的语句的消息。如果该值大于 1,服务器将记录中止的连接和新连接尝试的拒绝访问错误。请参阅 第 B.3.2.9 节,“通信错误和中止连接”。如果您使用复制,建议通过将其设置为大于 0 来启用此变量,以获取有关正在发生的事情的更多信息,例如有关网络故障和重新连接的消息。
如果副本服务器启动时
log_warnings
启用,则副本将消息打印到错误日志以提供有关其状态的信息,例如二进制日志和中继日志坐标它开始其工作的位置,它何时切换到另一个中继日志,何时它断开连接后重新连接,等等。赋值给
log_warnings
赋值给log_error_verbosity
,反之亦然。变量相关如下:log_warnings
用 实现的所有项目 的抑制log_warnings=0
是通过log_error_verbosity=1
(仅限错误)实现的。打印为
log_warnings=1
或更高版本的项目被视为警告并打印为log_error_verbosity=2
或更高版本。为 打印的项目
log_warnings=2
算作注释,并为 打印log_error_verbosity=3
。
从 MySQL 5.7.2 开始,默认日志级别由 控制
log_error_verbosity
,默认为 3。此外,默认值log_warnings
从 1 更改为 2,对应于log_error_verbosity=3
. 要实现与以前的默认值类似的日志记录级别,请设置log_error_verbosity=2
.在 MySQL 5.7.2 及更高版本中,
log_warnings
仍然允许使用 ,但映射到使用log_error_verbosity
如下:设置
log_warnings=0
等同于log_error_verbosity=1
(仅限错误)。设置
log_warnings=1
等同于log_error_verbosity=2
(错误,警告)。设置
log_warnings=2
(或更高)等同于log_error_verbosity=3
(错误、警告、注释),log_warnings
如果指定了更大的值,则服务器设置为 2。
-
命令行格式 --long-query-time=#
系统变量 long_query_time
范围 全局,会话 动态的 是的 类型 数字 默认值 10
最小值 0
最大值 31536000
单元 秒 如果查询花费的时间超过此秒数,则服务器会递增
Slow_queries
状态变量。如果启用了慢查询日志,查询将被记录到慢查询日志文件中。该值是实时测量的,而不是 CPU 时间,因此在轻负载系统上低于阈值的查询可能在重负载系统上高于阈值。的最小值和默认值long_query_time
分别为 0 和 10。最大值为 31536000,即 365 天,以秒为单位。该值可以指定为微秒级的分辨率。请参阅 第 5.4.5 节,“慢速查询日志”。此变量的值越小,越多的语句被认为是长时间运行的,结果慢速查询日志需要更多的空间。对于非常小的值(小于一秒),日志可能会在短时间内变得非常大。增加被视为长时间运行的语句的数量也可能导致 MySQL Enterprise Monitor 中“长时间运行的进程数量过多”警报的误报 ,尤其是在启用组复制的情况下。由于这些原因,非常小的值应该只在测试环境中使用,或者在生产环境中,只在短时间内使用。
-
命令行格式 --low-priority-updates[={OFF|ON}]
系统变量 low_priority_updates
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
如果设置为
1
,则所有INSERT
、UPDATE
、DELETE
和语句将等待,直到受影响的表上LOCK TABLE WRITE
没有挂起SELECT
或为止。使用仅降低一个查询的优先级LOCK TABLE READ
可以获得相同的效果。{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...
此变量仅影响仅使用表级锁定的存储引擎(例如MyISAM
、MEMORY
和MERGE
)。请参阅 第 8.11.2 节,“表锁定问题”。 -
系统变量 lower_case_file_system
范围 全球的 动态的 不 类型 布尔值 该变量描述了数据目录所在文件系统上文件名的大小写敏感性。
OFF
表示文件名区分大小写,ON
表示它们不区分大小写。这个变量是只读的,因为它反映了一个文件系统属性并且设置它不会对文件系统产生影响。 -
命令行格式 --lower-case-table-names[=#]
系统变量 lower_case_table_names
范围 全球的 动态的 不 类型 整数 默认值 (macOS) 2
默认值 (Unix) 0
默认值 (Windows) 1
最小值 0
最大值 2
如果设置为 0,则表名按指定存储并且比较区分大小写。如果设置为 1,则表名以小写形式存储在磁盘上并且比较不区分大小写。如果设置为 2,表名按给定的形式存储,但以小写形式进行比较。此选项也适用于数据库名称和表别名。有关其他详细信息,请参阅 第 9.2.3 节,“标识符区分大小写”。
这个变量的默认值是平台相关的(参见 参考资料
lower_case_file_system
)。在 Linux 和其他类 Unix 系统上,默认为0
. 在 Windows 上,默认值为1
. 在 macOS 上,默认值为2
. 在 Linux(和其他类 Unix 系统)上,2
不支持将值设置为;服务器强制该值0
改为。如果在数据目录位于不
lower_case_table_names
区分大小写的文件系统(例如 Windows 或 macOS)上的系统上运行 MySQL,则 不应设置 为 0。 这是一种不受支持的组合,在使用错误的字母大小写运行操作时可能会导致挂起情况 。对于,访问使用不同字母大小写的表名可能会导致索引损坏。INSERT INTO ... SELECT ... FROM
tbl_name
tbl_name
MyISAM
如果您尝试在
--lower_case_table_names=0
不区分大小写的文件系统上启动服务器,则会打印一条错误消息并退出服务器。此变量的设置会影响复制过滤选项在区分大小写方面的行为。有关详细信息,请参阅第 16.2.5 节,“服务器如何评估复制过滤规则”。
-
命令行格式 --max-allowed-packet=#
系统变量 max_allowed_packet
范围 全局,会话 动态的 是的 类型 整数 默认值 4194304
最小值 1024
最大值 1073741824
单元 字节 块大小 1024
一个数据包或任何生成/中间字符串的最大大小,或
mysql_stmt_send_long_data()
C API 函数发送的任何参数。默认值为 4MB。数据包消息缓冲区初始化为
net_buffer_length
字节,但可以在需要时增长到max_allowed_packet
字节。默认情况下这个值很小,以捕获大的(可能不正确的)数据包。如果您使用大
BLOB
列或长字符串,则必须增加此值。它应该和BLOB
你想要使用的最大的一样大。的协议限制为max_allowed_packet
1GB。该值应为 1024 的倍数;非倍数向下舍入到最接近的倍数。当您通过更改
max_allowed_packet
变量的值来更改消息缓冲区大小时,如果您的客户端程序允许,您还应该更改客户端的缓冲区大小。客户端库内置的默认max_allowed_packet
值为 1GB,但个别客户端程序可能会覆盖此值。例如, mysql和mysqldump的默认值分别为 16MB 和 24MB。max_allowed_packet
它们还使您能够通过在命令行或选项文件中 进行设置来更改客户端值 。此变量的会话值是只读的。客户端最多可以接收与会话值一样多的字节。但是,服务器不能向客户端发送比当前全局
max_allowed_packet
值更多的字节。(如果全局值在客户端连接后更改,则全局值可能小于会话值。) -
命令行格式 --max-connect-errors=#
系统变量 max_connect_errors
范围 全球的 动态的 是的 类型 整数 默认值 100
最小值 1
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
来自主机的连续连接请求在
max_connect_errors
没有成功连接的情况下被中断后,服务器阻止该主机进一步连接。如果在先前的连接中断后,在少于max_connect_errors
尝试次数的时间内成功建立了来自主机的连接,则主机的错误计数将被清除为零。要取消阻止被阻止的主机,请刷新主机缓存;请参阅 刷新主机缓存。 -
命令行格式 --max-connections=#
系统变量 max_connections
范围 全球的 动态的 是的 类型 整数 默认值 151
最小值 1
最大值 100000
允许的最大并发客户端连接数。最大有效值是 的有效值 和 实际设置的 值中的较小者。
open_files_limit
- 810
max_connections
有关详细信息,请参阅 第 5.1.11.1 节,“连接接口”。
-
命令行格式 --max-delayed-threads=#
弃用 是的 系统变量 max_delayed_threads
范围 全局,会话 动态的 是的 类型 整数 默认值 20
最小值 0
最大值 16384
此系统变量已弃用(因为
DELAYED
不支持插入);希望在未来的版本中将其删除。 -
命令行格式 --max-digest-length=#
系统变量 max_digest_length
范围 全球的 动态的 不 类型 整数 默认值 1024
最小值 0
最大值 1048576
单元 字节 每个会话为计算规范化语句摘要保留的最大内存字节数。一旦在摘要计算期间使用了该数量的空间,就会发生截断:不再收集来自已解析语句的标记或将其计入其摘要值。仅在许多字节的已解析令牌产生相同的规范化语句摘要之后才不同的语句,如果进行比较或汇总以获取摘要统计信息,则这些语句被认为是相同的。
警告设置
max_digest_length
为零会禁用摘要生成,这也会禁用需要摘要的服务器功能,例如 MySQL Enterprise Firewall。减小该
max_digest_length
值会减少内存使用,但会导致更多语句的摘要值变得无法区分(如果它们仅在末尾不同)。增加该值允许区分更长的语句,但会增加内存使用,特别是对于涉及大量同时会话的工作负载(服务器max_digest_length
为每个会话分配字节)。解析器使用此系统变量作为对其计算的规范化语句摘要的最大长度的限制。如果性能模式跟踪语句摘要,则使用
performance_schema_max_digest_length
. 系统变量作为对其存储的最大摘要长度的限制。因此,如果performance_schema_max_digest_length
小于max_digest_length
,存储在性能模式中的摘要值将相对于原始摘要值被截断。有关语句摘要的更多信息,请参阅 第 25.10 节,“性能模式语句摘要”。
-
命令行格式 --max-error-count=#
系统变量 max_error_count
范围 全局,会话 动态的 是的 类型 整数 默认值 64
最小值 0
最大值 65535
要存储以供
SHOW ERRORS
andSHOW WARNINGS
语句显示的错误、警告和信息消息的最大数量。这与诊断区域中条件区域的数量相同,因此可以通过检查的条件数量相同GET DIAGNOSTICS
。 -
命令行格式 --max-execution-time=#
系统变量 max_execution_time
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 4294967295
单元 毫秒 SELECT
语句 的执行超时时间 ,以毫秒为单位。如果该值为 0,则不启用超时。max_execution_time
适用如下:全局
max_execution_time
值为新连接的会话值提供默认值。会话值适用SELECT
于在会话中执行的不包含 优化器提示或为 0 的执行。MAX_EXECUTION_TIME(
N
)N
max_execution_time
适用于只读SELECT
语句。非只读语句是那些调用存储函数的语句,该函数作为副作用修改数据。max_execution_time
SELECT
对于存储程序中的语句将 被忽略。
-
命令行格式 --max-heap-table-size=#
系统变量 max_heap_table_size
范围 全局,会话 动态的 是的 类型 整数 默认值 16777216
最小值 16384
最大值(64 位平台) 18446744073709550592
最大值(32 位平台) 4294966272
单元 字节 块大小 1024
此变量设置
MEMORY
允许用户创建的表增长的最大大小。变量的值用于计算MEMORY
表MAX_ROWS
值。块大小为 1024。在存储系统变量的值之前,MySQL 服务器会将不是块大小精确倍数的值向下舍入为块大小的下一个较低倍数。解析器允许值最大为平台的最大无符号整数值(对于 32 位系统为 4294967295 或 2 32 -1,对于 64 位系统为 18446744073709551615 或 2 64 -1),但实际最大值比块大小小.
设置此变量对任何现有
MEMORY
表都没有影响,除非使用诸如CREATE TABLE
or altered withALTER TABLE
or 之类的语句重新创建表TRUNCATE TABLE
。服务器重新启动还会将现有MEMORY
表的最大大小设置为全局max_heap_table_size
值。此变量还与 结合使用
tmp_table_size
以限制内部内存表的大小。请参阅 第 8.4.4 节,“MySQL 中的内部临时表使用”。max_heap_table_size
不被复制。有关详细信息,请参阅 第 16.4.1.20 节,“复制和内存表”和 第 16.4.1.37 节,“复制和变量”。 -
弃用 是的 系统变量 max_insert_delayed_threads
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 20
最大值 16384
此变量是 的同义词
max_delayed_threads
。此系统变量已弃用(因为
DELAYED
不支持插入);希望在未来的版本中将其删除。 -
命令行格式 --max-join-size=#
系统变量 max_join_size
范围 全局,会话 动态的 是的 类型 整数 默认值 18446744073709551615
最小值 1
最大值 18446744073709551615
不允许可能需要检查多于
max_join_size
行(对于单表语句)或行组合(对于多表语句)或者可能比max_join_size
磁盘查找更多的语句。通过设置此值,您可以捕获键未正确使用且可能需要很长时间的语句。如果您的用户倾向于执行缺少WHERE
子句、需要很长时间或返回数百万行的联接,请设置它。有关详细信息,请参阅 使用安全更新模式 (--safe-updates)。将此变量设置为除
DEFAULT
将值重置为以外的sql_big_selects
值0
。如果您sql_big_selects
再次设置该值,该max_join_size
变量将被忽略。如果查询结果在查询缓存中,则不会执行结果大小检查,因为结果之前已经计算过,并且不会给服务器发送它给客户端带来负担。
-
命令行格式 --max-length-for-sort-data=#
系统变量 max_length_for_sort_data
范围 全局,会话 动态的 是的 类型 整数 默认值 1024
最小值 4
最大值 8388608
单元 字节 确定
filesort
使用哪种算法的索引值大小的截止值。请参阅 第 8.2.1.14 节,“ORDER BY 优化”。 -
命令行格式 --max-points-in-geometry=#
系统变量 max_points_in_geometry
范围 全局,会话 动态的 是的 类型 整数 默认值 65536
最小值 3
最大值 1048576
points_per_circle
函数参数 的最大值ST_Buffer_Strategy()
。 -
命令行格式 --max-prepared-stmt-count=#
系统变量 max_prepared_stmt_count
范围 全球的 动态的 是的 类型 整数 默认值 16382
最小值 0
最大值 1048576
此变量限制服务器中准备好的语句的总数。它可用于可能因准备大量语句使服务器内存不足而导致拒绝服务攻击的环境。如果该值设置为低于当前准备语句的数量,则现有语句不受影响并可以使用,但在当前数量低于限制之前不能准备新语句。将该值设置为 0 会禁用准备好的语句。
-
命令行格式 --max-seeks-for-key=#
系统变量 max_seeks_for_key
范围 全局,会话 动态的 是的 类型 整数 默认值 (Windows) 4294967295
默认值(其他,64 位平台) 18446744073709551615
默认值(其他,32 位平台) 4294967295
最小值 1
最大值 (Windows) 4294967295
最大值(其他,64 位平台) 18446744073709551615
最大值(其他,32 位平台) 4294967295
限制基于键查找行时假定的最大查找次数。MySQL 优化器假定在通过扫描索引在表中搜索匹配行时不需要超过此数量的键查找,而不管索引的实际基数如何(请参阅 第 13.7.5.22 节,“SHOW INDEX 语句”)。通过将其设置为较低的值(例如 100),您可以强制 MySQL 更喜欢索引而不是表扫描。
-
命令行格式 --max-sort-length=#
系统变量 max_sort_length
范围 全局,会话 动态的 是的 类型 整数 默认值 1024
最小值 4
最大值 8388608
单元 字节 对数据值进行排序时要使用的字节数。服务器只使用
max_sort_length
每个值的前几个字节而忽略其余部分。因此,对于、和操作 ,仅在第一个max_sort_length
字节之后不同的值比较为相等。GROUP BY
ORDER BY
DISTINCT
增加 的值
max_sort_length
可能也需要增加 的值sort_buffer_size
。有关详细信息,请参阅第 8.2.1.14 节,“ORDER BY 优化” -
命令行格式 --max-sp-recursion-depth[=#]
系统变量 max_sp_recursion_depth
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 255
可以递归调用任何给定存储过程的次数。此选项的默认值为 0,即完全禁用存储过程中的递归。最大值为 255。
存储过程递归增加了对线程堆栈空间的需求。如果增加 的值
max_sp_recursion_depth
,则可能需要通过增加thread_stack
服务器启动时的值来增加线程堆栈大小。 此变量未使用。它已被弃用并在 MySQL 8.0 中被删除。
-
命令行格式 --max-user-connections=#
系统变量 max_user_connections
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 4294967295
任何给定 MySQL 用户帐户允许的最大同时连接数。值 0(默认值)表示 “无限制。”
这个变量有一个全局值,可以在服务器启动或运行时设置。它还具有一个只读会话值,指示适用于与当前会话关联的帐户的有效同时连接限制。会话值初始化如下:
如果用户帐户具有非零
MAX_USER_CONNECTIONS
资源限制,则会话max_user_connections
值设置为该限制。否则,会话
max_user_connections
值设置为全局值。
CREATE USER
使用orALTER USER
语句 指定帐户资源限制 。请参阅 第 6.2.16 节,“设置帐户资源限制”。 -
命令行格式 --max-write-lock-count=#
系统变量 max_write_lock_count
范围 全球的 动态的 是的 类型 整数 默认值 (Windows) 4294967295
默认值(其他,64 位平台) 18446744073709551615
默认值(其他,32 位平台) 4294967295
最小值 1
最大值 (Windows) 4294967295
最大值(其他,64 位平台) 18446744073709551615
最大值(其他,32 位平台) 4294967295
在这么多写锁之后,允许在其间处理一些挂起的读锁请求。写锁请求的优先级高于读锁请求。但是,如果
max_write_lock_count
设置为某个较低的值(比如 10),如果读取锁定请求已被传递以支持 10 个写入锁定请求,则读取锁定请求可能优先于挂起的写入锁定请求。通常不会发生此行为,因为max_write_lock_count
默认情况下具有非常大的值。 -
命令行格式 --mecab-rc-file=file_name
系统变量 mecab_rc_file
范围 全球的 动态的 不 类型 文件名 该
mecab_rc_file
选项在设置 MeCab 全文解析器时使用。该
mecab_rc_file
选项定义了配置文件的路径mecabrc
,这是 MeCab 的配置文件。该选项是只读的,只能在启动时设置。mecabrc
配置文件是初始化 MeCab 所必需的 。有关 MeCab 全文解析器的信息,请参阅 第 12.10.9 节,“MeCab 全文解析器插件”。
有关可在 MeCab
mecabrc
配置文件中指定的选项的信息,请参阅 Google Developers站点 上 的MeCab 文档。 -
命令行格式 --metadata-locks-cache-size=#
弃用 是的 系统变量 metadata_locks_cache_size
范围 全球的 动态的 不 类型 整数 默认值 1024
最小值 1
最大值 1048576
单元 字节 元数据锁缓存的大小。服务器使用此缓存来避免创建和销毁同步对象。这对于此类操作成本高昂的系统(例如 Windows XP)特别有用。
在 MySQL 5.7.4 中,元数据锁定实现更改使得这个变量变得不必要,因此被弃用;希望在未来的 MySQL 版本中将其删除。
-
命令行格式 --metadata-locks-hash-instances=#
弃用 是的 系统变量 metadata_locks_hash_instances
范围 全球的 动态的 不 类型 整数 默认值 8
最小值 1
最大值 1024
可以将元数据锁集划分为单独的散列,以允许访问不同对象的连接使用不同的锁定散列并减少争用。系统
metadata_locks_hash_instances
变量指定哈希数(默认 8)。在 MySQL 5.7.4 中,元数据锁定实现更改使得这个变量变得不必要,因此被弃用;希望在未来的 MySQL 版本中将其删除。
-
命令行格式 --min-examined-row-limit=#
系统变量 min_examined_row_limit
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 0
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
检查少于此数量的行的查询不会记录到慢速查询日志中。
-
命令行格式 --multi-range-count=#
弃用 是的 系统变量 multi_range_count
范围 全局,会话 动态的 是的 类型 整数 默认值 256
最小值 1
最大值 4294967295
此变量无效。它已被弃用并在 MySQL 8.0 中被删除。
-
命令行格式 --myisam-data-pointer-size=#
系统变量 myisam_data_pointer_size
范围 全球的 动态的 是的 类型 整数 默认值 6
最小值 2
最大值 7
单元 字节 默认指针大小(以字节为单位), 在未指定选项时
CREATE TABLE
供MyISAM
表 使用。MAX_ROWS
此变量不能小于 2 或大于 7。默认值为 6。请参阅第 B.3.2.10 节,“表已满”。 -
命令行格式 --myisam-max-sort-file-size=#
系统变量 myisam_max_sort_file_size
范围 全球的 动态的 是的 类型 整数 默认值 (Windows) 2146435072
默认值(其他,64 位平台) 9223372036853727232
默认值(其他,32 位平台) 2147483648
最小值 0
最大值 (Windows) 2146435072
最大值(其他,64 位平台) 9223372036853727232
最大值(其他,32 位平台) 2147483648
单元 字节 MySQL 在重新创建
MyISAM
索引时(在REPAIR TABLE
、ALTER TABLE
或 期间LOAD DATA
)被允许使用的临时文件的最大大小。如果文件大小大于此值,则使用键缓存创建索引,速度较慢。该值以字节为单位给出。如果
MyISAM
索引文件超过此大小并且磁盘空间可用,则增加该值可能有助于提高性能。该空间必须在包含原始索引文件所在目录的文件系统中可用。 -
命令行格式 --myisam-mmap-size=#
系统变量 myisam_mmap_size
范围 全球的 动态的 不 类型 整数 默认值(64 位平台) 18446744073709551615
默认值(32 位平台) 4294967295
最小值 7
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节 用于内存映射压缩
MyISAM
文件的最大内存量。如果使用许多压缩MyISAM
表,可以减小该值以减少内存交换问题的可能性。 -
命令行格式 --myisam-recover-options[=list]
系统变量 myisam_recover_options
范围 全球的 动态的 不 类型 枚举 默认值 OFF
有效值 OFF
DEFAULT
BACKUP
FORCE
QUICK
设置
MyISAM
存储引擎恢复模式。变量值是 、 、 、 或 的OFF
值DEFAULT
的BACKUP
任意FORCE
组合QUICK
。如果您指定多个值,请用逗号分隔它们。在服务器启动时指定没有值的变量与指定 相同DEFAULT
,并且使用显式值指定""
禁用恢复(与值相同OFF
)。如果启用恢复,每次mysqld打开一个MyISAM
表,它检查表是否被标记为崩溃或未正确关闭。(最后一个选项仅在禁用外部锁定的情况下运行。)如果是这种情况,mysqld将对表运行检查。如果表损坏, mysqld会尝试修复它。以下选项会影响修复的工作方式。
选项 描述 OFF
没有恢复。 DEFAULT
无需备份、强制或快速检查即可恢复。 BACKUP
如果数据文件在恢复过程中被更改,请将该
文件的备份另存为tbl_name
.MYD
.tbl_name-datetime
.BAKFORCE
.MYD
即使我们会从文件中丢失不止一行,也要运行恢复 。QUICK
如果没有任何删除块,请不要检查表中的行。 服务器在自动修复表之前,会在错误日志中写入有关修复的注释。如果您希望能够在没有用户干预的情况下从大多数问题中恢复,您应该使用选项
BACKUP,FORCE
。这会强制修复表,即使某些行会被删除,但它会保留旧数据文件作为备份,以便您以后可以检查发生了什么。 -
命令行格式 --myisam-repair-threads=#
弃用 5.7.38(在 5.7.39 中删除) 系统变量 myisam_repair_threads
范围 全局,会话 动态的 是的 类型 整数 默认值 1
最小值 1
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
笔记此系统变量在 MySQL 5.7 中已弃用;希望在未来的 MySQL 版本中将其删除。
从 MySQL 5.7.38 开始,1 以外的值会产生警告。
如果此值大于 1,
MyISAM
则在此过程中并行创建表索引(每个索引在其自己的线程中)Repair by sorting
。默认值为 1。笔记多线程修复是测试版质量 代码。
-
命令行格式 --myisam-sort-buffer-size=#
系统变量 myisam_sort_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 8388608
最小值 4096
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节 MyISAM
在 a 期间 或使用orREPAIR TABLE
创建索引时对索引进行 排序时分配的缓冲区大小 。CREATE INDEX
ALTER TABLE
-
命令行格式 --myisam-stats-method=name
系统变量 myisam_stats_method
范围 全局,会话 动态的 是的 类型 枚举 默认值 nulls_unequal
有效值 nulls_unequal
nulls_equal
nulls_ignored
服务器
NULL
在收集有关表的索引值分布的统计信息时如何处理值MyISAM
。此变量具有三个可能的值,nulls_equal
、nulls_unequal
和nulls_ignored
。对于nulls_equal
,所有NULL
索引值都被认为是相等的,并形成一个大小等于值数的NULL
值组。对于nulls_unequal
,NULL
值被认为是不相等的,并且每个NULL
值形成一个大小为 1 的不同值组。对于nulls_ignored
,NULL
值被忽略。用于生成表统计信息的方法会影响优化器如何为查询执行选择索引,如第 8.3.7 节,“InnoDB 和 MyISAM 索引统计信息收集”中所述。
-
命令行格式 --myisam-use-mmap[={OFF|ON}]
系统变量 myisam_use_mmap
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
使用内存映射来读写
MyISAM
表。 mysql_native_password_proxy_users
命令行格式 --mysql-native-password-proxy-users[={OFF|ON}]
系统变量 mysql_native_password_proxy_users
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
该变量控制
mysql_native_password
内置认证插件是否支持代理用户。check_proxy_users
除非启用系统变量,否则它不起作用。有关用户代理的信息,请参阅第 6.2.14 节,“代理用户”。-
命令行格式 --named-pipe[={OFF|ON}]
系统变量 named_pipe
范围 全球的 动态的 不 特定于平台 视窗 类型 布尔值 默认值 OFF
(仅限 Windows。)指示服务器是否支持命名管道连接。
-
命令行格式 --named-pipe-full-access-group=value
介绍 5.7.25 系统变量 named_pipe_full_access_group
范围 全球的 动态的 不 特定于平台 视窗 类型 细绳 默认值 empty string
有效值 empty string
valid Windows local group name
*everyone*
named_pipe
(仅限 Windows。)当启用系统变量以支持命名管道连接 时,授予客户端对 MySQL 服务器创建的命名管道的访问控制设置为成功通信所需的最小值 。一些MySQL客户端软件无需任何额外配置即可打开命名管道连接;但是,其他客户端软件可能仍需要完全访问权限才能打开命名管道连接。此变量设置 Windows 本地组的名称,其成员被 MySQL 服务器授予足够的访问权限以使用命名管道客户端。从 MySQL 5.7.34 开始,默认值设置为空字符串,这意味着没有 Windows 用户被授予对命名管道的完全访问权限。
可以在 Windows 中创建一个新的 Windows 本地组名称(例如
mysql_access_client_users
),然后在绝对需要访问时用于替换默认值。在这种情况下,将组成员限制为尽可能少的用户,在升级客户端软件时将用户从组中删除。尝试使用受影响的命名管道客户端打开与 MySQL 的连接的非组成员将被拒绝访问,直到 Windows 管理员将用户添加到该组。新添加的用户必须注销并重新登录才能加入该组(Windows 要求)。将值设置为
'*everyone*'
提供一种独立于语言的方式来引用 Windows 上的 Everyone 组。默认情况下,Everyone 组不安全。 -
命令行格式 --net-buffer-length=#
系统变量 net_buffer_length
范围 全局,会话 动态的 是的 类型 整数 默认值 16384
最小值 1024
最大值 1048576
单元 字节 块大小 1024
每个客户端线程都与连接缓冲区和结果缓冲区相关联。两者都以给定的大小开头,
net_buffer_length
但会根据需要动态扩大到max_allowed_packet
字节。结果缓冲区缩小到net_buffer_length
每个 SQL 语句之后。通常不应更改此变量,但如果您的内存很少,则可以将其设置为客户端发送的语句的预期长度。如果语句超过此长度,连接缓冲区会自动扩大。
net_buffer_length
可设置 的最大值 为 1MB。此变量的会话值是只读的。
-
命令行格式 --net-read-timeout=#
系统变量 net_read_timeout
范围 全局,会话 动态的 是的 类型 整数 默认值 30
最小值 1
最大值 31536000
单元 秒 在中止读取之前等待来自连接的更多数据的秒数。当服务器正在从客户端读取时,
net_read_timeout
是控制何时中止的超时值。当服务器正在写入客户端时,net_write_timeout
是控制何时中止的超时值。另见slave_net_timeout
。 -
命令行格式 --net-retry-count=#
系统变量 net_retry_count
范围 全局,会话 动态的 是的 类型 整数 默认值 10
最小值 1
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
如果通信端口上的读取或写入中断,请在放弃之前重试多次。在 FreeBSD 上这个值应该设置得相当高,因为内部中断被发送到所有线程。
-
命令行格式 --net-write-timeout=#
系统变量 net_write_timeout
范围 全局,会话 动态的 是的 类型 整数 默认值 60
最小值 1
最大值 31536000
单元 秒 在中止写入之前等待块写入连接的秒数。另见
net_read_timeout
。 -
命令行格式 --new[={OFF|ON}]
系统变量 new
范围 全局,会话 动态的 是的 被禁用 skip-new
类型 布尔值 默认值 OFF
此变量在 MySQL 4.0 中用于打开某些 4.1 行为,并保留以实现向后兼容性。它的价值总是
OFF
。在 NDB Cluster 中,将此变量设置为
ON
可以使用表以外的分区类型KEY
或LINEAR KEY
与NDB
表一起使用。此功能仅是实验性的,在生产中不受支持。有关其他信息,请参阅 用户定义的分区和 NDB 存储引擎(NDB Cluster)。 -
命令行格式 --ngram-token-size=#
系统变量 ngram_token_size
范围 全球的 动态的 不 类型 整数 默认值 2
最小值 1
最大值 10
定义 n-gram 全文解析器的 n-gram 标记大小。该
ngram_token_size
选项是只读的,只能在启动时修改。默认值为 2(二元组)。最大值为 10。有关如何配置此变量的更多信息,请参阅 第 12.10.8 节,“ngram 全文解析器”。
-
命令行格式 --offline-mode[={OFF|ON}]
系统变量 offline_mode
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
服务器是否处于“离线模式”,具有以下特征:
只有拥有
SUPER
权限的用户才能控制离线模式。要将服务器置于离线模式,请将offline_mode
系统变量的值从更改OFF
为ON
。要恢复正常操作, 请offline_mode
从 更改ON
为OFF
。在离线模式下,拒绝访问的客户端会收到ER_SERVER_OFFLINE_MODE
错误消息。 -
命令行格式 --old[={OFF|ON}]
系统变量 old
范围 全球的 动态的 不 类型 布尔值 默认值 OFF
old
是兼容性变量。默认情况下它是禁用的,但可以在启动时启用以将服务器恢复到旧版本中存在的行为。启用后
old
,它将索引提示的默认范围更改为 MySQL 5.1.17 之前使用的范围。也就是说,没有FOR
子句的索引提示仅适用于索引如何用于行检索,而不适用于ORDER BY
orGROUP BY
子句的解析。(参见 第 8.9.4 节,“索引提示”。)注意在复制设置中启用它。对于基于语句的二进制日志记录,源和副本的不同模式可能会导致复制错误。 -
命令行格式 --old-alter-table[={OFF|ON}]
系统变量 old_alter_table
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
启用此变量后,服务器不会使用优化的方法来处理
ALTER TABLE
操作。它恢复为使用临时表,复制数据,然后将临时表重命名为原始表,如 MySQL 5.0 和更早版本所使用的那样。有关操作的更多信息ALTER TABLE
,请参阅 第 13.1.8 节,“ALTER TABLE 语句”。 -
命令行格式 --old-passwords=value
弃用 是的 系统变量 old_passwords
范围 全局,会话 动态的 是的 类型 枚举 默认值 0
有效值 0
2
笔记此系统变量在 MySQL 5.7 中已弃用;希望在未来的 MySQL 版本中将其删除。
此变量控制函数使用的密码散列方法
PASSWORD()
。它还会影响使用子句指定密码的语句CREATE USER
执行 的密码散列 。GRANT
IDENTIFIED BY
下表显示了每种密码哈希方法的允许值
old_passwords
以及哪些身份验证插件使用该哈希方法。密码散列法 old_passwords 值 关联的身份验证插件 MySQL 4.1 本机散列 0 mysql_native_password
SHA-256 哈希 2个 sha256_password
如果设置,请按照第 6.4.1.5 节“SHA-256 可插入身份验证”中的插件
old_passwords=2
使用说明进行操作 。sha256_password
服务器在启动时将全局 值设置为与 系统变量
old_passwords
指示的身份验证插件所需的密码哈希方法一致 。default_authentication_plugin
当客户端成功连接到服务器时,服务器会
old_passwords
为帐户身份验证方法适当地设置会话值。例如,如果帐户使用sha256_password
身份验证插件,则服务器设置old_passwords=2
.有关身份验证插件和哈希格式的其他信息,请参阅 第 6.2.13 节,“可插入身份验证”和 第 6.1.2.4 节,“MySQL 中的密码哈希”。
-
命令行格式 --open-files-limit=#
系统变量 open_files_limit
范围 全球的 动态的 不 类型 整数 默认值 5000, with possible adjustment
最小值 0
最大值 platform dependent
操作系统 对mysqld 可用的文件描述符的数量 :
在启动时,mysqld保留描述符
setrlimit()
,通过直接设置此变量或使用mysqld_safe--open-files-limit
的 选项使用请求的值。如果 mysqld产生错误,请尝试增加该 值。在内部,此变量的最大值是最大无符号整数值,但实际最大值取决于平台。Too many open files
open_files_limit
在运行时, 的值 指示操作系统实际允许mysqld
open_files_limit
的 文件描述符的数量,这可能与启动时请求的值不同。如果无法分配启动期间请求的文件描述符数, mysqld会将警告写入错误日志。
有效值
open_files_limit
基于系统启动时指定的值(如果有)以及 和 的值max_connections
,table_open_cache
使用以下公式:10 + max_connections + (table_open_cache * 2)
max_connections * 5
如果该限制为正但不是 Infinity,则为操作系统限制。
如果操作系统限制为 Infinity:
open_files_limit
如果在启动时指定值,则为 5000,否则为 5000。
服务器尝试使用这些值中的最大值来获取文件描述符的数量。如果无法获得那么多的描述符,服务器将尝试获得系统允许的尽可能多的描述符。
在 MySQL 无法更改打开文件数的系统上,有效值为 0。
在 Unix 上,该值不能设置为大于ulimit -n命令显示的值。在使用 的 Linux 系统上
systemd
,该值不能设置为大于LimitNOFile
(DefaultLimitNOFILE
如果LimitNOFile
未设置,则为 );否则,在 Linux 上, 的值open_files_limit
不能超过ulimit -n。 -
命令行格式 --optimizer-prune-level=#
系统变量 optimizer_prune_level
范围 全局,会话 动态的 是的 类型 整数 默认值 1
最小值 0
最大值 1
控制在查询优化期间应用的启发式方法,以从优化器搜索空间中修剪不太有前途的部分计划。值为 0 将禁用试探法,以便优化器执行详尽搜索。值为 1 会导致优化器根据中间计划检索的行数修剪计划。
-
命令行格式 --optimizer-search-depth=#
系统变量 optimizer_search_depth
范围 全局,会话 动态的 是的 类型 整数 默认值 62
最小值 0
最大值 62
查询优化器执行的最大搜索深度。大于查询中关系数的值会产生更好的查询计划,但需要更长的时间来生成查询的执行计划。小于查询中关系数的值会更快地返回执行计划,但生成的计划可能远非最佳。如果设置为 0,系统会自动选择一个合理的值。
-
命令行格式 --optimizer-switch=value
系统变量 optimizer_switch
范围 全局,会话 动态的 是的 类型 放 有效值 (≥ 5.7.33) batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
prefer_ordering_index={on|off}
semijoin={on|off}
subquery_materialization_cost_based={on|off}
use_index_extensions={on|off}
有效值(≤ 5.7.32) batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
semijoin={on|off}
subquery_materialization_cost_based={on|off}
use_index_extensions={on|off}
系统
optimizer_switch
变量可以控制优化器的行为。该变量的值是一组标志,每个标志的值为on
oroff
以指示相应的优化器行为是启用还是禁用。该变量具有全局值和会话值,可以在运行时更改。可以在服务器启动时设置全局默认值。要查看当前的优化器标志集,请选择变量值:
mysql> SELECT @@optimizer_switch\G *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, engine_condition_pushdown=on, index_condition_pushdown=on, mrr=on,mrr_cost_based=on, block_nested_loop=on,batched_key_access=off, materialization=on,semijoin=on,loosescan=on, firstmatch=on,duplicateweedout=on, subquery_materialization_cost_based=on, use_index_extensions=on, condition_fanout_filter=on,derived_merge=on, prefer_ordering_index=on
有关此变量的语法及其控制的优化器行为的更多信息,请参阅 第 8.9.2 节,“可切换优化”。
-
命令行格式 --optimizer-trace=value
系统变量 optimizer_trace
范围 全局,会话 动态的 是的 类型 细绳 此变量控制优化器跟踪。有关详细信息,请参阅 MySQL 内部结构:跟踪优化器。
-
命令行格式 --optimizer-trace-features=value
系统变量 optimizer_trace_features
范围 全局,会话 动态的 是的 类型 细绳 此变量启用或禁用选定的优化器跟踪功能。有关详细信息,请参阅 MySQL 内部结构:跟踪优化器。
-
命令行格式 --optimizer-trace-limit=#
系统变量 optimizer_trace_limit
范围 全局,会话 动态的 是的 类型 整数 默认值 1
最小值 0
最大值 2147483647
要显示的优化器跟踪的最大数量。有关详细信息,请参阅 MySQL 内部结构:跟踪优化器。
-
命令行格式 --optimizer-trace-max-mem-size=#
系统变量 optimizer_trace_max_mem_size
范围 全局,会话 动态的 是的 类型 整数 默认值 16384
最小值 0
最大值 4294967295
单元 字节 存储的优化器跟踪的最大累积大小。有关详细信息,请参阅 MySQL 内部结构:跟踪优化器。
-
命令行格式 --optimizer-trace-offset=#
系统变量 optimizer_trace_offset
范围 全局,会话 动态的 是的 类型 整数 默认值 -1
最小值 -2147483647
最大值 2147483647
要显示的优化器跟踪的偏移量。有关详细信息,请参阅 MySQL 内部结构:跟踪优化器。
performance_schema_
xxx
性能模式系统变量在第 25.15 节,“性能模式系统变量” 中列出 。这些变量可用于配置性能模式操作。
-
命令行格式 --parser-max-mem-size=#
介绍 5.7.12 系统变量 parser_max_mem_size
范围 全局,会话 动态的 是的 类型 整数 默认值(64 位平台) 18446744073709551615
默认值(32 位平台) 4294967295
最小值 10000000
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节 解析器可用的最大内存量。默认值对可用内存没有限制。可以减少该值以防止因解析长或复杂的 SQL 语句而导致内存不足的情况。
-
命令行格式 --pid-file=file_name
系统变量 pid_file
范围 全球的 动态的 不 类型 文件名 服务器在其中写入其进程 ID 的文件的路径名。服务器在数据目录中创建文件,除非给出绝对路径名来指定不同的目录。如果指定此变量,则必须指定一个值。如果不指定此变量,MySQL 使用默认值
,其中host_name
.pidhost_name
是主机名。进程 ID 文件由其他程序(例如 mysqld_safe )用于确定服务器的进程 ID。在 Windows 上,此变量还会影响默认错误日志文件名。请参阅第 5.4.2 节,“错误日志”。
-
命令行格式 --plugin-dir=dir_name
系统变量 plugin_dir
范围 全球的 动态的 不 类型 目录名称 默认值 BASEDIR/lib/plugin
插件目录的路径名。
如果插件目录可由服务器写入,则用户可以使用 将可执行代码写入目录中的文件
SELECT ... INTO DUMPFILE
。这可以通过plugin_dir
将服务器设置为只读或设置 为可以安全写入secure_file_priv
的目录来防止。SELECT
-
命令行格式 --port=port_num
系统变量 port
范围 全球的 动态的 不 类型 整数 默认值 3306
最小值 0
最大值 65535
服务器侦听 TCP/IP 连接的端口号。这个变量可以用
--port
选项设置。 -
命令行格式 --preload-buffer-size=#
系统变量 preload_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 32768
最小值 1024
最大值 1073741824
单元 字节 预加载索引时分配的缓冲区大小。
如果设置为 0 或
OFF
(默认值),语句分析将被禁用。如果设置为 1 或ON
,则启用语句分析,并且SHOW PROFILE
和SHOW PROFILES
语句提供对分析信息的访问。请参阅 第 13.7.5.31 节,“SHOW PROFILES 语句”。此变量已弃用;希望在未来的 MySQL 版本中将其删除。
profiling
启用 时维护分析信息的语句数。默认值为 15。最大值为 100。将值设置为 0 会有效地禁用分析。请参阅 第 13.7.5.31 节,“SHOW PROFILES 语句”。此变量已弃用;希望在未来的 MySQL 版本中将其删除。
-
系统变量 protocol_version
范围 全球的 动态的 不 类型 整数 默认值 10
最小值 0
最大值 4294967295
MySQL 服务器使用的客户端/服务器协议的版本。
-
系统变量 proxy_user
范围 会议 动态的 不 类型 细绳 如果当前客户端是另一个用户的代理,则此变量是代理用户帐户名。否则,此变量为
NULL
. 请参阅 第 6.2.14 节,“代理用户”。 -
系统变量 pseudo_slave_mode
范围 会议 动态的 是的 类型 布尔值 此系统变量供内部服务器使用。
pseudo_slave_mode
协助正确处理源自比当前处理它们的服务器更旧或更新的服务器的事务。mysqlbinlogpseudo_slave_mode
在执行任何 SQL 语句之前 将 的值设置 为 true。pseudo_slave_mode
对准备好的 XA 事务的处理有以下影响,这些事务可以附加到处理会话(默认情况下,发出的会话XA START
)或从中分离:如果为 true,并且处理会话已执行内部使用
BINLOG
语句,则 XA 事务会在事务的第一部分完成后立即自动从会话中分离XA PREPARE
,因此它们可以由具有该事务的任何会话提交或回滚XA_RECOVER_ADMIN
特权。如果为 false,只要该会话处于活动状态,XA 事务就会保持附加到处理会话,在此期间没有其他会话可以提交该事务。只有在会话断开连接或服务器重新启动时,准备好的事务才会分离。
-
系统变量 pseudo_thread_id
范围 会议 动态的 是的 类型 整数 默认值 2147483647
最小值 0
最大值 2147483647
此变量供内部服务器使用。
警告pseudo_thread_id
更改系统变量 的会话值会 更改CONNECTION_ID()
函数返回的值。 -
命令行格式 --query-alloc-block-size=#
系统变量 query_alloc_block_size
范围 全局,会话 动态的 是的 类型 整数 默认值 8192
最小值 1024
最大值 4294966272
单元 字节 块大小 1024
为语句解析和执行期间创建的对象分配的内存块的分配大小(以字节为单位)。如果您遇到内存碎片问题,增加此参数可能会有所帮助。
字节数的块大小为 1024。在存储系统变量的值之前,MySQL 服务器会将不是块大小精确倍数的值向下舍入为块大小的下一个较低倍数。解析器允许值最大为平台的最大无符号整数值(对于 32 位系统为 4294967295 或 2 32 -1,对于 64 位系统为 18446744073709551615 或 2 64 -1),但实际最大值比块大小小.
-
命令行格式 --query-cache-limit=#
弃用 5.7.20 系统变量 query_cache_limit
范围 全球的 动态的 是的 类型 整数 默认值 1048576
最小值 0
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节 不要缓存大于此字节数的结果。默认值为 1MB。
笔记查询缓存从 MySQL 5.7.20 开始弃用,并在 MySQL 8.0 中删除。弃用包括
query_cache_limit
. -
命令行格式 --query-cache-min-res-unit=#
弃用 5.7.20 系统变量 query_cache_min_res_unit
范围 全球的 动态的 是的 类型 整数 默认值 4096
最小值 512
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节 查询缓存分配的块的最小大小(以字节为单位)。默认值为 4096 (4KB)。该变量的调整信息在 第 8.10.3.3 节,“查询缓存配置”中给出。
笔记查询缓存从 MySQL 5.7.20 开始弃用,并在 MySQL 8.0 中删除。弃用包括
query_cache_min_res_unit
. -
命令行格式 --query-cache-size=#
弃用 5.7.20 系统变量 query_cache_size
范围 全球的 动态的 是的 类型 整数 默认值 1048576
最小值 0
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
单元 字节 为缓存查询结果分配的内存量。默认情况下,查询缓存是禁用的。这是使用默认值 1M 实现的,默认值为
query_cache_type
0。(如果将大小设置为 0,要显着减少开销,还应该使用query_cache_type=0
.允许的值为 1024 的倍数;其他值向下舍入到最接近的倍数。对于 的非零值
query_cache_size
,即使 ,也会分配那么多字节的内存query_cache_type=0
。有关详细信息,请参阅 第 8.10.3.3 节,“查询缓存配置”。查询缓存需要至少 40KB 的大小来分配其结构。(确切大小取决于系统架构。)如果设置的值
query_cache_size
太小,则会出现警告,如 第 8.10.3.3 节“查询缓存配置”中所述。笔记查询缓存从 MySQL 5.7.20 开始弃用,并在 MySQL 8.0 中删除。弃用包括
query_cache_size
. -
命令行格式 --query-cache-type=#
弃用 5.7.20 系统变量 query_cache_type
范围 全局,会话 动态的 是的 类型 枚举 默认值 0
有效值 0
1
2
设置查询缓存类型。设置该
GLOBAL
值会为之后连接的所有客户端设置类型。各个客户端可以设置该SESSION
值来影响他们自己对查询缓存的使用。下表显示了可能的值。选项 描述 0
或者OFF
不要在查询缓存中缓存结果或从中检索结果。请注意,这不会释放查询缓存缓冲区。为此,您应该设置 query_cache_size
为 0。1
或者ON
缓存所有可缓存的查询结果,但以 开头的查询结果除外 SELECT SQL_NO_CACHE
。2
或者DEMAND
仅为以 . 开头的可缓存查询缓存结果 SELECT SQL_CACHE
。此变量默认为
OFF
.如果服务器启动时
query_cache_type
设置为 0,则它根本不会获取查询缓存互斥量,这意味着在运行时无法启用查询缓存,从而减少了查询执行的开销。笔记查询缓存从 MySQL 5.7.20 开始弃用,并在 MySQL 8.0 中删除。弃用包括
query_cache_type
. -
命令行格式 --query-cache-wlock-invalidate[={OFF|ON}]
弃用 5.7.20 系统变量 query_cache_wlock_invalidate
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
通常,当一个客户端获取表
WRITE
上的锁时MyISAM
,如果查询结果存在于查询缓存中,则不会阻止其他客户端发出从表中读取的语句。将此变量设置为 1 会导致获取表的WRITE
锁以使查询缓存中引用该表的任何查询无效。这会强制其他尝试访问该表的客户端在锁定生效时等待。笔记查询缓存从 MySQL 5.7.20 开始弃用,并在 MySQL 8.0 中删除。弃用包括
query_cache_wlock_invalidate
. -
命令行格式 --query-prealloc-size=#
系统变量 query_prealloc_size
范围 全局,会话 动态的 是的 类型 整数 默认值 8192
最小值 8192
最大值(64 位平台) 18446744073709550592
最大值(32 位平台) 4294966272
单元 字节 块大小 1024
用于语句解析和执行的持久缓冲区的大小(以字节为单位)。该缓冲区不会在语句之间释放。如果您正在运行复杂的查询,较大的
query_prealloc_size
值可能有助于提高性能,因为它可以减少服务器在查询执行操作期间执行内存分配的需要。您应该知道这样做并不一定完全消除分配;在某些情况下,服务器可能仍会分配内存,例如与事务相关的操作或存储的程序。块大小为 1024。在存储系统变量的值之前,MySQL 服务器会将不是块大小精确倍数的值向下舍入为块大小的下一个较低倍数。解析器允许值最大为平台的最大无符号整数值(对于 32 位系统为 4294967295 或 2 32 -1,对于 64 位系统为 18446744073709551615 或 2 64 -1),但实际最大值比块大小小.
-
系统变量 rand_seed1
范围 会议 动态的 是的 类型 整数 默认值 N/A
最小值 0
最大值 4294967295
和变量仅作为会话变量存在
rand_seed1
,rand_seed2
只能设置但不能读取。变量(但不是它们的值)显示在 的输出中SHOW VARIABLES
。这些变量的目的是支持
RAND()
函数的复制。对于调用RAND()
的语句,源将两个值传递给副本,它们用于为随机数生成器提供种子。副本使用这些值来设置会话变量rand_seed1
,rand_seed2
以便RAND()
在副本上生成与源上相同的值。 请参阅说明
rand_seed1
。-
命令行格式 --range-alloc-block-size=#
系统变量 range_alloc_block_size
范围 全局,会话 动态的 是的 类型 整数 默认值 4096
最小值 4096
最大值(64 位平台) 18446744073709550592
最大值 4294966272
单元 字节 块大小 1024
进行范围优化时分配的块大小(以字节为单位)。
字节数的块大小为 1024。在存储系统变量的值之前,MySQL 服务器会将不是块大小精确倍数的值向下舍入为块大小的下一个较低倍数。解析器允许值最大为平台的最大无符号整数值(对于 32 位系统为 4294967295 或 2 32 -1,对于 64 位系统为 18446744073709551615 或 2 64 -1),但实际最大值比块大小小.
-
命令行格式 --range-optimizer-max-mem-size=#
系统变量 range_optimizer_max_mem_size
范围 全局,会话 动态的 是的 类型 整数 默认值(≥ 5.7.12) 8388608
默认值(≤ 5.7.11) 1536000
最小值 0
最大值 18446744073709551615
单元 字节 范围优化器的内存消耗限制。值为 0 表示“无限制。”如果优化器考虑的执行计划使用范围访问方法,但优化器估计此方法所需的内存量将超过限制,则放弃该计划并考虑其他计划。有关详细信息,请参阅 限制内存使用以进行范围优化。
-
系统变量 rbr_exec_mode
范围 会议 动态的 是的 类型 枚举 默认值 STRICT
有效值 STRICT
IDEMPOTENT
供mysqlbinlog 内部使用。
IDEMPOTENT
此变量在模式和 模式之间切换服务器STRICT
。IDEMPOTENT
mode 会抑制mysqlbinlogBINLOG
生成的语句中的 duplicate-key 和 no-key-found 错误。当在导致与现有数据冲突的服务器上重放基于行的二进制日志时,此模式很有用。 当您通过将以下内容写入输出来指定选项 时, mysqlbinlog会设置此模式:--idempotent
SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
-
命令行格式 --read-buffer-size=#
系统变量 read_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 131072
最小值 8192
最大值 2147479552
单元 字节 块大小 4096
对表进行顺序扫描的每个线程都会为其扫描的每个
MyISAM
表分配此大小(以字节为单位)的缓冲区。如果进行多次顺序扫描,您可能希望增加此值,默认值为 131072。此变量的值应为 4KB 的倍数。如果设置的值不是 4KB 的倍数,则其值向下舍入为最接近的 4KB 倍数。此选项也用于所有存储引擎的以下上下文中:
用于在临时文件(不是临时表)中缓存索引,当为
ORDER BY
.用于批量插入分区。
用于缓存嵌套查询的结果。
read_buffer_size
也用于另一种特定于存储引擎的方式:确定MEMORY
表的内存块大小。有关不同操作期间内存使用的更多信息,请参阅第 8.12.4.1 节,“MySQL 如何使用内存”。
-
命令行格式 --read-only[={OFF|ON}]
系统变量 read_only
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
如果
read_only
启用了系统变量,则服务器不允许客户端更新,除非来自具有SUPER
特权的用户。默认情况下禁用此变量。服务器还支持
super_read_only
系统变量(默认情况下禁用),它具有以下效果:如果
super_read_only
启用,服务器将禁止客户端更新,即使是具有SUPER
特权的用户也是如此。设置
super_read_only
为ON
隐式强制read_only
到ON
.设置
read_only
为OFF
隐式强制super_read_only
到OFF
.
即使
read_only
启用,服务器也允许这些操作:如果服务器是副本,则由复制线程执行更新。
read_only
在复制设置中,在副本服务器上启用以确保副本仅接受来自源服务器而不是来自客户端的更新 可能很有用。使用
ANALYZE TABLE
orOPTIMIZE TABLE
语句。只读模式的目的是防止更改表结构或内容。分析和优化不属于此类更改。这意味着,例如,可以使用mysqlcheck 对只读副本执行一致性检查。--all-databases
--analyze
使用的
FLUSH STATUS
语句,总是写入二进制日志。对
TEMPORARY
表的操作。插入日志表(
mysql.general_log
和mysql.slow_log
);参见 第 5.4.1 节,“选择通用查询日志和慢速查询日志输出目的地”。从 MySQL 5.7.16 开始,对 Performance Schema 表的更新,例如
UPDATE
orTRUNCATE TABLE
操作。
复制源服务器上的更改
read_only
不会复制到副本服务器。该值可以独立于源上的设置在副本上设置。以下条件适用于启用尝试
read_only
(包括启用导致的隐式尝试super_read_only
):LOCK TABLES
如果您有任何显式锁(通过 获取)或有挂起的事务 ,则尝试失败并发生错误。当其他客户端有任何正在进行的语句、活动
LOCK TABLES WRITE
或正在进行的提交时,尝试会阻塞,直到锁被释放并且语句和事务结束。当启用的尝试处于read_only
挂起状态时,其他客户端对表锁或开始事务的请求也会阻塞,直到read_only
被设置。如果存在持有元数据锁的活动事务,则尝试阻塞,直到这些事务结束。
read_only
可以在持有全局读锁(通过 获取FLUSH TABLES WITH READ LOCK
)时启用,因为这不涉及表锁。
-
命令行格式 --read-rnd-buffer-size=#
系统变量 read_rnd_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 262144
最小值 1
最大值 2147483647
单元 字节 此变量用于从
MyISAM
表中读取,并且对于任何存储引擎,用于多范围读取优化。MyISAM
在键排序操作后按排序顺序 从表中读取行时,将通过此缓冲区读取行以避免磁盘查找。请参阅 第 8.2.1.14 节,“ORDER BY 优化”。将变量设置为较大的值可以大大提高ORDER BY
性能。但是,这是为每个客户端分配的缓冲区,因此您不应将全局变量设置为过大的值。相反,仅从那些需要运行大型查询的客户端中更改会话变量。有关不同操作期间内存使用的更多信息,请参阅第 8.12.4.1 节,“MySQL 如何使用内存”。有关多范围读取优化的信息,请参阅 第 8.2.1.10 节,“多范围读取优化”。
-
命令行格式 --require-secure-transport[={OFF|ON}]
系统变量 require_secure_transport
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
客户端与服务器的连接是否需要使用某种形式的安全传输。启用此变量后,服务器仅允许使用 TLS/SSL 加密的 TCP/IP 连接,或使用套接字文件(在 Unix 上)或共享内存(在 Windows 上)的连接。服务器拒绝不安全的连接尝试,这些尝试会因
ER_SECURE_TRANSPORT_REQUIRED
错误而失败。此功能补充了优先考虑的每个帐户的 SSL 要求。例如,如果一个帐户是用 定义的
REQUIRE SSL
,启用require_secure_transport
后就无法使用该帐户使用 Unix 套接字文件进行连接。服务器可能没有可用的安全传输。例如,如果在未指定任何 SSL 证书或密钥文件且
shared_memory
禁用系统变量的情况下启动,则 Windows 上的服务器不支持安全传输。在这些情况下,尝试require_secure_transport
在启动时启用会导致服务器将消息写入错误日志并退出。尝试在运行时启用该变量失败并出现ER_NO_SECURE_TRANSPORTS_CONFIGURED
错误。另请参阅将加密连接配置为强制性。
-
命令行格式 --secure-auth[={OFF|ON}]
弃用 是的 系统变量 secure_auth
范围 全球的 动态的 是的 类型 布尔值 默认值 ON
有效值 ON
如果启用此变量,则服务器会阻止尝试使用以旧(4.1 之前)格式存储密码的帐户的客户端连接。启用此变量以防止所有使用旧格式的密码(因此通过网络进行不安全的通信)。
此变量已弃用;希望在未来的 MySQL 版本中将其删除。它始终处于启用状态,尝试禁用它会产生错误。
如果启用此变量并且特权表采用 4.1 之前的格式,则服务器启动会失败并出现错误。请参阅 第 6.4.1.3 节,“从 4.1 版之前的密码散列和 mysql_old_password 插件迁移”。
笔记使用 pre-4.1 哈希方法的密码不如使用本机密码哈希方法的密码安全,应避免使用。4.1 之前的密码已弃用,MySQL 5.7.5 中删除了对它们的支持。有关帐户升级说明,请参阅 第 6.4.1.3 节,“从 4.1 版之前的密码哈希和 mysql_old_password 插件迁移”。
-
命令行格式 --secure-file-priv=dir_name
系统变量 secure_file_priv
范围 全球的 动态的 不 类型 细绳 默认值 platform specific
有效值 empty string
dirname
NULL
该变量用于限制数据导入和导出操作的影响,例如
LOAD DATA
andSELECT ... INTO OUTFILE
语句和LOAD_FILE()
函数执行的操作。这些操作只允许有FILE
权限的用户进行。secure_file_priv
可以设置如下:如果为空,则变量无效。这不是一个安全的设置。
如果设置为目录名称,则服务器将导入和导出操作限制为仅使用该目录中的文件。该目录必须存在;服务器不会创建它。
如果设置为
NULL
,服务器将禁用导入和导出操作。
默认值是特定于平台的,取决于CMake选项的值,如下表所示。如果您从源代码构建, 要明确指定默认 值,请使用CMake选项。
INSTALL_LAYOUT
secure_file_priv
INSTALL_SECURE_FILE_PRIVDIR
INSTALL_LAYOUT
价值默认 secure_file_priv
值STANDALONE
,WIN
NULL
(>= MySQL 5.7.16),空 (< MySQL 5.7.16)DEB
,RPM
,SLES
,SVR4
/var/lib/mysql-files
否则 mysql-files
CMAKE_INSTALL_PREFIX
值以下要为嵌入式服务器 设置默认
secure_file_priv
值,请使用CMake选项。此选项的默认值为。libmysqld
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR
NULL
服务器
secure_file_priv
在启动时检查 的值,如果该值不安全,则将警告写入错误日志。非NULL
值如果为空,或者值为数据目录或其子目录,或者所有用户都可以访问的目录,则被认为是不安全的。如果secure_file_priv
设置为不存在的路径,则服务器将错误消息写入错误日志并退出。 -
命令行格式 --session-track-gtids=value
系统变量 session_track_gtids
范围 全局,会话 动态的 是的 类型 枚举 默认值 OFF
有效值 OFF
OWN_GTID
ALL_GTIDS
控制服务器是否将 GTID 返回给客户端,使客户端能够使用它们来跟踪服务器状态。根据变量值,在执行每个事务结束时,服务器的 GTID 被捕获并作为确认的一部分返回给客户端。的可能值
session_track_gtids
如下:OFF
: 服务器不向客户端返回 GTID。这是默认值。OWN_GTID
:服务器返回自上次确认以来此客户端在其当前会话中成功提交的所有事务的 GTID。通常,这是最后提交的事务的单个 GTID,但如果单个客户端请求导致多个事务,则服务器返回包含所有相关 GTID 的 GTID 集。ALL_GTIDS
:服务器返回其gtid_executed
系统变量的全局值,它在事务成功提交后的某个时间点读取该值。除了刚刚提交的事务的 GTID 之外,此 GTID 集还包括任何客户端在服务器上提交的所有事务,并且可以包括在提交当前确认的事务之后提交的事务。
session_track_gtids
不能在事务上下文中设置。有关会话状态跟踪的更多信息,请参阅 第 5.1.15 节,“客户端会话状态的服务器跟踪”。
-
命令行格式 --session-track-schema[={OFF|ON}]
系统变量 session_track_schema
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
控制服务器是否跟踪在当前会话中设置默认架构(数据库)并通知客户端使架构名称可用。
如果启用了架构名称跟踪器,则每次设置默认架构时都会发出名称通知,即使新架构名称与旧架构名称相同也是如此。
有关会话状态跟踪的更多信息,请参阅 第 5.1.15 节,“客户端会话状态的服务器跟踪”。
-
命令行格式 --session-track-state-change[={OFF|ON}]
系统变量 session_track_state_change
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
控制服务器是否跟踪当前会话状态的变化,并在状态变化发生时通知客户端。可以报告客户端会话状态的这些属性的变化:
默认架构(数据库)。
系统变量的会话特定值。
用户定义的变量。
临时表。
准备好的陈述。
如果启用了会话状态跟踪器,则每次涉及跟踪的会话属性的更改都会发出通知,即使新属性值与旧属性值相同也是如此。例如,将用户定义的变量设置为其当前值会导致通知。
该
session_track_state_change
变量仅控制更改发生时间的通知,而不控制更改内容。例如,当设置默认模式或分配跟踪会话系统变量时会发生状态更改通知,但通知不包括模式名称或变量值。要接收架构名称或会话系统变量值的通知,请分别使用session_track_schema
或session_track_system_variables
系统变量。笔记给自己赋值
session_track_state_change
不被认为是状态变化,也不会这样报告。但是,如果它的名称列在 的值中,则对它的session_track_system_variables
任何赋值都会导致通知新值。有关会话状态跟踪的更多信息,请参阅 第 5.1.15 节,“客户端会话状态的服务器跟踪”。
session_track_system_variables
命令行格式 --session-track-system-variables=#
系统变量 session_track_system_variables
范围 全局,会话 动态的 是的 类型 细绳 默认值 time_zone, autocommit, character_set_client, character_set_results, character_set_connection
控制服务器是否跟踪对会话系统变量的分配并通知客户端每个分配变量的名称和值。变量值是一个以逗号分隔的变量列表,用于跟踪分配。默认情况下,为
time_zone
、autocommit
、character_set_client
、character_set_results
和 启用通知character_set_connection
。(后三个变量是受 影响的变量SET NAMES
。)特殊值
*
使服务器跟踪对所有会话变量的分配。如果给定,这个值必须由它自己指定,没有特定的系统变量名。要禁用会话变量分配通知,请设置
session_track_system_variables
为空字符串。如果启用了会话系统变量跟踪,则对跟踪的会话变量的所有赋值都会发出通知,即使新值与旧值相同。
有关会话状态跟踪的更多信息,请参阅 第 5.1.15 节,“客户端会话状态的服务器跟踪”。
session_track_transaction_info
命令行格式 --session-track-transaction-info=value
系统变量 session_track_transaction_info
范围 全局,会话 动态的 是的 类型 枚举 默认值 OFF
有效值 OFF
STATE
CHARACTERISTICS
控制服务器是否跟踪当前会话中事务的状态和特征,并通知客户端提供此信息。这些
session_track_transaction_info
值是允许的:OFF
:禁用事务状态跟踪。这是默认值。STATE
:启用交易状态跟踪而不跟踪特征。状态跟踪使客户端能够确定事务是否正在进行以及是否可以将其移动到不同的会话而不被回滚。CHARACTERISTICS
:启用事务状态跟踪,包括特征跟踪。特征跟踪使客户端能够确定如何在另一个会话中重新启动事务,以便它具有与原始会话中相同的特征。以下特征与此目的相关:ISOLATION LEVEL READ ONLY READ WRITE WITH CONSISTENT SNAPSHOT
为了让客户端安全地将事务重新定位到另一个会话,它不仅必须跟踪事务状态,还必须跟踪事务特征。此外,客户端必须跟踪
transaction_isolation
和transaction_read_only
系统变量以正确确定会话默认值。(要跟踪这些变量,请将它们列在session_track_system_variables
系统变量的值中。)有关会话状态跟踪的更多信息,请参阅 第 5.1.15 节,“客户端会话状态的服务器跟踪”。
sha256_password_auto_generate_rsa_keys
命令行格式 --sha256-password-auto-generate-rsa-keys[={OFF|ON}]
系统变量 sha256_password_auto_generate_rsa_keys
范围 全球的 动态的 不 类型 布尔值 默认值 ON
如果服务器是使用 OpenSSL 编译的,则此变量可用(请参阅第 6.3.4 节,“SSL 库相关功能”)。它控制服务器是否在数据目录中自动生成 RSA 私钥/公钥对文件(如果它们尚不存在)。
在启动时,如果启用了系统变量,服务器会自动在数据目录中生成 RSA 私钥/公钥对文件
sha256_password_auto_generate_rsa_keys
,没有指定 RSA 选项,并且数据目录中缺少 RSA 文件。这些文件允许使用 RSA 通过未加密的连接为sha256_password
插件验证的帐户安全交换密码;请参阅 第 6.4.1.5 节,“SHA-256 可插入身份验证”。有关 RSA 文件自动生成的更多信息,包括文件名和特征,请参阅 第 6.3.3.1 节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”
系统变量是相关的
auto_generate_certs
,但控制使用 SSL 进行安全连接所需的 SSL 证书和密钥文件的自动生成。sha256_password_private_key_path
命令行格式 --sha256-password-private-key-path=file_name
系统变量 sha256_password_private_key_path
范围 全球的 动态的 不 类型 文件名 默认值 private_key.pem
如果 MySQL 是使用 OpenSSL 编译的,则此变量可用(请参阅第 6.3.4 节,“SSL 库相关功能”)。
sha256_password
它的值是身份验证插件的 RSA 私钥文件的路径名 。如果文件被命名为相对路径,则它被解释为相对于服务器数据目录。该文件必须是 PEM 格式。重要的因为这个文件存储了一个私钥,所以应该限制它的访问方式,只有MySQL服务器才能读取它。
有关 的信息
sha256_password
,请参阅 第 6.4.1.5 节,“SHA-256 可插入身份验证”。-
命令行格式 --sha256-password-proxy-users[={OFF|ON}]
系统变量 sha256_password_proxy_users
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
该变量控制
sha256_password
内置认证插件是否支持代理用户。check_proxy_users
除非启用系统变量,否则它不起作用 。有关用户代理的信息,请参阅 第 6.2.14 节,“代理用户”。 sha256_password_public_key_path
命令行格式 --sha256-password-public-key-path=file_name
系统变量 sha256_password_public_key_path
范围 全球的 动态的 不 类型 文件名 默认值 public_key.pem
如果 MySQL 是使用 OpenSSL 编译的,则此变量可用(请参阅第 6.3.4 节,“SSL 库相关功能”)。
sha256_password
它的值是身份验证插件的 RSA 公钥文件的路径名 。如果文件被命名为相对路径,则它被解释为相对于服务器数据目录。该文件必须是 PEM 格式。因为这个文件存储了一个公钥,副本可以自由分发给客户端用户。(使用 RSA 密码加密连接到服务器时显式指定公钥的客户端必须使用与服务器使用的公钥相同的公钥。)有关的信息
sha256_password
,包括有关客户端如何指定 RSA 公钥的信息,请参阅第 6.4.1.5 节,“SHA-256 可插入身份验证”。-
命令行格式 --shared-memory[={OFF|ON}]
系统变量 shared_memory
范围 全球的 动态的 不 特定于平台 视窗 类型 布尔值 默认值 OFF
(仅限 Windows。)服务器是否允许共享内存连接。
-
命令行格式 --shared-memory-base-name=name
系统变量 shared_memory_base_name
范围 全球的 动态的 不 特定于平台 视窗 类型 细绳 默认值 MYSQL
(仅限 Windows。)用于共享内存连接的共享内存的名称。这在一台物理机器上运行多个 MySQL 实例时很有用。默认名称是
MYSQL
. 名称区分大小写。仅当服务器启动时
shared_memory
启用了支持共享内存连接的系统变量时,此变量才适用。 -
命令行格式 --show-compatibility-56[={OFF|ON}]
弃用 是的 系统变量 show_compatibility_56
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
INFORMATION_SCHEMA
具有包含系统和状态变量信息 的表(请参阅第 24.3.11 节,“INFORMATIONSCHEMA GLOBAL_VARIABLES 和 SESSION_VARIABLES 表”,以及 第 24.3.10 节,“INFORMATIONSCHEMA GLOBAL_STATUS 和 SESSION_STATUS 表”)。从 MySQL 5.7.6 开始,性能模式还包含系统和状态变量表(请参阅 第 25.12.13 节,“性能模式系统变量表”和 第 25.12.14 节,“性能模式状态变量表”)。性能模式表旨在取代INFORMATION_SCHEMA
表,从 MySQL 5.7.6 开始弃用,并在 MySQL 8.0 中删除。有关从
INFORMATION_SCHEMA
表迁移到性能模式表的建议,请参阅 第 25.20 节,“迁移到性能模式系统和状态变量表”。为了协助迁移,您可以使用show_compatibility_56
系统变量,这会影响是否启用 MySQL 5.6 兼容性,INFORMATION_SCHEMA
以及 Performance Schema 表SHOW VARIABLES
以及SHOW STATUS
语句提供的系统和状态变量信息的方式。笔记show_compatibility_56
已弃用,因为它的唯一目的是允许控制已弃用的系统和状态变量信息源,您可以期望在未来的 MySQL 版本中将其删除。当这些来源被移除时,show_compatibility_56
它就不再有任何用途,你也可以预期它也会被移除。以下讨论描述了 的影响
show_compatibility_56
:为了更好地理解,强烈建议您还阅读以下部分:
show_compatibility_56 效果概述
系统变量影响与系统和状态变量有关的服务器操作的
show_compatibility_56
这些方面:SHOW VARIABLES
和SHOW STATUS
语句中 可用的信息INFORMATION_SCHEMA
提供系统和状态变量信息 的表中的可用 信息提供系统和状态变量信息的性能模式表中可用的信息
FLUSH STATUS
语句对状态变量 的影响
此列表总结了 的效果
show_compatibility_56
,稍后将提供更多详细信息:时 ,启用与 MySQL 5.6 的兼容性
show_compatibility_56
。ON
较旧的变量信息源(SHOW
语句、INFORMATION_SCHEMA
表)产生与 MySQL 5.6 中相同的输出。时 ,禁用与 MySQL 5.6 的兼容性
show_compatibility_56
。OFF
从INFORMATION_SCHEMA
表中选择会产生错误,因为 Performance Schema 表旨在替换它们。这些INFORMATION_SCHEMA
表从 MySQL 5.7.6 开始被弃用,并在 MySQL 8.0 中被删除。要获取系统和状态变量信息
show_compatibility_56=OFF
,请使用 Performance Schema 表或SHOW
语句。笔记当
show_compatibility_56=OFF
、SHOW VARIABLES
和SHOW STATUS
语句显示 Performance Schemaglobal_variables
、session_variables
、global_status
和session_status
表中的行。从 MySQL 5.7.9 开始,这些表在没有
SELECT
特权的情况下是世界可读和可访问的,这意味着SELECT
也不需要使用这些SHOW
语句。在 MySQL 5.7.9 之前,SELECT
需要权限才能直接或通过SHOW
语句间接访问这些 Performance Schema 表。几个 状态变量从 when is 开始可用。什么 时候 ,其中一些变量没有暴露给. 它们提供的信息在与复制相关的性能模式表中可用,如后所述。
Slave_
xxx
SHOW STATUS
show_compatibility_56
ON
show_compatibility_56
OFF
SHOW STATUS
show_compatibility_56
@@
使用符号 对系统变量访问没有影响 : , , 。@@GLOBAL.
var_name
@@SESSION.
var_name
@@
var_name
show_compatibility_56
对嵌入式服务器没有影响,它在所有情况下都会产生 5.6 兼容的输出。
以下描述详细说明了设置
show_compatibility_56
为ON
或OFF
在应用此变量的上下文中的效果。show_compatibility_56 对 SHOW 语句的影响
ON
:MySQL 5.6 输出。OFF
:输出显示性能模式global_variables
表中的行。
SHOW [SESSION | LOCAL] VARIABLES
陈述:ON
:MySQL 5.6 输出。OFF
:输出显示性能模式session_variables
表中的行。(在 MySQL 5.7.6 和 5.7.7 中,OFF
输出不完全反映对当前会话有效的所有系统变量值;它不包括没有会话对应项的全局变量的行。这在 MySQL 5.7.8 中得到纠正。)
ON
:MySQL 5.6 输出。OFF
:输出显示 Performance Schemaglobal_status
表中的行,以及 语句执行计数器。Com_
xxx
OFF
与输出不同,输出不包含没有全局对应项的会话变量的行ON
。
SHOW [SESSION | LOCAL] STATUS
陈述:ON
:MySQL 5.6 输出。OFF
:输出显示 Performance Schemasession_status
表中的行,以及 语句执行计数器。(在 MySQL 5.7.6 和 5.7.7 中, 输出不完全反映对当前会话有效的所有状态变量值;它不包括没有会话对应项的全局变量的行。这在 MySQL 5.7.8 中得到纠正。)Com_
xxx
OFF
在 MySQL 5.7.6 和 5.7.7 中,对于
SHOW
刚才描述的每个语句,子句的使用 会在 when和错误 when 时WHERE
产生警告 。(这适用于 未优化掉的子句。例如,是平凡的,被优化掉,因此不会产生警告或错误。)从 MySQL 5.7.8 开始不会发生此行为; 与之前的 5.7.6 一样受支持。show_compatibility_56=ON
show_compatibility_56=OFF
WHERE
WHERE 1
WHERE
show_compatibility_56 对 INFORMATION_SCHEMA 表的影响
INFORMATION_SCHEMA
表格(GLOBAL_VARIABLES
、SESSION_VARIABLES
、GLOBAL_STATUS
和SESSION_STATUS
):ON
:MySQL 5.6 输出,带有弃用警告。OFF
: 从这些表中选择会产生错误。(在 5.7.9 之前,从这些表中选择不会产生任何输出,并带有弃用警告。)
show_compatibility_56 对性能模式表的影响
Performance Schema 系统变量表:
OFF
:global_variables
:仅限全局系统变量。session_variables
:对当前会话有效的系统变量:每个会话变量一行,每个没有会话对应项的全局变量一行。variables_by_thread
:仅限会话系统变量,用于每个活动会话。
ON
: 与 相同的输出OFF
。(在 5.7.8 之前,这些表不产生任何输出。)
性能模式状态变量表:
OFF
:global_status
:仅限全局状态变量。session_status
:影响当前会话的状态变量:每个会话变量一行,每个没有会话对应项的全局变量一行。status_by_account
仅会话状态变量,按帐户聚合。status_by_host
:仅会话状态变量,按主机名聚合。status_by_thread
:仅限会话状态变量,用于每个活动会话。status_by_user
:仅会话状态变量,按用户名聚合。
Performance Schema 不收集 状态变量表中状态变量的统计信息。要获取全局和每会话语句执行计数,请分别使用 和 表。
Com_
xxx
events_statements_summary_global_by_event_name
events_statements_summary_by_thread_by_event_name
ON
: 与 相同的输出OFF
。(在 5.7.9 之前,这些表不产生任何输出。)
show_compatibility_56 对从站状态变量的影响
副本状态变量:
ON
:几个 状态变量可从 .Slave_
xxx
SHOW STATUS
OFF
:其中一些副本变量未暴露给SHOW STATUS
Performance Schema 状态变量表。它们提供的信息在与复制相关的性能模式表中可用。下表显示了哪些 状态变量 在 Performance Schema 复制表中变得不可用及其位置。Slave_
xxx
SHOW STATUS
状态变量 性能模式位置 Slave_heartbeat_period
replication_connection_configuration
表、HEARTBEAT_INTERVAL
列Slave_last_heartbeat
replication_connection_status
表、LAST_HEARTBEAT_TIMESTAMP
列Slave_received_heartbeats
replication_connection_status
表、COUNT_RECEIVED_HEARTBEATS
列Slave_retried_transactions
replication_applier_status
表、COUNT_TRANSACTIONS_RETRIES
列Slave_running
replication_connection_status
和replication_applier_status
表格,SERVICE_STATE
列
show_compatibility_56 对 FLUSH STATUS 的影响
FLUSH STATUS
陈述:ON
:此语句产生 MySQL 5.6 行为。它将当前线程的会话状态变量值添加到全局值并将会话值重置为零。一些全局变量也可能被重置为零。它还将密钥缓存(默认和命名)的计数器重置为零,并设置Max_used_connections
为当前打开的连接数。OFF
:此语句将所有活动会话的会话状态添加到全局状态变量,重置所有活动会话的状态,并重置从断开连接的会话聚合的帐户、主机和用户状态值。
-
命令行格式 --show-create-table-verbosity[={OFF|ON}]
介绍 5.7.22 系统变量 show_create_table_verbosity
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
SHOW CREATE TABLE
ROW_FORMAT
如果行格式是默认格式,通常不显示表格选项。启用此变量会导致SHOW CREATE TABLE
显示ROW_FORMAT
,无论它是否为默认格式。 -
命令行格式 --show-old-temporals[={OFF|ON}]
弃用 是的 系统变量 show_old_temporals
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
输出是否
SHOW CREATE TABLE
包含注释以标记时间列被发现为 pre-5.6.4 格式(TIME
、DATETIME
和TIMESTAMP
不支持小数秒精度的列)。默认情况下禁用此变量。如果启用,SHOW CREATE TABLE
输出如下所示:CREATE TABLE `mytbl` ( `ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP, `dt` datetime /* 5.5 binary format */ DEFAULT NULL, `t` time /* 5.5 binary format */ DEFAULT NULL ) DEFAULT CHARSET=latin1
COLUMN_TYPE
表列的 输出INFORMATION_SCHEMA.COLUMNS
受到类似的影响。此变量已弃用;希望在未来的 MySQL 版本中将其删除。
-
命令行格式 --skip-external-locking[={OFF|ON}]
系统变量 skip_external_locking
范围 全球的 动态的 不 类型 布尔值 默认值 ON
这是
OFF
如果mysqld 使用外部锁定(系统锁定),ON
如果外部锁定被禁用。这仅影响MyISAM
表访问。该变量由
--external-locking
or--skip-external-locking
选项设置。默认情况下禁用外部锁定。外部锁定仅影响
MyISAM
表访问。有关更多信息,包括可以和不能使用它的条件,请参阅第 8.11.5 节,“外部锁定”。 -
命令行格式 --skip-name-resolve[={OFF|ON}]
系统变量 skip_name_resolve
范围 全球的 动态的 不 类型 布尔值 默认值 OFF
检查客户端连接时是否解析主机名。如果这个变量是
OFF
, mysqld在检查客户端连接时解析主机名。如果是ON
, mysqld只使用 IP 号码;在这种情况下,Host
授权表中的所有列值都必须是 IP 地址。请参阅第 5.1.11.2 节,“DNS 查找和主机缓存”。根据系统的网络配置和
Host
帐户的值,客户端可能需要使用显式--host
选项进行连接,例如--host=127.0.0.1
或--host=::1
。连接到主机的尝试
127.0.0.1
通常会解析为该localhost
帐户。但是,如果服务器在skip_name_resolve
启用的情况下运行,则会失败。如果您打算这样做,请确保存在可以接受连接的帐户。例如,为了能够root
使用--host=127.0.0.1
或 进行连接--host=::1
,请创建以下帐户:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password'; CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
-
命令行格式 --skip-networking[={OFF|ON}]
系统变量 skip_networking
范围 全球的 动态的 不 类型 布尔值 默认值 OFF
此变量控制服务器是否允许 TCP/IP 连接。默认情况下,它是禁用的(允许 TCP 连接)。如果启用,服务器只允许本地(非 TCP/IP)连接,并且与 mysqld的所有交互都必须使用命名管道或共享内存(在 Windows 上)或 Unix 套接字文件(在 Unix 上)进行。对于只允许本地客户端的系统,强烈建议使用此选项。请参阅第 5.1.11.2 节,“DNS 查找和主机缓存”。
-
命令行格式 --skip-show-database
系统变量 skip_show_database
范围 全球的 动态的 不 类型 布尔值 默认值 OFF
这可以防止人们在
SHOW DATABASES
没有SHOW DATABASES
权限的情况下使用该语句。如果您担心用户能够看到属于其他用户的数据库,这可以提高安全性。其效果取决于SHOW DATABASES
权限:如果变量值为ON
,则该SHOW DATABASES
语句仅允许具有SHOW DATABASES
权限的用户使用,并且该语句显示所有数据库名称。如果值为OFF
, 则允许所有用户使用,但仅显示用户对其具有或其他权限SHOW DATABASES
的那些数据库的名称。SHOW DATABASES
警告因为全局权限被认为是所有数据库的权限,所以任何全局权限都使用户能够 通过检查表
SHOW DATABASES
或通过检查INFORMATION_SCHEMA
SCHEMATA
表来查看所有数据库名称。 -
命令行格式 --slow-launch-time=#
系统变量 slow_launch_time
范围 全球的 动态的 是的 类型 整数 默认值 2
最小值 0
最大值 31536000
单元 秒 如果创建线程花费的时间超过此秒数,则服务器会递增
Slow_launch_threads
状态变量。 -
命令行格式 --slow-query-log[={OFF|ON}]
系统变量 slow_query_log
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
是否开启慢查询日志。该值可以是 0(或
OFF
)以禁用日志或 1(或ON
)以启用日志。日志输出的目的地由log_output
系统变量控制;如果该值为NONE
,则即使启用了日志,也不会写入任何日志条目。“慢”是由
long_query_time
变量的值决定的。请参阅 第 5.4.5 节,“慢速查询日志”。 -
命令行格式 --slow-query-log-file=file_name
系统变量 slow_query_log_file
范围 全球的 动态的 是的 类型 文件名 默认值 host_name-slow.log
慢查询日志文件的名称。默认值为
,但可以使用host_name
-slow.log--slow_query_log_file
选项更改初始值。 -
命令行格式 --socket={file_name|pipe_name}
系统变量 socket
范围 全球的 动态的 不 类型 细绳 默认值 (Windows) MySQL
默认值(其他) /tmp/mysql.sock
在 Unix 平台上,此变量是用于本地客户端连接的套接字文件的名称。默认值为
/tmp/mysql.sock
。(对于某些分发格式,目录可能不同,例如/var/lib/mysql
RPM。)在 Windows 上,此变量是用于本地客户端连接的命名管道的名称。默认值为
MySQL
(不区分大小写)。 -
命令行格式 --sort-buffer-size=#
系统变量 sort_buffer_size
范围 全局,会话 动态的 是的 类型 整数 默认值 262144
最小值 32768
最大值 (Windows) 4294967295
最大值(其他,64 位平台) 18446744073709551615
最大值(其他,32 位平台) 4294967295
单元 字节 每个必须执行排序的会话都会分配一个此大小的缓冲区。
sort_buffer_size
不特定于任何存储引擎,并以一般方式应用于优化。至少该sort_buffer_size
值必须足够大以容纳排序缓冲区中的十五个元组。此外,增加 的值max_sort_length
可能需要增加 的值sort_buffer_size
。有关详细信息,请参阅第 8.2.1.14 节,“ORDER BY 优化”如果您看到
Sort_merge_passes
每秒SHOW GLOBAL STATUS
输出很多,您可以考虑增加该sort_buffer_size
值以加速ORDER BY
或GROUP BY
无法通过查询优化或改进索引改进的操作。优化器会尝试计算出需要多少空间,但可以分配更多空间,直至达到限制。将其设置得比全局要求的大会减慢大多数排序查询的速度。最好将其作为会话设置来增加,并且仅适用于需要更大尺寸的会话。在 Linux 上,有 256KB 和 2MB 的阈值,其中较大的值可能会显着减慢内存分配,因此您应该考虑保持在这些值之一以下。尝试为您的工作负载找到最佳价值。请参阅 第 B.3.3.5 节,“MySQL 存储临时文件的位置”。
最大允许设置为
sort_buffer_size
4GB−1。64 位平台允许更大的值(64 位 Windows 除外,大值被截断为 4GB-1 并发出警告)。 -
系统变量 sql_auto_is_null
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
如果启用此变量,则在成功插入自动生成的
AUTO_INCREMENT
值的语句之后,您可以通过发出以下形式的语句来找到该值:SELECT * FROM tbl_name WHERE auto_col IS NULL
如果该语句返回一行,则返回的值与您调用该
LAST_INSERT_ID()
函数时的值相同。有关详细信息,包括多行插入后的返回值,请参阅第 12.16 节,“信息函数”。如果未AUTO_INCREMENT
成功插入任何值,则该SELECT
语句不返回任何行。AUTO_INCREMENT
使用 比较来 检索值的行为IS NULL
被一些 ODBC 程序使用,例如 Access。请参阅 获取自动增量值。可以通过设置sql_auto_is_null
为 禁用此行为OFF
。sql_auto_is_null
的默认 值为OFF
。 -
系统变量 sql_big_selects
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
如果设置为
OFF
,MySQL 将中止SELECT
执行可能需要很长时间的语句(即优化器估计已检查行数超过值的语句max_join_size
)。WHERE
当发出不建议的声明时,这很有用。新连接的默认值为ON
,它允许所有SELECT
语句。如果将
max_join_size
系统变量设置为 以外的值DEFAULT
,sql_big_selects
则设置为OFF
。 -
系统变量 sql_buffer_result
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
如果启用,则
sql_buffer_result
强制将SELECT
语句的结果放入临时表中。这有助于 MySQL 尽早释放表锁,并且在需要很长时间才能将结果发送到客户端的情况下非常有用。默认值为OFF
。 -
系统变量 sql_log_off
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
有效值 OFF
(启用日志记录)ON
(禁用日志记录)此变量控制是否为当前会话禁用记录到通用查询日志(假设通用查询日志本身已启用)。默认值为
OFF
(即启用日志记录)。要为当前会话禁用或启用常规查询日志记录,请将会话sql_log_off
变量设置为ON
或OFF
。设置这个系统变量的会话值是一个受限的操作。会话用户必须具有足以设置受限会话变量的权限。请参阅 第 5.1.8.1 节,“系统变量权限”。
-
命令行格式 --sql-mode=name
系统变量 sql_mode
范围 全局,会话 动态的 是的 类型 放 默认值 ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
有效值 ALLOW_INVALID_DATES
ANSI_QUOTES
ERROR_FOR_DIVISION_BY_ZERO
HIGH_NOT_PRECEDENCE
IGNORE_SPACE
NO_AUTO_CREATE_USER
NO_AUTO_VALUE_ON_ZERO
NO_BACKSLASH_ESCAPES
NO_DIR_IN_CREATE
NO_ENGINE_SUBSTITUTION
NO_FIELD_OPTIONS
NO_KEY_OPTIONS
NO_TABLE_OPTIONS
NO_UNSIGNED_SUBTRACTION
NO_ZERO_DATE
NO_ZERO_IN_DATE
ONLY_FULL_GROUP_BY
PAD_CHAR_TO_FULL_LENGTH
PIPES_AS_CONCAT
REAL_AS_FLOAT
STRICT_ALL_TABLES
STRICT_TRANS_TABLES
当前服务器的SQL模式,可以动态设置。有关详细信息,请参阅第 5.1.10 节,“服务器 SQL 模式”。
笔记MySQL 安装程序可能会在安装过程中配置 SQL 模式。如果 SQL 模式不同于默认模式或您期望的模式,请检查服务器在启动时读取的选项文件中的设置。
-
系统变量 sql_notes
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
如果启用(默认),
Note
级别增量warning_count
的诊断和服务器记录它们。如果禁用,Note
则诊断不会增加warning_count
并且服务器不会记录它们。mysqldump 包括禁用此变量的输出,以便重新加载转储文件不会对不影响重新加载操作完整性的事件产生警告。 -
系统变量 sql_quote_show_create
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
如果启用(默认),服务器会引用标识符
SHOW CREATE TABLE
和SHOW CREATE DATABASE
语句。如果禁用,则引用被禁用。默认情况下启用此选项,以便复制适用于需要引用的标识符。请参阅第 13.7.5.10 节,“SHOW CREATE TABLE 语句”和第 13.7.5.6 节,“SHOW CREATE DATABASE 语句”。 -
系统变量 sql_safe_updates
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
如果启用此变量,则 在子句或子句中不使用键的
UPDATE
语句DELETE
会产生错误。这使得在键未正确使用并且可能会更改或删除大量行的情况下捕获和 语句成为可能。默认值为 。WHERE
LIMIT
UPDATE
DELETE
OFF
对于mysql客户端,
sql_safe_updates
可以使用该--safe-updates
选项启用。有关详细信息,请参阅使用安全更新模式 (--safe-updates)。 -
系统变量 sql_select_limit
范围 全局,会话 动态的 是的 类型 整数 默认值 18446744073709551615
最小值 0
最大值 18446744073709551615
SELECT
从语句 返回的最大行数 。有关详细信息,请参阅使用安全更新模式 (--safe-updates)。新连接的默认值是服务器允许每个表的最大行数。典型的默认值为 (2 32 )−1 或 (2 64 )−1。如果您更改了限制,可以通过分配一个值来恢复默认值
DEFAULT
。如果 a
SELECT
有LIMIT
子句,则 theLIMIT
优先于 的值sql_select_limit
。 -
系统变量 sql_warnings
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
INSERT
如果出现警告, 此变量控制单行语句是否 生成信息字符串。默认值为OFF
。将值设置为ON
以生成信息字符串。 -
命令行格式 --ssl-ca=file_name
系统变量 ssl_ca
范围 全球的 动态的 不 类型 文件名 默认值 NULL
PEM 格式的证书颁发机构 (CA) 证书文件的路径名。该文件包含受信任的 SSL 证书颁发机构列表。
-
命令行格式 --ssl-capath=dir_name
系统变量 ssl_capath
范围 全球的 动态的 不 类型 目录名称 默认值 NULL
包含 PEM 格式的可信 SSL 证书颁发机构 (CA) 证书文件的目录的路径名。是否支持此功能取决于用于编译 MySQL 的 SSL 库;请参阅第 6.3.4 节,“SSL 库相关功能”。
-
命令行格式 --ssl-cert=file_name
系统变量 ssl_cert
范围 全球的 动态的 不 类型 文件名 默认值 NULL
PEM 格式的服务器 SSL 公钥证书文件的路径名。
如果服务器启动时
ssl_cert
设置为使用任何受限密码或密码类别的证书,则服务器启动时会禁用对加密连接的支持。有关密码限制的信息,请参阅 连接密码配置。 -
命令行格式 --ssl-cipher=name
系统变量 ssl_cipher
范围 全球的 动态的 不 类型 细绳 默认值 NULL
用于连接加密的允许密码列表。如果列表中的密码均不受支持,则加密连接不起作用。
为了最大的可移植性,密码列表应该是一个或多个密码名称的列表,用冒号分隔。OpenSSL 和 yaSSL 都可以理解这种格式。以下示例显示了两个用冒号分隔的密码名称:
[mysqld] ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"
OpenSSL 支持更灵活的语法来指定密码,如 https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html上的 OpenSSL 文档中所述。yaSSL 没有,因此对于使用 yaSSL 编译的 MySQL 发行版,尝试使用该扩展语法会失败。
有关 MySQL 支持哪些加密密码的信息,请参阅第 6.3.2 节,“加密连接 TLS 协议和密码”。
-
命令行格式 --ssl-crl=file_name
系统变量 ssl_crl
范围 全球的 动态的 不 类型 文件名 默认值 NULL
包含 PEM 格式的证书吊销列表的文件的路径名。对撤销列表功能的支持取决于用于编译 MySQL 的 SSL 库。请参阅 第 6.3.4 节,“SSL 库相关功能”。
-
命令行格式 --ssl-crlpath=dir_name
系统变量 ssl_crlpath
范围 全球的 动态的 不 类型 目录名称 默认值 NULL
包含 PEM 格式的证书吊销列表文件的目录的路径。对撤销列表功能的支持取决于用于编译 MySQL 的 SSL 库。请参阅第 6.3.4 节,“SSL 库相关功能”。
-
命令行格式 --ssl-key=file_name
系统变量 ssl_key
范围 全球的 动态的 不 类型 文件名 默认值 NULL
PEM 格式的服务器 SSL 私钥文件的路径名。为提高安全性,请使用 RSA 密钥大小至少为 2048 位的证书。
如果密钥文件受密码保护,服务器会提示用户输入密码。密码必须交互给出;它不能存储在文件中。如果密码不正确,程序将继续运行,就好像它无法读取密钥一样。
-
命令行格式 --stored-program-cache=#
系统变量 stored_program_cache
范围 全球的 动态的 是的 类型 整数 默认值 256
最小值 16
最大值 524288
为每个连接的缓存存储例程数设置软上限。这个变量的值是根据 MySQL 服务器分别为存储过程和存储函数维护的两个缓存中的存储例程的数量来指定的。
每当执行存储例程时,都会在解析例程中的第一条或顶级语句之前检查缓存大小;如果相同类型的例程(正在执行的存储过程或存储函数)的数量超过此变量指定的限制,则刷新相应的缓存并释放先前为缓存对象分配的内存。这允许安全地刷新缓存,即使在存储的例程之间存在依赖性时也是如此。
-
命令行格式 --super-read-only[={OFF|ON}]
系统变量 super_read_only
范围 全球的 动态的 是的 类型 布尔值 默认值 OFF
如果
read_only
启用了系统变量,则服务器不允许客户端更新,除非来自具有SUPER
特权的用户。如果super_read_only
还启用了系统变量,则服务器甚至禁止拥有SUPER
.read_only
有关只读模式的描述以及有关如何交互的信息,请参阅系统变量read_only
的super_read_only
描述 。启用时阻止的客户端更新
super_read_only
包括不一定显示为更新的操作,例如CREATE FUNCTION
(安装可加载功能)和INSTALL PLUGIN
。mysql
这些操作是被禁止的,因为它们涉及对系统数据库 中表的更改。复制源服务器上的更改
super_read_only
不会复制到副本服务器。该值可以独立于源上的设置在副本上设置。 -
命令行格式 --sync-frm[={OFF|ON}]
弃用 是的 系统变量 sync_frm
范围 全球的 动态的 是的 类型 布尔值 默认值 ON
如果此变量设置为 1,则在创建任何非临时表时,其
.frm
文件将同步到磁盘(使用fdatasync()
)。这速度较慢,但在发生碰撞时更安全。默认值为 1。此变量在 MySQL 5.7 中已弃用,并在 MySQL 8.0 中删除(当
.frm
文件过时时)。 -
系统变量 system_time_zone
范围 全球的 动态的 不 类型 细绳 服务器系统时区。当服务器开始执行时,它从机器默认值继承时区设置,可能由用于运行服务器或启动脚本的帐户环境修改。该值用于设置
system_time_zone
。要明确指定系统时区,请设置TZ
环境变量或使用 mysqld_safe脚本 的--timezone
选项 。system_time_zone
变量不同于time_zone
变量 。尽管它们可能具有相同的值,但后一个变量用于为每个连接的客户端初始化时区。请参阅第 5.1.13 节,“MySQL 服务器时区支持”。 -
命令行格式 --table-definition-cache=#
系统变量 table_definition_cache
范围 全球的 动态的 是的 类型 整数 默认值 -1
(表示自动调整大小;不要分配此文字值)最小值 400
最大值 524288
.frm
可以存储在表定义缓存中 的表定义(来自文件)的数量 。如果你使用大量的表,你可以创建一个大的表定义缓存来加速表的打开。与普通表缓存不同,表定义缓存占用的空间更少,并且不使用文件描述符。最小值为 400。默认值基于以下公式,上限为 2000:400 + (table_open_cache / 2)
对于
InnoDB
,该table_definition_cache
设置充当InnoDB
数据字典缓存中表实例数和一次可以打开的每个表文件表空间数的软限制。如果
InnoDB
数据字典缓存中的表实例数量超过table_definition_cache
限制,LRU 机制开始将表实例标记为逐出,并最终将它们从 InnoDB 数据字典缓存中删除。table_definition_cache
由于具有外键关系的表实例未放置在 LRU 列表中,因此 具有缓存元数据的打开表的数量可能会高于 限制。一次可以打开的 file-per-table 表空间的数量受
table_definition_cache
和innodb_open_files
设置的限制。如果设置了两个变量,则使用最高设置。如果两个变量均未table_definition_cache
设置,则使用具有更高默认值的设置。如果打开的表空间数超过table_definition_cache
or 定义的限制innodb_open_files
,LRU 机制将在 LRU 列表中搜索已完全刷新且当前未扩展的表空间文件。每次打开新表空间时都会执行此过程。仅关闭不活动的表空间。 -
命令行格式 --table-open-cache=#
系统变量 table_open_cache
范围 全球的 动态的 是的 类型 整数 默认值 2000
最小值 1
最大值 524288
所有线程的打开表数。增加这个值会增加mysqld需要的文件描述符的数量 。该变量的有效值是 的有效值 和 400 中的较大者;那是
open_files_limit
- 10 -
max_connections
/ 2
MAX( (open_files_limit - 10 - max_connections) / 2, 400 )
Opened_tables
您可以通过检查状态变量 来检查是否需要增加表缓存。如果 的值Opened_tables
很大并且您不FLUSH TABLES
经常使用(这只是强制关闭并重新打开所有表),那么您应该增加该table_open_cache
变量的值。有关表缓存的更多信息,请参阅 第 8.4.3.1 节,“MySQL 如何打开和关闭表”。 -
命令行格式 --table-open-cache-instances=#
系统变量 table_open_cache_instances
范围 全球的 动态的 不 类型 整数 默认值 16
最小值 1
最大值 64
打开的表缓存实例数。为了通过减少会话之间的争用来提高可伸缩性,可以将打开的表缓存划分为几个大小为
table_open_cache
/ 的较小缓存实例table_open_cache_instances
。一个会话只需要锁定一个实例就可以为 DML 语句访问它。这在实例之间分段缓存访问,允许在有许多会话访问表时使用缓存的操作具有更高的性能。(DDL 语句仍然需要锁定整个缓存,但此类语句的频率远低于 DML 语句。)对于通常使用 16 个或更多内核的系统,建议使用 8 或 16 的值。但是,如果您的表上有许多导致高内存负载的大型触发器,则默认设置
table_open_cache_instances
可能会导致过多的内存使用。在这种情况下,将其设置table_open_cache_instances
为 1 以限制内存使用会很有帮助。 -
命令行格式 --thread-cache-size=#
系统变量 thread_cache_size
范围 全球的 动态的 是的 类型 整数 默认值 -1
(表示自动调整大小;不要分配此文字值)最小值 0
最大值 16384
服务器应缓存多少线程以供重用。当客户端断开连接时,如果客户端的线程少于
thread_cache_size
线程,则将其放入缓存中。如果可能,通过重用从缓存中获取的线程来满足对线程的请求,并且只有当缓存为空时才会创建新线程。如果您有很多新连接,可以增加此变量以提高性能。通常,如果您有良好的线程实现,这不会提供显着的性能改进。但是,如果您的服务器每秒看到数百个连接,您通常应该设置thread_cache_size
足够高,以便大多数新连接使用缓存线程。Connections
通过检查和 status 变量之间的差异Threads_created
,您可以了解线程缓存的效率。有关详细信息,请参阅第 5.1.9 节,“服务器状态变量”。默认值基于以下公式,上限为 100:
8 + (max_connections / 100)
此变量对嵌入式服务器 (
libmysqld
) 没有影响,并且从 MySQL 5.7.2 开始在嵌入式服务器中不再可见。 -
命令行格式 --thread-handling=name
系统变量 thread_handling
范围 全球的 动态的 不 类型 枚举 默认值 one-thread-per-connection
有效值 no-threads
one-thread-per-connection
loaded-dynamically
服务器用于连接线程的线程处理模型。允许的值是
no-threads
(服务器使用单个线程处理一个连接),one-thread-per-connection
(服务器使用一个线程处理每个客户端连接)和loaded-dynamically
(由线程池插件在初始化时设置)。no-threads
对 Linux 下的调试很有用;参见 第 5.8 节,“调试 MySQL”。此变量对嵌入式服务器 (
libmysqld
) 没有影响,并且从 MySQL 5.7.2 开始在嵌入式服务器中不再可见。 -
命令行格式 --thread-pool-algorithm=#
系统变量 thread_pool_algorithm
范围 全球的 动态的 不 类型 整数 默认值 0
最小值 0
最大值 1
该变量控制线程池插件使用的算法:
值 0(默认值)使用保守的低并发算法,该算法经过最充分的测试并且已知会产生非常好的结果。
值为 1 会增加并发性并使用更积极的算法,该算法有时在最佳线程数上的性能提高 5–10%,但随着连接数的增加性能会下降。它的使用应被视为实验性的,不受支持。
此变量仅在启用线程池插件时可用。请参阅第 5.5.3 节,“MySQL 企业线程池”。
thread_pool_high_priority_connection
命令行格式 --thread-pool-high-priority-connection=#
系统变量 thread_pool_high_priority_connection
范围 全局,会话 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 1
此变量会影响新语句在执行前的排队。如果该值为 0(false,默认值),语句队列将同时使用低优先级和高优先级队列。如果值为 1 (true),排队的语句总是进入高优先级队列。
此变量仅在启用线程池插件时可用。请参阅第 5.5.3 节,“MySQL 企业线程池”。
thread_pool_max_unused_threads
命令行格式 --thread-pool-max-unused-threads=#
系统变量 thread_pool_max_unused_threads
范围 全球的 动态的 是的 类型 整数 默认值 0
最小值 0
最大值 4096
线程池中允许的最大未使用线程数。这个变量可以限制休眠线程使用的内存量。
值 0(默认值)表示对休眠线程的数量没有限制。
N
where的值N
大于 0 意味着 1 个消费者线程和N
−1 个保留线程。在这种情况下,如果线程准备休眠但休眠线程数已经达到最大值,则线程退出而不是进入休眠状态。休眠线程要么作为消费者线程休眠,要么作为保留线程休眠。线程池允许一个线程在休眠时作为消费者线程。如果一个线程进入休眠状态并且没有现有的消费者线程,它会作为消费者线程休眠。当必须唤醒一个线程时,如果有消费者线程,则选择一个。只有当没有消费者线程可以唤醒时,才会选择保留线程。
此变量仅在启用线程池插件时可用。请参阅第 5.5.3 节,“MySQL 企业线程池”。
-
命令行格式 --thread-pool-prio-kickup-timer=#
系统变量 thread_pool_prio_kickup_timer
范围 全球的 动态的 是的 类型 整数 默认值 1000
最小值 0
最大值 4294967294
单元 毫秒 该变量影响在低优先级队列中等待执行的语句。该值是等待语句移动到高优先级队列之前的毫秒数。默认值为 1000(1 秒)。
此变量仅在启用线程池插件时可用。请参阅第 5.5.3 节,“MySQL 企业线程池”。
-
命令行格式 --thread-pool-size=#
系统变量 thread_pool_size
范围 全球的 动态的 不 类型 整数 默认值 16
最小值 1
最大值 64
线程池中线程组的数量。这是控制线程池性能的最重要参数。它影响可以同时执行多少条语句。如果指定了允许值范围之外的值,则不会加载线程池插件,并且服务器会将消息写入错误日志。
此变量仅在启用线程池插件时可用。请参阅第 5.5.3 节,“MySQL 企业线程池”。
-
命令行格式 --thread-pool-stall-limit=#
系统变量 thread_pool_stall_limit
范围 全球的 动态的 是的 类型 整数 默认值 6
最小值 4
最大值 600
单元 毫秒 * 10 该变量影响执行语句。该值是语句开始执行后必须完成的时间,然后定义为停止,此时线程池允许线程组开始执行另一个语句。该值以 10 毫秒为单位测量,因此默认值 6 表示 60 毫秒。短等待值允许线程更快地启动。短值也能更好地避免死锁情况。长时间等待值对于包含长时间运行的语句的工作负载很有用,以避免在当前语句执行时启动太多新语句。
此变量仅在启用线程池插件时可用。请参阅第 5.5.3 节,“MySQL 企业线程池”。
-
命令行格式 --thread-stack=#
系统变量 thread_stack
范围 全球的 动态的 不 类型 整数 默认值(64 位平台) 262144
默认值(32 位平台) 196608
最小值 131072
最大值(64 位平台) 18446744073709550592
最大值(32 位平台) 4294966272
单元 字节 块大小 1024
每个线程的堆栈大小。默认值对于正常操作来说足够大。如果线程堆栈大小太小,它会限制服务器可以处理的 SQL 语句的复杂性、存储过程的递归深度以及其他消耗内存的操作。
块大小为 1024。在存储系统变量的值之前,MySQL 服务器会将不是块大小精确倍数的值向下舍入为块大小的下一个较低倍数。解析器允许值最大为平台的最大无符号整数值(对于 32 位系统为 4294967295 或 2 32 -1,对于 64 位系统为 18446744073709551615 或 2 64 -1),但实际最大值比块大小小.
此变量未使用。它已被弃用并在 MySQL 8.0 中被删除。
-
系统变量 time_zone
范围 全局,会话 动态的 是的 类型 细绳 默认值 SYSTEM
最小值 -12:59
最大值 +13:00
当前时区。此变量用于为每个连接的客户端初始化时区。默认情况下,this 的初始值为
'SYSTEM'
(这意味着“使用”的值system_time_zone
)。该值可以在服务器启动时使用该--default-time-zone
选项明确指定。请参阅第 5.1.13 节,“MySQL 服务器时区支持”。笔记如果设置为
SYSTEM
,则每个需要时区计算的 MySQL 函数调用都会调用系统库来确定当前系统时区。此调用可能受全局互斥锁保护,从而导致争用。 -
系统变量 timestamp
范围 会议 动态的 是的 类型 数字 默认值 UNIX_TIMESTAMP()
最小值 1
最大值 2147483647
为这个客户设置时间。如果您使用二进制日志来恢复行,这将用于获取原始时间戳。
timestamp_value
应该是 Unix 纪元时间戳(类似于 返回的UNIX_TIMESTAMP()
值,而不是格式中的值)或 .'
YYYY-MM-DD hh:mm:ss
'DEFAULT
设置
timestamp
为常量值会导致它保留该值,直到再次更改为止。设置timestamp
为DEFAULT
使其值为访问时的当前日期和时间。最大值对应于'2038-01-19 03:14:07'
UTC,与TIMESTAMP
数据类型相同。timestamp
是一个DOUBLE
而不是BIGINT
因为它的值包括微秒部分。SET timestamp
影响由NOW()
但不由 返回的值SYSDATE()
。这意味着二进制日志中的时间戳设置对SYSDATE()
. 可以使用--sysdate-is-now
选项启动服务器以SYSDATE()
使其成为 的同义词NOW()
,在这种情况下SET timestamp
会影响两个功能。 -
命令行格式 --tls-version=protocol_list
介绍 5.7.10 系统变量 tls_version
范围 全球的 动态的 不 类型 细绳 默认值 (≥ 5.7.28) TLSv1,TLSv1.1,TLSv1.2
默认值(≤ 5.7.27) TLSv1,TLSv1.1,TLSv1.2
(OpenSSL)TLSv1,TLSv1.1
(yaSSL)服务器允许哪些协议用于加密连接。该值是一个以逗号分隔的列表,其中包含一个或多个协议版本。可以为此变量命名的协议取决于用于编译 MySQL 的 SSL 库。应选择允许的协议,例如不要在列表中留下 “漏洞”。有关详细信息,请参阅 第 6.3.2 节,“加密连接 TLS 协议和密码”。
笔记从 MySQL 5.7.35 开始,TLSv1 和 TLSv1.1 连接协议已弃用,并且在未来的 MySQL 版本中将删除对它们的支持。请参阅 弃用的 TLS 协议。
-
命令行格式 --tmp-table-size=#
系统变量 tmp_table_size
范围 全局,会话 动态的 是的 类型 整数 默认值 16777216
最小值 1024
最大值 18446744073709551615
单元 字节 内部内存临时表的最大大小。此变量不适用于用户创建的
MEMORY
表。tmp_table_size
实际限制是和 中的较小者max_heap_table_size
。当内存中的临时表超过限制时,MySQL 会自动将其转换为磁盘上的临时表。该internal_tmp_disk_storage_engine
选项定义用于磁盘临时表的存储引擎。如果您执行许多高级查询并且您有大量内存,请 增加
tmp_table_size
(max_heap_table_size
如果需要)的值。GROUP BY
Created_tmp_disk_tables
您可以通过比较和Created_tmp_tables
值 来比较创建的内部磁盘临时表的数量与创建的内部临时表的总数 。 -
命令行格式 --tmpdir=dir_name
系统变量 tmpdir
范围 全球的 动态的 不 类型 目录名称 用于创建临时文件的目录路径。
/tmp
如果您的默认目录驻留在太小而无法容纳临时表的分区上,这可能很有用。此变量可以设置为以循环方式使用的多个路径的列表。路径应:
在 Unix 上以冒号字符 ( ) 分隔;
,在 Windows 上以分号字符 ( ) 分隔。tmpdir
可以是非永久位置,例如基于内存的文件系统上的目录或服务器主机重新启动时清除的目录。如果 MySQL 服务器充当副本,并且您使用的是非永久位置 ,请考虑使用变量tmpdir
为副本设置不同的临时目录 。slave_load_tmpdir
对于副本,用于复制LOAD DATA
语句的临时文件存储在此目录中,因此如果临时文件已被删除,它们可以在机器重启后继续存在,但如果临时文件已被删除,复制现在可以在重启后继续。有关临时文件存储位置的更多信息,请参阅第 B.3.3.5 节,“MySQL 存储临时文件的位置”。
-
命令行格式 --transaction-alloc-block-size=#
系统变量 transaction_alloc_block_size
范围 全局,会话 动态的 是的 类型 整数 默认值 8192
最小值 1024
最大值 131072
单元 字节 块大小 1024
需要内存的每个事务内存池增加的字节数。见说明
transaction_prealloc_size
。 -
命令行格式 --transaction-isolation=name
系统变量(≥ 5.7.20) transaction_isolation
适用范围(≥ 5.7.20) 全局,会话 动态 (≥ 5.7.20) 是的 类型 枚举 默认值 REPEATABLE-READ
有效值 READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
事务隔离级别。默认值为
REPEATABLE-READ
。事务隔离级别有三个作用域:全局、会话和下一个事务。这种三作用域的实现会导致一些非标准的隔离级别分配语义,如后所述。
要在启动时设置全局事务隔离级别,请使用
--transaction-isolation
服务器选项。在运行时,可以直接使用 语句为系统变量
SET
赋值 来设置隔离级别,也可以使用语句间接设置。如果 直接设置为包含空格的隔离级别名称,则名称应包含在引号内,空格由破折号代替。例如,使用此 语句设置全局值:transaction_isolation
SET TRANSACTION
transaction_isolation
SET
SET GLOBAL transaction_isolation = 'READ-COMMITTED';
设置全局
transaction_isolation
值会为所有后续会话设置隔离级别。现有会话不受影响。要设置会话或下一级
transaction_isolation
值,请使用该SET
语句。对于大多数会话系统变量,这些语句是设置值的等效方法:SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如前所述,事务隔离级别除了全局和会话范围之外,还有下一个事务范围。为了能够设置下一个事务范围,
SET
分配会话系统变量值的语法具有非标准语义transaction_isolation
:要设置会话隔离级别,请使用以下任一语法:
SET @@SESSION.transaction_isolation = value; SET SESSION transaction_isolation = value; SET transaction_isolation = value;
对于这些语法中的每一个,这些语义都适用:
为会话中执行的所有后续事务设置隔离级别。
事务内允许,但不影响当前正在进行的事务。
如果在事务之间执行,则覆盖任何设置下一个事务隔离级别的先前语句。
对应于
SET SESSION TRANSACTION ISOLATION LEVEL
(带SESSION
关键字)。
要设置下一个事务隔离级别,请使用以下语法:
SET @@transaction_isolation = value;
对于该语法,这些语义适用:
仅为会话中执行的下一个事务设置隔离级别。
后续事务恢复到会话隔离级别。
交易中不允许。
对应于
SET TRANSACTION ISOLATION LEVEL
(不带SESSION
关键字)。
有关系统变量
SET TRANSACTION
及其与transaction_isolation
系统变量的关系的更多信息,请参阅第 13.3.6 节,“SET TRANSACTION 语句”。笔记transaction_isolation
在 MySQL 5.7.20 中添加为 的同义词tx_isolation
,现已弃用并在 MySQL 8.0 中删除。应调整应用程序transaction_isolation
以优先使用tx_isolation
. -
命令行格式 --transaction-prealloc-size=#
系统变量 transaction_prealloc_size
范围 全局,会话 动态的 是的 类型 整数 默认值 4096
最小值 1024
最大值 131072
单元 字节 块大小 1024
每个事务都有一个内存池,各种与事务相关的分配从中获取内存。池的初始大小(以字节为单位)为
transaction_prealloc_size
. 对于由于可用内存不足而无法从池中满足的每个分配,池都会增加transaction_alloc_block_size
字节数。当事务结束时,池被截断为transaction_prealloc_size
字节。通过使其
transaction_prealloc_size
足够大以在单个事务中包含所有语句,您可以避免多次malloc()
调用。 -
命令行格式 --transaction-read-only[={OFF|ON}]
系统变量(≥ 5.7.20) transaction_read_only
适用范围(≥ 5.7.20) 全局,会话 动态 (≥ 5.7.20) 是的 类型 布尔值 默认值 OFF
事务访问模式。该值可以是
OFF
(读/写;默认值)或ON
(只读)。事务访问模式具有三个作用域:全局、会话和下一个事务。这种三作用域的实现会导致一些非标准的访问模式分配语义,如后所述。
要在启动时设置全局事务访问模式,请使用
--transaction-read-only
服务器选项。在运行时,可以直接使用 语句为系统变量
SET
赋值 来设置访问模式,也可以使用语句间接设置访问模式。例如,使用此 语句设置全局值:transaction_read_only
SET TRANSACTION
SET
SET GLOBAL transaction_read_only = ON;
设置全局
transaction_read_only
值会为所有后续会话设置访问模式。现有会话不受影响。要设置会话或下一级
transaction_read_only
值,请使用该SET
语句。对于大多数会话系统变量,这些语句是设置值的等效方法:SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如前所述,事务访问模式除了全局和会话范围外,还有一个下一个事务范围。为了能够设置下一个事务范围,
SET
分配会话系统变量值的语法具有非标准语义transaction_read_only
,要设置会话访问模式,请使用以下任一语法:
SET @@SESSION.transaction_read_only = value; SET SESSION transaction_read_only = value; SET transaction_read_only = value;
对于这些语法中的每一个,这些语义都适用:
为会话中执行的所有后续事务设置访问模式。
事务内允许,但不影响当前正在进行的事务。
如果在事务之间执行,则覆盖前面任何设置下一个事务访问模式的语句。
对应于
SET SESSION TRANSACTION {READ WRITE | READ ONLY}
(带SESSION
关键字)。
要设置下一个事务访问模式,请使用以下语法:
SET @@transaction_read_only = value;
对于该语法,这些语义适用:
仅为会话中执行的下一个事务设置访问模式。
后续事务恢复为会话访问模式。
交易中不允许。
对应于
SET TRANSACTION {READ WRITE | READ ONLY}
(不带SESSION
关键字)。
有关系统变量
SET TRANSACTION
及其与transaction_read_only
系统变量的关系的更多信息,请参阅第 13.3.6 节,“SET TRANSACTION 语句”。笔记transaction_read_only
在 MySQL 5.7.20 中添加为 的同义词tx_read_only
,现已弃用并在 MySQL 8.0 中删除。应调整应用程序transaction_read_only
以优先使用tx_read_only
. -
弃用 5.7.20 系统变量 tx_isolation
范围 全局,会话 动态的 是的 类型 枚举 默认值 REPEATABLE-READ
有效值 READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
默认事务隔离级别。默认为
REPEATABLE-READ
.笔记transaction_isolation
在 MySQL 5.7.20 中添加为 的同义词tx_isolation
,现已弃用并在 MySQL 8.0 中删除。应调整应用程序transaction_isolation
以优先使用tx_isolation
. 详见说明transaction_isolation
。 -
弃用 5.7.20 系统变量 tx_read_only
范围 全局,会话 动态的 是的 类型 布尔值 默认值 OFF
默认事务访问模式。该值可以是
OFF
(读/写,默认)或ON
(只读)。笔记transaction_read_only
在 MySQL 5.7.20 中添加为 的同义词tx_read_only
,现已弃用并在 MySQL 8.0 中删除。应调整应用程序transaction_read_only
以优先使用tx_read_only
. 详见说明transaction_read_only
。 -
系统变量 unique_checks
范围 全局,会话 动态的 是的 类型 布尔值 默认值 ON
InnoDB
如果设置为 1(默认值),将对表中 的二级索引执行唯一性检查。如果设置为 0,则允许存储引擎假定输入数据中不存在重复键。如果您确定您的数据不包含唯一性违规,则可以将其设置为 0 以加快大型表导入到InnoDB
.将此变量设置为 0 不需要存储引擎忽略重复键。仍然允许引擎检查它们并在检测到它们时发出重复键错误。
-
命令行格式 --updatable-views-with-limit[={OFF|ON}]
系统变量 updatable_views_with_limit
范围 全局,会话 动态的 是的 类型 布尔值 默认值 1
LIMIT
如果更新语句包含子句 ,则当视图不包含基础表中定义的主键的所有列时,此变量控制是否可以对视图进行更新。(此类更新通常由 GUI 工具生成。)更新是一个UPDATE
或DELETE
语句。这里的主键是指PRIMARY KEY
, 或UNIQUE
任何列都不能包含的索引NULL
。该变量可以有两个值:
1
或YES
:仅发出警告(不是错误消息)。这是默认值。0
或NO
:禁止更新。
validate_password_
xxx
该
validate_password
插件实现了一组名称为 . 这些变量会影响该插件的密码测试;请参阅 第 6.4.3.2 节,“密码验证插件选项和变量”。validate_password_
xxx
服务器的版本号。该值还可能包含一个后缀,表示服务器构建或配置信息。
-log
表示启用了通用日志、慢查询日志、二进制日志中的一种或几种。-debug
表示服务器是在启用调试支持的情况下构建的。-
系统变量 version_comment
范围 全球的 动态的 不 类型 细绳 CMake配置程序有一个 选项,允许 在
COMPILATION_COMMENT
构建 MySQL 时指定注释。该变量包含该注释的值。请参阅 第 2.9.7 节,“MySQL 源配置选项”。 -
系统变量 version_compile_machine
范围 全球的 动态的 不 类型 细绳 服务器二进制文件的类型。
-
系统变量 version_compile_os
范围 全球的 动态的 不 类型 细绳 构建 MySQL 的操作系统类型。
-
命令行格式 --wait-timeout=#
系统变量 wait_timeout
范围 全局,会话 动态的 是的 类型 整数 默认值 28800
最小值 1
最大值 (Windows) 2147483
最大值(其他) 31536000
单元 秒 服务器在关闭非交互式连接之前等待活动的秒数。
在线程启动时,会话 值从全局值或 全局值
wait_timeout
初始化 ,具体取决于客户端的类型(由 connect 选项 定义)。另见。wait_timeout
interactive_timeout
CLIENT_INTERACTIVE
mysql_real_connect()
interactive_timeout
由生成消息的最后一条语句产生的错误、警告和注释的数量。该变量是只读的。请参阅第 13.7.5.40 节,“显示警告声明”。