在 MySQL 数据库,变量分为系统变量和用户自定义变量。系统变量以 @@ 开头,用户自定义变量以 @ 开头。

服务器维护着两种系统变量,即全局变量(GLOBAL VARIABLES)和会话变量(SESSION VARIABLES)。全局变量影响 MySQL 服务的整体运行方式,会话变量影响具体客户端连接的操作。

每一个客户端成功连接服务器后,都会产生与之对应的会话。会话期间,MySQL 服务实例会在服务器内存中生成与该会话对应的会话变量,这些会话变量的初始值是全局变量值的拷贝。

查看系统变量

可以使用以下命令查看 MySQL 中所有的全局变量信息。

SHOW GLOBAL VARIABLES;

可以使用以下命令查看与当前会话相关的所有会话变量以及全局变量。

SHOW SESSION VARIABLES;

其中,SESSION 关键字可以省略。

MySQL 中的系统变量以两个“@”开头。

  • @@global 仅仅用于标记全局变量;
  • @@session 仅仅用于标记会话变量;
  • @@ 首先标记会话变量,如果会话变量不存在,则标记全局变量。

MySQL 中有一些系统变量仅仅是全局变量,例如 innodb_data_file_path,可以使用以下 3 种方法查看:

 SHOW GLOBAL VARIABLES LIKE 'innodb_data_file_path';
SHOW SESSION VARIABLES LIKE 'innodb_data_file_path';
SHOW VARIABLES LIKE 'innodb_data_file_path';

MySQL 中有一些系统变量仅仅是会话变量,例如 MySQL 连接 ID 会话变量 pseudo_thread_id,可以使用以下 2 种方法查看。

 SHOW SESSION VARIABLES LIKE 'pseudo_thread_id';
 SHOW VARIABLES LIKE 'pseudo_thread_id';

MySQL 中有一些系统变量既是全局变量,又是会话变量,例如系统变量 character_set_client 既是全局变量,又是会话变量。

SHOW SESSION VARIABLES LIKE 'character_set_client';
SHOW VARIABLES LIKE 'character_set_client';

此时查看全局变量的方法如下:

SHOW GLOBAL VARIABLES LIKE 'character_set_client';

设置系统变量

可以通过以下方法设置系统变量:

  • 修改 MySQL 源代码,然后对 MySQL 源代码重新编译(该方法适用于 MySQL 高级用户,这里不做阐述)。
  • 在 MySQL 配置文件(mysql.ini 或 mysql.cnf)中修改 MySQL 系统变量的值(需要重启 MySQL
    服务才会生效)。
  • 在 MySQL 服务运行期间,使用 SET 命令重新设置系统变量的值。

服务器启动时,会将所有的全局变量赋予默认值。这些默认值可以在选项文件中或在命令行中对执行的选项进行更改。

更改全局变量,必须具有 SUPER 权限。设置全局变量的值的方法如下:

SET @@global.innodb_file_per_table=default;
SET @@global.innodb_file_per_table=ON;
SET global innodb_file_per_table=ON;

需要注意的是,更改全局变量只影响更改后连接客户端的相应会话变量,而不会影响目前已经连接的客户端的会话变量(即使客户端执行 SET GLOBAL 语句也不影响)。也就是说,对于修改全局变量之前连接的客户端只有在客户端重新连接后,才会影响到客户端。

客户端连接时,当前全局变量的值会对客户端的会话变量进行相应初始化。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。

设置会话变量的值的方法如下:

 SET @@session.pseudo_thread_id=5;
 SET session pseudo_thread_id=5;
  SET @@pseudo_thread_id=5;
  SET pseudo_thread_id = 5;

如果没有指定修改全局变量还是会话变量,服务器会当作会话变量来处理。比如:

 SET @@sort_buffer_size = 50000;

上面语句没有指定是 GLOBAL 还是 SESSION,服务器会当做 SESSION 处理。

使用 SET 设置全局变量或会话变量成功后,如果 MySQL 服务重启,数据库的配置就又会重新初始化。一切按照配置文件进行初始化,全局变量和会话变量的配置都会失效。

MySQL 中还有一些特殊的全局变量,如 log_bin、tmpdir、version、datadir,在 MySQL 服务实例运行期间它们的值不能动态修改,也就是不能使用 SET 命令进行重新设置,这种变量称为静态变量。数据库管理员可以使用前面提到的修改源代码或更改配置文件来重新设置静态变量的值。

9、MySQL系统变量(查看和修改)相关推荐

  1. MySQL 系统变量(system variables)

    MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等.这些个系统变量可以分为全局以及会话级别层面来修改,有些也可以进行动 ...

  2. MySQL系统变量和自定义变量

    1 系统变量 1.1 查看系统变量 可以使用以下命令查看 MySQL 中所有的全局变量信息. SHOW GLOBAL VARIABLES; MySQL 中的系统变量以两个"@"开头 ...

  3. linux系统怎么查看权限设置密码,linux系统怎么查看及修改文件读写权限设置

    在linux中查看与修改文件权限我们都必须使用命令来操作,不能像windows一样点几下就好了,那么linux系统怎么查看及修改文件读写权限设置?接下来大家跟着学习啦小编一起来了解一下linux系统查 ...

  4. mysql系统变量_MySQL系统变量

    @v是用户自定义的变量set @a="1" @@是mysql系统变量select @@version_comment, @@global.xxxx, @@session.xxxx, ...

  5. Linux系统下查看和修改 系统时间和硬件时间

    Linux系统下查看和修改 系统时间和硬件时间 1.具体命令使用如下: 查看当前系统时间 [root@littlelawson hbase-1.4.0]# date Mon Jun 18 10:36: ...

  6. w8服务器dns修改,Win8系统怎么查看和修改路由器DNS设置?

    路由器使用的时间久了,难免会遇到些问题,什么网络不稳定,网络不能使用等都有可能发生.而发生这些问题的原因一般都是因为DNS设置出了问题,所以我们平时可以多多查看一下DNS设置.那么,Win8系统怎么查 ...

  7. 【mysql知识点】查看和修改系统参数

    如何查看和修改系统参数? 在MySQL里,参数也可以叫变量(Variables),一般配置文件为:/etc/my.cnf.当MySQL实例启动时,MySQL会先去读一个配置参数文件,用来寻找数据库的各 ...

  8. mysql系统变量详解

    mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选项来更改这些默认值.服务 ...

  9. mysql系统变量_MySQL 系统变量(system variables)

    3.全局与会话级别设置示例 --如何设置隔离级别 mysql> help isolation Name: 'ISOLATION' Description: Syntax: SET [GLOBAL ...

最新文章

  1. meson 中调用shell script
  2. C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
  3. java实现迷你计算机,用JAVA写一个迷你编辑器.doc
  4. python整形魔法_python 魔法方法
  5. 经典:比尔·盖茨的创业智慧
  6. python如何创建模块视频_Python | 如何创建模块(模块示例)?
  7. HDU 1011 Starship Troopers 树形+背包dp
  8. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(1)
  9. linux入门怎么学?
  10. SSH Mybatis 框架
  11. OCS 2007 R2搭建准备虚机及快照
  12. linux文件管理系统答辩ppt,Linux操作系统ppt--第9次文件管理分析.ppt
  13. git gui here如何汉化_github的git GUI Here的使用,适合新手!!!
  14. 分区助手扩大c盘后自动修复_分区助手扩大c盘的详细操作步骤
  15. mysql的临时表空间_Mysql临时表空间详解
  16. 曲苑杂坛--修改数据库服务器名称
  17. 网络重置后,WiFi模块没了,网络适配器感叹号
  18. guzzlehttp resulted in a `409 Conflict` response 访问网址 laravel thinkphp
  19. deepnode软件下载地址_安卓苹果软件下载地址恢复
  20. 基于TCAM 的高速路由查找

热门文章

  1. 关于你不知道的特征归一化/标准化
  2. 清理 zabbix 历史数据, 缩减 mysql 空间
  3. LeetCode:汇总区间【228】
  4. Maven之(二)Maven生命周期
  5. HTML a 标签的正则表达式
  6. 很久没写东西了,留个言。
  7. I2C_ADDRS(addr, addrs...)理解
  8. TCP/IP总结(1)分层
  9. Hyperledger Fabric 核心模块(4)orderer 共识
  10. Qt 原理-MOC(1)Meta Object Compiler