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 块级元素࿱…...

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围绕着“生态、人人、体验”,旨在帮助企业打造面…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...

C++11 constexpr和字面类型:从入门到精通
文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...
02-性能方案设计
需求分析与测试设计 根据具体的性能测试需求,确定测试类型,以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通,初步确定压测方案及具体的性能指标QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组&…...