MySQL之变量
mysql变量分类:
-
系统变量:系统自带的变量
-
状态变量:用于设置或保存系统的运行状态
-
用户自定义变量:用户自定义的变量
系统变量
使用@@标识一个系统变量,系统变量分为全局(global)和会话(session)变量。
-
全局(global)变量:对所有的会话都生效,
-
会话(session)变量:只对当前会话生效
查看系统变量的方法:
- 通过show命令查看系统变量。
show variables #查看系统的所有系统变量
show session variables;查看系统的会话变量
show global variables;查看系统的全局变量
show var_type variables like 'xxx' #查看指定的变量
例如:
mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)
- 通过select字段查看系统变量
select @@var_name #默认查询出来的是会话变量的值,不存在会话变量才显示全局变量。
例如:
mysql> select @@wait_timeout;
+----------------+
| @@wait_timeout |
+----------------+
| 28800 |
+----------------+
1 row in set (0.00 sec)
设置系统变量的方法:
set variables_name = value #不指定变量类型默认是 SESSION
set global variables_name = value #设置全局变量的值
set session variables_name = value #设置会话变量的值
注意:
-
会话变量在当前会话断开连接以后失效
-
设置全局变量以后,需要重新开启一个线程连接才生效,不对session级别生效
-
设置或者查询变量的时候,不指定 SESSION 或 GLOBAL 或 LOCAL 默认是 SESSION
-
查询变量的时候不指定变量类型,则优先显示会话级变量的值,如果没有对应的会话级变量,则显示全局级变量的值
-
设置变量的时候,不指定变量类型,如果不存在这个session就直接报错,不会再去找gloabl
状态变量
状态变量存的就是MySQL系统的一些状态信息。
查看mysql的状态变量值:
show status \G
例如:
mysql> show status \G
*************************** 1. row ***************************
Variable_name: Aborted_clients
Value: 1
*************************** 2. row ***************************
Variable_name: Aborted_connects
Value: 0
*************************** 3. row ***************************
Variable_name: Binlog_cache_disk_use
Value: 0
*************************** 4. row ***************************
Variable_name: Binlog_cache_use
Value: 0
*************************** 5. row ***************************
Variable_name: Binlog_stmt_cache_disk_use
Value: 0
*************************** 6. row ***************************
Variable_name: Binlog_stmt_cache_use
Value: 0
.............