MySQL篇之对MySQL进行参数优化,提高MySQL性能
1. MySQL参数优化说明
MySQL 参数调优是提高数据库性能的重要手段之一。通过调整 MySQL 的配置参数,可以优化查询速度、提升并发处理能力、减少资源消耗等。
MySQL 的性能优化涉及到多个方面,包括内存管理、磁盘 I/O、查询优化、连接管理、复制配置等。根据不同的应用场景和硬件资源,MySQL 参数的优化配置可以显著提高数据库的性能。
2. MySQL参数优化类型
2.1. 内存相关优化
内存优化通常是提高 MySQL 性能的首要步骤。主要包括缓存、缓冲池等配置,确保数据库能够高效利用内存资源。
2.1.1. InnoDB 缓冲池 (InnoDB Buffer Pool)
innodb_buffer_pool_size 是 InnoDB 存储引擎最重要的内存参数之一。它决定了 InnoDB 用于存储数据和索引的内存大小。合理设置它可以减少磁盘 I/O,提高查询速度。
建议:根据系统的总内存来调整该参数。一般来说,MySQL 数据库的缓冲池应该占系统物理内存的 60% 至 80%。
innodb_buffer_pool_size = 8G
1.2 InnoDB 日志缓冲区 (InnoDB Log Buffer)
innodb_log_buffer_size 决定了写入 InnoDB 日志的缓冲区大小。增大这个值可以减少写入磁盘的频率,适用于写入负载较大的环境。
建议:对于写密集型应用,适当增大该值。
innodb_log_buffer_size = 64M
1.3 InnoDB 日志文件大小 (InnoDB Log File Size)
innodb_log_file_size 控制单个 InnoDB 日志文件的大小。如果日志文件太小,MySQL 会频繁写入磁盘,增加 I/O 开销。如果日志文件太大,重启时恢复日志会消耗更多时间。
建议:根据事务的数量和大小,设置合适的日志文件大小。一般来说,每个日志文件的大小可以设置为 256MB 至 1GB。
innodb_log_file_size = 512M
1.4 InnoDB 刷新策略 (InnoDB Flush Settings)
innodb_flush_log_at_trx_commit:控制事务提交时日志的刷新策略。默认设置为 1(每次事务提交时都会刷新日志到磁盘),为提高性能,可以设置为 2 或 0,但会牺牲一定的数据安全性。
innodb_flush_log_at_trx_commit = 2
2.2. 查询优化
查询优化有助于提高 MySQL 在高并发环境下的响应速度。下面是一些常用的查询优化参数。
2.2.1 查询缓存 (Query Cache)
query_cache_size 用于存储查询的结果,以便在相同的查询再次执行时快速返回结果。然而,查询缓存可能会影响性能,特别是在高频繁更新的数据库中。因此,对于高写负载的应用,可以关闭查询缓存。
建议:如果数据库主要用于读操作,并且数据更新频率较低,可以启用查询缓存。
query_cache_size = 64M
query_cache_type = 1
注:如果负载主要是写操作,推荐禁用查询缓存:
query_cache_type = 0
query_cache_size = 0
2.2 临时表 (Temporary Tables)
MySQL 使用临时表来处理复杂的查询。tmp_table_size 和 max_heap_table_size 控制内存中临时表的最大大小。如果临时表超出了此大小,它们会被写入磁盘,从而降低性能。
建议:适当增大这两个参数,减少磁盘 I/O。
tmp_table_size = 64M
max_heap_table_size = 64M
2.3 排序缓冲区 (Sort Buffer)
sort_buffer_size 控制 MySQL 执行 ORDER BY 操作时使用的内存缓冲区大小。如果排序的结果集很大,增大这个值可以提高排序的效率。
建议:根据查询的排序操作,适当调整该值。通常设置为 1MB 到 4MB 之间。
sort_buffer_size = 4M
2.3. 连接管理优化
MySQL 的连接管理对高并发环境下的性能影响较大。合理的连接池管理能够有效减少连接的建立和销毁开销。
2.3.1 最大连接数 (Max Connections)
max_connections 参数控制 MySQL 可以同时处理的最大连接数。如果连接数过多,可能会导致资源耗尽,影响性能。
建议:根据实际并发需求设置合适的值。通常情况下,设置为 500 至 1000 之间,过高的设置可能会增加系统负担。
max_connections = 500
2.3.2 连接超时 (Wait Timeout)
wait_timeout 和 interactive_timeout 控制连接空闲的超时时间。合理设置这些超时参数,避免过多的空闲连接占用系统资源。
wait_timeout = 28800
interactive_timeout = 28800
2.4. 磁盘 I/O 优化
磁盘 I/O 是数据库性能的重要瓶颈,合理配置与磁盘相关的参数有助于减少磁盘访问次数,提高性能。
2.4.1 写入时同步 (Sync Binlog)
sync_binlog 控制二进制日志的同步方式。如果设置为 1,每次写入二进制日志都会同步到磁盘,保证事务的持久性,但会带来一定的性能开销。
建议:为了提高性能,可以将其设置为 0,但这样会增加数据丢失的风险。
sync_binlog = 1
2.4.2 事务日志同步 (Innodb Flush Method)
innodb_flush_method 控制 InnoDB 如何刷新数据和日志。O_DIRECT 是推荐的选项,因为它可以避免操作系统的缓存机制。
innodb_flush_method = O_DIRECT
2.5. 日志和监控优化
MySQL 的日志记录可以帮助我们在故障时进行诊断,但是过多的日志记录会增加系统的负担。
2.5.1 慢查询日志 (Slow Query Log)
启用慢查询日志可以帮助你找到性能瓶颈。long_query_time 控制被认为是慢查询的阈值,单位是秒。
slow_query_log = 1
long_query_time = 2
log_slow_verbosity = query_plan
2.5.2 错误日志 (Error Log)
log_error 参数控制 MySQL 错误日志的输出位置。定期检查错误日志,可以帮助管理员及时发现问题。
log_error = /var/log/mysql/error.log
2.6. 高可用性和复制优化
在高可用性和复制架构下,优化复制的配置对于保证数据一致性和减少延迟至关重要。
2.6.1 二进制日志和复制配置
log_slave_updates:使从节点记录二进制日志,对于链式复制非常重要。
read_only:从节点通常设置为只读,防止修改数据。
log_slave_updates = 1
read_only = 1
3. 示例配置
my.ini
[mysqld]
innodb_buffer_pool_size = 8G
innodb_log_file_size = 512M
max_connections = 500
query_cache_type = 1
query_cache_size = 100M
tmp_table_size = 64M
max_heap_table_size = 64M
thread_cache_size = 50
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 200
join_buffer_size = 8M
sort_buffer_size = 8M
slow_query_log = 1
long_query_time = 2
注意事项
- 监控和测试:在调整参数后,需要进行充分的监控和测试,确保调整后的参数确实提升了性能,而不是引入了新的问题。
- 逐步调整:不要一次性调整多个参数,建议逐步调整,每次调整一个参数并观察效果。
- 硬件资源:调整参数时要考虑服务器的硬件资源,避免过度消耗内存和 CPU。 通过合理的参数调优,可以显著提升 MySQL 数据库的性能和稳定性。
相关文章:
MySQL篇之对MySQL进行参数优化,提高MySQL性能
1. MySQL参数优化说明 MySQL 参数调优是提高数据库性能的重要手段之一。通过调整 MySQL 的配置参数,可以优化查询速度、提升并发处理能力、减少资源消耗等。 MySQL 的性能优化涉及到多个方面,包括内存管理、磁盘 I/O、查询优化、连接管理、复制配置等。…...
Scratch节日 | 快乐圣诞节——用编程传递节日祝福! ✨
今天为大家推荐一款充满节日气氛的Scratch项目——《快乐圣诞节》!这款圣诞主题动画贺卡项目不仅让小朋友们学习编程知识,还提供了一种用创意传递祝福的方式。通过编程打造星星闪烁的圣诞树,播放经典圣诞音乐,制作一张属于自己的节…...
android studio更改应用图片,和应用名字。
更改应用图标,和名字 先打开AndroidManifest.xml文件。 更改图片文件名字( 右键-->构建-->重命名(R))...
PHP8.4下webman直接使用topthink/think-orm
环境信息 操作系统win11php 8.4.1webman-framework ^1.6.8MySQL 8.4.3topthink/think-orm ^3.0 说明 PHP8.3以下版本 直接使用webman提供的webman/think-orm更方便。 PHP 环境换为 8.4 使用webman/think-orm 报了个错;所以换topthink/think-orm,根据文…...
uniapp 微信小程序 功能入口
单行单独展示 效果图 html <view class"shopchoose flex jsb ac" click"routerTo(要跳转的页面)"><view class"flex ac"><image src"/static/dyd.png" mode"aspectFit" class"shopchooseimg"&g…...
Halcon 机器视觉案例 之 连接件测量
第一篇 机器视觉案例 之 连接件测量 文章目录 第一篇 机器视觉案例 之 连接件测量1.案例要求2.实现思路2.1 读取单张图片并创建图像模板2.2 画出圆和直线2.3 创建测量模型2.4 循环读取多张图片并查找图像中连接件位置2.5 根据偏移量补偿使得测量模型移动至指定位置 3.实现效果4…...
druid与pgsql结合踩坑记
最近项目里面突然出现一个怪问题,数据库是pgsql,jdbc连接池是alibaba开源的druid,idea里面直接启动没问题,打完包放在centos上和windows上cmd窗口都能直接用java -jar命令启动,但是放到国产信创系统上就是报错…...
Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例
一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ,贴近Linux的线上环境; 2 RabbitMQ用erlang语言编写的,先安装erlang的运行环境; 2 用Linux的apt-get命令安装,解决软件依赖…...
RabbitMQ的核心组件有哪些?
大家好,我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些?】面试题。希望对大家有帮助; RabbitMQ的核心组件有哪些? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理(Messag…...
mysql免安装版配置教程
一、将压缩包解压至你想要放置的文件夹中,注意:绝对路径中要避免出现中文 二、在解压目录下新建my.ini文件,已经有的就直接覆盖 my.ini文件内容 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\tools\\mysql-8.1.0-win…...
ubuntu+ros新手笔记(三):21讲没讲到的MoveIt2
1 安装MoveIt2 安装参照在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手 安装 MoveIt2可以选择自己编译源码安装,或者直接从二进制安装。 个人建议直接二进制安装,可以省很多事。 sudo apt install ros-humble-moveitmoveit-setup-assistan…...
Charles简单压力测试
01、接口请求次数,并发量,请求延迟时间均可配置 选中需要进行测试的接口,鼠标右键选中【repeat advance】 02、设置并发参数 下面的图中,选择了1个接口,每次迭代中1个接口同时请求,迭代1000次(…...
决策树的生成与剪枝
决策树的生成与剪枝 决策树的生成生成决策树的过程决策树的生成算法 决策树的剪枝决策树的损失函数决策树的剪枝算法 代码 决策树的生成 生成决策树的过程 为了方便分析描述,我们对上节课中的训练样本进行编号,每个样本加一个ID值,如图所示…...
对象克隆与单例模式的实现
一、引言 在 C 编程中,对象克隆和单例模式是两个非常重要的概念。对象克隆可以帮助我们快速创建具有相同状态的对象副本,而单例模式则可以确保一个类只有一个实例,并提供全局访问点。本文将详细介绍 C 中如何实现对象的克隆以及单例模式。 …...
在 Linux 系统中,让 apt 使用 HTTP 代理
在 Linux 系统中,要让 apt 使用 HTTP 代理,有几种方法可以实现: ### 1. 临时设置代理 你可以通过设置环境变量来临时为 apt 命令设置代理。这种方法不需要修改任何配置文件,只需在命令行中设置环境变量即可。例如: …...
中国气象局:2024年第二批“气象数据要素×”典型案例(附下载)
11月25日,中国气象局通报2024年第二批“气象数据要素”典型案例。此次遴选充分结合首届“数据要素”大赛获奖案例,旨在进一步号召各级气象部门充分学习借鉴先进经验和做法,持续推动高价值气象数据产品开发利用,挖掘气象数据要素应…...
Android绘图Path基于LinearGradient线性渐变,Kotlin(1)
Android绘图Path基于LinearGradient线性渐变,Kotlin(1) import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.LinearGradient import android.graphics.Paint import and…...
基础入门-APP应用微信小程序原生态开发H5+Vue技术WEB封装打包反编译抓包点
知识点: 1、基础入门-APP应用-开发架构安全问题 2、基础入门-小程序应用-开发架构安全问题 通用: 1、反编译-得到源码-源码提取资产(泄漏的配置信息)-安全测试 2、抓包-资产-安全测试 一、演示案例-移动App-开发架构-原生&H…...
vue+ts提交数据时不提交(剔除)某项数据
关键代码 // 假设这是原始要提交的数据数组 const dataArray [{areaConfId: ,areaName: ,cityInfo: [],provinceList: [],cityList: []} ];// 使用map方法遍历数组中的每个对象,通过解构赋值和对象展开运算符去除cityInfo字段 const newDataArray dataArray.map…...
乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级
我国油田地域广阔,分布着大量各种油井,油井开采设备的连续稳定运行是保证石油开采的首要条件。然而,由于油田多位于特殊地理环境中,因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制,传统通信系统的建设…...
Jenkins搭建并与Harbor集成上传镜像
Jenkins介绍 Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)的实践中。它帮助开发人员自动化构建、测试和部署过程,从而提高开发效率、代码质量和项目交付速度。通过丰富的插件支持…...
FutureCompletableFuture实战
1. Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程,但是这两种方法都有一个问题就是:没有返回值,也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景,而Fu…...
Amazon与Shopee平台对比:跨境卖家如何选对平台打开市场?
在跨境电商领域,选择合适的平台对卖家能否成功打开市场至关重要。如今,Amazon和Shopee成为了众多卖家的热门选择。一个以全球化布局和高端市场著称,一个则专注东南亚新兴市场的潜力。两者各有优势,但也需要根据卖家的业务模式、目…...
【项目实战】redis实现websocket分布式消息推送服务
由于redis并非专业的MQ中间件,消息的防丢失策略并不完整,存在丢失消息的可能。该方案为在再pc web管理平台的右下角弹出,显示新接收到的消息数,哪怕没有收到这个通知,也可以自己在消息中心看看。所以对可靠性要求不高。…...
(自用)配置文件优先级、SpringBoot原理、Maven私服
配置优先级 之前介绍过SpringBoot中支持三类配置文件.properties、.yml和.yaml,他们三者之间也是有着优先级顺序的,为.properties➡.yml➡.yaml。 同时SpringBoot为了增强程序的拓展性,除了支持配置文件属性配置,还支持Java系统属…...
在windows系统中使用labelimg对图片进行标注之工具安装及简单使用
一.背景 还是之前的主题,使用开源软件为公司搭建安全管理平台,从视觉模型识别安全帽开始。我是从运行、训练、标注倒过来学习的。本次主要是学习标注工具labelimg的安装及简单使用。 二.下载 LabelImg是一款广受欢迎的开源图像标注工具,为计…...
数字图像处理技术期末复习
1. 已知图像的分辨率和深度,怎么求图像的存储空间(位,字节,KB)? 题目: 已知图像的分辨率和深度,怎么求图像的存储空间(位,字节,KB)&a…...
点云空洞的边界识别提取 pso-bp 神经网络的模型来修复点云空洞 附python代码
代码是一个Python程序,用于处理3D点云数据,特别是检测和修复点云中的孔洞区域。 1. **导入库**: - `numpy`:用于数学运算。 - `open3d`:用于处理3D数据和可视化。 - `torch`:PyTorch库,用于深度学习。 - `torch.nn`和`torch.optim`:PyTorch的神经网络和优…...
【AutoDL】通过【SSH远程连接】【vscode】
小帅碎碎念 0. 起因1. SSH信息获取2. 给你的vscode安装支持SSH远程连接的插件3. SSH远程连接入口4. 输入密码登陆5. 总结 0. 起因 之前使用AutoDL和Jupyter进行代码编辑和执行确实很方便,尤其是对于交互式数据分析项目。然而,也存在一些限制和不便之处&…...
ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程
本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…...
短链接服务
一 功能描述 1.短链接是将长连接转化为短连接使得链接变得美观清爽,让用户点击率更高,同时规避原始链接中一些关键词、域名屏蔽等问题,最终利用短链每次跳转都需要经过后端的特性,在跳转过程中做异步埋点,用于效果数据…...
【Vue3学习】setup语法糖中的ref,reactive,toRef,toRefs
在 Vue 3 的组合式 API(Composition API)中,ref、reactive、toRef 和 toRefs 是四个非常重要的工具函数,用于创建和管理响应式数据。 一、ref 用ref()包裹数据,返回的响应式引用对象,包含一个 .value 属性࿰…...
Halcon中dots_image(Operator)算子原理及应用详解
在HALCON中,dots_image算子是一个用于增强图像中圆点效果的强大工具,特别适合于点的分割,以及OCR(光学字符识别)应用程序中增强点状印刷字体。以下是对dots_image (ImageResult, DotImage, 5, ‘dark’, 2)算子原理及应…...
【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[5]--memchr
C语言中的memchr函数用于在内存块中搜索一个特定的字符(实际上是unsigned char类型的值),并返回该字符第一次出现的指针。虽然这个函数在内存搜索中非常有用,但它也存在一些陷阱。 一、功能与用法 功能:memchr函数在指定的内存块中搜索第一次出现的特定字符,并返回一个…...
【P2P】【Go】采用go语言实现udp hole punching 打洞 传输速度测试 ping测试
服务器端 udpserver/main.go package mainimport ("fmt""net""sync""sync/atomic" )var (clientCounter uint64 0 // 客户端连接计数器mu sync.Mutex )func main() {addr, err : net.ResolveUDPAddr("udp", &q…...
【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容
背景 在尝试让 ChatGPT 自动开发一个桌面壁纸更改的功能时,发现引入了一个 wallpaper 库,这个库的入口文件是 index.js,但是 package.json 文件下的 type:"module",这样造成了无论你使用 import from 还是 require&…...
【SpringBoot 调度任务】
在 Spring Boot 中实现调度任务(Scheduled Tasks),通过使用 EnableScheduling 和 Scheduled 注解来完成。 添加依赖启用调度任务支持创建调度任务运行应用程序 添加依赖 pom.xml 文件中有以下依赖项: <dependency><gro…...
Android v4和v7冲突
android.useAndroidXtrue android.enableJetifiertruev4转成AndroidX...
【HarmonyOS之旅】HarmonyOS开发基础知识(一)
目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…...
【排序算法】——插入排序
目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列&…...
Vue todoList小项目记录
最初代码 简单搭一个vue2的小项目 App.vue <template><div id"app"><!-- 容器 --><div class"todo-container"><div class"todo-wrap"><!-- 头部 --><MyHeader :addTodo"addTodo"></…...
SQL题目笔记
一、根据需求创建表(设计合理的数据类型、长度)...
电脑开机提示error loading operating system怎么修复?
前一天电脑还能正常运行,但今天启动时却显示“Error loading operating system”(加载操作系统错误)。我已经仔细检查了硬盘、接线、内存、CPU和电源,确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用,说明不是硬…...
Nginx 在不同操作系统下的安装指南
Nginx 在不同操作系统下的安装指南 一、Linux 系统下 Nginx 的安装 (一)基于 Ubuntu 系统 更新软件包列表 打开终端,首先执行sudo apt-get update命令。这一步是为了确保系统的软件包列表是最新的,能够获取到最新版本的 Nginx 及…...
景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”
近日,由中国信息通信研究院、中国人工智能产业发展联盟牵头,联合中国电信集团、沈阳市数据局、保定高新区等70多家单位编制完成并发布《人工智能数据标注产业图谱》。景联文科技作为人工智能产业关键环节的代表企业,入选图谱中技术服务板块。…...
Nginx - 负载均衡及其配置(Balance)
一、概述 定义:在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载目标:最佳化资源使用、最大化吞吐率、最小化响应时间、避免过载功能:使用多台服务器提供单一服务(服务器农场&am…...
MySQL存储引擎-存储结构
Innodb存储结构 Buffer Pool(缓冲池):BP以Page页为单位,页默认大小16K,BP的底层采用链表数据结构管理Page。在InnoDB访问表记录和索引时会在Page页中缓存,以后使用可以减少磁盘IO操作,提升效率。 ○ Page根据状态可以分…...
数据资产入表 解锁智慧城市新潜力
在21世纪的科技浪潮中,智慧城市以信息技术为核心,以数据为血液,通过智能化、精细化的管理,让城市变得更加智慧、更加宜居。而数据资产入表,正是这一变革中的关键一环,它不仅推动了科技的进步,更…...
按类别调整目标检测标注框的写入顺序以优化人工审核效率
引言 在目标检测数据标注审核过程中,我们常常会遇到以下情况:某些小目标的检测框嵌套在大目标检测框内,而在模型进行预标注后,这些小目标的框可能被写入到了大目标框的下层。在人工审核阶段,标注审核人员需要手动移动…...
深入理解YOLO系列目标检测头的设定方式
目录 YOLOv1的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 YOLOv2的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 YOLOv3的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 总结:YOLO 系列检测头的结构演变 YOLOv1的检测头结构 1. 网络…...