mysql 运行时配置系统变量
mysql 的系统变量有两个级别, GLOBAL 和 SESSION (也叫 LOCAL).
MysqlServer 启动的时候加载 GLOBAL 变量, 每个变量都是默认值. 每个客户端先继承 GLOABL 变量, 之后可以有各自的 SESSION 级别变量.
像这样设置全局变量:
SET GLOBAL max_connections = 1000;
SET @@global.max_connections = 1000;
像这样设置局部变量:
SET SESSION sql_mode = 'TRADITIONAL';
SET @@session.sql_mode = 'TRADITIONAL';
SET @@sql_mode = 'TRADITIONAL';
特别的是 @@sql_mode
这样的形式, 在读取的时候先读本地变量, 如果没有就返回全局变量; 但是 SET 的时候只会设置本地变量.
可以在一行里设置多条配置, 用逗号隔开. 如果其中有一条分句失败, 则整条句子失败.
关于布尔型的配置, 建议只使用1(开)和0(关).
关于单位, 在sql中只能以比特为单位, 但是支持 3600*24
; 在配置中可以使用大小写不敏感的 G
M
K
但是不能用乘法.
查看系统变量
SHOW VARIABLES;
SHOW SESSION VARIABLES;
SHOW SESSION VARIABLES LIKE 'max_join_size';
最后建议所有设置都明确使用 @@global.
或 @@session.
.
恢复默认值
把 DEFAULT
赋值给局部变量, 局部变量会恢复为全局变量的值.
把 DEFAULT
赋值给全局变量, 全局变量会恢复为MySQL编译时的默认值(注意:不是cnf中的配置).
SET @@session.max_join_size=DEFAULT;
SET @@session.max_join_size=@@global.max_join_size;