tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 设计相关

    • 谈谈MySql中索引失效的情况
    • 存储引擎:MyIsam和InnoDB简介
    • 系统中的变量
      • 命令行上使用选项
      • 系统变量
        • 不同的作用范围
        • 运行时设置
        • 启动选项跟系统变量的区别
      • 状态变量
    • MySql中查看各种参数
    • 建表:选择合适的数据类型
    • 索引的类型与创建、设计原则
    • 跟Redis的数据一致性保证
  • 运行相关

  • 事务相关

  • 表设计实战系列

  • 分库分表

  • 框架使用

  • 常用sql跟关键字

  • 安装与卸载相关

  • 《MySql》笔记
  • 设计相关
EffectTang
2023-11-04
目录

系统中的变量

# 系统中的变量

# 命令行上使用选项

MySql的服务端在运行的时候,对于一些属性有默认值,比方说服务器允许同时连入的客户端的默认数量是151,表的默认存储引擎是InnoDB。我们可以在程序启动时(客户端链接服务端的时候)去修改这些默认值,或者在对应的配置文件中进行修改,当然他们中的大多数变量也可在程序运行过程中修改,它们称之为启动选项(startup options)。

需要注意的是,在命令行中设置启动选项只对当次启动生效,也就是说如果下一次重启程序的时候如果没有这些设置,启动选项又会恢复默认值。如果想一直生效,则需要对配置文件进行修改。

比如修改表的默认存储引擎为MyIsam,如下:

mysqld --default-storage-engine=MyISAM
1

在启动服务器程序的命令行后边指定启动选项的通用格式就是这样的:

--启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
1

提示:我们在命令行中指定启动选项时需要在选项名前加上--前缀。另外,如果选项名是由多个单词构成的,它们之间可以由短划线-连接起来,也可以使用下划线_连接起来,也就是说default-storage-engine和default_storage_engine表示的含义是相同的。

# 系统变量

上面说的启动选项其实就是系统变量的一种,这些属性值在MySql服务器运行时影响着它的应为。MySQL服务器程序的系统变量有好几百条。每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项在启动服务器时改变一些系统变量的值。大多数的系统变量的值也可以在程序运行过程中修改,而无需停止并重新启动它。

查看系统变量:

SHOW VARIABLES [LIKE 匹配的模式];
1
mysql> SHOW VARIABLES LIKE 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)
1
2
3
4
5
6
7

# 不同的作用范围

不同人使用不同客户端链接服务器,大家都可以根据自己需求进行变量的设置,但万一冲突了,怎么办呢?

为了解决以上问题,MySql给变量设置了作用范围这个概念。具体来说作用范围分为这两种:

  • GLOBAL:全局变量,影响服务器的整体操作。
  • SESSION:会话变量,影响某个客户端连接的操作。(注:SESSION有个别名叫LOCAL)

那么刚刚我们SHOW VARIABLES查看的变量是那种类型呢?

默认查看的是SESSION作用范围的系统变量。

当然我们也可以在查看系统变量的语句上加上要查看哪个作用范围的系统变量,就像这样:

SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
1

那么通过启动项设置的变量呢?属于哪种

通过启动选项设置的系统变量的作用范围都是GLOBAL的,也就是对所有客户端都有效的,因为在系统启动的时候还没有客户端程序连接进来呢。

# 运行时设置

在服务器程序运行期间通过客户端程序设置系统变量的语法,有两种:

SET [GLOBAL|SESSION] 系统变量名 = 值;

SET [@@(GLOBAL|SESSION).]系统变量名 = XXX;
1
2
3

当然如果在设置系统变量的语句中省略了作用范围,默认的作用范围就是SESSION。

提示:如果某个客户端改变了某个系统变量在GLOBAL作用范围的值,并不会影响该系统变量在当前已经连接的客户端作用范围为SESSION的值,只会影响后续连入的客户端在作用范围为SESSION的值。

# 启动选项跟系统变量的区别

启动选项是在程序启动时我们程序员传递的一些参数,而系统变量是影响服务器程序运行行为的变量,它们之间的关系如下:

  • 大部分的系统变量都可以被当作启动选项传入。
  • 有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如auto_increment_offset、character_set_client等。
  • 有些启动选项也不是系统变量,比如defaults-file。

# 状态变量

为了让我们更好的了解服务器程序的运行情况,MySQL服务器程序中维护了很多关于程序运行状态的变量,它们被称为状态变量。比方说Threads_connected表示当前有多少客户端与服务器建立了连接,Handler_update表示已经更新了多少行记录等

由于状态变量是用来显示服务器程序运行状况的,所以它们的值只能由服务器程序自己来设置,我们程序员是不能设置的。与系统变量类似,状态变量也有GLOBAL和SESSION两个作用范围的,所以查看状态变量的语句可以这么写:

SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
1
上次更新: 2025/04/23, 16:23:16
存储引擎:MyIsam和InnoDB简介
MySql中查看各种参数

← 存储引擎:MyIsam和InnoDB简介 MySql中查看各种参数→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式