Mysql性能优化全揭秘

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 庖丁解牛

「为什么写」    

一直想写数据库相关的文章,最直接的原因是数据库这块我们工作中每天都会用到,也是面试求职绕不开的话题,无论你是何种测试,优秀的数据库能力都会非常加分,最近我在总结数据库性能优化这块内容,性能这块就如庖丁解牛,首先你需要知道牛的全貌,筋脉布局,才能解之,今天这篇文章,也先从全局的角度来看数据库性能优化这件事。


「管中窥豹」  

我们常常听到一句话,性能优化皆io,可以认为性能优化的核心思想就是减少io操作,之前和一同学聊天,发现不少人认为减少io就是减少磁盘操作,这其实很不全面,Cpu->Cache->Net->Mem->Disk,  每一步都是io,片面的认为磁盘,那你只是看到了牛腿,解不了全牛,下面我罗列的每一块硬件资源,在数据库层面都具备着相应的职能,成本以及开销。




硬件资源的速度排序大体可以这么认为:CPU>Cache>内存>网络>硬盘,一直说的减少io操作本质是减少性能相对较差的io开销,在性能较好的资源上进行操作,每一种优化法则都是解决其对应硬件的性能问题,当我们遇到性能问题时,不应该简单说通过加硬件资源去解决,这种解法一般叫做扬汤止沸,解决不了本质问题,而是应当通过我们的图谱或者叫知识体系提出性价比最高的解决方案




         

「常用的优化手段」

1.表设计(符合3NF)

NF的意思是范式,粗略而言数据库分为三个范式。即:第一范式 第二范式 第三范式。

第一范式的意思是:数据表中的字段都是不可分割的,原子的。第一范式是最简单的,也是必需的。

第二范式:在第一范式的基础上,数据表中各字段和主键之间完全依赖,不存在部分依赖。例如:数据表中存在字段<学号,姓名,分数>组成,其中<学号,姓名>组合在一起构成主键。如果学生的姓名不重复的情况下,那么就存在部分依赖。

第三范式:第二范式的基础上,不存在传递依赖。

所谓传递依赖是指:例如:数据表中存在字段<学号,姓名,分数>组成,其中<学号>是主键。如果学生的姓名不重复的情况下,那么就存在传递依赖。即:学号可以唯一确定姓名,而姓名是不重复的,所以,姓名也可以唯一确定分数。那么,学号决定分数就不唯一了,中间还有姓名可以确定。这就是所谓的传递依赖。


2.优化SQL语句

a.获取到慢sql,processlist,或者慢查询

b.explain 分析

c.索引分析,sql规范分析

d.业务层面逻辑分析


3.分表

a.垂直切分:将同一个表的内容,按照数据热度不同切分字段,按照3nf原则,划分为多个表。

分表理由:根据数据的活跃度进行分离,随着目前nosql的流行,竖直切分用的不多

b.水平切分:把大的表结构,横向切割为同样结构的不同表,表结构是完全一样, 按照数量级切割。

分表理由:根据数据量的规模来划分,保证单表的容量不会太大,保证单表的查询等处理能力。


4. 读写分离

a. 主库update,insert,delete

b. 从库select


5. 存储过程

a.批量运算,执行速度相对较高

b.减少网络开销


6.对mysql配置优化

a.查询排序时所能使用的缓冲区大小 read_buffer_size

b.查询缓存 query_cache_size

c. 最大连接数 max_connections


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
2月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
423 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
5天前
|
存储 关系型数据库 MySQL
MySQL性能优化实践指南
【10月更文挑战第16天】MySQL性能优化实践指南
12 0
|
5天前
|
存储 关系型数据库 MySQL
MySQL性能优化指南
【10月更文挑战第16天】MySQL性能优化指南
22 0
|
2月前
|
存储 关系型数据库 MySQL
mysql-性能优化(一)
mysql-性能优化(一)
|
2月前
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
211 6
|
2月前
|
SQL 存储 关系型数据库
深入 MySQL 的执行计划与性能优化
深入 MySQL 的执行计划与性能优化
34 0
|
3月前
|
存储 关系型数据库 MySQL
"深入探索MySQL临时表:性能优化利器,数据处理的灵活之选"
【8月更文挑战第9天】MySQL临时表专为存储临时数据设计,自动创建与删除,仅在当前会话中存在,有助于性能优化。它分为本地临时表和全局临时表(通过特定逻辑模拟)。创建语法类似于普通表,但加TEMPORARY或TEMP关键字。适用于性能优化、数据预处理和复杂查询,需注意内存占用和事务支持问题。合理使用可大幅提升查询效率。
176 2
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之性能分析工具如Sql explain、show profile和mysqlsla在数据库性能优化中有什么作用
MySQL设计规约问题之性能分析工具如Sql explain、show profile和mysqlsla在数据库性能优化中有什么作用
|
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天】
918 2