ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

「MySQL」- 系统变量(System Variables) @20210227

2021-02-27 10:58:19  阅读:241  来源: 互联网

标签:SET 变量 max Variables System 会话 20210227 MySQL 全局变量


环境概述

MySQL 8.0

系统变量(System Variables)是什么?

系统变量,由 MySQL 维护,用于控制 MySQL 行为。

某些系统变量是由组件与插件安装的变量,当插件或组件安装后才可使用。这些变量具有“组件名前缀”(或“插件名前缀”),但是他们依旧属于系统变量。

系统变量的作用范围

全局 与 会话

系统变量具有两个作用范围:全局,影响服务的整个操作;会话,影响当前客户端连接的操作;

给定的某个系统变量,可以同时具有全局值会话值

两者之间的关系

在服务启动时,所有全局变量初始化为默认值,或者在选项中配置的值。

在客户端连接时,使用全局变量值初始化会话变量值。注意,某些特殊变量,会话参数值不会被全局参数值初始化,在文档描述中会有说明

如何设置系统变量?

每个系统变量都有默认值。

在启动时,可以通过命令行选项设置;或者通过配置文件(my.cnf)设置;

在运行时,多数变量可以通过 SET 语句设置,这无需重启或停止数据库。

命令行选项

1)与普通命令行选项无异
2)使用横线、下划线皆可:--general_log=ON--general-log=ON
3)可以使用单位(K、M、G),大小写皆可:--innodb-log-file-size=16M --max-allowed-packet=1G

通过命令行选项 --maximum-var_name=value 形式,可以限制 SET 可设置的参数最大值。

配置文件(my.cnf)

1)与命令行选项类似,只需去除前缀:

[mysqld]
innodb_log_file_size=16M
max_allowed_packet=1G

使用 SET 语句

多数变量可以使用 SET 语句修改:
1)通过名称引用;
2)并前缀修饰符(可选);
3)只能使用下划线,不能使用横线;

使用 SET 语句

设置全局变量(临时)

SET GLOBAL max_connections = 1000;
SET @@GLOBAL.max_connections = 1000;

设置全局变量(并持久化到 mysqld-auto.cnf 文件)

SET PERSIST max_connections = 1000;
SET @@PERSIST.max_connections = 1000;

设置全局变量(仅持久化到 mysqld-auto.cnf 文件)

SET PERSIST_ONLY max_connections = 1000;
SET @@PERSIST_ONLY.max_connections = 1000;

设置会话变量

SET SESSION sql_mode = 'TRADITIONAL';
SET @@SESSION.sql_mode = 'TRADITIONAL';
SET @@sql_mode = 'TRADITIONAL';

注意事项

在修改全局变量后,会为新连接使用新值;对于现有连接,修改全局变量的值不会影响到对应的会话变量(即使是在当前连接中只用SET GLOBAL语句,也不会影响对应的会话变量)。

在服务重启后,全局变量会失效。如果要持久化,应该写入配置文件。

查看系统变量

使用 SHOW VARIABLES LIKE 'var_mame'; 或者 SHOW VARIABLES 语句来查看系统变量。

注意事项:
1)建议使用下划线,因为变量都是以下划线存储在数据库中的。

需要的用于权限

Section 5.1.9.1, “System Variable Privileges”

参考文献

MySQL 中的变量:系统变量(包括:会话变量、全局变量)、会话变量(包括:局部变量、会话变量)
How to change MySQL system parameters/variables
MySQL 5.7 Reference Manual/13.7.4.1 SET Syntax for Variable Assignment

标签:SET,变量,max,Variables,System,会话,20210227,MySQL,全局变量
来源: https://blog.csdn.net/u013670453/article/details/114164912

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有