MySQL 里设置或修改系统变量的几种方法

比如设置MySQL实例参数wait_timeout为10秒.

 

1) 设置全局变量方法1(不推荐): 修改参数文件, 然后重启mysqld

# vi /etc/my.cnf

[mysqld]

wait_timeout=10

# service mysqld restart

不过这个方法太生硬了, 线上服务重启无论如何都应该尽可能避免.

 

2) 设置全局变量方法2(推荐): 在命令行里通过SET来设置, 然后再修改参数文件

如果要修改全局变量, 必须要显示指定"GLOBAL"或者"@@global.", 同时必须要有SUPER权限. 

mysql> set global wait_timeout=10;

or

mysql> set @@global.wait_timeout=10;

 

然后查看设置是否成功:

mysql> select @@global.wait_timeout=10;

or

mysql> show global variables like 'wait_timeout';

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

| Variable_name | Value |

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

| wait_timeout  | 10    | 

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

如果查询时使用的是show variables的话, 会发现设置并没有生效, 除非重新登录再查看. 这是因为使用show variables的话就等同于使用show session variables, 查询的是会话变量, 只有使用show global variables查询的才是全局变量. 如果仅仅想修改会话变量的话, 可以使用类似set wait_timeout=10;或者set session wait_timeout=10;这样的语法. 

当前只修改了正在运行的MySQL实例参数, 但下次重启mysqld又会回到默认值, 所以别忘了修改参数文件:

# vi /etc/my.cnf

[mysqld]

wait_timeout=10

 

3) 设置会话变量方法: 在命令行里通过SET来设置

如果要修改会话变量值, 可以指定"SESSION"或者"@@session."或者"@@"或者"LOCAL"或者"@@local.", 或者什么都不使用. 

mysql> set wait_timeout=10;

or

mysql> set session wait_timeout=10;

or

mysql> set local wait_timeout=10;

or

mysql> set @@wait_timeout=10;

or

mysql> set @@session.wait_timeout=10;

or

mysql> set @@local.wait_timeout=10;

 

然后查看设置是否成功:

mysql> select @@wait_timeout;

or

mysql> select @@session.wait_timeout;

or

mysql> select @@local.wait_timeout;

or

mysql> show variables like 'wait_timeout';

or

mysql> show local variables like 'wait_timeout';

or

mysql> show session variables like 'wait_timeout';

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

| Variable_name | Value |

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

| wait_timeout  | 10    | 

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

 

4) 会话变量和全局变量转换方法: 在命令行里通过SET来设置

将会话变量值设置为对应的全局变量值呢:

mysql> set @@session.wait_timeout=@@global.wait_timeout;

将会话变量值设置为MySQL编译时的默认值(wait_timeout=28800):

mysql> set wait_timeout=DEFAULT;

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL和PostgreSQL在存储过程中对变量使用的区别主要体现在语法上。 MySQL中使用DECLARE语句定义变量,并使用SET语句赋值。例如: ``` DECLARE var_name INT; SET var_name = 5; ``` PostgreSQL中使用DECLARE语句定义变量,并使用:=赋值。例如: ``` DECLARE var_name INT; var_name := 5; ``` 在MySQL中,存储过程语言和SQL语言比较相似,它支持循环、判断和游标等结构。而PostgreSQL中存储过程语言比较类似于PL/SQL语言,支持块级结构和异常处理。 总的来说, 两者都可以实现相同的功能,但是使用语法不同。 ### 回答2: MySQL和PostgreSQL是两种常见的关系型数据库,它们在存储过程中对变量使用的方式有一些区别。 在MySQL中,变量定义使用的是DECLARE关键字。在存储过程中,可以使用用户自定义变量,通过声明变量名和类型来定义。变量在DECLARE语句之后进行初始化,在存储过程中可以使用SET语句来赋值或修改变量的值。MySQL的存储过程中,变量的作用域只在当前存储过程内。 而在PostgreSQL中,变量定义使用的是简单的:=运算符。在存储过程中,可以使用PL/pgSQL语法创建和使用变量变量在声明时可以指定类型,也可以根据赋值的情况自动推断类型。在存储过程中,变量的作用域可以是整个函数块,也可以是函数内的一个特定区域。 此外,PostgreSQL还支持更复杂的数据类型,如数组和记录类型,并且可以在存储过程中使用这些类型的变量。而MySQL对于存储过程中的变量类型支持相对简单,通常只支持基本的数值和字符串类型。 总结来说,MySQL和PostgreSQL在存储过程中对变量的使用方式有些许差异。MySQL使用DECLARE关键字进行变量定义,变量的作用域只在当前存储过程内;而PostgreSQL使用简单的:=运算符进行变量定义,变量的作用域可以是整个函数块。此外,PostgreSQL还支持更复杂的数据类型,而MySQL对于变量类型的支持相对较简单。 ### 回答3: MySQL和PostgreSQL在存储过程上对变量使用的区别有以下几点: 1. 变量类型:MySQL支持多种类型的变量,包括整数、浮点数、字符串、日期等,可以直接定义和使用;而PostgreSQL则需要使用特殊的语法来声明和使用变量。 2. 变量作用域:MySQL的存储过程中的变量作用域只限于当前会话,即在存储过程中声明的变量只在该存储过程中有效;而PostgreSQL的存储过程中的变量作用域可以更广泛,可以在整个函数体内部使用。 3. 变量赋值:MySQL中可以使用SET语句来给变量赋值,也可以在声明变量时直接赋初值;而在PostgreSQL中,需要使用SELECT INTO语句或者使用:=运算符来给变量赋值。 4. 变量引用:MySQL中可以直接使用变量名进行引用,类似于普通的变量使用;而在PostgreSQL中,需要使用特殊的语法来引用变量,以区分普通的列名或者字段名。 5. 变量作为参数传递:在MySQL中,存储过程的参数可以直接使用变量来代替;而在PostgreSQL中,需要使用特殊的语法来传递和使用变量作为参数。 综上所述,MySQL和PostgreSQL在存储过程上对变量使用的区别主要体现在变量类型、作用域、赋值、引用和作为参数传递等方面。了解这些差异有助于开发人员在使用存储过程时正确、高效地使用变量

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值