mysql的会话变量,全局变量,状态信息

本文详细介绍了MySQL的会话级变量、全局变量和状态信息,包括用户自定义变量、系统会话变量、全局变量设置、连接超时设置、事务隔离级别、打开文件与表格限制等。通过对这些参数的理解和调整,可以优化数据库性能和管理。
摘要由CSDN通过智能技术生成

    mysql数据库系统自定义的参数和系统的运行参数都非常重要,他们决定了数据库运行的方式。例如是否自动提交,事务隔离级别这些变量。我们可以通过修改系统的会话变量和全局变量来影响数据库运行(其中有些变量修改需要修改重启才能生效)。。。。。。变量设置是过程,我们最终目的是要看状态(见下图),查看数据库状态信息是否符合要求。

    mysql变量分为会话级别和全局级别:用户变量和会话级别的系统变量属于会话级别的变量;而系统变量中的全局变量属于全局级别的变量。当然喜欢的话也可以按照用户变量和系统变量这个角度来划分变量。

    而系统变量按其作用域的不同分为以下几种:

 

1)分为全局(GLOBAL)级:对整个MySQL服务器有效

SELECT @@GLOBAL.autocommit

SHOW GLOBAL VARIABLES LIKE 'autocommit'

 

2)会话(SESSION或LOCAL)级:只影响当前会话

SELECT @@SESSION.var_name 或 

SELECT @@LOCAL.var_name 

SHOW SESSION  VARIABLES LIKE 'autocommit'

 

3)both,即是全局变量也是会话变量

上面既有全局变量autocommit,也有会话变量的autocommit

但是规定如果没有在前面声明SESSION还是GLOBAL,优先显示会话级别的值。

     

1会话级变量

      什么是会话级别呢?比如我这里用msyql客户端工具创建了2个查询分析器,就是2个会话。可以认为一个会话就是一个线程连接。线程之间互不影响。

        会话变量包含了用户变量和session变量。特点是线程之间互不影响,且当连接断开变量消失

 

1.1用户自定义变量

        用户变量当然是会话级别的,但是也分为两种:1.存储过程中的变量,只存活在存储过程中;2.利用sql语句将值存储在用户自定义变量中。

    1.11.存储过程中的变量

      存储过程指的是一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行  相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。

    

mysql> delimiter //  #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)
    -> BEGIN
    ->   DELETE FROM MATCHES
    ->    WHERE playerno = p_playerno;
    -> END; //
Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;  #将语句的结束符号恢复为分号
  • 默认情况下,mysql中的delimiter(分隔符)是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。当输入“delimiter //”这是告诉mysql不要以分号作为马上执行的标记,而是用//这个符号。最后再告诉mysql用回分号作为分隔符。

 

       1.1.2 储存sql的值



# 实例说明:
  1. declare @name nvarchar(10),@id int  
  2. set @name='张三'  
  3. set @int=1  
  4. update set name=@name from student where id=@id 

mysql> SELECT 'Hello World' into @x;

mysql> SELECT @x;

mysql> SET @y='Goodbye Cruel World';

mysql> select @y;

mysql> SET @z=1+2+3;

mysql> select @z;

 

1.2会话变量

这里的会话级别变量指的是系统设置会话的变量。属于系统变量。

SHOW SESSION VARIABLES

共有452个变量。可见可以影响会话的系统变量很多。

查看当前用户信息

--查看当前用户

SELECT USER() 

--查看当前的数据库

SELECT DATABASE()

--查看当前用户的权限

SHOW GRANTS FOR root@127.0.0.1

 

1.2.1 用于连接的会话变量

--查看同一账户的所有客户端允许连接到mysql的最大并行连接数

show global status like 'max_user_connections';

如果设置为0表示不限制。但是这个值需要严格控制。

 

1.2.2 临时表使用内存

--查看临时表使用的内存(线程)

show variables where Variable_name in ('tmp_table_size', 'max_heap_table_size'); 

max_heap_table_size    16777216

tmp_table_size    16777216

重点:一般这两个值都是相等的。意思是当临时表的大小超过了这个值就将会放置到硬盘中去。

--超过限制的临时表存放硬盘地址

show variables like 'tmpdir';

解释:

    tmp_table_size它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_sizemax_heap_table_size的最小值。)如果内存临时表超出了该值的限制,MySQL就会自动地把它转化为基于磁盘的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值