变量类型概述

 

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. 初始化顺序:

    服务启动时从配置文件初始化全局变量

    客户端连接时从全局变量初始化会话变量

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)