当前位置: 首页 > news >正文

MySQL 系统变量查看与设置(System Variables Configuration)

MySQL中有大量的系统变量控制服务器的行为,大部分的系统变量是不需要我们调整的,保持默认即可。但为了获得更高的性能和稳定性,有时需要适当对部分变量进行调整,本文总结了MySQL中系统变量的查看与设置方法。

目录

  • 一、变量的类型
  • 二、变量值的查看
    • 2.1 使用show命令查看变量
    • 2.2 使用select命令查看变量
    • 2.3 使用命令行工具mysqladmin查看
    • 2.4 通过performance_schema视图查看
  • 三、变量值的设置
    • 3.1 通过参数文件设置
    • 3.2 通过命令行启动项设置
    • 3.3 通过set命令设置
      • 3.3.1 使用persist/persist_only关键字持久化变更
      • 3.3.2 查询persist持久化变更信息

一、变量的类型

MySQL中根据变量的作用范围可以将其分为两种:

  • 全局变量:影响整个数据库
  • 会话变量:影响某个会话

大部分变量同时具有全局和会话两种作用范围,其中会话变量会在客户端连接到MySQL时会根据全局变量进行初始化。

而根据变量是否可以在数据库运行时动态修改,也可将变量分为两种:

  • 静态变量:数据库运行时不能修改,需要重启生效
  • 动态变量:可以数据库运行时修改,不需要重启

二、变量值的查看

系统变量有很多查询方式,以下为4种常用的查询变量值方法:

  • 通过show命令查看
  • 通过select命令查看
  • 通过命令行工具mysqladmin查看
  • 通过查询performance_schema视图查看

2.1 使用show命令查看变量

使用show [global | session] variables [like ‘variable_name’];可以查看变量的值。global和session关键字指定查看全局或会话变量,省略时默认查看会话变量。like ‘variable_name’ 子句查看指定变量的值,可以使用通配符%和_,省略like子句则会输出所有变量。

示例:使用show命令查看autocommit(自动提交)变量的值,省略global/session时,默认返回会话变量的值(查看全局变量global不能省略):

show variables like 'autocommit';  -- 等于show session variables like 'autocommit';
show global variables like 'autocommit';

在这里插入图片描述

部分变量的范围只有全局,此时global/session关键字,无论用哪个关键字或省略,返回的都是全局变量值。例如max_connctions作用范围只有全局,下面的3个命令返回的都是全局的值:

show variables like 'max_connections';
show session variables like 'max_connections';
show global variables like 'max_connections';

在这里插入图片描述

2.2 使用select命令查看变量

使用select @@[global|session].variable_name; 可以查看指定变量的值,global/session省略时,默认查看会话变量。和show命令不同,select命令不能模糊匹配,只能查看某个具体变量的值。

示例:查看autocommit变量的值:

select @@autocommit;  -- 等于 select @@session.autocommit;
select @@global.autocommit;

在这里插入图片描述

2.3 使用命令行工具mysqladmin查看

使用MySQL自带的管理工具mysqladmin variables也可以查看系统变量,但这个命令只能输出全部的变量,通常配合grep过滤或重定向到文件后再查看。

mysqladmin variables > variables.txt 

在这里插入图片描述

2.4 通过performance_schema视图查看

MySQL的performance_schema提供了几张视图可以直接用SQL查询变量信息:

  • global_variables 查询所有全局变量值
  • session_variables 查询所有会话变量值(当前会话)
  • variables_by_thread 查询每个会话的变量值(比session_variables多了一个thread_id)
  • variables_info 查询变量最近一次的设置信息,包括变量来源,范围,修改人,修改时间等

示例:查看全局变量autocommit的值:

select * from performance_schema.global_variables where variable_name='autocommit';

在这里插入图片描述

示例:查看最近一次autocommit变量的设置:

select * from performance_schema.variables_info where variable_name='autocommit';

在这里插入图片描述

三、变量值的设置

MySQL变量的设置有3种方式:

  • 通过参数文件设置
  • 通过命令行启动项设置
  • 通过set命令设置

MySQL启动时会根据参数文件初始化变量值,但MySQL的系统变量都有默认值,所以即使没有参数文件数据库也可以启动。这点和Oracle不同,Oracle如果没有初始化参数文件则无法启动。

3.1 通过参数文件设置

MySQL的参数文件是my.cnf,数据库在启动时会读取其[mysqld]和[server]模块下的内容并设置变量值。

可以通过下面的命令查看参数文件搜索路径,通常保留一个参数文件即可,后面的设置会覆盖前面的设置:

mysqld --verbose --help | grep my.cnf

在这里插入图片描述

将需要设置的参数放在my.cnf中的[mysqld]或[server]模块下,变量名中的"-“和”_"是通用的。对于布尔类型的变量,1和on代表启用,0和off代表关闭。对于数值类型的变量,可以用数字,表达式或者K, M, G作为单位来设置,例如设置max_allowed_packet为8M,下面的3种设置方式是等价的:

max_allowed_packet=8388608
max_allowed_packet=8*1024*1024
max_allowed_packet=8M

在这里插入图片描述

3.2 通过命令行启动项设置

在MySQL启动时用–variables(前面有双横杠)的方式也可以设置系统变量,通过命令行启动参数设置变量比my.cnf文件中的设置优先级更高,但缺点是不能持久化,重启时容易忘记。因此这种设置方式不太建议(把重要的配置放到参数文件中)。

示例:下面通过命令行选项启动数据库,变量名中"_“和”-"是通用的:

mysqld --user=mysql --port=3306 --max_allowed_packet=8M --lower-case-table-names=1 &

在这里插入图片描述

3.3 通过set命令设置

MySQL中set命令除了可以设置自定义变量,还可以在运行时修改系统变量的值。修改会话变量对当前会话立刻生效,修改全局变量只会影响后续新建会话,已存在的会话不受影响。

示例:全局变量设置,使用global或@@gloabl.限定全局变量,下面的2种设置方式是等价的:

set global max_connections=500;
set @@global.max_connections=500;

在这里插入图片描述

示例:会话变量设置使用session/@@session.,local/@@local.或省略,下面6种设置方式是等价的:

set session sql_mode='traditional';
set @@session.sql_mode='traditional';set local sql_mode='traditional';
set @@local.sql_mode='traditional';set sql_mode='traditional';
set @@sql_mode='traditional';

在这里插入图片描述

set命令还有个关键字default,可以将变量设置为初始值。会话变量会还原为全局变量的值,全局变量则设置为MySQL自己编译的默认值(不是启动时参数文件初始化的值):

set autocommit=default;
set global server_id=default;

在这里插入图片描述

3.3.1 使用persist/persist_only关键字持久化变更

上面的set命令都是动态修改变量,当会话退出,或者数据库重启,设置效果就消失了。MySQL8.0针对set命令做了持久化功能,通过persist/persist_only关键字可以将变更保存到数据目录下的mysqld-auto.cnf文件中,如此即使数据库重启设置也不会消失。

使用persist/persist_only持久化修改变量有如下优点:

  • 不需要修改my.cnf文件,意味着不需要登陆数据库服务器,通过远程会话即可持久化修改变量。
  • 自动语法校验,出现语法或变量值错误时,设置不会生效,而通过my.cnf文件,启动报错时才能知道错误。

示例:使用persist关键字修改全局变量同时持久化到mysqld-auto.cnf文件中(当前实例和重启都生效),下面2种方式是等价的:

set persist max_connections=500;
set @@persist.max_connections=500;

在这里插入图片描述

示例:使用persist_only关键字持久化到mysqld-auto.cnf文件中,但不修改当前系统全局变量(重启生效),下面2种方式是等价的:

set persist_only  server_id=32;
set @@persist_only.server_id=32;

在这里插入图片描述

持久化设置的变量可以通过reset persist [[if exists] variable_name];命令取消,if exists可以在未设置变量时不报错:

reset persist max_connections;  -- 取消指定的变量设置
reset persist;    -- 取消所有persist/persist_only设置的变量

在这里插入图片描述

3.3.2 查询persist持久化变更信息

mysqld-auto.cnf中的持久化变量会在参数文件my.cnf之后加载,相当于启动后对立刻数据库进行一次set global,因此可能覆盖my.cnf中的设置。而是否加载mysqld-auto.cnf由变量persisted_globals_load控制,设置为off则启动时会忽略mysqld-auto.cnf文件:

show variables like 'persisted_globals_load';

在这里插入图片描述

如果想知道有哪些变量通过set persist/persist_only命令做了持久化变更,可以通过下面两种方式查询:

  • 查看数据目录下的mysqld-auto.cnf文件内容
  • 通过select语句查询performance_schema.persisted_variables视图

示例:直接查看mysqld-auto.cnf内容,信息是以JSON格式存储的(不建议手动修改文件内容):

cat mysqld-auto.cnf

在这里插入图片描述

示例:通过performance_schema.persisted_variables查询:

select * from performance_schema.persisted_variables;

在这里插入图片描述

以上即是MySQL中系统变量的查询和修改方式,在修改变量前要熟悉变量的作用。在调整变量值之前最好通过mysqladmin variables命令将当前的服务器参数备份到文件中,如果调整后出现性能下降及时还原。

相关文章:

MySQL 系统变量查看与设置(System Variables Configuration)

MySQL中有大量的系统变量控制服务器的行为,大部分的系统变量是不需要我们调整的,保持默认即可。但为了获得更高的性能和稳定性,有时需要适当对部分变量进行调整,本文总结了MySQL中系统变量的查看与设置方法。 目录 一、变量的类型…...

【Docker】apache 容器化部署

Apache环境标准软件基于Bitnami apache 构建。当前版本为2.4.58 你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform Q…...

基于element-plus +腾讯云COS实现图片上传

① 首先基于element-plus里面的:http-request"upload"自定义封装事件写一个点击事件之后基于腾讯云的 登录 对象存储控制台 ,创建存储桶。获取存储桶名称和 地域名称登录 访问管理控制台 ,获取您的项目 SecretId 和 SecretKey。在项目中安装 …...

Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql

这是仿真过程某图: 仿真实战kafka kafka消费sink端和StructuredStreaming集成通信成功 , 数据接收全部接收 数据落地情况: 全部接收到并all存入mysql 下面就简单分享一下StructuredStreaming代码吧 import org.apache.spark.sql.function…...

IDEA如何删除git最新一次远程提交

IDEA如何删除git最新一次远程提交 选择应用 -> Git -> Show History 选择最新提交上一次提交 -> Reset Current Branch to Here… Reset 提示框选择 Hard push到远程分支 -> 选择Force Push 结果验证 (最新分支已被删除)...

什么是单向数据流

单向数据流是一种数据流动的模式,通常用于前端框架(如 React、Vue 等)中。在单向数据流中,数据只能从一个方向流向另一个方向,不会出现数据的双向流动。这种模式有助于简化数据的管理和状态的维护,提高代码…...

Qt 线程池 QThreadPool

一.Qt 线程池 QThreadPool介绍 Qt线程池是一种管理多个线程的并发编程模型,通过使用线程池可以提高性能、控制并发度、提供任务队列和简化线程管理。 在Qt中,线程池的使用主要涉及以下几个步骤: 创建任务类:需要定义一个任务类&am…...

【兔子机器人】实现从初始状态到站立

一、遥想星空up主的方法 由于我有卡位结构,无法做到劈腿,而且底盘也不一样,无法使用此方法 但是其代码思想是可以借鉴的。 参考视频: 【【开源啦!】无刷轮腿平衡机器人】 【精准空降到 01:16】 https://www.bilibili…...

ImportError: cannot import name ‘open_filename‘ from ‘pdfminer.utils‘已搞定

报错内容 ImportError: cannot import name ‘open_filename’ from ‘pdfminer.utils’ 第一步:pip uninstall pdfminer 解决办法 pip3 install pdfminer.six注意不要 pip install pdfminer.six是安装不了的...

一文解决Word中公式插入问题(全免费/latex公式输入/texsWord)

分文不花,搞定你的word公式输入/texsWord完全使用指南 背景 碎碎念:折折腾腾至少装了几个小时,遇到了若干大坑。遇到的问题网上都搜索不到答案!!!就让我来当指路的小火柴吧。 本篇适用于在word中输入la…...

C语言实战——扫雷游戏

目录 1. 扫雷游戏分析和设计2.扫雷游戏的代码实现 1. 扫雷游戏分析和设计 1.1扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格子默认随机布置10个雷可以排查雷 如果位置不是雷,就显示周围有几个雷 如果…...

.Net使用ElasticSearch

文章目录 前言主体内容一.Kibana中ElasticSearch的基础操作1.GET(查询)1.POST(新增)1.PUT(修改)1.DELET(删除) 二.在.Net中,对ElasticSearch进行基础操作1.DotNet连接Ela…...

HTML5、CSS3面试题(二)

上一章:HTML5、CSS3面试题(一) 哪些是块级元素那些是行内元素,各有什么特点 ?(必会) 行内元素: a、span、b、img、strong、input、select、lable、em、button、textarea 、selecting 块级元素&#xff1…...

sqllab第十一关通关笔记

知识点: 发现登录框就可以尝试注入登录框一般都是字符型注入通过注入可以获取其他表的信息绕过手段 单引号闭合联合注入也可以进行错误注入 首先看界面是一个登录框;通过admin admin登录进去,发现页面会把用户名和密码的登录信息打印出来&am…...

机械女生,双非本985硕,目前学了C 基础知识,转嵌入式还是java更好?

作为单片机项目开发的卖课佬,个人建议,先转嵌入式单片机开发方向,哈哈。 java我也学过,还学过oracle、mysql数据库,只是当时没做笔记,找不好充分的装逼证据了。 从实习通过业余时间,学到快正式毕…...

Python之字符串操作大全(29种方法)

本章详细介绍了常用的29种字符串操作方法及代码示例。 1. 重复输出字符串 print(x * 20) 输出:xxxxxxxxxxxxxxxxxxxx 2. 通过索引获取字符串 print(hello world[2:5]) 输出:llo 3. in 判断字符是否在字符串内 print(e in hello world) 输出&…...

ArcGIS学习(十五)用地适宜性评价

ArcGIS学习(十五)用地适宜性评价 本任务给大家带来的内容是用地适宜性评价。 用地适宜性评价是大家在平时工作中最常接触到的分析场景之一。尤其是在国土空间规划的大背景下,用地适宜性评价变得越来越重要。 此外,我们之前的任务主要是使用矢量数据进行分析。本案例是主讲…...

【matlab】如何将.mat文件与.nii文件互转

【matlab】如何将.mat文件与.nii文件互转 .mat转为.nii文件 有时候代码需要读取的是.nii文件,但是如何现有的数据是.mat格式,需要将.mata转化为.nii文件 1、先加载.mat文件 % 加载.mat文件 load(your_mat_file.mat); % 请将your_mat_file.mat替换为实…...

Uni-app开发Canvas当子组件示例,点点绘制图形

前言 使用Uni-app 实现封装一个Canvas渲染的子组件,实现通过传入两点绘制一条完整的路程 具体逻辑看我发的后端和数据库设计 C# 根据两点名称,寻找两短路程的最优解,【有数据库设计,完整代码】 即使不了解具体逻辑,该…...

从金蝶云星空到钉钉通过接口配置打通数据

从金蝶云星空到钉钉通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...