变量类型概述
MySQL 变量分为两大类:
1. 系统变量:以 `@@` 开头
全局变量 (GLOBAL VARIABLES):影响整个MySQL服务
会话变量 (SESSION VARIABLES):影响单个客户端连接
2. 用户自定义变量:以 `@` 开头
系统变量查看方法
查看所有变量
查看所有全局变量
SHOW GLOBAL VARIABLES;
查看所有会话变量(可省略SESSION)
SHOW [SESSION] VARIABLES;
查看特定变量
三种方式查看全局变量(如innodb_data_file_path)
SHOW GLOBAL VARIABLES LIKE 'innodb_data_file_path'; SHOW SESSION VARIABLES LIKE 'innodb_data_file_path'; SHOW VARIABLES LIKE 'innodb_data_file_path';
两种方式查看会话变量(如pseudo_thread_id)
SHOW SESSION VARIABLES LIKE 'pseudo_thread_id'; SHOW VARIABLES LIKE 'pseudo_thread_id';
既是全局又是会话的变量(如character_set_client)
SHOW GLOBAL VARIABLES LIKE 'character_set_client'; SHOW SESSION VARIABLES LIKE 'character_set_client';
变量前缀含义
`@@global`:仅标记全局变量
`@@session`:仅标记会话变量
`@@`:先尝试会话变量,不存在则使用全局变量
系统变量设置方法
设置全局变量
需要 SUPER 权限,不影响已连接会话:
SET @@global.innodb_file_per_table = DEFAULT; SET @@global.innodb_file_per_table = ON; SET global innodb_file_per_table = ON;
设置会话变量
客户端只能修改自己的会话变量:
SET @@session.pseudo_thread_id = 5; SET session pseudo_thread_id = 5; SET @@pseudo_thread_id = 5; SET pseudo_thread_id = 5;
默认设置行为
未指定范围时默认为会话变量:
SET @@sort_buffer_size = 50000; -- 当作SESSION处理
重要注意事项
1. 持久性:SET 设置的变量在MySQL重启后会失效,需通过配置文件永久修改
2. 静态变量:如 log_bin、tmpdir、version、datadir 等不能在运行时动态修改,只能通过:
修改源代码
更改配置文件(my.ini/my.cnf)
3. 作用范围:
全局变量修改只影响新连接
会话变量修改立即生效但仅限当前连接
4. 初始化顺序:
服务启动时从配置文件初始化全局变量
客户端连接时从全局变量初始化会话变量
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程