深入MySQL-变量设置相关

版权声明:转载需声明本人出品 https://blog.csdn.net/weixin_40288381/article/details/88880558

本博客内容部分借鉴于此

概述

MySQL的配置文件涉及到相关变量的概念:

  • . 系统变量
  • . 用户变量

用户变量

用户变量是指针对当前登录MySQL用户的私有变量,可以先在用户变量中保存值之后引用它,这样可以将值从一个语句传递到另一个语句。
用户变量与连接有关,也就是说,一个客户端定义的变量不能被其他客户端看到或使用。当此客户端退出时,该客户端连接的所有变量将自动释放

用户变量的形式为@var_name,其中变量名var_name可以由当前字符集组成(默认字符集是Latin1),可以通过mysqld的-default-character-set选项更改字符集。用户变量名对大小写不敏感

SET @var_name = expr [, @var_name = expr] …
对于SET,可以使用=或=:作为分配符。建议使用“:=”—因为在MySQL中“等号”有时被视作比较符

SET @t1:=0, @t2:=0, @t3:=0;

系统变量

MySQL可以访问许多系统和连接变量。当服务器运行时许多变量支持动态更改,允许修改服务器操作而不需要停止并重启服务器。
mysqld服务器维护两种变量:

  • 全局变量:影响服务器整体操作
  • 会话变量:影响具体客户端连接操作

当服务器启动时,它将所有全局变量初始化为默认值。这些默认值可以在配置文件my.cnf或者在命令行中指定选项进行更改。服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句,可以动态更改这些全局变量。
服务器还为每个连接的客户端维护一系列的会话变量,在连接时使用相应的全局变量的当前值对客户端的会话变量进行初始化。对于动态会话变量,客户端可以通过SET SESSION var_name语句更改,当SET var_name时默认为修改会话变量。

要想设置一个GLOBAL变量的值,使用下面的语法:

mysql> SET GLOBAL sort_buffer_size=value;
mysql> SET @@global.sort_buffer_size=value;

要想设置一个SESSION变量的值,使用下面的语法:

mysql> SHOW VARIABLES like ‘sort_buffer_size’;
mysql> SHOW SESSION VARIABLES like ‘sort_buffer_size’;
mysql> SELECT @@sort_buffer_size;
mysql> SELECT @@session.sort_buffer_size;

要想检索一个GLOBAL变量的值,使用下面的语法:

mysql> SHOW GLOBAL VARIABLES like ‘sort_buffer_size’;(可搜索多个变量 例如:SHOW GLOBAL VARIABLES like ‘%buffer%’;)
mysql> SELECT @@global.sort_buffer_size;(不能搜索多个变量 )

要想检索一个SESSION变量的值,使用下面的语法:

mysql> SHOW VARIABLES like ‘sort_buffer_size’;(可搜索多个变量 例如:SHOW VARIABLES like ‘%buffer%’;)
mysql> SHOW SESSION VARIABLES like ‘sort_buffer_size’;
mysql> SELECT @@sort_buffer_size;
mysql> SELECT @@session.sort_buffer_size;

全局变量小结
  1. 无论是修改本次会话的变量还是全局变量,当mysql服务器重启时,都会失效。要想永久生效,还是要将配置写入my.cnf的配置文件的
  2. 对于全局变量的更改可以被访问该全局变量的任何客户端看见。然而,它只影响更改后连接的客户的从该全局变量初始化的相应会话变量。不影响目前已经连接的客户端的会话变量(即使客户端执行SET GLOBAL
  3. 对于局部变量修改后,只会对本次连接生效,客户端重新连接后失效

猜你喜欢

转载自blog.csdn.net/weixin_40288381/article/details/88880558