数据库优化方案总结
常用优化手段:
- 定位:查找定位慢查询
- 创建索引:创建合适的索引,我们就可以先在索引中查询,查询到以后直接找对应的记录
- 分库分表:当一张表的数据比较多或者一张表的某些字段的值比较多并且很少使用时,采用水平和垂直分表来优化
- 读写分离:当一台服务器不能满足需求时,采用读写分离的方式进行进群
- 缓存:使用redis来进行缓存
查找慢查询并定位慢查询
在项目测试前,在启动MySQL数据库时开启慢查询,并且把执行慢的语句写到日志中,在运行一定的时间后,通过查看日志找到慢查询的语句
创建合适的索引
普通索引:允许重复的值出现
唯一索引:除了不能有重复的记录外,其他和普通索引一样
主键索引:是随着设定主键而创建的,也就是把某个列设为主键的时候,数据库就会给该列创建索引
具体技巧:
- 对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引
alter table dept add index my_ind(dname,loc) //dname左边的列,loc是右边的列
select * from dept where dname = 'aaa' //会使用到索引
select * from dept where loc = 'aaa' //不会使用到索引
- 对于使用like的查询,查询如果是
%aaa
不会使用索引,而aaa%
会使用索引
select * from dept where dname like = '%aaa' //不会使用到索引
select * from dept where dname like = 'aaa%' //会使用到索引
所以在like查询时,‘关键字’的最前面不能使用%
或_
这样的字符
- 如果条件中有or,有条件没有使用索引,即使其中有条件带有索引也不会使用,换言之,就是要求使用的所有字段,都必须单独使用时能使用索引
数据库优化之分表
分表分为水平(按行)分表和垂直(按列)分表
(1)根据经验:MySQL表数据一般达到百万级别,查询效率会很低,很容易造成表锁,需按行数据进行分表
(2)如果某个字段值非常多,而且只有在很少情况下会查询,这个时候就可以把字段多的单独放到一张表,通过外键关联起来,即垂直分表
水平分表策略:
- 按时间分表
- 按区间范围分表
- hash分表
读写分离
当一台服务器不能满足需求时,采用读写分离的方式进行集群
主从同步:所有的写都往主上操作,而从只进行同步
读写分离:使用负载均衡,写往主,读往从
如何插入百万条数据
使用批量操作,批量操作不能使用代码操作就不使用!尽量使用存储过程来实现
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/12/summary-of-database-optimization-plan/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论