变量和配置文件

2023-09-22 11:59:09

变量和配置文件

1. 变量

在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。

在 MySQL 数据库中,变量分为 系统变量 以及 用户自定义变量

1.1 系统变量

1.1.1 系统变量分类

变量由系统定义,不是用户定义,属于服务器层面

启动MySQL服务生成MySQL服务实例期间,MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前MySQL服务实例的属性、特征。这些系统变量的值要么是 编译MySQL时参数 的默认值,要么是 配置文件 (例如my.ini等)中的参数值。

  • 系统变量分为全局系统变量(需要添加 global 关键字)以及会话系统变量(需要添加 session 关键字),有时也把全局系统变量简称为全局变量,有时也把会话系统变量称为local变量。如果不写,默认会话级别。静态变量(在 MySQL 服务实例运行期间它们的值不能使用 set 动态修改)属于特殊的全局系统变量。

  • 每一个MySQL客户机成功连接MySQL服务器后,都会产生与之对应的会话。会话期间,MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量,这些会话系统变量的初始值是全局系统变量值的复制。如下图:

  • 每建立一个连接就会产生一个会话,在会话内修改会话系统变量不会影响全局系统变量。

  • 不同会话之前修改会话系统变量不会影响其他会话,各个会话之间是隔离的。

在这里插入图片描述

  • 全局系统变量针对于所有会话(连接)有效,但 不能跨重启
  • 会话1对某个全局系统变量值的修改会导致会话2中同一个全局系统变量值的修改

在MySQL中有些系统变量只能是全局的,例如 max_connections 用于限制服务器的最大连接数;

有些系统变量作用域既可以是全局又可以是会话,例如 character_set_client 用于设置客户端的字符集;

有些系统变量的作用域只能是当前会话,例如 pseudo_thread_id 用于标记当前会话的 MySQL 连接 ID。

1.1.2 查看系统变量
  • MYSQL8.0和5.0变量个数也不同,我安装的是8.0版本,查询结果如下

    #查看所有全局变量 500个
    SHOW GLOBAL VARIABLES;
    #查看所有会话变量 500个
    SHOW SESSION VARIABLES;
    # 默认查询会话系统变量
    SHOW VARIABLES;
    

    在这里插入图片描述
    在这里插入图片描述

  • 查看满足条件的部分系统变量

    #查看满足条件的部分系统变量。
    SHOW GLOBAL VARIABLES LIKE '%标识符%';
    SHOW GLOBAL VARIABLES LIKE 'admin_%';
    
    #查看满足条件的部分会话变量
    SHOW SESSION VARIABLES LIKE '%标识符%';
    SHOW SESSION VARIABLES LIKE 'binlog_%';
    

    在这里插入图片描述
    在这里插入图片描述

  • 查看指定系统变量

    #查看指定的系统变量的值
    SELECT @@global.变量名;
    #查看指定的会话变量的值
    SELECT @@session.变量名;
    #或者
    SELECT @@变量名;
    

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

1.1.3 修改系统变量的值

有些时候,数据库管理员需要修改系统变量的默认值,以便修改当前会话或者MySQL服务实例的属性、特征。具体方法:

  • 方式1:修改MySQL 配置文件 ,继而修改MySQL系统变量的值(该方法需要重启MySQL服务在这里插入图片描述

  • 方式2:在MySQL服务运行期间,使用“set”命令重新设置系统变量的值

    只针对当前数据库实例生效,一旦重启mysql服务,就失效了。

    SET @@global.变量名=变量值;
    #方式2:
    SET GLOBAL 变量名=变量值;
    #为某个会话变量赋值
    #方式1:
    SET @@session.变量名=变量值;
    #方式2:
    SET SESSION 变量名=变量值;
    

    例:

    # 方式1:SET方式修改系统变量的值 原来是151
    SET @@global.max_connections = 151;
    SELECT @@global.max_connections;
    #方式2:SET方式修改系统变量的值 原来是151
    SET GLOBAL max_connections = 171;
    SELECT @@global.max_connections;
    

    在这里插入图片描述

    在这里插入图片描述

1.2 用户变量

2. 配置文件的使用

2.1 配置文件格式

在这里插入图片描述

在这里插入图片描述
[mysqld]以键值对的形式
在这里插入图片描述

2.2 启动命令与选项组

在这里插入图片描述
在这里插入图片描述

2.3 特定的MYSQL版本的专用选项组

  • 可以在选项组名称后加MYSQL的版本号
    在这里插入图片描述

2.4 同一个配置文件中多个组的优先级

在这里插入图片描述

2.5 命令行和配置文件中启动选项的区别

  • 命令行和配置文件中都有时,以命令行为准
    在这里插入图片描述
更多推荐

【QT】day5

1.登录注册和数据库联动三个头文件#ifndefDEMO_H#defineDEMO_H#include<QWidget>#include<QSqlDatabase>//数据库管理类#include<QSqlQuery>//执行sql语句的类#include<QSqlRecord>//数据库记录的类#include<QM

Java + Selenium + Appium自动化测试

一、启动测试机或者Android模拟器(Genymotion俗称世界上最快的模拟器,可自行百度安装)二、启动Appium(Appium环境安装可自行百度)三、安装应用到Genymotion上,如下图我安装一个计算机的小应用,包名为CalcTest.apk安装步骤:(基于AndroidSDK已经配置好了环境变量,可自行百

Failed to connect to bitbucket.org port 443 错误原因, 解决办法

最近使用SourceTree来访问bitbucket.org的代码托管Git,当Pull或者Push发现操作失败:Failedtoconnecttobitbucket.orgport443错误原因:无法链接到网站地址,可能是DNS解析IP地址错误,或者网站维护,大概率是被墙或者DNS解析错误.解决办法:如果您的浏览器能

文件外发流程如何设置,才能进行事前事中事后管控呢?

随着信息技术的快速发展,企业内部数据的安全性成为业务运行过程中的关键问题之一。尤其是对于那些包含商业秘密、客户数据以及机密文件等敏感信息的企业而言,文件的外发往往会导致严重的商业损失和声誉损害。根据IBM的数据报告,2022年全球数据泄露的平均成本创历史新高。2022年,全球数据泄露的平均总成本增加了11万美元,达到4

每天几道Java面试题:IO流(第五天)

目录第五幕、第一场)街边友情提醒背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。第五幕、第一场)街边【衣衫褴褛老者,保洁阿姨,面试者老王】衣衫褴褛老者:“可怜身上诺基亚,心忧JavaOffer少”老王:这位老人家有故事,“老人家,1.Java中有几种类型的流?JDK为每种

OpenCV自学笔记十四:Canny边缘检测

Canny边缘检测是一种经典的图像边缘检测算法,具有以下几个步骤:1.噪声抑制:首先对图像进行平滑处理,以去除图像中的噪声。常用的方法是应用高斯滤波器。2.计算梯度:通过对平滑后的图像应用Sobel算子(或其他梯度算子),计算图像的梯度幅值和梯度方向。梯度表示了图像灰度变化的强度和方向。3.非极大值抑制:根据梯度方向,

Redis——其他数据类型介绍

概要介绍Redis中有10种不同的数据类型。之前的blog中介绍了Redis中常见的五大数据类型:String,List,Hash,Set,ZSet。而Redis中还有许多其他的数据类型,一般在特定的场景中使用Stream首先介绍一下什么是事件,例如JS中的点击button,键盘输入等等都是事件,后端一直等待前端返回数

瑞慈医疗:H1体检业务同比上涨101.2%,因何领跑医疗健康行业?

悄然间,医疗健康行业碰上历史性变革。水面之上,医院体检医院体检人潮涌动,愈来愈多的医院迈上扩建体检中心的步伐,赛道激增20%为所有科室之首。水面之下,依靠信息技术使体检数字化、智能化的转型浪潮,也在蕴藏着猛烈的上升趋势。新的黄金十年,是这个赛道进发的猛烈信号。毫无疑问,一个崭新的医疗健康行业未来,正在此刻发生。瑞慈医疗

mybatis-plus 自动生成代码

引入依赖<!--mybatisplus代码生成器引擎依赖--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency><!--mybatis

vue-cli vue3

安装clinpmi-g@vue/cli@4.5.13查看版本:vue-V升级版本:npmupdate-g@vue/cli升级在v3.0.0版本中是不支持的最新的scriptsetup语法执行指令升级:npmivue@3.2.8vue-router@4.0.11vuex@4.0.2"vue":"^3.2.8","vue-

路由器端口转发

什么是路由器端口转发路由器端口转发是一种网络配置技术,用于将公共网络(如互联网)上的请求转发到私有网络中的特定设备或服务。它允许外部设备通过路由器访问内部网络中的设备或服务,实现网络上的通信和互动。路由器端口转发的作用路由器端口转发的作用是允许公共网络中的设备或用户通过路由器访问私有网络中的特定设备或服务。它可以实现以

热文推荐