MySQL调优的五个方向

  1. 客户端与连接层的优化:调整客户端DB连接池的参数和DB连接层的参数。
  2. MySQL结构的优化:合理的设计库表结构,表中字段根据业务选择合适的数据类型、索引。
  3. MySQL参数优化:调整参数的默认值,根据业务将各类参数调整到合适的大小。
  4. 整体架构优化:引入中间件减轻数据库压力,优化MySQL架构提高可用性。
  5. 编码层优化:根据库表结构、索引结构优化业务SQL语句,提高索引命中率。

带来的性能收益排序为 4 > 2 > 5 > 3 > 1,性能收益越大意味着成本越高。

MySQL 连接层优化策略

一个用户请求在Java程序中分配一条线程处理,然后变成一条SQL发往MySQL执行,Java程序和MySQL-Server之间通过建立网络连接进行通信,这些连接称为数据库连接,MySQL内部也是通过一条条线程执行SQL语句。数据库连接数不是越大越好。

数据库连接数越大,内部创建出的工作线程会越多,需要的CPU配置就更高,线程数量超过服务器CPU核心数量,CPU会以时间片调度模式工作,在不同线程中反复切换执行,这个过程远大于线程执行的开销。

连接池分为客户端连接池、服务端连接池,客户端连接池是指Java自身维护的数据库连接对象,如C3P0、DBCP、Druid、HikariCP...等连接池。服务端连接池是指MySQL-Server的连接层中,自身维护的一个连接池,用来实现线程复用的目的。

重点调整的是客户端连接池的连接数,MySQL实例一般情况下只为单个项目提供服务,应用程序的连接数做了限制,也就限制了服务端的连接数。但数据库实例不仅仅只为单个项目提供服务,有时候通过终端工具远程连接MySQL,MySQL的最大连接数和客户端连接池的最大连接数保持一致,很有可能导致MySQL连接数爆满,最终造成终端无法连上MySQL。
客户端的连接池大小计算公式:最大连接数 = (CPU核心数 * 2) + 有效磁盘数(SSD固态硬盘)

1. 偶发高峰类业务的连接数配置

在某个时间段流量显然比平时高很多的业务,这类业务常驻线程数不适合太多。并发来临时会创建大量连接,并发后一直保持数据库连接会导致资源被占用。这类业务最大连接数按上面的公式配置,常驻连接数可配成CPU核数+1,同时缩短连接存活时间来即使释放空闲的数据库连接。

2. 分库分表情况下的连接数配置

以上提到的都是建立在单库情况下的配置,对于读写分离、双主双写、分库分表的情况下,就不适合这样配置。因为部署了多个MySQL节点,意味着拥有堕胎服务器的硬件资源,要根据每个节点的硬件配置规划处合理的连接数。

总结:

连接层的调优实际上是指调整它的参数,即常驻连接数、最大连接数、空闲连接存活时间以及等待队列的容量。对于最佳连接数的计算,首先要把CPU核数放首位考虑,紧接着是磁盘,最后是网络带宽,因为带宽会影响SQL执行时间,综合考虑后计算出最合适的连接数大小。

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

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

相关文章

【leetcode78-81贪心算法、技巧96-100】

贪心算法【78-81】 技巧【96-100】

谷粒商城-个人笔记(集群部署篇二)

前言 ​学习视频:​Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强​学习文档: 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…

【数据结构】02.顺序表

一、顺序表的概念与结构 1.1线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#xff0…

GEE计算遥感生态指数RSEI

目录 RESI湿度绿度热度干度源代码归一化函数代码解释整体的代码功能解释:导出RSEI计算结果参考文献RESI RSEI = f (Greenness,Wetness,Heat,Dryness)其遥感定义为: RSEI = f (VI,Wet,LST,SI)式中:Greenness 为绿度;Wetness 为湿度;Thermal为热度;Dryness 为干度;VI 为植被指数…

【多媒体】Java实现MP4和MP3音视频播放器【JavaFX】【音视频播放】

在Java中播放音视频可以使用多种方案,最常见的是通过Swing组件JFrame和JLabel来嵌入JMF(Java Media Framework)或Xuggler。不过,JMF已经不再被推荐使用,而Xuggler是基于DirectX的,不适用于跨平台。而且上述方案都需要使用第三方库…

拒绝信息差!一篇文章说清Stable Diffusion 3到底值不值得冲

前言 就在几天前,Stability AI正式开源了Stable Diffusion 3 Medium(以下简称SD3M)模型和适配CLIP文件。这家身处风雨飘摇中的公司,在最近的一年里一直处于破产边缘,就连创始人兼CEO也顶不住压力提桶跑路。 即便这样&…

[leetcode]minimum-absolute-difference-in-bst 二叉搜索树的最小绝对差

. - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(null…

java如何在字符串中间插入字符串

java在字符串中插入字符串,需要用到insert语句 语法格式为 sbf.insert(offset,str) 其中,sbf是任意字符串 offset是插入的索引 str是插入的字符串 public class Insert {public static void main(String[] args) {// 将字符串插入到指定索引StringBuffer sbfn…

FFmpeg5.0源码阅读——格式检测

摘要:在拿到一个新的格式后,FFmpeg总是能够足够正确的判断格式的内容并进行相应的处理。本文在描述FFmpeg如何进行格式检测来确认正在处理的媒体格式类型,并进行相应的处理。   关键字:FFmpeg,format,probe 在调用FFmpeg的APIav…

变量的定义和使用

1.定义 变量,就是用来表示数据的名字 Python 中定义变量非常简单,只需将数据通过等号()赋值给一个符合命名规范的标识符即可 name"Camille" name 123 变量的使用 变量的使用是指在程序中引用一个已经定义的变量。 例如,如果…

LeetCode 196, 73, 105

目录 196. 删除重复的电子邮箱题目链接表要求知识点思路代码 73. 矩阵置零题目链接标签简单版思路代码 优化版思路代码 105. 从前序与中序遍历序列构造二叉树题目链接标签思路代码 196. 删除重复的电子邮箱 题目链接 196. 删除重复的电子邮箱 表 表Person的字段为id和email…

昇思MindSpore学习总结七——模型训练

1、模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后,可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码&#xff0…

检测站机动车授权签字人试题附答案

16、___的轮胎胎冠上花纹深度不得小于3.2mm。( ) A、乘用车 B、摩托车 C、货车的转向轮(正确答案) D、挂车 17、最大设计时速≥100km/h的机动车其转向盘自由转动量不大于__。( ) A、30 度 B、20 度(正确答案) C、45 度 D、40度…

在windows上安装objection

安装命令pip install objection -i https://mirrors.aliyun.com/pypi/simple hook指定进程 objection -g 测试 explore 进程名不定是包名,也可能是app名字,如“测试”就是app的名字 若出现如下错误,说明python 缺少setuptools 直接安装setu…

掷骰子游戏 、 求绝对值,平方根,对数,正弦值 题目

题目 JAVA33 掷骰子游戏分析:代码: JAVA34 求绝对值,平方根,对数,正弦值分析:代码: JAVA33 掷骰子游戏 描述开发一个掷骰子游戏,即每次运行程序时,产生一个[1,6]之间的随…

秋招突击——设计模式补充——单例模式、依赖倒转原则、工厂方法模式

文章目录 引言正文依赖倒转原则工厂方法模式工厂模式的实现简单工厂和工厂方法的对比 抽线工厂模式最基本的数据访问程序使用工厂模式实现数据库的访问使用抽象工厂模式的数据访问程序抽象工厂模式的优点和缺点使用反射抽象工厂的数据访问程序使用反射配置文件实现数据访问程序…

检索增强生成RAG系列6--RAG提升之查询结构化(Query Construction)

系列5中讲到会讲解3个方面RAG的提升,它们可能与RAG的准确率有关系,但是更多的它们是有其它用途。本期来讲解第二部分:查询结构化(Query Construction)。在系列3文档处理中,我们着重讲解了文档解析&#xff…

C++ dll导出类的方法

要在C动态库中导出类,可以使用以下步骤: 定义一个类并实现其成员函数。在类的声明前加上__declspec(dllexport)标记(Windows平台)或__attribute__((visibility("default")))标记(Linux平台)&…

C语言学习笔记--第一个程序

第一个C语言程序 #include<stdio.h> //引用输入输出头文件&#xff0c;每一次都需要引用这个文件 //.h是头文件 // .c是源文件 // .cpp是C源文件&#xff0c;兼容C //C的第一个程序 // 行注释&#xff08;只能注释这一行&#xff09; /*块注释 */ int main() {printf(&…

能保存到相册的风景视频在哪下载?下载风景视频网站分享

在当今以视觉为核心的时代&#xff0c;高清美丽的风景视频不仅能够丰富我们的日常生活&#xff0c;还能提供心灵上的慰藉。无论是为了制作视频项目&#xff0c;还是仅仅想要珍藏一些精美的风景画面&#xff0c;获取高质量的风景视频素材显得尤为重要。许多人可能会问&#xff1…