废话不多说,直接上内容
优化基本手段
- 说明:计算机性能的瓶颈通常在于磁盘的IO
- 手段:
- 进行架构的调整
- 进行硬件提升
- 减少磁盘IO
- 优化SQL语句
- 合理的数据库设计
数据库设计
- 存储引擎选择: 根据需要选择合适的引擎
- 数据表的设计
-
第一范式:表的所有字段都是不可再分割的,称为满足第一范式,记为1NF
用户ID 用户名 手机号 地址 优化后: 用户ID 用户名 手机号 省份 城市 详细地址
-
第二范式:表的字段之间没有部分依赖时,称为满足第二范式,记为2NF
优化前: 学号 姓名 年龄 课程号 课程名称 课程分数 优化后: 学号 姓名 年龄 课程号 课程名称 学号 课程号 课程分数
-
第三范式:表的字段之间没有传递依赖时,称为满足第三范式,记为3NF
优化前: 学号 姓名 年龄 性别 所在院校 院校地址 院校电话 优化后: 学号 姓名 年龄 性别 院校代号 院校代号 院校名称 院校地址 院校电话
总结:有时我们会根据业务的需要进行反范式设计,通过适当的冗余以减少关联查询
-
- 使用字段索引
- 根据需要添加合适的字段索引
优化SQL语句
- 慢查询
- 说明:mysql自带功能,默认是关闭,开启后会记录执行较慢的SQL语句
- 作用:定位耗时的SQL语句
- explain
- 说明:查询执行计划,可以查看语句的执行情况
示例:explain select * from student where id>3\G;
- 说明:查询执行计划,可以查看语句的执行情况
- 优化示例(思路):
- 尽量不要使用select * 查询,需要什么字段就查询什么字段
- 需要多少数据就去多少数据,可以使用limit来进行限制
- 尽量避免复杂的join或子查询
- 禁止结果集自动排序:分组后结果集会自动排序,使用order by null可以阻止自动排序
减少磁盘的IO
- 说明:简单理解就是使用缓存技术替代或者减少数据库的读写
- 原理:
请求到来,先检查缓存中是否有相关数据,有缓存数据直接返回,若没有,则从数据库中读取,然后保存到缓存中再返回数据
进行硬件提升
- 说明:当资源使用效率足够高,但依然不能满足要求,可以选择提升硬件配置
进行架构调整
- 单台服务器架构
- 数据库读写分离
- 高可用负载均衡