广告
返回顶部
首页 > 资讯 > 数据库 >Mysql系统变量与状态变量详细介绍
  • 555
分享到

Mysql系统变量与状态变量详细介绍

2024-04-02 19:04:59 555人浏览 独家记忆
摘要

目录系统变量什么是Mysql系统变量设置系统变量my.cnf设置配置启动项配置Set的形式修改系统变量SESSioN作用范围语法GLOBAL作用范围语法查看系统变量值系统变量注意点并不是所有的系统变量都有session范

系统变量

什么是mysql系统变量

能够在程序运行过程中影响Mysql程序行为的变量称之为系统变量。

在Mysql中存在多个系统变量,可以使用show variables查看,如果直接执行得到的结果是查询了所有的系统变量,所以这个命令支持模糊匹配,

演示如下:

### 模糊搜索系统变量中包含conn的所有变量,精确匹配时值不包含%
mysql> show variables like '%conn%';
+-----------------------------------------------+-----------------+
| Variable_name                                 | Value           |
+-----------------------------------------------+-----------------+
| character_set_connection                      | utf8            |
| collation_connection                          | utf8_general_ci |
| connect_timeout                               | 10              |
| disconnect_on_expired_passWord                | ON              |
| init_connect                                  |                 |
| max_connect_errors                            | 100             |
| max_connections                               | 400             |
| max_user_connections                          | 0               |
| perfORMance_schema_session_connect_attrs_size | 512             |
+-----------------------------------------------+-----------------+

设置系统变量

设置系统变量其实在上篇已经聊过两种通过启动项配置以及my.cnf配置文件配置,演示如下

my.cnf设置配置

my.cnf文件配置;

[mysqld]
datadir=/usr/local/mysql-5.7.26/data
default-storage-engine=MyISAM
max-connections=10
### 其它配置省略

客户端读取:

mysql> show variables like '%datadir%';
+---------------+-------------------------------+
| Variable_name | Value                         |
+---------------+-------------------------------+
| datadir       | /usr/local/mysql-5.7.26/data/ |
+---------------+-------------------------------+
1 row in set (0.00 sec)

mysql> show variables like '%default-storage-engine%';
Empty set (0.01 sec)
#### 注意搜索系统变量名字的区别!!!
mysql> show variables like '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)

注意:在MySQL客户端读取配置时所有系统变量采用的是下划线(仅支持下划线),而在配置文件My.cnf或者启动配置项中采用中划线或者下划线是等价的,一定要注意区分!!!!!!。

启动项配置

服务端启动配置

###root用户执行采用配置--user=root,非root用户不用
mysqld--user=root--max-connections=111

客户端查询系统变量

mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 111   |
+-----------------+-------+
1 row in set (0.00 sec)

这两种方法都可以修改系统变量,但是缺点也是存在的

  • 修改完需要重启服务端才可以生效。
  • 修改完对所有的客户端都生效,有时单个客户端需要有特定的系统变量,显然不符合要求。

所以这里介绍第三种方式,采用set的形式修改系统变量。

Set的形式修改系统变量

在Mysql客户端我们可以采用Set命令直接修改系统变量,不过需要注意的是,Set的形式修改会指定系统变量生效的范围,因为当多个客户端连接同一个服务端时可能一个系统变量需要作用于所有的客户端,有的系统变量只需要作用于当前的客户端即可,根据作用范围分为如下两种。

  • **GLOBAL:**针对所有的客户端生效。
  • **SESSION(也被称为local):**只对当前会话生效,其余客户端不受影响。

显然对于my.cnf设置配置和启动项配置都是作用于所有的客户端,也就是GLOBAL作用范围,那么只针对当前客户端的系统变量需要如何设置呢,

体验如下所示:

#### 先查询一次存储引擎的值
mysql> show variables like '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)

mysql> set default_storage_engine=InnoDB;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%default_storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)

SESSION作用范围语法

我们在使用set命令改变系统变量的值其实默认就是session范围的语法,具体语法如下:

### 语法一:默认采用session
mysql> set default_storage_engine=InnoDB;
### 语法二:指定作用范围session
mysql> set session default_storage_engine InnoDB;
### 语法三
mysql> set @@session.default_storage_engine=InnoDB;

GLOBAL作用范围语法

global影响范围是所有的客户端,具体语法如下所示:

### 语法一
mysql> set global default_storage_engine=InnoDB;
### 语法二
mysql> set @@global.default_storage_engine=MyISAM;

查看系统变量值

从上面我们知道了Mysql中的系统变量分为两种操作范围,同样查询系统变量时也是分作用范围查询,查询系统变量语法如下所示。

show [global|session]  variables like [匹配元素支持模糊匹配%]

默认显示的是session作用范围的系统变量。

命令演示如下:

### 查询session当前客户端存储引擎的系统变量
mysql> show session variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)
### 查询global所有客户端存储引擎的系统变量
mysql> show global  variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)

### 改变全局系统变量【默认存储引擎】
mysql> set global default_storage_engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)

### 再次查询全局系统变量【默认存储引擎】值,修改成功!!!!!!!
mysql> show global  variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)

### 再次查询当前客户端【默认存储引擎】值,没有被修改!!
mysql> show session variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)

注意:当修改全局global作用范围的系统变量时,session作用范围的相同名字系统变量值并不会马上修改,需要等客户端下一次接入时才会生效,也就是说修改全局global作用范围的系统变量,只会影响后续接入客户端作用范围为session的系统变量。

系统变量注意点

并不是所有的系统变量都有session范围和global范围

只有session范围的系统变量

只有session范围的系统变量,如insert_id,表示对当前客户端表设置了自增长AUTO_INCREMENT列,插入数据的自增长id初始值,

演示如下:

### 初始值默认0
mysql> show variables like 'insert_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| insert_id     | 0     |
+---------------+-------+
1 row in set (0.00 sec)
### 设置初始值为2
mysql> set session insert_id=2;
Query OK, 0 rows affected (0.00 sec)

### 创建一张表,带有自增长AUTO_INCREMENT列
mysql> CREATE TABLE tb_student(
    -> id INT(4) PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(25) NOT NULL
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tb_student(name) values('zhangsan');
Query OK, 1 row affected (0.00 sec)

### 自增长初始值由0变为2,设置成功!!
mysql> select * from tb_student;
+----+----------+
| id | name     |
+----+----------+
|  2 | zhangsan |
+----+----------+
1 row in set (0.00 sec)

session作用范围的不能设置为全局系统变量,提示如下:

mysql> set global insert_id=2;
ERROR 1228 (HY000): Variable 'insert_id' is a SESSION variable and can't be used with SET GLOBAL

只有global范围的系统变量

这类变量多为系统功能支持变量,如max_connections系统最大连接数,只能采用global修改

mysql> set max_connections=123;
ERROR 1229 (HY000): Variable 'max_connections' is a GLOBAL variable and should be set with SET GLOBAL

并不是所有系统变量可以修改

对于绝大多数系统变量来讲都是可以修改的,但万事有例外,有些系统变量只读,如version查看数据库版本。

mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.7.26 |
+---------------+--------+
1 row in set (0.01 sec)

### 只读系统变量修改报错
mysql> set version='1.0.0';
ERROR 1238 (HY000): Variable 'version' is a read only variable

状态变量

系统变量是能够影响程序的运行行为的变量,而状态变量是能够帮我们了解程序运行过程中的情况,这些状态变量的值由程序运行过程中产生,不可设置,具体语法如下

show [global|session] status like  [匹配元素支持模糊匹配%]

不写明作用范围默认session

命令演示如下:

### 默认查询session作用范围的数据
mysql> show status like '%threads%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Delayed_insert_threads | 0     |
| Slow_launch_threads    | 0     |
| Threads_cached         | 0     |
| Threads_connected      | 2     |
| Threads_created        | 2     |
| Threads_running        | 1     |
+------------------------+-------+

到此这篇关于Mysql系统变量与状态变量详细介绍的文章就介绍到这了,更多相关Mysql系统变量内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql系统变量与状态变量详细介绍

本文链接: https://www.lsjlt.com/news/34242.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql系统变量与状态变量详细介绍
    目录系统变量什么是mysql系统变量设置系统变量my.cnf设置配置启动项配置Set的形式修改系统变量SESSION作用范围语法GLOBAL作用范围语法查看系统变量值系统变量注意点并不是所有的系统变量都有session范...
    99+
    2022-09-27
  • Python变量名详细规则详细变量值介绍
    Python需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就是合法的名称 标识符需要以字母或下划线_开头,可以和字母、数字、下划线进行...
    99+
    2022-11-12
  • mysql的全局变量与局部变量介绍
    通常在服务器启动时,会将每个全局变量初始化为其默认值(我们可以通过命令行或选项文件中指定的选项更改这些默认值),然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前...
    99+
    2022-10-18
  • Shell编程中的特殊变量之进程状态变量介绍
    进程状态变量 1、$$获取当前shell的进程号(PID) 2、$!执行上一个指令的PID 3、$?获取执行上一个命令的返回值(0为成功,非零为失败,这个很常用) 4、$_在此之前执行的命令或脚本的...
    99+
    2022-06-04
    变量 进程 状态
  • Python变量名详细规则的变量值介绍是怎样的
    这篇文章给大家介绍Python变量名详细规则的变量值介绍是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就...
    99+
    2023-06-22
  • MySQL 中的系统变量与局部变量?
    局部变量的作用域仅限于一组语句或语句块。每当一组语句或语句块完成时,局部变量就会超出范围。例如局部变量可以在存储过程、函数等中使用.与DECLARE关键字一起使用。局部变量的语法如下。DECLARE yourVariableName dat...
    99+
    2023-10-22
  • MySQL系统环境变量配置详细讲解
    首先,大部分的环境变量配置步骤都是相同的,这里我们来说说MySQL的环境变量 第一步:找到安装路径并复制         找到你的MySQL Server,我这里安装的是MySQL Server 8.0,安装在d盘,路径是D:\dataAp...
    99+
    2023-10-24
    mysql
  • 关于java中变量命名规范的详细介绍
    Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成...
    99+
    2019-10-05
    java入门 java 变量 命名规范 介绍
  • python读取.mat文件,python将变量存为.mat文件详细介绍
             在进行数据处理的过程中,经常会用到Matlab和python两种工具,.mat文件是Matlab数据存储的标准数据格式,通过创建一个.mat文件详细介绍两种工具之间的数据读取和存储。 一、python读取.mat文件 1....
    99+
    2023-10-24
    matlab pycharm
  • 【MySQL系列】安装MySQL与配置环境变量(最详细的安装教程)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、下载MySQL二、安装MySQL三、配置环境变量4、其他设置 前言 在MySQL必知必会这本书中...
    99+
    2023-09-02
    mysql 数据库 java
  • winxp系统设置java环境变量的详细教程
    我们都知道想要进行Java的程序编辑,就要首先在电脑上设置环境变量,这样才能够运行java程序,下面一起看看xp系统的电脑如何设置java变量。 1、设置环境变量之前,我们肯定首先需要安装java,首先,找到你安装ja...
    99+
    2023-06-13
    winxp java 环境变量 系统 教程
  • MySQL 的启动选项和系统变量实例详解
    本文实例讲述了MySQL 的启动选项和系统变量。分享给大家供大家参考,具体如下: MySQL的配置信息可以通过两种方式实现,一种是命令行形式,在启动MySQL服务时后边带上相关配置参数,此种方式会在MySQL重启后失...
    99+
    2022-05-27
    MySQL 启动选项 系统变量
  • Win7中使用命令提示符创建系统环境变量的方法介绍
      环境变量是Windows系统运行的参数信息,为了更好的运行与管理进程,我们可以通过设置或创建环境变量,而环境变量的创建有几种方法,除了在我的电脑面板“高级”选项卡中进行设置外,其实我们也可以通...
    99+
    2023-06-13
    Win7 命令提示符 创建系统环境变量 系统 创建 环境变量
  • 一文详解Node中的模块化、文件系统与环境变量
    本篇文章带大家深入了解Node中的模块化、文件系统与环境变量,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。一、Node.js模块化1.0、变量作用域(1)、在浏览器端使用var或不使用关键字定义的变量属于全局作用域,也就...
    99+
    2023-05-14
    node 模块化 文件系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作