mysql中参数变量_mysql的参数变量 | 学步园

mysql服务器的系统变量,mysql server system viriables,其实我更愿意叫它为“系统参数”!

每一个系统变量都有一个默认值,这个默认值是在编译mysql系统的时候确定的。对系统变量的指定,一般可以在server启动的时候在命令行指定选项或者通过选项文件来指定,当然,大部分的系统变量,可以在系统的运行时,通过set命令指定其值。

mysql的系统参数(系统变量)一共分为2类,全局变量(global variables)和会话变量(session

variables),它们的含义与区别如其各占的名称所示。session

variables是在session级别的,对其的变更只会影响到本session。global

variables是系统级别的,对其的变更会影响所有新session(变更时已经存在session不受影响)至下次mysql

server重启动,注意它的变更影响不能跨重启,要想再mysql

server重启时也使用新的值,那么就只有通过在命令行指定变量选项或者更改选项文件来指定,而通过SET变更是达不到跨重启的。

当系统启动是,它会初始化所有的global变量为它们对应的默认值,这些默认值可以通过命令行指定选项或者选项文件来改变。当一个新的连接建立后,系统

也会初始化一批session变量,把它们的值初始化对应的系统变量的值。可见任何一个session变量都有一个global变量与其对应,但是未必每

个global变量都有对应的session变量。

系统变量的变更,如果它的值是数字的,你可以通过简化使用K/M/G作为单位来指定。下面就来介绍一下几种变更系统变量的方法:

1、在mysql server启动的时候,命令行选项中指定

mysqld --query_cache_size=16M --max_allowed_packet=1G

2、在mysql server启动的时候,通过选项文件中指定

[mysqld]

query_cache_size=16M

max_allowed_packet=1G

如果你想限制某个变量的最大值,那么在系统启动的时候通过–maximum-var_name=value方式来指定,如果假设我要限制

max_allowed_packet最多设置为4G,那么我只需要通过1、2方法指定:–maximum_allowed_packet=4G,就可以

了,这样在后面的动态改动中,都无法指定大于4G。

3、在mysql server运行的时候,通过SET命令动态指定

有很多的系统变量,都可以在mysql server运行时,通过SET命令来动态指定她的值,这样的系统变量,我们又称之为“动态系统变量”(Dynamic System Variables)。

我们首先来看看SET命令的语法:

SET variable_assignment [, variable_assignment] …

variable_assignment:

user_var_name = expr

| [GLOBAL | SESSION] system_var_name = expr

| [@@global. | @@session. | @@]system_var_name = expr

i):如果要修改global系统变量值,你必须要显示指定“GLOBAL”或者“@@global.”,同时注意,你必须要有SUPER权限。

ii):如果要修改session变量值,可以指定“SESSION”或者“@@session.”或者“@@”或者“LOCAL”或者“@@local.”,或者什么都不使用。

有没有办法,将session变量值设置为对应的global变量值呢?有,采用如下方式:

SET @@session.var_name=@@global.var_name;

有没有办法,将session变量值设置为mysql编译时候的默认值呢?有,采用如下方式:

SET var_name=DEFAULT;

这里要注意的是,并不是所有的系统变量都能被设置为DEFAULT,如果你设置这些变量为DEFAULT则会返回错误。

上面说了如何设置变量,下面来介绍如何查询变量。

1、使用SELECT @@global.var_name等来查询。

mysql> select @@session.table_type,@@local.table_type,@@table_type;

+----------------------+--------------------+--------------+

| @@session.table_type | @@local.table_type | @@table_type |

+----------------------+--------------------+--------------+

| InnoDB               | InnoDB             | InnoDB       |

+----------------------+--------------------+--------------+

1 row in set (0.00 sec)

mysql> select @@global.table_type;

+---------------------+

| @@global.table_type |

+---------------------+

| InnoDB              |

+---------------------+

1 row in set (0.00 sec)

这里要注意的是,如果你查询session变量的值,如果没有这个session设置了值则返回其值,如果没有设置则其对应的global变量的值,这里与SET的时候是不一样滴。

2、使用SHOW VARIABLES语法:

SHOW [GLOBAL | SESSION] VARIABLES

[LIKE ‘pattern’ | WHERE expr]

--EOF--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值