热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

example:slow_query_logØ显示该变量的值:当前设置为OFFØ在一个session中设置该Global&Dyn

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


1. Global & Dynamic

example:slow_query_log

Ø  显示该变量的值:

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

当前设置为OFF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

可以看到又恢复到了默认情况。(当然,在其他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

Ø  显示该变量的值:

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

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

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

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

 

结论:

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

l  因为是Global类型的,因此在各session中执行show、show session、show global显示的结果是一致的。


3. Session & Dynamic

example:gtid_next

Ø  显示该变量的值:

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

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

对于Session类型的变量通过show global是得不到值的,需用show、show session命令查看。

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

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

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

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

可以看到变量值已经变化为设置后的值。

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

ü  该session在变量值更改前已存在

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

可以看到,在其他已存在session中该变量的值仍为设置之前的值。

ü  该session在变量值更改前不存在,为变量值更改后新连接的session

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

可以看到,无论是在其他已存在session中还是后来新建的session中,该变量的值仍为设置之前的值。

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

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

可以看到,变量值又恢复到设置前的默认值。

 

结论:

l  对于Session&Dynamic类型的变量可直接通过set、set session命令设置值,但是设置后的变量值只对设置时所使用的session有效,在其他session中(已存在的和后来新建的)不可见。mysql服务器重启后设置的变量值失效。

l  对于Session类型的变量,通过showglobal不能得到结果。通过show、show session可得到针对发起命令的每个session中变量的值。


4. Session & Not Dynamic

example:proxy_user

Ø  显示该变量的值:

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

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

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

可以看到,对于Not Dynamic类型的变量不可以通过命令的方式设置变量值。

 

结论:

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

l  对于Session类型的变量,通过showglobal不能得到结果。通过show、show session可得到针对发起命令的每个session中变量的值。


5. Both & Dynamic

example:auto_increment_increment

Ø  显示该变量的值:

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

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

可以看到当前session范围和global范围的变量值均为1。

Ø  在一个session中通过set session语句设置该Both& Dynamic类型的变量:

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

这里没有使用关键字global,所以,默认使用set session语句设置变量的值。

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

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

这里没有使用关键字global,所以,默认使用showsession语句显示变量的值。在该session中变量值已变为设置后的值。

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

这里使用关键字global来显示变量的值。在该session中global范围的变量值并没有变为通过setsession语句设置后的值。 

ü  通过另外的session来查看该变量的值(在设置变量值时该session已存在):

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

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

在另外的已存在的session中global型的变量值仍为原来的值。在上个session中通过set session语句设置后的变量值在这里的session中并不可见。

ü  通过另外的session来查看该变量的值(在设置变量值时该session不存在,是之后新连接的session):

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

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

在另外的设置好变量值后新建的session中global型的变量值仍为原来的值。在上个session中通过set session语句设置后的变量值在这里的session中并不可见。               

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

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

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

重启mysql服务器后,变量值恢复为默认的值。

Ø  在一个session中通过set global语句设置该Both & Dynamic类型的变量:

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

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

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

这里没有使用关键字global,所以默认使用showsession variables语句显示变量的值。在该session中session范围的变量值仍未设置前的值。

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

这里使用关键字global来显示变量的值。在该session中global范围的变量的值已经变为通过setglobal语句设置后的值。

ü  通过另外的session来查看该变量的值(在设置变量值时该session已存在):

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

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

在上个session中通过set global语句设置后的变量值在这个之前已经存在的session中并不可见。而在这个已存在的session中,global范围的变量已变为设置后的值。

ü  通过另外的session来查看该变量的值(在设置变量值时该session不存在,是之后新连接的session):

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

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

在另外的设置好变量值后新建的session中global范围的变量为设置后的值。在上个session中通过set global语句设置后的变量值在这个之后新建的session可见。                

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

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

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

重启mysql服务器后,变量值恢复为默认的值。

 

结论:

l  若变量为Both(global/session),则set<=>setsession, show<=>show session。若要设置和显示global范围的变量,则要显式的使用setglobal和和show global。

l  对于Both&Dynamic类型的变量,若通过set命令(默认执行set session命令)设置新值(此时设置的是session范围的变量值)。那么在进行设置的session通过show命令(默认执行show session)查看变量值可以得到设置后的值。而新设置的变量值对其他之前已经存在或者之后创建的session都不可见。另外,由于是用set session设置的变量值,所以对于global范围的变量没有影响,无论在哪些session中通过show global语句查看到的变量值都是在执行set session命令前的值。

l  若通过set global命令设置变量的值(此时设置的是global范围的变量值)。在进行设置的session通过show命令(默认执行show session)查看变量值,得到的仍是设置前的值(也即session范围的值)。在其他之前已存在的session中使用show session命令得到的同样是设置前的值。而在之后新建的session中通过show session命令可得到设置后的值(因为新的session读到了更改后的新值)。无论是在执行更改的session还是更改时已存在的其他session又或者后来新建的session,通过执行show global命令得到的都是设置后的global范围的值。

l  不管是global范围的变量还是session范围的变量,在重启服务器之后,设置的值都会失效,而恢复为默认的值。


6. Both& Not Dynamic

example:gtid_executed

Ø  显示该变量的值:

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

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

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

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

可以看到,对于Not Dynamic类型的变量无论是global范围还是session范围都无法通过命令进行设置。

 

结论:对于Not Dynamic类型的变量无法通过set、set session、set global命令直接进行设置。

 

综上所述:

Ø  对于Not Dynamic类型的变量不能通过set、set session、set global命令进行设置。只有Dynamic类型的变量才可以通过这些方式进行设置。

Ø  对于Dynamic变量

ü  若变量为单一的Global范围,则必需使用setglobal命令设置变量值,不能使用set(这里set<=>set session)命令设置,且设置后立即对所有session有效。对于Global范围的变量show、show session、show global等价。

ü  若变量为单一的Session范围,则需使用set(这里set<=>setsession)命令设置变量值,不能使用set global命令设置,且设置后仅对进行设置的session有效。对于Session范围的变量需使用show(这里show<=>show session)命令显示变量值,不能使用showglobal显示session范围的变量,若使用show global则显示为空。

ü  若变量为Both范围,则使用set(这里set<=>setsession)命令设置的变量值仅对进行设置的session有效,此时使用show(这里show<=>show session)命令可在该session中得到修改后的值,而通过showglobal在该session中得到的仍是通过set设置之前的Global范围的值;若使用set global命令设置变量的值,则在进行设置的session以及其他既存的session中通过show(这里show<=>show session)命令显示变量值得到的是修改前的值,而在后来新建的session中通过show(这里show<=>show session)命令可以得到修改后的值,但是,无论是新建的还是既存的session若使用show global均可以的到通过set global命令设置后的值。

Ø  不管是global范围的变量还是session范围的变量,在重启服务器之后,设置的值都会失效,而恢复为默认的值。



推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 本文详细介绍了在使用 SmartUpload 组件进行文件上传时,如何正确配置和查找文件保存路径。通过具体的代码示例和步骤说明,帮助开发者快速解决上传路径配置的问题。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
author-avatar
姬跋征
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有