【面试高频 time:】关于MYsql性能优化的理解

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 【面试高频 time:】关于MYsql性能优化的理解

分为四个部分

  1. 硬件和操作系统层面的优化
  2. 架构设计层面的优化
  3. MySQL程序配置的优化
  4. SQL执行的优化

详细分析

  1. 硬件和操作系统层面的优化
  • 从硬件层面上来讲:影响Mysql的效率主要因素是CPU,可用内存大小,磁盘读写速度,网络带宽;
  • 从操作系统层面上来讲:应用文件句柄数,操作系统的网络配置
  • 这些都会影响Mysql的性能,这部分的优化一般是由运维,DBA去完成的,在硬件基础资源的优化中,我们重点关注的应该是服务本身承载的体量,然后提出合理的指标要求,避免出现资源浪费的一个现象,
  1. 架构设计层面的优化
    Mysql是一个磁盘IO访问非常频繁的关系型数据库,在高并发和高可用的场景下,Mysql数据库必然会承受巨大的并发压力,这时我们优化的方向主要可以分为以下几个方面
  • 第一个,搭建Mysql的主从集群,单个的Mysql数据库容易导致单点故障,一旦服务宕机,就会导致依赖MySQL服务器的应用全部无法响应。主从集群或者主主集群都可以去保证服务的高可用性,
  • 第二个,读写分离设计,在读多写少的情境下,通过读写分离的方案,可以去避免由于读写冲突导致的性能问题
  • 第三个,是引入分库分表的机制,通过分库可以降低单个数据库的IO压力,通过分表的话可以去降低单个表数据量,从而提升Mysql的查询效率。
  • 第四个,针对热点数据,可以引入更为高效的分布式数据库,比如像Redis,MongoDB等等,他们可以很好的缓解Mysql的访问压力,同时还能提升数据库的检索能力
  1. MySQL程序配置的优化
  • 第一个,Mysql是一个经受过互联网大厂检验过的生产级别的数据库,对于Mysql数据库本身的优化,一般可以通过MySQL的配置文件my.cnf来完成,
  • 第二个,binlog日志,默认是不开启的,我们也可以去my.cnf这个文件去修改开启,
  • 第三个,缓存池Bufferpool,默认大小配置,而这些配置一般和用户的安装环境有关系,以及使用场景,因此这些配置官方只会提供一个默认的初始值,具体的情况还得使用者去根据自己的使用情况去修改
  • 关于配置项的修改,需要关注两个层面,第一个是配置的作用域,他可以分为会话级别和全局范围,还有一个是是否支持热加载,因此针对这两个点,我们需要注意的是全局参数的设定,对于已经存在的会话是无法生效的,会话参数的设定,会随着会话的销毁而失效,第三个是全局类的统一配置,建议配置在默认的配置文件中,否者重启服务会导致配置失效
  1. SQL执行的优化
    sql优化又可以分为三个步骤,
  • 第一个,慢sql的定位与排查,我们可以通过慢查询日志和慢查询日志分析工具得到有问题的Sql列表
  • 第二个是执行计划分析,针对慢的sql我们可以通过Explain来去查看当前sql的执行计划,可以重点关注type,key,rows,filterd等字段,从而去定位该sql执行慢的原因,再去有的放矢的进行优化
  • 第三个,使用show,profile工具,这个工具是mysql提供的可以用来分析当前会话sql语句资源消耗情况的工具,可以用于sql调优的测量,默认show,profile是关闭的,打开之后会保存最近15次运行结果

总结拓展

  1. Sql的查询一定要基于索引来进行数据扫描,
  2. 避免索引列上使用函数或者运算符(有可能会导致索引失效)
  3. where查询时使用like的%一定要放在右边
  4. 使用索引扫描,联合索引中的列从左往右,命中得越多越好
  5. 尽量使用Sql语句用到的索引完成排序
  6. 查询语句中尽量少用 * ,而是用具体有效的列来代替
  7. 永远要用小的结果集去驱动大的结果集
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
10月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
8月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
10月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
8月前
|
存储 SQL 关系型数据库
MySQL 核心知识与性能优化全解析
我整理的这份内容涵盖了 MySQL 诸多核心知识。包括查询语句的书写与执行顺序,多表查询的连接方式及内、外连接的区别。还讲了 CHAR 和 VARCHAR 的差异,索引的类型、底层结构、聚簇与非聚簇之分,以及回表查询、覆盖索引、左前缀原则和索引失效情形,还有建索引的取舍。对比了 MyISAM 和 InnoDB 存储引擎的不同,提及性能优化的多方面方法,以及超大分页处理、慢查询定位与分析等,最后提到了锁和分库分表可参考相关资料。
182 0
|
10月前
|
SQL 存储 关系型数据库
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
|
6月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
456 158
|
6月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1095 152
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
850 156

推荐镜像

更多