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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 【面试高频 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. 永远要用小的结果集去驱动大的结果集
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
SQL Oracle 关系型数据库
mysql面试题库
mysql面试题库
|
3天前
|
存储 关系型数据库 MySQL
架构面试题汇总:mysql索引汇总(2024版)
架构面试题汇总:mysql索引汇总(2024版)
|
5天前
|
SQL 关系型数据库 MySQL
MySQL性能优化实战:从索引策略到查询优化
MySQL性能优化聚焦索引策略和查询优化。创建索引如`CREATE INDEX idx_user_id ON users(user_id)`可加速检索;复合索引考虑字段顺序,如`idx_name ON users(last_name, first_name)`。使用`EXPLAIN`分析查询效率,避免全表扫描和大量`OFFSET`。通过子查询优化分页,如LIMIT配合内部排序。定期审查和调整策略以提升响应速度和降低资源消耗。【6月更文挑战第22天】
94 2
|
2天前
|
存储 关系型数据库 MySQL
深入探索MySQL:成本模型解析与查询性能优化
深入探索MySQL:成本模型解析与查询性能优化
|
3天前
|
存储 关系型数据库 MySQL
架构面试题汇总:40道题吃透mysql(2024版)
架构面试题汇总:40道题吃透mysql(2024版)
|
7天前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
14 0
|
2天前
|
存储 关系型数据库 MySQL
|
1天前
|
存储 关系型数据库 MySQL
|
1天前
|
存储 SQL 关系型数据库
|
2天前
|
SQL 运维 关系型数据库