【日积月累】Mysql性能优化

主图==========

目录

【日积月累】Mysql性能优化

  • 1.前言
  • 2.MySql性能优化的主要方面
    • 2.1硬件和操作系统成面优化
    • 2.2架构设计层优化(表结构)
    • 2.3程序配置优化
    • 2.5表结构及索引优化
    • 2.4sql执行优化
  • 3.总结
  • 4.参考


文章所属专区 积月累


1.前言

MySQL是一种常用的开源关系型数据库管理系统,广泛应用于各种应用场景。但随着数据规模的增长和复杂查询的增多,MySQL性能优化变得尤为重要。本篇文章将探讨一些提高MySQL性能的关键策略和技巧,为读者提供有效的优化建议。无论是通过调整服务器硬件配置、优化查询语句、合理设计索引或者使用缓存技术,我们都将尽力介绍最佳实践。通过细致深入地了解MySQL的各个方面,希望读者能够提高数据库的响应速度,提升系统的整体性能,实现高效稳定的数据管理。

2.MySql性能优化的主要方面

第一个是硬件和操作系统成面优化,第二个是架构设计层优化,第三个是程序配置优化,第四个是sql执行优化。

2.1硬件和操作系统成面优化

从硬件层面来讲,影响Mysql性能的因素主要是1.cpu可用内存代销2.磁盘读写速度3.网络带宽
从操作系统层面来讲,主要是文件句柄数,以及操作系统的网络配置都会影响Mysql的性能,这一块主要就是运维人员或者DBA负责处理,根据实际业务体量,做出相适应的配置,避免造成资源过剩,浪费。

2.2架构设计层优化(表结构)

我们知道Mysql是一个磁盘io访问非常频繁的关系型数据库,在高并发和高性能的场景中Mysql必然会承担巨大的压力,在这一块可以做出优化
1.搭建主从集群,如果是单个Mysql服务器的话,一旦服务器宕机,会导致所有依赖于Mysql的响应。而使用了主从集群或者主主集群的方式搭建Mysql可以保证高可用性。
2.针对热点数据可以引入高效的分布式数据库,Redis,MongoDB,他们可以很好缓解数据库的访问压力,同时还能提升检索的性能。

2.3程序配置优化

以Mysql 5.7版本为例
1.在my.cnf中修改最大连接数(默认151)
2.在my.cnf中修改binlog(默认不开启)
3.在my.cnf中修改Bufferpool配置开启缓存池
这一块也是根据实际的业务场景由使用者或者DBA,运维人员去配置,Mysql只是提供一些默认配置。

2.5表结构及索引优化

1.读写分离,在读多写少的场景中可以通过读写分离避免读写冲突导致的性能问题。
2.分库分表,分库可以减少服务器的一个io压力,通过分表可以降低单表数据量从而提升sql查询效率
3.为字段选择合适的数据类型
4.为查询数据增加必要的索引

2.4sql执行优化

1.避免使用 * 查询(全表查询),写清楚需要查询的字段,这种方式性能开销非常大,并且失去了覆盖索引的能力。
2.小数据集驱动大数据集,用 in 不要用exists。
3.最好是一条sql操作一张表,避免其中某张表查询慢。
4.批量插入代替循环插入,用Mybatis批量处理insertBach(list)。
5.用limit限制返回条数,避免内存溢出。
6.用limit分页查询时pageNo不断增大,应该在查询语句前面川 lastMaxId(前端传)
7.查询时,缩小数据集的查询条件放前面

3.总结

MySQL是一款广泛使用的开源关系型数据库管理系统,它在许多应用场景中发挥着重要作用。然而,随着数据规模的增长和复杂查询的增多,MySQL的性能优化变得尤为重要。

4.参考

B站视频1
一文搞定MySQL性能调优
添MySQL性能调优的10个方法
关于MySQL数据库性能优化方法,看这一篇文章就够了
Mysql官方文档
4款 MySQL 调优工具

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

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

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

相关文章

ACL原理和配置

一.ACL概述 1.介绍 ACL 访问控制列表,可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。 2.概述 ACL是…

ShenYu网关注册中心之Zookeeper注册原理

文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解,注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…

[C语言]大小端及整形输出问题

假设在一个32位little endian 的机器上运行下面的程序&#xff0c;结果是多少 ? 1.1先看以下三个程序 #include <stdio.h> int main() {long long a 1, b 2, c 3;printf("%lld %lld %lld\n", a, b, c); // 1 2 3printf("%d %d %d %d %d %d\n&quo…

Learning Semantic-Aware Knowledge Guidance forLow-Light Image Enhancement

微光图像增强&#xff08;LLIE&#xff09;研究如何提高照明并生成正常光图像。现有的大多数方法都是通过全局和统一的方式来改善低光图像&#xff0c;而不考虑不同区域的语义信息。如果没有语义先验&#xff0c;网络可能很容易偏离区域的原始颜色。为了解决这个问题&#xff0…

c语言-全局变量与局部变量

目录 1、&#xff08;作用&#xff09;域的概念 2、全局与局部的相对性 3、生命周期 3、静态变量static 结语&#xff1a; 前言&#xff1a; 在c语言中&#xff0c;全局变量的可见范围是整个工程&#xff0c;而局部变量的可见范围从该变量被定义到该作用域结束&#xff0c…

【JavaEE】多线程(5) -- 阻塞队列

目录 1.阻塞队列是什么? 2.生产者消费者模型 3.标准库中的阻塞队列 4.阻塞队列的实现 1.阻塞队列是什么? 阻塞队列是⼀种特殊的队列. 也遵守 "先进先出" 的原则 阻塞队列能是⼀种线程安全的数据结构, 并且具有以下特性: 当队列满的时候, 继续⼊队列就会阻塞, …

I/O流的相关内容

首先我们了解一下什么是文件&#xff1a; 文件其实就是让我们用来保存数据的地方&#xff0c;它可以用来保存信息&#xff0c;图片&#xff0c;以及音频等各类数据。 文件流&#xff1a; 那我们是如何通过我们的程序来进行对文件的操作呢&#xff1f;这里我们就要提出一个概…

wpf将静态变量绑定到控件属性

有时候需要将后台一个静态属性绑定到xaml前台&#xff0c;经过实践&#xff0c;有如下两种绑定的方式 例如后台声明一个类&#xff0c;类中包含静态变量&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T…

2023年金属非金属矿山(地下矿山)安全管理人员证模拟考试题库及金属非金属矿山(地下矿山)安全管理人员理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员证模拟考试题库及金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员理论考试试题是由安全生产模拟考试一点通提供&#xff0c;金属非金…

【linux--进程通信之共享内存】

目录 一、共享内存的原理二、共享内存的数据结构三、共享内存使用的函数2.1ftok函数2.2shmget函数2.3shmctr函数2.4shmat函数2.5shmdt函数 四、实现进程通信 一、共享内存的原理 共享内存实际是操作系统在实际物理内存中开辟的一段内存。 共享内存实现进程间通信&#xff0c;是…

大数据之如何利用爬虫爬取数据做分析

目录 前言 爬虫概述 爬虫实现 1. 获取代理IP 2. 爬取数据 3. 多线程爬取 总结 前言 随着互联网和智能设备的普及&#xff0c;数据量逐年增长&#xff0c;数据分析和挖掘成为了热门领域&#xff0c;其中大数据分析技术和爬虫技术是重要的手段之一。本文主要介绍如何使用…

Python框架批量数据抓取的高级教程

一、背景介绍 批量数据抓取是一种常见的数据获取方式&#xff0c;能够帮助我们快速、高效地获取网络上的大量信息。本文将介绍如何使用Python框架进行大规模抽象数据&#xff0c;以及如何处理这个过程中可能遇到的问题。 二、项目需求 我们将爬取大量知乎文章&#xff0c;讨…

扁平化菜单功能制作

网页效果&#xff1a; HTML部分&#xff1a; <body><ul class"nav"><li><a href"javascript:void(0);">菜单项目一</a><ul><li>子菜单项01</li><li>子菜单项02</li><li>子菜单项03<…

matlab面向对象编程入门笔记

文章目录 1. 类和结构2. 定义类3. 属性3.1 private/protected/public属性3.2 constant属性3.3 hidden属性 4. 方法4.1 private/protected/public方法4.2 static方法4.3 外部方法 5. 动态调用6. 继承-超类6.1 handle超类6.2 dynamicprops 和 hgsetget子类 7. 封闭(sealed)类、方…

波奇学Linux:Linux进程状态,进程优先级

编写一个程序模拟进程 查看进程状态 修改代码后发现进程状态为由S变成R R为运行态&#xff0c;S为阻塞态 第一次为S是因为调用了外设&#xff08;printf调用屏幕外设&#xff09;&#xff0c;实际上应该为R&#xff0c;S状态轮换&#xff0c;但是R太快了&#xff0c;所以每次…

性能测试之Locust(完整版)

官方文档&#xff1a;Locust说明文档 一、Locust简介 1、定义 Locust是一款易于使用的分布式负载测试工具&#xff0c;完全基于事件&#xff0c;即一个locust节点也可以在一个进程中支持数千并发用户&#xff0c;不使用回调&#xff0c;通过gevent使用轻量级过程&#xff08…

订单管理系统开发经验的总结:优化流程、提升效率的关键实践

前言 一.订单管理系统的架构设计 二.订单系统的详细设计 1.拆分 2.换货 3.发货 4.拦截 5.取消 6.物流回传 三.订单系统的订单状态流转 初始状态 中间状态 异常状态 终态 四.订单系统的关键代码逻辑 五.结语 前言 两年来&#xff0c;整个订单管理系统经过大大小…

序列生成模型(一):序列概率模型

文章目录 前言1. 序列数据2. 序列数据的潜在规律3. 序列概率模型的两个基本问题 一、序列概率模型1. 理论基础序列的概率分解自回归生成模型 2. 序列生成 前言 深度学习在处理序列数据方面取得了巨大的成功&#xff0c;尤其是在自然语言处理领域。序列数据可以是文本、声音、视…

【算法Hot100系列】三数之和

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

人生感悟 | 又是一年,眼看要2024了

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 刚过完大雪节气没两天&#xff0c;气温开始急转直下&#xff0c;走在路上明显感觉冷了许多。看天气预报很多地区已经开始下雪了。 看日历已经12月9号了&#xff0c;12月份&#xff0c;一年的最后一个月&#xff0c;2…