??官网地址:MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
MySQL服务器维护着许多影响其运行的系统变量。大多数系统变量可以在服务器启动时使用命令行或选项文件中的选项进行设置。其中大多数可以使用?SET?语句在运行时动态更改,这使您能够修改服务器的操作,而无需停止并重新启动它。有些变量是只读的,它们的值由系统环境、MySQL 在系统上的安装方式或可能由用于编译 MySQL 的选项决定。大多数系统变量都有默认值,但也有例外,包括只读变量??。您还可以在表达式中使用系统变量值。
在运行时,设置全局系统变量值需要该?SUPER权限。设置会话系统变量值通常不需要特殊权限,并且可以由任何用户完成,但也有例外。有关更多信息,请参见第 5.1.8.1 节 “系统变量权限”
有多种方法可以查看系统变量的名称和值:
要查看服务器根据其编译默认值及其读取的任何选项文件使用的值,请使用以下命令:
mysqld --verbose --help
要查看服务器仅根据其编译默认值使用的值,忽略任何选项文件中的设置,请使用以下命令:
mysqld --no-defaults --verbose --help
要查看正在运行的服务器使用的当前值,请使用?SHOW VARIABLES语句或性能架构系统变量表。请参见?第 25.12.13 节“性能模式系统变量表”。
本节提供每个系统变量的描述。有关系统变量汇总表,请参见?第 5.1.4 节 “服务器系统变量参考”。有关系统变量操作的更多信息,请参见?第 5.1.8 节 “使用系统变量”。
有关其他系统变量信息,请参阅以下部分:
第 5.1.8 节“使用系统变量”讨论设置和显示系统变量值的语法。
第 5.1.8.2 节“动态系统变量”列出了可以在运行时设置的变量。
第14.15节“InnoDB启动选项和系统变量”列出了?InnoDB
系统变量。
第21.4.3.9.2节“NDB Cluster系统变量”列出了特定于NDB Cluster的系统变量。
有关特定于复制的服务器系统变量的信息,请参见第 16.1.6 节 “复制和二进制日志记录选项和变量”。
以下一些变量描述涉及?“启用”或“禁用”变量。这些变量可以?SET?通过将它们设置为ON
或 来使用语句启用1
,或者通过将它们设置为?OFF
或 来禁用0
。布尔变量可以在启动时设置为值?ON
、TRUE
、?OFF
和FALSE
(不区分大小写)以及1
和?0
。请参见第 4.2.2.4 节“程序选项修饰符”。
一些系统变量控制缓冲区或高速缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常是从分配给缓冲区的总内存中分配的,并且所需的空间量可能取决于平台。这意味着当您为控制缓冲区大小的系统变量分配值时,实际可用空间量可能与分配的值不同。在某些情况下,金额可能小于指定的值。服务器也可以向上调整值。例如,如果将值 0 分配给最小值为 1024 的变量,则服务器会将该值设置为 1024。
除非另有说明,缓冲区大小、长度和堆栈大小的值均以字节为单位给出。
某些系统变量描述包括块大小,在这种情况下,不是指定块大小整数倍的值在由服务器存储之前会向下舍入到块大小的下一个较小倍数,即?。?FLOOR(value)?*?
block_size
示例:假设给定变量的块大小为 4096,并将该变量的值设置为 100000(我们假设该变量的最大值大于该数字)。由于 100000 / 4096 = 24.4140625,服务器会在存储之前自动将该值降低到 98304 (24 * 4096)。
在某些情况下,变量的规定最大值是 MySQL 解析器允许的最大值,但不是块大小的精确倍数。在这种情况下,有效最大值是块大小的下一个较小倍数。
示例:系统变量的最大值显示为 4294967295 (2?32?-1),其块大小为 1024。4294967295 / 1024 = 4194303.9990234375,因此,如果将此变量设置为其规定的最大值,则实际存储的值为 4194303 * 1024 = 4294966272。
某些系统变量采用文件名值。除非另有指定,如果该值为相对路径名,则默认文件位置是数据目录。要显式指定位置,请使用绝对路径名。假设数据目录是?/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 TRANSACTIONor?BEGIN?语句。请参见第 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 密钥和证书文件(如果它们尚不存在)。
auto_generate_certs启动时,如果启用了系统变量,未?--ssl指定除其他 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?
SELECTtbl_name
?is full
新连接的默认值为?OFF
(使用内存临时表)。通常,不需要启用此变量,因为服务器能够通过将内存用于小型临时表并根据需要切换到基于磁盘的表来自动处理大型结果集。
命令行格式 | --bind-address=addr |
---|---|
系统变量 | bind_address |
范围 | 全球的 |
动态的 | 不 |
类型 | 细绳 |
默认值 | * |
MySQL 服务器在单个网络套接字上侦听 TCP/IP 连接。该套接字绑定到单个地址,但一个地址可以映射到多个网络接口。要指定地址,请?在服务器启动时设置,其中是 IPv4 或 IPv6 地址或主机名。如果?是主机名,服务器会将名称解析为 IP 地址并绑定到该地址。如果主机名解析为多个 IP 地址,则服务器将使用第一个 IPv4 地址(如果有),否则使用第一个 IPv6 地址。?bind_address=addraddr
addr
服务器对不同类型的地址进行如下处理:
如果地址为*
,则服务器接受所有服务器主机 IPv4 接口上的 TCP/IP 连接;如果服务器主机支持 IPv6,则接受所有 IPv6 接口上的 TCP/IP 连接。使用此地址允许所有服务器接口上的 IPv4 和 IPv6 连接。该值是默认值。
如果地址为0.0.0.0
,则服务器接受所有服务器主机 IPv4 接口上的 TCP/IP 连接。
如果地址为::
,则服务器接受所有服务器主机 IPv4 和 IPv6 接口上的 TCP/IP 连接。
如果地址是 IPv4 映射地址,则服务器接受该地址的 TCP/IP 连接(采用 IPv4 或 IPv6 格式)。例如,如果服务器绑定到::ffff:127.0.0.1
,则客户端可以使用--host=127.0.0.1
或 进行连接--host=::ffff:127.0.0.1
。
如果地址是“常规”?IPv4 或 IPv6 地址(例如127.0.0.1
或?::1
),则服务器仅接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。
如果绑定到该地址失败,服务器会产生错误并且不会启动。
如果您打算将服务器绑定到特定地址,请确保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版本早于MySQL 4.1,因此不请求字符集。
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
。
MySQL 5.7 中不推荐使用?全局 变量character_set_database和 系统变量;collation_database预计它们会在 MySQL 的未来版本中被删除。
character_set_databaseMySQL 5.7 中不推荐为会话变量和 系统变量?赋值,?collation_database
并且赋值会产生警告。您应该预期会话变量在 MySQL 的未来版本中将变为只读,并且赋值会产生错误,同时仍然可以访问会话变量以确定默认数据库的数据库字符集和排序规则。
命令行格式 | --character-set-filesystem=name |
---|---|
系统变量 | character_set_filesystem |
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 细绳 |
默认值 | binary |
文件系统字符集。此变量用于解释引用文件名的字符串文字,例如在LOAD DATAand?SELECT ... 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
。
MySQL 5.7 中不推荐使用?全局 变量character_set_database和 系统变量;collation_database预计它们会在 MySQL 的未来版本中被删除。
character_set_databaseMySQL 5.7 中不推荐为会话变量和 系统变量?赋值,?collation_database并且赋值会产生警告。预计会话变量在 MySQL 的未来版本中将变为只读,并且赋值会产生错误,但仍然可以访问会话变量以确定默认数据库的数据库字符集和排序规则。
命令行格式 | --collation-server=name |
---|---|
系统变量 | collation_server |
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 细绳 |
默认值 | latin1_swedish_ci |
服务器的默认排序规则。请参见?第 10.15 节“字符集配置”。
命令行格式 | --completion-type=# |
---|---|
系统变量 | completion_type |
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | NO_CHAIN |
有效值 |
|
交易完成类型。该变量可以采用下表中所示的值。可以使用名称值或相应的整数值来分配变量。
价值 | 描述 |
---|---|
NO_CHAIN (或0) | COMMIT并且?ROLLBACK?不受影响。这是默认值。 |
CHAIN (或 1) | COMMIT和?ROLLBACK?分别相当于COMMIT AND CHAIN ?和ROLLBACK AND CHAIN 。(新事务立即启动,隔离级别与刚刚终止的事务相同。) |
RELEASE (或2) | COMMIT和?ROLLBACK?分别相当于COMMIT RELEASE 和?ROLLBACK RELEASE 。(服务器在终止事务后断开连接。) |
completion_typeSTART TRANSACTION影响以or?开头?BEGIN并以COMMITor 结尾的事务ROLLBACK。它不适用于执行第 13.3.3 节“导致隐式提交的语句”中列出的语句所导致的隐式提交。它也不适用于?XA COMMIT、、?XA ROLLBACK或何时?autocommit=1。
命令行格式 | --concurrent-insert[=value] |
---|---|
系统变量 | concurrent_insert |
范围 | 全球的 |
动态的 | 是的 |
类型 | 枚举 |
默认值 | AUTO |
有效值 |
|
如果AUTO
(默认),MySQL 允许 对数据文件中间没有空闲块的表?并发运行INSERT和 语句。SELECTMyISAM
该变量可以采用下表中所示的值。可以使用名称值或相应的整数值来分配变量。
价值 | 描述 |
---|---|
NEVER (或0) | 禁用并发插入 |
AUTO (或 1) | (默认)为MyISAM 没有空洞的表启用并发插入 |
ALWAYS (或2) | 允许对所有MyISAM 表进行并发插入,甚至是那些有漏洞的表。对于有孔的表,如果另一个线程正在使用该表,则新行将插入到表的末尾。否则,MySQL 获取正常的写锁并将该行插入到孔中。 |
如果您使用 启动mysqld?,--skip-new则?concurrent_insert设置为?NEVER
。
另请参见第 8.11.3 节“并发插入”。
命令行格式 | --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.8.7 节“MySQL 源配置选项”);否则,该系统变量不可用。?-DWITH_DEBUG=ON
全局变量值是只读的,指示该设施是否启用。默认情况下,调试同步处于禁用状态,且debug_sync?值为OFF
。如果服务器以 启动?,其中超时值大于 0,则启用调试同步,并且 的值?后跟信号名称。此外,?它也成为各个同步点的默认超时。?--debug-sync-timeout=NN
debug_syncON - current signal
N
会话值可以被任何用户读取,并且与全局变量具有相同的值。可以设置会话值来控制同步点。
设置此系统变量的会话值是一项受限制的操作。会话用户必须具有足够的权限才能设置受限会话变量。请参见?第 5.1.8.1 节“系统变量权限”。
有关调试同步工具以及如何使用同步点的说明,请参阅?MySQL 内部:测试同步。
命令行格式 | --default-authentication-plugin=plugin_name |
---|---|
系统变量 | default_authentication_plugin |
范围 | 全球的 |
动态的 | 不 |
类型 | 枚举 |
默认值 | mysql_native_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 |
有效值 |
|
该变量指定如何使用延迟键写入。它仅适用于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或?ALTER TABLESPACE ... ENGINE更改现有表或表空间的存储引擎。尝试这样做会导致ER_DISABLED_STORAGE_ENGINE?错误。
disabled_storage_engines不限制现有表的其他 DDL 语句,例如?CREATE INDEX、?TRUNCATE TABLE、?ANALYZE TABLE、?DROP TABLE或?DROP TABLESPACE。这允许平滑过渡,以便使用禁用引擎的现有表或表空间可以通过诸如 之类的方式迁移到允许的引擎?。?ALTER TABLE ... ENGINE?permitted_engine
允许将?default_storage_engine或?default_tmp_storage_engine?系统变量设置为禁用的存储引擎。这可能会导致应用程序行为异常或失败,尽管这在开发环境中可能是一种有用的技术,可用于识别使用禁用引擎的应用程序,以便对其进行修改。
disabled_storage_engines已禁用,并且如果使用以下任一选项启动服务器则无效:--bootstrap、?--initialize、?--initialize-insecure、?--skip-grant-tables。
设置 可能会导致mysql_upgradedisabled_storage_engines?出现问题。有关详细信息,请参见第 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 |
有效值 |
|
该变量启用或禁用以及启动或停止事件调度程序。可能的状态值为?ON
、OFF
和?DISABLED
。开启事件调度程序?OFF
与禁用事件调度程序不同,后者需要将状态设置为?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
和?ON 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'
可能无效。请注意,?TRADITIONALSQL 模式包括严格模式和?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
或ON UPDATE CURRENT_TIMESTAMP
属性声明任何列。必须明确指定这些属性。
如果?explicit_defaults_for_timestamp?在服务器启动时禁用,此警告将出现在错误日志中:
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option (see
documentation for more details).
如警告所示,要禁用已弃用的非标准行为,请?explicit_defaults_for_timestamp?在服务器启动时启用系统变量。
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.9.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.9.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 |
通用查询日志文件的名称。默认值为?
,但可以使用选项更改初始值?--general_log_file。host_name
.log
命令行格式 | --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?also 已被弃用;预计它会在未来的版本中被删除。
YES
mysqld是否支持动态加载插件,NO
如果不支持。如果值为NO
,则不能使用--plugin-load
服务器启动时加载插件、INSTALL PLUGIN运行时加载插件等选项。
YES
服务器是否支持空间数据类型,NO
如果不支持。
该变量是 的同义词?have_ssl
。
YES
if 语句分析功能存在,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
如果mysqld支持 SSL 连接,DISABLED
如果服务器是使用 SSL 支持编译的,但未使用适当的连接加密选项启动。有关更多信息,请参阅?第 2.8.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,则加 1?max_connections
,上限为 2000。
使用该--skip-host-cache?选项类似于将?host_cache_size
系统变量设置为 0,但?host_cache_size
更灵活,因为它还可以用于在运行时(而不仅仅是在服务器启动时)调整大小、启用和禁用主机缓存。
使用 启动服务器?--skip-host-cache不会阻止运行时更改 的值 ,但此类更改没有任何效果,并且即使设置大于 0,也?host_cache_size
不会重新启用缓存 。host_cache_size
由于上一段中给出的原因,最好?设置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.9.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或 语句要使用的值。这主要与二进制日志一起使用。?ALTER TABLEAUTO_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 |
有效值 |
|
磁盘内部临时表的存储引擎(请参见?第 8.4.4 节,“MySQL 中的内部临时表使用”)。允许的值为MYISAM
和INNODB
?(默认值)。
优化器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 除外,对于该 Windows,较大的值将被截断为 4GB?1 并带有警告)。块大小为 128,如果值不是块大小的精确倍数,则在存储系统变量的值之前,MySQL 服务器将向下舍入为块大小的下一个较小倍数。解析器允许的值最大为平台的最大无符号整数值(32 位系统为4294967295 或 2?32 ?1,18446744073709551615 或 2?64对于 64 位系统为 -1),但实际最大值是一个较小的块大小。
除非使用块嵌套循环或批量键访问算法,否则将缓冲区设置为大于保存每个匹配行所需的大小,并且所有连接至少分配最小大小,因此在将此变量设置为全球价值巨大。最好保持全局设置较小,并仅在进行大型连接的会话中将会话设置更改为较大的值。如果全局大小大于大多数使用它的查询所需的大小,内存分配时间可能会导致性能大幅下降。
当使用块嵌套循环时,较大的连接缓冲区可能会很有用,直到第一个表中所有行的所有必需列都存储在连接缓冲区中。这取决于查询;最佳大小可能小于保存第一个表中的所有行。
当使用批量密钥访问时, 的值?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,在这种情况下密钥缓存不会初始化。在运行时将设置从值 0更改?key_buffer_size为允许的非零值会初始化密钥缓存。
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状态变量?来检查密钥缓冲区的性能 。(参见第 13.7.5 节“SHOW 语句”。)该?Key_reads/Key_read_requests
比率通常应小于 0.01。如果您主要使用更新和删除,则该?Key_writes/Key_write_requests
比率通常接近 1,但如果您倾向于同时影响许多行的更新或使用表选项,则该比率可能会小得多?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 密钥缓存”。
命令行格式 | --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.3 节“启用大页面支持”。
系统变量 | large_page_size |
---|---|
范围 | 全球的 |
动态的 | 不 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 65535 |
单元 | 字节 |
如果启用大页面支持,则会显示内存页面的大小。仅 Linux 支持大内存页;在其他平台上,该变量的值始终为 0。请参见第 8.12.4.3 节 “启用大页面支持”。
要从 中返回的值?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语句(无论客户端程序和库在构建时或运行时如何配置),请 分别以 禁用或启用的方式启动mysqldlocal_infile。?local_infile也可以在运行时设置。有关更多信息,请参见?第 6.1.6 节 “LOAD DATA LOCAL 的安全注意事项”。
命令行格式 | --lock-wait-timeout=# |
---|---|
系统变量 | lock_wait_timeout |
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 31536000 |
最小值 | 1 |
最大值 | 31536000 |
单元 | 秒 |
此变量指定尝试获取元数据锁的超时(以秒为单位)。允许值的范围为 1 到 31536000(1 年)。默认值为 31536000。
此超时适用于所有使用元数据锁的语句。其中包括对表、视图、存储过程和存储函数以及?LOCK TABLES、?FLUSH TABLES WITH READ LOCK和HANDLER语句的 DML 和 DDL 操作。
此超时不适用于对数据库中系统表的隐式访问mysql
,例如由GRANT或?REVOKE语句或表日志记录语句修改的授予表。超时确实适用于直接访问的系统表,例如使用?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_verbosityMySQL 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
选择记录到 系统数据库中的?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 INDEXDROP INDEXOPTIMIZE TABLEREPAIR 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 |
有效值 |
|
此变量控制写入错误日志的消息中的时间戳的时区,以及写入文件的一般查询日志和慢查询日志消息的时间戳。不影响写入表(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。
log_warnings在 MySQL 5.7.2 及更高版本中,仍然允许?使用 ,但映射到使用log_error_verbosity如下:
设置log_warnings=0相当于?log_error_verbosity=1?(仅错误)。
设置log_warnings=1相当于?log_error_verbosity=2?(错误、警告)。
设置log_warnings=2?(或更高)相当于 (错误、警告、注释),如果指定更大的值,?log_error_verbosity=3?服务器设置 为 2。log_warnings
命令行格式 | --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
.?2
在Linux(和其他类Unix系统)上,不支持将值设置为;服务器强制使用该值0
。
如果您在数据目录驻留在不区分大小写的文件系统(例如 Windows 或 macOS)上的系统上运行 MySQL,则不应设置为0。?这是一个不受支持的组合,在使用错误的字母大小写lower_case_table_names运行操作时可能会导致挂起情况?。使用 时,使用不同字母大小写访问表名可能会导致索引损坏。?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 |
一个数据包或任何生成/中间字符串或 C API 函数发送的任何参数的最大大小?mysql_stmt_send_long_data()。默认值为 4MB。
数据包消息缓冲区初始化为?net_buffer_length
字节,但在需要时可以增长到?max_allowed_packet字节。默认情况下,该值较小,以捕获较大(可能不正确)的数据包。
如果您使用大?BLOB列或长字符串,则必须增加此值。BLOB它应该与您想要使用的最大的一样大 。协议限制为?max_allowed_packet1GB。该值应该是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和SHOW 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_timeSELECT?对于存储程序中的语句?将被忽略。
命令行格式 | --max-heap-table-size=# |
---|---|
系统变量 | max_heap_table_size |
范围 | 全局、会话 |
动态的 | 是的 |
类型 | 整数 |
默认值 | 16777216 |
最小值 | 16384 |
最大值(64 位平台) | 18446744073709550592 |
最大值(32 位平台) | 4294966272 |
单元 | 字节 |
块大小 | 1024 |
MEMORY
该变量设置允许用户创建的表增长的?最大大小 。变量的值用于计算?MEMORY
表MAX_ROWS
?值。
设置此变量对任何现有表都没有影响 ,除非使用诸如或 用?或 之?MEMORY
类的语句重新创建该表?。服务器重新启动还会将现有?表的最大大小设置为全局?值。?CREATE TABLEALTER TABLETRUNCATE TABLEMEMORY
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 USERor?ALTER USER语句指定的。请参阅?第 6.2.16 节“设置帐户资源限制”。