日期:2014-05-16  浏览次数:20708 次

MySQL中Global、Session和Both(Global & Session)范围的Dynamic及Not Dynamic类型的变量的作用范围和设置方法


1. Global & Dynamic

example:slow_query_log

?  显示该变量的值:


当前设置为OFF

?  在一个session中设置该Global &Dynamic类型的变量:



可以看到,对于global类型的变量必需通过global关键字来设置其值。

 ?  在同一个session中重新查看该变量的值:


发现该变量值已经发生了改变。

 ?  通过另外的session来查看该变量的值:

ü  该session在改变变量值时已存在


ü  该session在改变变量值时不存在,为之后新建的session


发现,无论是在改变变量值时已经存在的其他session中还是后来新建的session中均可以看到改变后的变量值。

 ?  重启mysql服务器之后重新查看该变量的值:


可以看到又恢复到了默认情况。(当然,在其他session中亦是如此)

 

结论:

l  对于Global& Dynamic类型的变量,需通过set global语句设置变量值。变量设置后,在该session和其他session中(已存在的和后连接的)可即刻看到设置后的值。但重启服务器后设置的值失效,恢复为默认值。(理由是显然的,因为没有将设置的值写进配置文件。)

l  对于Global类型的变量show、show session、show global显示的结果是一致的,因为该Global变量对所有session可见,通过setglobal设置了该变量的值就相当于立刻设置了各session中该变量的值。


2. Global & Not Dynamic

example:bind_address

?  显示该变量的值:

 

?  在一个session中设置该Global& Not Dynamic类型的变量:


发现对于Not Dynamic类型的变量不能通过此种方式设置变量值。

 

结论:

l  对于Not Dynamic类型的变量并不能通过命令直接设置值。