比方说在一些实际生产环境中,想改个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 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和@@local是SESSION和@@session地同义词。如果没有修改符,则SET设置会话变量。
支持系统变量的@@var_name语法,以便使MySQL语法与其它数据库系统相兼容。