可遇不可求的Question之Mysql在不重启服务的情况下修改运行时变量篇

比方说在一些实际生产环境中,想改个MYSQL的配置,但是又不想停止服务重起MYSQL,有什么办法呢?使用SET命令可以做到,请看下面几个例子:

1.设置key_buffer_size的大小为10M。

SET GLOBAL key_buffer_size = 10485760;

SET @@global.key_buffer_size = 10485760;

2.设置最大连接数为200

SET GLOBAL max_connections=200;

SET @@global.max_connections=200;

3.更改慢查询SQL日志时间

SET @@long_query_time=3;

要查看有哪些变量,可执行SHOW 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

SET用于设置不同类型的变量。这些变量会影响服务器或客户端的操作。SET可以用于向用户变量或系统变量赋值。

用于分配账户密码的SET PASSWORD语句在13.5.1.5节,“SET PASSWORD语法”中进行了讨论。

多数系统变量可以在运行时间被更改。可以被动态设置的系统变量在5.3.3.1节,“动态系统变量”中进行了讨论。

注释:旧版本的MySQL采用SET OPTION作为这个命令,但是由于有了SET,现在不赞成使用SET OPTION

以下例子显示了您可以用于设置变量的不同语法。

用户变量可以被写作@var_name,并可以进行如下设置:

SET @var_name = expr;

9.3节,“用户变量”中给出了有关用户变量的更多信息。

系统变量可以被作为var_name引用到SET语句中。在名称的前面可以自选地添加GLOBAL@@global,以明确地指示该变量是全局变量。或者在名称前面添加SESSION, @@session,或@@,以指示它是一个会话变量。LOCAL@@localSESSION@@session地同义词。如果没有修改符,则SET设置会话变量。

支持系统变量的@@var_name语法,以便使MySQL语法与其它数据库系统相兼容。

原文地址:https://www.cnblogs.com/tigerjacky/p/2128215.html