大厂面试题-MySQL优化

本文详细阐述了MySQL性能优化的四个关键领域:硬件及操作系统层面,架构设计,程序配置,以及SQL优化。涉及慢SQL定位、执行计划分析和showprofile工具的使用。强调了SQL优化规则,如索引使用和查询效率提升。
摘要由CSDN通过智能技术生成

目录

硬件及操作系统层面优化

架构设计层面的优化

MySQL程序配置优化

SQL优化

    第一、慢SQL的定位和排查

    第二、执行计划分析

    第三、使用show profile工具


MySQL性能优化可以分为4大部分

    1、硬件和操作系统层面的优化

    2、架构设计层面的优化

    3、MySQL程序配置优化

    4、SQL优化

硬件及操作系统层面优

从硬件层面来说,影响Mysql性能的因素有,CPU、可用内存大小、磁盘读写速度、络带宽

作系层面来说,应用文件句柄数、操作系统网络的配置都会影响到Mysql性能。这部分的优化一般由DBA或者运维工程师去完成。

在硬件基础资源的优化中,我们重点应该关注服务本身承载的体量,然后提出合理的指标要求,避免出现资源浪费

构设计层面的优化

MySQL是一个磁盘IO访问量非常频繁的关系型数据库

在高并发和高性能的场景中.MySQL数据库必然会承受巨大的并发压力,而此时,我们的优化方式可以分为几个部

1.   搭建Mysql主从集群,单个Mysql服务容易单点故障,一旦服务器宕机,将会导致依赖Mysql数据库的应用全部无法响应。主从集群或者主主集群可以保证服务的高可用性。

2.   读写分离设计,在读多写少的场景中,通过读写分离的方案,可以避免读写冲突导致的性能影响

3.   引入分库分表机制,通过分库可以降低单个服务器节点的IO压力,通过分表的方式可降低单表数据量,从而提升sql查询的效率。

4.   对热点数据,可以引入更为高效的分布式数据库,比如Redis、MongoDB等,他们可以很好的缓解Mysql的访问压力,同时还能提升数据检索性能。

MySQL程序配置优化

MySQL是一个经过互联网大厂验证过的产级别的成熟数据库,对于Mysql数据库本身的化,一般是通过Mysql中的配置文件my.cnf来完成的,比如

Mysql5.7版本默认的最大连接数是151个,这个值可以在my.cnf中修改。

binlog日志,默认是不开启;

缓存池bufferpoll的默认大小配置等。

由于些配置一般都和用户安装的硬件环境以及使用场景有关系,因此这些配置官方只会提供一个默认值,具体情况还得由使用者来修改。

关于配置项的修改,需要关注两个方面。

    1、配置的作用域,分为会话级别和全局

    2、是否支持热加载

因此,针对这两个点,我们需要注意的是:

    1、全局参数的设定对于已经存在的会话无法生效

    2、会话参数的设定随着会话的销毁而失效

    3、全局类的统一配置建议配置在默认配置文件中,否则重启服务会导致配置失效

SQL优化

SQL优化又能分为三步

    第一、慢SQL的定位和排查

我们可以通过慢查询日志和慢查询日志分析工具得到有问题的SQL列表。

    第二、执行计划分析

针对慢SQL,我们可以使用关键字explain来查看当前sql的执行计划.可以重点关注type key rows filterd等字段,从而定位该SQL执行慢的根本原因。再有的放矢的进行优化

    第三、使用show profile工具

Show ProfileMySQL提供的可用来分析当前会话中,SQL语句资源消耗情况的工具,可用于SQL调优的测量。在当前会话中.默认情况下处于show profile是关闭状,打开之后保存最近15次的运行结果

针对运行慢的SQL,通过profile工具进行详细分析.可以得到SQL执行过程中所有的源开销情况如IO开销,CPU开销,内存开销等.

好的,看完高手的回答后,相信各位对MySQL性能优化有了一定的理解了,最后给各位总结一下常见的SQL优化规则:

    1、SQL的查询一定要基于索引来进行数据扫描

    2、避免索引列上使用函数或者运算,这样会导致索引失效

    3、where字句中like%号,尽量放置在右边

    4、使用索引扫描,联合索引中的列从左往右,命中越多越好.

    5、尽可能使用SQL语句用到的索引完成排序,避免使用文件排序的方式

    6、查询有效的列信息即可.少用*代替列信息

    7、永远用小结果集驱动大结果集。

以上就是常见的SQL优化规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值