首页
学习
活动
专区
圈层
工具
发布
41 篇文章
1
前端 Code Review 指北
2
研效优化实践:Python单测——从入门到起飞
3
Python 单元测试详解
4
从全局视角来看接口测试
5
JMeter+Grafana+influxdb的二次改造细节(混合场景)
6
devops 下测试组织管理面临的挑战及应对
7
DevOps研发模式下CI/CD实践详解指南
8
Mysql性能优化全揭秘-庖丁解牛
9
智能监控时代-监控建设之道
10
云原生背景运维转型之 SRE 实践
11
Linux应用性能分析及故障排查
12
混沌工程:通过试错的方法来提升稳定性
13
ChaosBlade:混沌工程
14
ChaosBlade:从零开始的混沌工程(四)
15
ChaosBlade:从零开始的混沌工程(五)
16
混沌工程介绍与实践
17
混沌工程(Chaos Engineering) 到底是什么?
18
去哪儿网基于ChaosBlade的混沌工程实践
19
收藏!!BAT 程序员们常用的开发工具
20
混沌工程在工商银行的探索实践 | Q推荐
21
爱奇艺微服务标准技术架构实践
22
从 0 开始构建一个亿级请求的微服务架构
23
测试用例设计总结
24
接口测试用例设计
25
设计测试用例的方法
26
软件测试用例设计(史上最全软件测试干货)
27
安全测试Checklist
28
干货 | 提升50分,Trip.com 机票基于 PageSpeed 的前端性能优化实践
29
持续集成之代码质量管理———Sonar
30
干货 | 基于 BDD 理念的 UI 自动化测试在携程度假的应用
31
干货 | 携程酒店DevOps测试实践
32
有赞iOS精准测试实践
33
流量录制与回放技术实践
34
一、为什么要使用流量录制与回放?
35
2022 年值得尝试的 7 个 MQTT 客户端工具
36
15 年经验资深测试经理的经验分享:测试人职场晋升“潜规则”
37
设计测试策略
38
高级性能测试岗面试题!
39
开源 | AREX:携程新一代自动化回归测试工具的设计与实现
40
Web测试点(思维导图)
41
推荐一款嵌入式系统自动化测试工具!

Mysql性能优化全揭秘-庖丁解牛

「为什么写」

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

「管中窥豹」

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

图a

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


「常用的优化手段」

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

调优套路之思维导图:

下一篇
举报
领券