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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【面试高频 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. 永远要用小的结果集去驱动大的结果集
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
SQL 关系型数据库 MySQL
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
MySQL慢查询优化、索引优化,是必知必备,大厂面试高频,本文深入详解,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
|
2月前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
18天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
29天前
|
SQL 缓存 关系型数据库
美团面试:Mysql 有几级缓存? 每一级缓存,具体是什么?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴因未能系统梳理MySQL缓存机制而在美团面试中失利。为此,尼恩对MySQL的缓存机制进行了系统化梳理,包括一级缓存(InnoDB缓存)和二级缓存(查询缓存)。同时,他还将这些知识点整理进《尼恩Java面试宝典PDF》V175版本,帮助大家提升技术水平,顺利通过面试。更多技术资料请关注公号【技术自由圈】。
美团面试:Mysql 有几级缓存? 每一级缓存,具体是什么?
|
19天前
|
存储 缓存 负载均衡
mysql的性能优化
在数据库设计中,应选择合适的存储引擎(如MyISAM或InnoDB)、字段类型(如char、varchar、tinyint),并遵循范式(1NF、2NF、3NF)。功能上,可以通过索引优化、缓存和分库分表来提升性能。架构上,采用主从复制、读写分离和负载均衡可进一步提高系统稳定性和扩展性。
36 9
|
23天前
|
SQL 算法 关系型数据库
面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决
面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决
|
1月前
|
SQL 关系型数据库 MySQL
美团面试:Mysql如何选择最优 执行计划,为什么?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴面试美团时遇到了关于MySQL执行计划的面试题:“MySQL如何选择最优执行计划,为什么?”由于缺乏系统化的准备,小伙伴未能给出满意的答案,面试失败。为此,尼恩为大家系统化地梳理了MySQL执行计划的相关知识,帮助大家提升技术水平,展示“技术肌肉”,让面试官“爱到不能自已”。相关内容已收录进《尼恩Java面试宝典PDF》V175版本,供大家参考学习。
|
18天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
32 1
|
20天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
35 4
|
27天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
150 1