2.4.3 【MySQL】设置系统变量

2.4.3.1 通过启动选项设置

大部分的系统变量都可以通过启动服务器时传送启动选项的方式来进行设置。如何填写启动选项就是下面两种方式:

通过命令行添加启动选项。

在启动服务器程序时用这个命令:

mysqld --default-storage-engine=MyISAM --max-connections=10

通过配置文件添加启动选项。

我们可以这样填写配置文件:

[server] default-storage-engine=MyISAM max-connections=10

当使用上边两种方式中的任意一种启动服务器程序后,我们再来查看一下系统变量的值:

                        

可以看到 default_storage_engine 和 max_connections 这两个系统变量的值已经被修改了。有一点需要注意的是,对于启动选项来说,如果启动选项名由多个单词组成,各个单词之间用短划线 - 或者下划线 _ 连接起来都可以,但是对应的系统变量之间必须使用下划线 _ 连接起来。

2.4.3.2 服务器程序运行过程中设置

对于大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器。不过系统变量有作用范围之分。

设置不同作用范围的系统变量

多个客户端程序可以同时连接到一个服务器程序。对于同一个系统变量,有时想让不同的客户端有不同的值。但是这样各个客户端都私有一份系统变量会产生这么两个问题:

有一些系统变量并不是针对单个客户端的,比如允许同时连接到服务器的客户端数量 max_connections ,查询缓存的大小 query_cache_size ,这些公有的系统变量让某个客户端私有显然不合适。

一个新连接到服务器的客户端对应的系统变量的值该怎么设置?

所以为解决这两个问题,就有了作用范围:

GLOBAL :全局变量,影响服务器的整体操作。

SESSION :会话变量,影响某个客户端连接的操作。(注: SESSION 有个别名叫 LOCAL )

在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值)。然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值初始化。

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

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

比如我们想在服务器运行过程中把作用范围为 GLOBAL 的系统变量 default_storage_engine 的值修改为MyISAM ,也就是想让之后新连接到服务器的客户端都用 MyISAM 作为默认的存储引擎,那我们可以这样:

SET GLOBAL default_storage_engine = MyISAM;

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

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

下边我们演示一下完整的设置并查看系统变量的过程:

                 

可以看到,最初 default_storage_engine 的系统变量无论是在 GLOBAL 作用范围上还是在 SESSION 作用范围上的值都是 InnoDB ,我们在 SESSION 作用范围把它的值设置为 MyISAM 之后,可以看到 GLOBAL 作用范围的值并没有改变。

注意:

并不是所有系统变量都具有 GLOBAL 和 SESSION 的作用范围。

有一些系统变量只具有 GLOBAL 作用范围,比方说 max_connections ,表示服务器程序支持同时最多有多少个客户端程序进行连接。

有一些系统变量只具有 SESSION 作用范围,比如 insert_id ,表示在对某个包含 AUTO_INCREMENT 列的表进行插入时,该列初始的值。

有一些系统变量的值既具有 GLOBAL 作用范围,也具有 SESSION 作用范围,比如我们前边用到的default_storage_engine ,而且其实大部分的系统变量都是这样的。

有些系统变量是只读的,并不能设置值。

2.4.4 启动选项和系统变量的区别

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

大部分的系统变量都可以被当作启动选项传入。

有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如auto_increment_offset 、 character_set_client 啥的。

有些启动选项也不是系统变量,比如 defaults-file 。

2.5 状态变量

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

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

类似的,如果我们不写明作用范围,默认的作用范围是 SESSION ,比方说这样:

                                        

所有以 Thread 开头的 SESSION 作用范围的状态变量就都被展示出来了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107901.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据采集:数据挖掘的基础

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

vue3+emelenui实现前端分页功能—最简单

在一些后台管理系统或者博客管理系统中分页功能是很常见的一种服务,因为总不可能把很多数据放在一块,那样阅读起来很麻烦,所以需要分页。也是前后端中最为常见的一个功能 先看一下分页场景的模拟。 首先我们要去后端写点数据通过接口给前端&a…

vue中v-model应用于表单元素

v-model应用于表单元素 常见的表单元素都可以用v-model绑定关联→快速获取或设置 表单元素的值它会根据控件类型自动选取正确的方法来更新元素 常见的表单元素&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&…

MySQL的用户管理

1、MySQL的用户管理 &#xff08;1&#xff09;创建用户 create user zhang3 identified by 123123;表示创建名称为zhang3的用户&#xff0c;密码设为123123。 &#xff08;2&#xff09;了解user表 1&#xff09;查看用户 select host,user,authentication_string,select…

【C++杂货铺】优先级队列的使用指南与模拟实现

文章目录 一、priority_queue的介绍二、priority_queue的使用2.1 数组中的第k个最大元素 三、priority_queue模拟实现3.1 仿函数3.2 成员变量3.3 成员函数3.3.1 构造函数3.3.2 AdjustDown3.3.3 push3.3.4 AdjustUp3.3.5 pop3.3.6 empty3.3.7 size 四、结语 一、priority_queue的…

蓝桥杯官网练习题(搭积木)

类似题目&#xff1a; https://blog.csdn.net/s44Sc21/article/details/132758982?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132758982%22%2C%22source%22%3A%22s44Sc21%22%7Dhttps://blog.csdn.net/s44Sc21/article/deta…

【代码分析】初学解惑C++:函数适配器

文章目录 前置知识 运算符的重载“&#xff08;&#xff09;”一、函数适配器是什么&#xff1f;由遇到的问题引出适配器模式类模式对象模式例1例2例3例4二、实现函数适配器1.定义函数2.定义函数适配器3.使用函数适配器 三、带模板的函数适配器1、自定义unary_function2、改写带…

kafka-- 安装kafka manager及简单使用

一 、安装kafka manager 管控台&#xff1a; # 安装kafka manager 管控台&#xff1a; ## 上传 cd /usr/local/software ## 解压 unzip kafka-manager-2.0.0.2.zip -d /usr/local/ cd /usr/local/kafka-manager-2.0.0.2/conf vim /usr/local/kafka-manager-2.0.0.2/conf/appl…

智能驾驶感知技术的综述与展望

目录 1 智能驾驶环境感知的目的 1.1 智能驾驶感知技术的定义和作用 1.2 基于传感器的智能驾驶感知技术 1.3 基于深度学习的智能驾驶感知技术 2 环境感知的手段与方法 2.1 感知技术在智能驾驶中的应用与发展 2.2 智能驾驶决策系统的设计与优化 2.3 控制技术在智能驾驶中的应…

D. Matrix Cascade(结构体记录前面对后面的影响)

Problem - D - Codeforces 有一个大小为nn的矩阵&#xff0c;由0和1组成。行从上到下编号为1到n&#xff0c;列从左到右编号为1到n。交点(x,y)表示第x行和第y列的单元格。 AquaMoon想将矩阵的所有元素都变为0。在一步操作中&#xff0c;她可以执行以下操作&#xff1a; Plain …

Linux——(第十一章)软件包管理

目录 一、RPM 1.概述 2.RPM查询指令 3.RPM卸载指令 4.RPM安装命令 二、YUM 1.概述 2.YUM常用命令 一、RPM 1.概述 RPM&#xff08;RedHat Package Manager&#xff09;&#xff0c;RedHat软件包管理工具&#xff0c;类似windows里面的setup.exe是Linux这系列操作系统里…

IDEA中的“Deployment“ 将项目直接部署到服务器上

ntelliJ IDEA中的"Deployment"工具栏是一个方便的工具&#xff0c;用于将你的项目直接部署到服务器上。这个工具栏提供了三种部署的方式&#xff1a; 1.Web Server在本地电脑上&#xff0c;并且服务器运行目录也在项目目录下。 2.Web Server在本地电脑上&#xff0c;…