MySQL系统变量应用探究

数据库 MySQL
MySQL里的变量分系统变量和用户变量,其中系统变量,又分全局(global)和会话(session)两种,下面就让我们一起了解一下MySQL系统变量的应用。

MySQL系统变量是MySQL数据库的重要组成部分,下面就为您分析MySQL系统变量的具体应用,如果您对MySQL系统变量感兴趣的话,不妨一看。

MySQL系统变量
其中系统变量,又分全局(global)和会话(session)两种.

全局系统变量,主要影响整个mysql实例的全局设置.
大部分变量都是作为mysql的服务器调节参数存在.新增或修改这类变量, 会影响mysql的运行方式.
比如: auto_increment_increment 代表序列的自增值, 默认为1

另外, mysql中,只有一部分变量是支持运行时动态修改的.
变量修改的作用范围,是那些重新创建连接到mysql服务器的客户端连接.

如果你的连接是由应用通过连接池来维护的,并且,是长连接的,那么,此时在服务器运行过程中,动态地修改全局变量对你是没有什么影响的.

通过全局变量, 我们可以想到一些应用场景:
1,  在存储过程, 函数, sql里,使用一些业务相关的全局变量.
经常编写业务相关的存储过程,函数的朋友, 可能会需要针对不同业务,设置能共享访问的全局变量.


比如, 公司的总人数,很多存储过程都需要调用这个值,但是因为这个值,不是经常会改变的,不需要每次都count.
所以大多数人会考虑把它cache一把,那么mysql提供的全局变量,就是一个好的存储场所.

2,  数据库配置中心

首先,这不一定是一种好的解决方式, 特别是大型地分布式系统.但是想到了,就跟大家分享一下.
主要就是利用了三层,四层架构的系统, 必不可少的数据库层来实现的.

大家知道, 应用的配置, 大多数是用配置文件或配置服务器来实现, 前者需要跟着项目打包, 部署.
后者, 只要在应用初始化或运行时,去配置中心取配置就行了.(淘宝这边两者都在用)

而数据库的配置中心, 其实类似配置服务器, 只不过灵活运用了mysql的变量机制.
它能继承配置服务器的多数优点, 但***的特色就是在 sql, function , procedure 里都可以很方便地引用到.(相比用表的方式, 要方便一些)
并且本身就具有缓存, 移植得话, mysql得导出也是很快.
所以小系统, 想快速得搭建一个配置中心,利用mysql感觉还是不错的.

调用语法:
select * from user_info where id = @@global.admin_id -- 例子,通过全局里配置的管理员id来取用户信息

以下是全局变量的一些常用命令,比较简单:
set global auto_increment_increment=1; -- 设置序列的增长值
show global variables; --  显示所有的global变量
show global variables like '%test%' -- 查询包含test字符串的global变量
会话系统变量, 主要用于在当前客户端连接的生命周期内.它的变量值是全局变量的一份拷贝.
如果连接断开, 对当前会话变量所做修改都会被重置.

比如, 服务器会话变量 autocommit 默认为 true , 而你在非常连的客户端连接里设置了 false , 那么在执行完sql后, 连接就会断开. 此后,如果创建新的连接来执行sql, autocommit又会默认 true.

会话变量的使用场景与全局类似,只是生命周期不同, 因此可以用来统计同一连接内请求sql次数, sql类型等信息.

session变量的一些常用操作:
set session auto_increment_increment=1; -- 设置序列的增长值
show variables; or show session variables; --  如果不指明, 默认使用session变量
show variables like '%test%' or show session variables lile '%test%' -- 查询包含test字符串的session变量
 

 

 

【编辑推荐】

分析比较两种MySQL字符串匹配模式

NULL与MySQL空字符串的区别

深入研究MySQL结果字符串

MySQL截取字符串函数方法

MySQL字符串各列类型的区别

责任编辑:段燃 来源: 互联网
相关推荐

2009-10-19 10:31:53

综合布线屏蔽系统

2016-08-16 00:40:37

IT支撑系统云计算资源池

2017-01-11 11:41:15

云计算

2010-11-26 14:20:28

MySQL系统变量

2009-10-28 10:26:36

2014-04-02 17:10:00

虚拟应用工作原理

2010-09-10 09:38:36

SQL系统变量

2021-08-17 10:31:57

Java JakartaEE Spring

2010-08-04 09:43:28

Flex应用程序

2009-10-29 14:07:35

ROF接入技术

2009-11-17 16:04:38

应用型路由器

2011-08-22 13:38:41

Linux变量

2009-10-20 10:24:44

综合布线系统

2023-11-17 08:02:34

系统调用linux

2022-09-27 21:22:02

SQL Server数据库

2022-09-29 19:37:09

SQL Server数据库

2018-03-20 12:48:58

数据库MySQL变量配置

2009-10-19 14:46:59

综合布线系统

2009-11-17 18:21:42

路由器配置

2010-11-26 14:52:10

MySQL系统变量
点赞
收藏

51CTO技术栈公众号