mysql variables(2)

named_pipe

属性
系统变量 named_pipe
范围 Global,
动态 yes
类型 Boolean
默认值 off
平台 Windows

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

named_pipe_full_access_group

属性
系统变量 named_pipe_full_access_group
范围 Global,
动态 no
类型 string
默认值 everyone
可用值 empty string、everyone
平台 Windows

(仅限Windows。)当启用现有的–enable-named-pipe 命令行选项时,将mysql服务器创建的命名管道上授予客户端的访问控制设置为成功通信所需的最小值。较新的MySQL客户机软件可以打开命名管道连接,而无需任何其他配置,但是较旧的客户机软件可能仍然需要完全访问才能打开命名管道连接。

此变量设置Windows本地组的名称,该组的成员被MySQL服务器授予足够的访问权限,可以使用旧的命名管道客户端。最初,该值默认设置为“Everyone”,这允许Windows上Everyone组的用户继续使用较旧的客户端,直到升级较旧的客户端。相反,将该值设置为空字符串意味着不会授予任何Windows用户对命名管道的完全访问权限。默认值“Everyone”提供了一种独立于语言的方式来引用Windows上的Everyone组。

理想情况下,应该在Windows中创建一个新的Windows本地组名(例如,mysql_old_client_users),然后在绝对需要访问旧的客户端软件时,使用该名称替换此变量的默认值。在这种情况下,将组的成员资格限制为尽可能少的用户,在升级客户端软件时从组中删除用户。试图使用旧的命名管道客户端打开MySQL连接的组中的非成员将被拒绝访问,直到Windows管理员将用户添加到组中,然后用户注销并登录(Windows要求)。

net_buffer_length

属性
系统变量 net_buffer_length
范围 Global, Session
动态 Yes
类型 Integer
默认值 16384
最小值 1024
最大值 1048576

每个客户机线程都与连接缓冲区和结果缓冲区相关联。两者都以net-buffer-length给出的大小开始,但根据需要动态放大到最大允许的数据包字节。在每个SQL语句之后,结果缓冲区将收缩为net缓冲区长度。

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

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

net_read_timeout

属性
系统变量 net_read_timeout
范围 Global, Session
动态 Yes
类型 Integer
默认值 30
最小值 1

中止读取前等待来自连接的更多数据的秒数。当服务器从客户机读取数据时,net_read_timeout是控制何时中止的超时值。当服务器正在写入客户端时,net_write_timeout是控制何时中止的超时值。

net_retry_count

属性
系统变量 net_retry_count
范围 Global, Session
动态 Yes
类型 Integer
默认值 10
最小值 1
最大值64bit 18446744073709551615
最大值32bit 4294967295

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

net_write_timeout

属性
系统变量 net_write_timeout
范围 Global, Session
动态 Yes
类型 Integer
默认值 60
最小值 1

在中止写入之前等待块写入连接的秒数。也看到net_read_timeout。

new

属性
系统变量 new
范围 Global, Session
动态 Yes
类型 Boolean
默认值 FALSE

MySQL 4.0中使用了这个变量来打开4.1的一些行为,为了向后兼容保留了这个变量。它的值总是关闭的。

在NDB集群中,将这个变量设置为ON,可以在NDB表中使用键或线性键以外的分区类型。这个特性只是实验性的,在生产中不支持。

ngram_token_size

属性
系统变量 new
范围 Global,
动态 no
类型 Integer
默认值 2
最大值 1
最小值 10

定义n-gram全文分析器的n-gram标记大小。ngram_token_size选项是只读的,只能在启动时修改。默认值为2(bigram)。最大值为10。

offline_mode

属性
系统变量 offline_mode
范围 Global,
动态 yes
类型 Boolean
默认值 off

服务器设置为“离线模式”后,具有以下特点:

没有 CONNECTION_ADMIN or SUPER权限的已连接客户端用户将在下一个请求时断开连接,并出现相应的错误。断开连接包括终止正在运行的语句和释放锁。这样的客户机也无法启动新的连接,并接收到适当的错误。

具有连接管理员或超级特权的已连接客户端用户不会断开连接,并且可以启动新的连接来管理服务器。

允许复制从线程继续向服务器应用数据。

只有具有 SYSTEM_VARIABLES_ADMIN or SUPER权限的用户才能控制脱机模式。要将服务器置于脱机模式,请将 offline_mode系统变量的值从“off”更改为“on”。要恢复正常操作,请将 offline_mode从“on”更改为“off”。在脱机模式下,被拒绝访问的客户端会收到一个 ER_SERVER_OFFLINE_MODE错误

old

属性
系统变量 old
范围 Global,
动态 no

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

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

old_alter_table

属性
系统变量 old_alter_table
范围 Global, Session,
动态 yes
类型 Boolean
默认值 off

当启用此变量时,服务器不使用处理alter table操作的优化方法。它使用临时表进行恢复,复制数据,然后将临时表重命名为原始表,如MySQL5.0和更早版本所用。有关alter table操作的更多信息,请参阅第13.1.9节“alter table语法”。

ALTER TABLE … DROP PARTITION with old_alter_table=ON重建分区表并尝试将数据从已删除分区移动到另一个具有兼容分区的PARTITION … VALUES定义的分区,无法移动到另一个分区的数据将被删除。在以前的版本中,ALTER TABLE…with old_alter_table=ON删除分区中存储的数据并删除分区

old_passwords

属性
系统变量 old_passwords
范围 Global, Session,
动态 yes
类型 Enumeration
默认值 0
可用值 0、2
移除 Yes (removed in 8.0.11)

open_files_limit

属性
系统变量 open_files_limit
范围 Global
动态 no
类型 Integer
默认值 5000, with possible adjustment
最小值 0
最大值 依赖于平台

操作系统允许mysqld打开的文件数量。此变量在运行时的值是系统允许的真实值,可能与您在服务器启动时指定的值不同。在MySQL无法更改打开文件数量的系统上,该值为0。

有效的open_files_limit值基于系统启动时指定的值(如果有的话)以及max_connections和table_open_cache的值,使用以下公式:
1) 10 + max_connections + (table_open_cache * 2)
2 )max_connections * 5
3 )作系统为正时限制
4) 如果操作系统极限为无穷大:
在启动时指定的open_files_limit值,如果没有,则为5000

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

optimizer_prune_level

属性
系统变量 open_files_limit
范围 Global, Session
动态 yes
类型 Boolean
默认值 1

控制在查询优化期间应用的启发式方法,从优化程序搜索空间中删除不太有希望的部分计划。值为0将禁用启发式搜索,以便优化器执行详尽的搜索。值为1会导致优化器根据中间计划检索到的行数来修剪计划。

  • optimizer_prune_level 用来告诉优化器,可以通过评估每个表被访问记录的数量来忽略某些方案. 经验显示,这种类型的"学习猜想(educated guess)",很少会错失掉最佳方案,并会很明显地减少查询编译次数.这也是为什么MYSQL默认会设置:optimizer_prune_level=1的原因. 当然我们也可以将optimizer_prune_level=0,但需要承担编译查询可能会持续很长时间的危险.

optimizer_switch

属性
系统变量 optimizer_switch
范围 Global, Session
动态 yes
类型 set

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
optimizer_switch系统变量允许控制优化器的行为。这个变量的值是一组标志,每个标志都有一个开或关的值,以指示相应的优化器行为是启用还是禁用。此变量具有全局值和会话值,可以在运行时更改。全局默认值可以在服务器启动时设置。

optimizer_trace

属性
系统变量 optimizer_trace
范围 Global, Session
动态 yes
类型 String

这个变量控制优化器跟踪

optimizer_trace_features

属性
系统变量 optimizer_trace_features
范围 Global, Session
动态 yes
类型 String

此变量启用或禁用选定的优化器跟踪功能

optimizer_trace_limit

属性
系统变量 optimizer_trace_limit
范围 Global, Session
动态 yes
类型 Integer
默认值 1

要显示的优化器跟踪的最大数量。

optimizer_trace_max_mem_size

属性
系统变量 optimizer_trace_max_mem_size
范围 Global, Session
动态 yes
类型 Integer
默认值(>= 8.0.4) 1048576
默认值(<= 8.0.3) 16384

存储优化器跟踪的最大累积大小。

optimizer_trace_offset

属性
系统变量 optimizer_trace_offset
范围 Global, Session
动态 yes
类型 Integer
默认值 -1

要显示的优化器跟踪的偏移量

performance_schema_xxx

https://dev.mysql.com/doc/refman/8.0/en/performance-schema-system-variables.html

parser_max_mem_size

在这里插入图片描述
解析器可用的最大内存量。默认值不限制可用内存。可以减少该值,以防止解析长或复杂SQL语句导致内存不足的情况。

password_history

在这里插入图片描述
此变量定义了全局策略,用于根据所需的最小密码更改数量控制以前密码的重用。对于以前使用的帐户密码,此变量指示在可以重用该密码之前必须发生的后续帐户密码更改的次数。如果值为0(默认值),则不存在基于密码更改数量的重用限制。

此变量的更改将立即应用于使用PASSWORD HISTORY默认选项定义的所有帐户。

对于使用CREATE USER和ALTER USER语句的password HISTORY选项的单个帐户,可以根据需要覆盖全局更改次数密码重用策略。

password_require_current

在这里插入图片描述
此变量定义全局策略,用于控制更改帐户密码的尝试是否必须指定要替换的当前密码。

此变量的更改立即应用于所有使用密码定义的帐户,要求使用当前默认选项。

对于使用CREATE USER和ALTER USER语句的PASSWORD REQUIRE选项的单个帐户,可以根据需要覆盖全局验证所需的策略。

password_reuse_interval

在这里插入图片描述
此变量定义了全局策略,用于基于时间流逝控制以前密码的重用。对于以前使用的帐户密码,此变量指示在可以重用该密码之前必须经过的天数。如果值为0(默认值),则不存在基于时间流逝的重用限制。

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

对于使用CREATE USER和ALTER USER语句的password reuse INTERVAL选项的单个帐户,可以根据需要覆盖全局时间消耗密码重用策略。

persisted_globals_load

在这里插入图片描述
是否从数据目录中的mysqld-auto.cnf文件加载持久配置设置。服务器通常在启动时在所有其他选项文件之后处理该文件(参见4.2.7节“使用选项文件”)。禁用persisted_globals_load会导致服务器启动序列跳过mysqld-auto.cnf。

要修改mysqld-auto.cnf的内容,请使用SET PERSIST、SET PERSIST_ONLY和RESET PERSIST语句。

persist_only_admin_x509_subject

在这里插入图片描述
SET PERSIST和SET PERSIST_ONLY允许将系统变量持久化到数据目录中的mysqld-auto.cnf选项文件中(参见13.7.5.1节“变量赋值的设置语法”)。持久化系统变量支持影响后续服务器重启的运行时配置更改,这对于不需要直接访问MySQL服务器主机选项文件的远程管理非常方便。但是,有些系统变量是不可持久化的,或者只能在某些限制条件下持久化。

persist_only_admin_x509_subject系统变量指定SSL证书X.509 Subject值,用户必须能够持久存储受持久性限制的系统变量。默认值是空字符串,它禁用Subject检查,因此任何用户都不能持久化受持久化限制的系统变量。

如果persist_only_admin_x509_subject是非空的,那么使用加密连接连接到服务器并使用指定的Subject值提供SSL证书的用户可以使用SET PERSIST_ONLY来持久化受持久性限制的系统变量。有关持久性限制的系统变量的信息以及配置MySQL以启用persist_only_admin_x509_subject的说明,请参见5.1.9.4节“非持久性和持久性限制的系统变量”。

pid_file

在这里插入图片描述
进程ID文件的路径名。可以使用 --pid-file选项设置此变量。服务器在数据目录中创建文件,除非指定了一个绝对路径名来指定另一个目录。如果指定 --pid-file选项,则必须指定一个值。如果没有指定 --pid-file选项,MySQL使用默认值host_name.pid,其中host_name是主机的名称。

进程ID文件被其他程序(如mysqld_safe)用于确定服务器的进程ID。在Windows上,这个变量还会影响默认的错误日志文件名。

plugin_dir


插件目录的路径名。

如果插件目录是服务器可写的,那么用户可以使用 SELECT … INTO DUMPFILE将可执行代码写入目录中的文件。这可以通过使plugin_dir只读到服务器或设置–secure- re-file-priv到一个可以安全地进行 SELECT写操作的目录来防止。

port

在这里插入图片描述
服务器监听TCP/IP连接的端口数。可以使用–port选项设置此变量。

preload_buffer_size


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

profiling

如果设置为0或OFF(默认值),则禁用语句分析。如果设置为1或1以上,则启用语句分析,SHOW PROFILE和SHOW PROFILES语句提供对分析信息的访问。参见第13.7.6.31节“显示概要文件语法”。

此变量已被弃用,将在MySQL的未来版本中删除。

profiling_history_size

如果启用概要分析,则维护概要分析信息的语句数。默认值是15。最大值是100。将该值设置为0可以有效地禁用分析。参见第13.7.6.31节“显示概要文件语法”。

此变量已被弃用,将在MySQL的未来版本中删除。

protocol_version

在这里插入图片描述
MySQL服务器使用的客户机/服务器协议的版本。

proxy_user

在这里插入图片描述
如果当前客户端是另一个用户的代理,则此变量为代理用户帐户名称。否则,该变量为NULL。

pseudo_slave_mode

在这里插入图片描述
此变量用于内部服务器。

在MySQL 8.0.14中,设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。参见5.1.9.1节“系统变量特权”。

在MySQL 8.0.14和更高版本中,pseudo_slave_mode对设置一个或多个不受支持或未知SQL模式的语句的处理有以下影响:

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

如果为false,服务器将使用ER_UNSUPPORTED_SQL_MODE拒绝该语句。

在执行任何其他SQL之前,mysqlbinlog将此变量设置为true。

pseudo_thread_id

在这里插入图片描述
此变量用于内部服务器。

在MySQL 8.0.14中,设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量

query_alloc_block_size


为语句解析和执行期间创建的对象分配的内存块的分配大小。如果内存碎片有问题,可以增加这个参数。

query_cache_limit

在这里插入图片描述
在MySQL 8.0.3中删除了这个系统变量。

query_cache_min_res_unit

在这里插入图片描述
在MySQL 8.0.3中删除了这个系统变量。

query_cache_size

在这里插入图片描述
This system variable was removed in MySQL 8.0.3.

query_cache_type

在这里插入图片描述
This system variable was removed in MySQL 8.0.3.

query_cache_wlock_invalidate

在这里插入图片描述
This system variable was removed in MySQL 8.0.3.

query_prealloc_size

在这里插入图片描述
用于语句解析和执行的持久缓冲区的大小。此缓冲区不会在语句之间释放。如果您正在运行复杂的查询,较大的query_prealloc_size值可能有助于提高性能,因为它可以减少服务器在查询执行操作期间执行内存分配的需要。

rand_seed1

在这里插入图片描述
rand_seed1和rand_seed2变量仅作为会话变量存在,可以设置但不能读取。变量(而不是它们的值)显示在SHOW变量的输出中。

这些变量的目的是支持RAND()函数的复制。对于调用RAND()的语句,主进程将两个值传递给从进程,在从进程中它们被用来生成随机数生成器。从服务器使用这些值设置会话变量rand_seed1和rand_seed2,以便从服务器上的RAND()生成与主服务器上相同的值。

range_alloc_block_size

在这里插入图片描述
在进行范围优化时分配的块的大小。

range_optimizer_max_mem_size

在这里插入图片描述
范围优化器的内存消耗限制。值0表示“没有限制”。如果优化器考虑的执行计划使用范围访问方法,但是优化器估计该方法所需的内存数量将超过限制,那么它将放弃该计划并考虑其他计划。

rbr_exec_mode

在这里插入图片描述
供mysqlbinlog内部使用。这个变量在 IDEMPOTENT模式和 STRICT模式之间切换服务器。 IDEMPOTENT模式会抑制mysqlbinlog生成的BINLOG语句中的重复键和未找到键的错误。当在服务器上重播导致与现有数据冲突的基于行的二进制日志时,此模式非常有用。mysqlbinlog在指定–idempotent选项时设置此模式,方法是将以下内容写入输出:
SET SESSION RBR_EXEC_MODE=IDEMPOTENT;

在MySQL 8.0.14中,设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。

read_buffer_size

在这里插入图片描述
对MyISAM表进行顺序扫描的每个线程为它扫描的每个表分配一个大小(以字节为单位)的缓冲区。如果您执行多次连续扫描,您可能希望增加这个值,默认值为131072。这个变量的值应该是4KB的倍数。如果将其设置为不是4KB的倍数,则其值将四舍五入到最接近的4KB倍数。

此选项也用于以下所有存储引擎的上下文:

用于在按顺序排序行时将索引缓存到临时文件(而不是临时表)中。

对于批量插入分区。

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

read_buffer_size还用于另一种特定于存储引擎的方式:确定内存表的内存块大小。

read_only

在这里插入图片描述
当启用read_only系统变量时,除了拥有CONNECTION_ADMIN或SUPER特权的用户之外,服务器不允许任何客户机更新。默认情况下禁用此变量。

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

如果启用super_read_only,服务器将禁止客户端更新,甚至禁止拥有超级特权的用户更新。

将super_read_only设置为ON隐式地强制read_only为ON。

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

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

  • 如果服务器是复制从线程,则由从线程执行更新。在复制设置中,启用从服务器上的read_only可以确保从服务器只接受来自主服务器的更新,而不接受来自客户机的更新。
  • 使用 ANALYZE TABLE or OPTIMIZE TABLE语句。只读模式的目的是防止对表结构或内容的更改。分析和优化不属于此类更改。例如,这意味着可以使用mysqlcheck (all-databases) analysis执行只读复制从服务器上的一致性检查。
  • 临时表上的操作。
  • 插入到日志表 mysql.general_log and mysql.slow_log
  • 对 Performance Schema 表的更新, 如 UPDATE or TRUNCATE TABLE 操作.

主服务器上对read_only的更改不会复制到从服务器上。可以在从属服务器上独立于主服务器上的设置设置该值。

以下条件适用于尝试启用read_only(包括由于启用super_read_only而导致的隐式尝试):
如果您有任何显式锁(通过锁表获得)或有一个挂起的事务,则尝试失败,并发生错误。

当其他客户端有任何正在执行的语句、活动锁表写入或正在执行的提交时,尝试阻塞,直到锁被释放,语句和事务结束。当启用read_only的尝试处于挂起状态时,其他客户机对表锁或开始事务的请求也会阻塞,直到设置了read_only。

如果存在持有元数据锁的活动事务,则尝试阻塞,直到这些事务结束。

当您持有全局读锁(通过 FLUSH TABLES WITH READ LOCK获得)时,可以启用read_only,因为它不涉及表锁。

read_rnd_buffer_size

在这里插入图片描述
这个变量用于从MyISAM表中读取数据,以及用于任何存储引擎的多范围读取优化。

当在键排序操作之后按排序顺序从MyISAM表中读取行时,将通过该缓冲区读取行,以避免磁盘查找。参见8.2.1.14节“优化排序”。将变量设置为大值可以大大提高性能。但是,这是为每个客户机分配的缓冲区,因此不应该将全局变量设置为大值。相反,只从需要运行大型查询的客户机内部更改会话变量

regexp_stack_limit

在这里插入图片描述
REGEXP_LIKE()和类似函数执行的正则表达式匹配操作所使用的内部堆栈的最大可用内存字节数

regexp_time_limit

在这里插入图片描述
REGEXP_LIKE()和类似函数执行正则表达式匹配操作的时间限制。此限制表示为匹配引擎执行的最大允许步骤数,因此仅间接影响执行时间。通常,它是毫秒级的。

require_secure_transport

在这里插入图片描述
表示客户端连接到服务器是否需要使用某种形式的安全传输。如果开启,服务器只允许使用SSL的TCP/IP连接,或使用一个套接字的连接文件。服务器拒绝不安全的连接尝试,失败报错ER_SECURE_TRANSPORT_REQUIRED错误。此功能优先考虑SSL需求,如果定义了一个REQUIRE SSL的账号,启用require_secure_transport,该账号不能使用Unix套接字文件连接。

resultset_metadata

在这里插入图片描述
对于元数据传输是可选的连接,客户端设置resultset_metadata系统变量来控制服务器是否返回结果集元数据。允许值为FULL(返回所有元数据;这是默认值)和NONE(不返回元数据)。

对于非元数据可选的连接,将resultset_metadata设置为NONE将产生错误。

secondary_engine_cost_threshold

在这里插入图片描述
以备将来使用。

schema_definition_cache

在这里插入图片描述
定义可保存在dictionary对象缓存中的模式定义对象(包括已使用和未使用的)数量的限制。

只有当使用的模式定义对象的数量小于schema_definition_cache定义的容量时,才将未使用的模式定义对象保存在字典对象缓存中。

设置为0意味着模式定义对象仅在使用时保存在字典对象缓存中。

secure_auth

在这里插入图片描述
This system variable was removed in MySQL 8.0.3.

secure_file_priv

在这里插入图片描述
这个变量用于限制数据导入和导出操作的效果,例如 LOAD DATA and SELECT … INTO OUTFILE 和 LOAD_FILE() 函数。这些操作只允许具有文件特权的用户进行。
secure_file_priv可以设置如下:

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

如果设置为目录的名称,服务器将导入和导出操作限制为仅对该目录中的文件有效。目录必须存在;服务器不会创建它。

如果设置为NULL,服务器将禁用导入和导出操作。

默认值是特定于平台的,取决于INSTALL_LAYOUT CMake选项的值,如下表所示。如果您是从源代码构建的,要显式指定默认的secure_file_priv值,请使用INSTALL_SECURE_FILE_PRIVDIR CMake选项。
在这里插入图片描述
服务器在启动时检查secure_file_priv的值,如果该值不安全,则向错误日志写入警告。如果非空值为空,或者该值是数据目录或其子目录,或者是所有用户都可以访问的目录,则认为非空值不安全。如果secure_file_priv设置为不存在的路径,服务器将错误消息写入错误日志并退出。

server_id

在这里插入图片描述
指定服务器ID。该变量由–server- ID选项设置。默认情况下,server_id系统变量设置为1。可以使用这个默认ID启动服务器,但是当启用二进制日志记录时,如果没有使用–server- ID选项显式指定服务器ID,则会发出一条信息消息。

用于复制的服务器拓扑,您必须指定一个唯一的服务器为每个复制服务器ID,范围从1到2的32次方−1。“惟一”意味着每个ID必须与任何其他复制主或从使用的每个其他ID不同。

如果服务器ID设置为0,则进行二进制日志记录,但是服务器ID为0的主机拒绝从服务器连接,服务器ID为0的从服务器拒绝连接到主机。请注意,尽管可以动态地将服务器ID更改为非零值,但这样做不会立即启动复制。您必须更改服务器ID,然后重新启动服务器以初始化复制从属服务器。

session_track_gtids

在这里插入图片描述
控制服务器是否跟踪当前会话中的gtid并将其返回给客户机。根据变量值,在执行每个事务的最后,跟踪器捕获服务器gtid并将其返回给客户机。这些session_track_gtids值是允许的:

  • 关闭:跟踪器不收集GTIDs。这是默认值。

  • OWN_GTID:跟踪器收集由成功提交的读/写事务生成的gtid。

  • ALL_GTIDS:在当前事务提交时,跟踪器在gtid_execution系统变量中收集所有gtid,而不管事务是读/写还是只读。

无法在事务上下文中设置session_track_gtids。

session_track_schema

在这里插入图片描述
控制服务器是否跟踪在当前会话中何时设置了默认模式(数据库),并通知客户机使模式名称可用。

如果启用模式名称跟踪器,则在每次设置默认模式时都会发生名称通知,即使新模式名称与旧模式名称相同。

session_track_state_change

在这里插入图片描述
控制服务器是否跟踪当前会话状态的更改,并在状态更改发生时通知客户机。

可以报告客户机会话状态的这些属性的更改:

  • 默认模式(数据库)。

  • 系统变量的会话特定值。

  • 用户定义的变量。

  • 临时表。

  • 准备好的语句。

如果启用了会话状态跟踪器,即使新属性值与旧属性值相同,也会为涉及跟踪的会话属性的每个更改发出通知。例如,将用户定义的变量设置为其当前值将导致通知。

session_track_state_change变量只控制发生更改时的通知,而不是更改的内容。例如,当设置默认模式或分配跟踪的会话系统变量时,会发生状态更改通知,但是通知不包括模式名称或变量值。要接收模式名或会话系统变量值的通知,请分别使用session_track_schema或session_track_system_variables系统变量。

note:将值赋给session_track_state_change本身不被认为是状态更改,也不作为状态更改报告。但是,如果它的名称列在session_track_system_variables的值中,那么对它的任何赋值都会导致新值的通知。将值赋给session_track_state_change本身不被认为是状态更改,也不作为状态更改报告。但是,如果它的名称列在session_track_system_variables的值中,那么对它的任何赋值都会导致新值的通知。

session_track_system_variables

在这里插入图片描述
控制服务器是否跟踪分配给会话系统变量的任务,并将每个分配的变量的名称和值通知客户机。变量值是一个逗号分隔的变量列表,用于跟踪赋值。默认情况下,通知支持time_zone、autocommit、character_set_client、character_set_results和character_set_connection。(后三个变量是受集合名影响的变量。)

特殊值*导致服务器跟踪所有会话变量的分配。如果给定,这个值必须由它自己指定,而没有特定的系统变量名。

要禁用会话变量分配的通知,请将session_track_system_variables设置为空字符串。

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

session_track_transaction_info

在这里插入图片描述
控制服务器是否跟踪当前会话中事务的状态和特征,并通知客户机使此信息可用。这些session_track_transaction_info值是允许的:

  • OFF:禁用事务状态跟踪。这是默认值。

  • STATE:启用没有特征跟踪的事务状态跟踪。状态跟踪使客户机能够确定事务是否在进行中,以及是否可以在不回滚的情况下将其移动到另一个会话。

  • CHARACTERISTICS:启用事务状态跟踪,包括特征跟踪。特征跟踪使客户机能够确定如何在另一个会话中重新启动事务,使其具有与原始会话相同的特征。以下特征与此目的有关:
    在这里插入图片描述
    为了让客户机安全地将事务重新定位到另一个会话,它不仅必须跟踪事务状态,还必须跟踪事务特征。此外,客户端必须跟踪transaction_isolation和transaction_read_only系统变量,以正确地确定会话默认值。(要跟踪这些变量,请在session_track_system_variables系统变量的值中列出它们。)

sha256_password_auto_generate_rsa_keys

在这里插入图片描述
如果服务器使用OpenSSL编译,则此变量可用。服务器使用它来决定是否在数据目录中自动生成RSA私有/公共密钥对文件(如果它们不存在的话)。

在启动时,如果所有这些条件都为真,服务器会自动在数据目录中生成RSA私有/公共密钥对文件:

  • 启用sha256_password_auto_generate_rsa_keys或caching_sha2_password_auto_generate_rsa_keys系统变量;

  • 没有指定RSA选项;

  • 数据目录中缺少RSA文件。这些密钥对文件为通过sha256_password或caching_sha2_password插件验证的帐户启用RSA在未加密连接上的安全密码交换;参见第6.5.1.2节“SHA-256可插拔身份验证”和第6.5.1.3节“缓存SHA-2可插拔身份验证”。

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

sha256_password_private_key_path

在这里插入图片描述
如果MySQL是使用OpenSSL编译的,则可以使用此变量(请参阅6.4.4节“OpenSSL与wolfSSL的比较”)。它的值是sha256_password身份验证插件RSA私钥文件的路径名。如果文件被命名为相对路径,那么它将相对于服务器数据目录进行解释。文件必须是PEM格式。

因为这个文件存储私钥,所以它的访问模式应该受到限制,这样只有MySQL服务器才能读取它。

sha256_password_proxy_users

在这里插入图片描述
这个变量控制sha256_password内置身份验证插件是否支持代理用户。除非启用check_proxy_users系统变量,否则它没有效果

sha256_password_public_key_path

在这里插入图片描述
如果MySQL是使用OpenSSL编译的,则可以使用此变量(请参阅6.4.4节“OpenSSL与wolfSSL的比较”)。它的值是sha256_password身份验证插件RSA公钥文件的路径名。如果文件被命名为相对路径,那么它将相对于服务器数据目录进行解释。文件必须是PEM格式。由于该文件存储公钥,副本可以免费分发给客户机用户。(使用RSA密码加密连接到服务器时显式指定公钥的客户机必须使用与服务器使用的公钥相同的公钥。)

shared_memory

在这里插入图片描述
(Windows变量)。服务器是否允许共享内存连接。

shared_memory_base_name

在这里插入图片描述
(Windows)。用于共享内存连接的共享内存的名称。当在一台物理机器上运行多个MySQL实例时,这非常有用。默认名称是MYSQL。名称区分大小写。

show_compatibility_56

在这里插入图片描述
该变量用于INFORMATION_SCHEMA表中的系统和状态变量信息转移到 Performance Schema表的过渡时期。过渡阶段在MySQL 8.0.1中结束,此时该变量被删除。

show_create_table_verbosity

在这里插入图片描述
如果行格式是默认格式,SHOW CREATE TABLE通常不显示ROW_FORMAT表选项。启用此变量会导致SHOW CREATE TABLE显示ROW_FORMAT,而不管它是否是默认格式。

show_old_temporals

在这里插入图片描述
SHOW CREATE TABLE输出是否包含用于标记5.6.4之前格式的时态列(时间、日期时间和时间戳列,不支持小数秒精度)的注释。默认情况下禁用此变量。如果启用,显示CREATE TABLE输出如下:

CREATE TABLE `mytbl` (
  `ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dt` datetime /* 5.5 binary format */ DEFAULT NULL,
  `t` time /* 5.5 binary format */ DEFAULT NULL
) DEFAULT CHARSET=utf8mb4

INFORMATION_SCHEMA的COLUMN_TYPE列的输出。列表也受到类似的影响。

此变量已被弃用,将在MySQL的未来版本中删除。

skip_external_locking

在这里插入图片描述
如果mysqld使用外部锁定(系统锁定),则关闭;如果禁用外部锁定,则打开。这只影响MyISAM表的访问。

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

外部锁定只影响MyISAM表的访问。

skip_name_resolve

在这里插入图片描述
此变量由–skip-name-resolve选项的值设置。如果关闭,mysqld将在检查客户机连接时解析主机名。如果mysqld打开,则只使用IP号;在这种情况下,grant表中的所有主机列值必须是IP地址或localhost。

skip_networking


如果服务器只允许本地(非tcp /IP)连接,则启用此选项。在Unix上,本地连接使用Unix套接字文件。在Windows上,本地连接使用命名管道或共享内存。这个变量可以通过–skip-networking选项设置为ON。

skip_show_database


这可以防止没有SHOW DATABASES特权的人使用SHOW DATABASES语句。如果您担心用户能够看到属于其他用户的数据库,那么这可以提高安全性。它的效果取决于SHOW DATABASES特权:如果变量值为on, SHOW DATABASES语句只允许具有SHOW DATABASES特权的用户使用,并且该语句显示所有数据库名称。如果该值为OFF,则所有用户都允许显示数据库,但只显示用户具有显示数据库或其他特权的数据库的名称。(任何全局特权都被认为是所有数据库的特权。)

slow_launch_time

在这里插入图片描述
如果创建一个线程花费的时间超过这么多秒,服务器将递增Slow_launch_threads状态变量。

slow_query_log

在这里插入图片描述
是否启用慢速查询日志。值可以是0(或OFF)来禁用日志,也可以是1(或ON)来启用日志。默认值取决于是否给出–slow_query_log选项。日志输出的目的地由log_output系统变量控制;如果该值为NONE,即使启用了日志,也不会写入日志条目。

“慢查询时间”由long_query_time变量的值决定。

slow_query_log_file

在这里插入图片描述
慢速查询日志文件的名称。默认值是 host_name-slow.log。但是可以使用–slow_query_log_file选项更改初始值。

socket

在这里插入图片描述
在Unix平台上,这个变量是用于本地客户机连接的套接字文件的名称。默认值是/tmp/mysql.sock。(对于某些分发格式,目录可能不同,例如rpm的/var/lib/mysql)。

在Windows上,该变量是用于本地客户机连接的命名管道的名称。默认值是MySQL(不区分大小写)。

sort_buffer_size

在这里插入图片描述
必须执行排序的每个会话都分配一个这样大小的缓冲区。sort_buffer_size不是特定于任何存储引擎的,它通常用于优化。sort_buffer_size值至少要大到足以容纳排序缓冲区中的15个元组。此外,增加max_sort_length的值可能需要增加sort_buffer_size的值。

如果您在SHOW GLOBAL STATUS输出中看到每秒有许多Sort_merge_passes,那么您可以考虑增加sort_buffer_size值,以加快ORDER BY或GROUP BY操作的速度,这些操作不能通过查询优化或改进索引来改进

优化器试图计算出需要多少空间,但可以分配更多的空间,直到达到极限。将它设置为大于全局所需的大小将会降低大多数排序查询的速度。最好将其作为会话设置进行增加,并且只针对需要更大大小的会话。在Linux上,有256KB和2MB的阈值,较大的值可能会显著降低内存分配,因此您应该考虑保持在这些值之下。尝试找到工作负载的最佳值

的最大容许设置sort_buffer_size为 4GB−1。更大的值允许在64位平台上(除了64位Windows,因为大值截断4GB−1警告)。

sql_auto_is_null


如果启用了该变量,那么在成功插入自动生成的AUTO_INCREMENT值的语句之后,可以通过发出以下形式的语句找到该值:
在这里插入图片描述
如果语句返回一行,返回的值与调用LAST_INSERT_ID()函数时的值相同。详细信息,包括多行插入后的返回值。如果没有成功插入AUTO_INCREMENT值,SELECT语句将不返回行。

通过使用IS NULL比较检索AUTO_INCREMENT值的行为被一些ODBC程序(如Access)使用。可以通过将sql_auto_is_null设置为OFF来禁用此行为。

sql_auto_is_null的默认值为OFF。
在这里插入图片描述

sql_big_selects

在这里插入图片描述
如果设置为OFF, MySQL将中止可能需要很长时间执行的SELECT语句(即优化器估计检查的行数超过max_join_size值的语句)。当发布了一个不可取的WHERE语句时,这很有用。新连接的默认值为ON,它允许所有SELECT语句。

如果将max_join_size系统变量设置为默认值以外的值,sql_big_select设置为OFF。

sql_buffer_result

在这里插入图片描述
如果启用sql_buffer_result,则强制将SELECT语句的结果放入临时表中。这有助于MySQL尽早释放表锁,并且在向客户端发送结果需要很长时间的情况下是有益的。默认值为OFF。

sql_log_off

在这里插入图片描述
此变量控制当前会话是否禁用对常规查询日志的日志记录(假设启用了常规查询日志本身)。默认值为OFF(即启用日志记录)。要禁用或启用当前会话的常规查询日志记录,请将会话sql_log_off变量设置为ON或OFF。

设置此系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量

sql_mode

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
当前服务器SQL模式,可以动态设置。
MySQL安装程序可以在安装过程中配置SQL模式。

如果SQL模式与默认模式或预期模式不同,请检查服务器在启动时读取的选项文件中的设置。

sql_notes

在这里插入图片描述
如果启用(默认),则对notes级别增量warning_count进行诊断,并由服务器记录它们。如果禁用,请注意诊断不会增加warning_count,服务器也不会记录它们。mysqldump包含禁用此变量的输出,以便重新加载转储文件不会为不影响重新加载操作的完整性的事件生成警告。

猜你喜欢

转载自blog.csdn.net/m0_37827567/article/details/86594264