MySQL数据库中区分全局变量和会话变量。

前言

当我们修改数据库配置时,我们要知道,通过不通过的方式,修改数据库配置,生命周期是不同的。有时候仅仅在一次会话中有效,有时候全局生效,就算断开连接,重启服务,依然生效。

全局变量

定义

写在配置文件中的就是全局变量,也可以称之为系统变量。

使用:

方法一: 修改MySQL配置文件。

方法二: set @@global.变量名称。如:SET @@global.profiling_history_size = 25;

两种方法,推荐使用方法一通过改变配置文件修改,修改配置文件后,重启MYSQL服务器。

之所以不推荐方法二,因为这种方式修改的全局变量,在连接断开后,再次连接确实还生效,和会话变量确实不一样,但是有一个问题,你重启服务后,就失效了。方法一是永久的,方法二比会话变量强一点。

会话变量

定义:

客户端连接MySQL时,相当于建立了会话,会话变量和全局变量基本一致,在这次会话过程中,可以对全局变量进行修改。

使用:

通过命令行进行修改,不需要重启服务器,比如开启sql语句剖析功能。SET profiling = 1;

有的人改变会话变量时,发现修改失败,是你账号权限低的原因,超级管理员才可以修改,修改你自己笔记本root账户可以,公司的你改不成。

全局变量修改配置文件后,一直生效。

会话变量通过命令行修改后,仅在此次连接此次会话过程中有效。

用户变量

定义:

用户自定义变量,用于后边的sql执行。在整个连接过程中有效。

用户变量和局部变量,没有什么权限之说,都是自己的。

使用:

使用@自定义变量,这里和全局变量区分一下,全局变量是@@。

局部变量

定义

常用于存储过程,用于交换数据。也可以这么理解:存储过程中的变量就是局部变量,存储过程一结束,变量就死亡。

局部变量只在begin-end语句块之间有效。

使用:

使用DECLARE关键字定义。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL全局变量和局部变量都是指用户定义变量,用来存储在会话或整个服务器可见的值。 全局变量是指可以在MySQL服务器的任何地方都可以访问的变量,它们的作用域是全局的。全局变量可以在MySQL配置文件定义,也可以在MySQL命令行动态定义。全局变量的命名规则是以@@开头,例如@@global.max_connections表示全局变量max_connections的值。 局部变量是指可以在存储过程、函数、触发器等MySQL程序对象定义的变量,它们的作用域只在这个程序对象。局部变量的命名规则是以@开头,例如@myvar表示局部变量myvar的值。在MySQL,可以使用DECLARE语句来定义局部变量的类型和名称,例如: ``` DECLARE myvar INT; ``` 当程序对象执行时,会为局部变量分配内存空间,当它执行完成后,这些变量所占用的内存空间会被释放。因此,局部变量的生命周期与程序对象的生命周期相同。 全局变量和局部变量都可以存储不同类型的数据,例如数字、字符、日期等。在使用变量之前,需要先声明变量的类型和名称。在程序执行过程,可以对变量进行赋值、修改等操作。 需要注意的是,在使用全局变量时,需要注意多个程序对象可能会同时访问同一个全局变量,因此需要考虑并发访问的问题。在使用局部变量时,需要注意变量的作用域和生命周期,确保变量只在需要的时候才会分配内存空间,并在不需要时及时释放内存空间,以避免资源的浪费。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值