mysql性能优化应该从哪里入手?(学习笔记整理)

mysql性能优化的理解

  • 💼硬件和系统层面:优化涉及CPU、内存、磁盘、网络,由DBA或运维调整。

  • 🌟架构设计:主从集群提高高可用性,读写分离缓解压力,分库分表降低I/O。

  • 📚配置优化:MySQL配置文件(my.cnf)调整,关注连接数、日志、缓存大小。

  • 🕵️‍♂️执行计划:慢查询日志、执行计划分析和show profile工具用于定位问题。

  • 常见SQL优化规则:基于索引查询,避免函数/运算符影响索引,正确使用like,利用联合索引,少用函数,小驱动大,以及合理的排序方式

第一个硬件和操作系统方面优化:从硬件层面上来说影响mysql性能因素主要是cpu可用内存大小磁盘、读写速度、网络带宽。从操作系统层面上来说应用文件句柄数、操作系统的网络配置都会影响到mysql的性能优化这部分的优化一般都是DBA或者运维完成,在硬件基础资源的优化中我们重点关注的是服务本身所承载的体量,然后提出合理的指标要求避免出现资源浪费的一个现象。

第二个架构设计层优化:mysql是一个磁盘io访问非常频繁的关系型数据库,在高并发和高性能的场景中,mysql数据库必然会承受巨大的并发压力,在此时的优化可以分为几个部分:
第一个是搭建mysql主从集群,单个mysql服务容易导致单点故障一旦服务宕机将会导致依赖mysql应用无法响应主从集群或者主主集群都可以去保证服务的高可用性,
第二个读写分离设计,在读多写少的场景中通过读写的方案可以去避免读写冲突导致性能问题
第三个是引用分库分表的机制,通过分库可以降低单个服务器节省的一个io压力,通过分表的方式可以降低单表数据量,从而去提升sql查询效率。
第四个针对热点数据可以引入更为高效的分布式数据库比如redis、MongoDB等,它们可以很好的缓解mysql的访问压力,同时还能提升数据的检索性能。

第三个点mysql的配置优化,mysql是经过互联网大厂检验过的生产级别的成熟数据库,对于mysql数据库本身的优化一般可以通过配置文件my.cnf来完成,比如说mysql5.7版本默认的最大连接数量是151个,这个值可以在my.cnf中修改;binlog日志默认是不开启的,我们也可以在这个文件中去修改开启,第三个是缓存池Bufferpool默认大小配置等,而这些配置一般是和用户的安装环境以及使用场景有关系,因此这些配置官方只会提供一个默认的配置,具体的情况还是要有使用者去根据实际情况去修改,关于配置项去修改需要注意两个成面,第一个是配置的作用域他可以分为会话级别和全局范围。第二个是是否支持热加载。因此针对这两个点我们需要注意的是全局参数的设定对于已经存在的会话是无法生效的,会话参数的设定,随着会话的销毁而失效。第三个是全局的统一配置建议配置在默认配置文件中,否则重启服务会导致配置失效

第四个点sql执行优化:分为三个步骤,
第一个慢sql的定位和排查我们可以通过慢查询日志和慢查询工具分析得到有问题的sql列表,
第二个是执行计划分析针对慢sql可以使用关键字explain来去查看当前sql的执行计划可以重点关注type、key、rows、filterd等字段从而去定位该sql执行慢的根本原因再去有地放失的进行优化,
第三个使用show、profile工具是sql自带的去分析当前会话中sql语句资源消耗情况的工具可以用于sql调优的测量在当前会话中默认情况下show、profile是关闭状态打开之后会保存最近15次的运行结果,针对运行慢的sql通过profile工具进行详细分析可以得到sql执行过程中所有资源的开销情况比如io开销cpu开销内存开销等.。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值