Atitit 存储与数据库性能调优流程
目录
2. 数据库优化方案很多,主要分为两大类:软件层面、硬件层面。
2.1. 软件层面包括:SQL 调优、表结构优化、读写分离、数据库集群、分库分表等;
在高并发场景下,大量请求都需要操作数据库,导致连接数不够了,请求处于阻塞状态。
如果数据库中存在一张上亿数据量的表,一条 SQL 没有命中索引会全表扫描,这个查询耗时会非常久。
-
- 存储io出现问题
业务量剧增,单库数据量越来越大,给存储造成巨大压力。
从机器的角度看,性能瓶颈无非就是CPU、内存、磁盘、网络这些,要解决性能瓶颈最简单粗暴的办法就是提升机器性能,但是通过这种方法成本和收益投入比往往又太高了,不划算,所以重点还是要从软件角度入手。
硬件层面主要是增加机器性能。
-
- SQL 调优 索引调优 hint强制索引
SQL 调优往往是解决数据库问题的第一步,往往投入少部分精力就能获得较大的收益。
SQL 调优主要目的是尽可能的让那些慢 SQL 变快,手段其实也很简单就是让 SQL 执行尽量命中索引。
开启慢 SQL 记录
当单台数据库实例扛不住时,我们可以增加实例组成集群对外服务。
当发现读请求明显多于写请求时,我们可以让主实例负责写,从实例对外提供读的能力;
如果读实例压力依然很大,可以在数据库前面加入缓存如 redis,让请求优先从缓存取数据减少数据库访问。
缓存分担了部分压力后,数据库依然是瓶颈,这个时候就可以考虑分库分表的方案了,后面会详细介绍。
也可改为定时索引
我们为什么要分库分表?|sql|mysql|单库_网易订阅