数据库优化

数据库优化分为四部分:
1.数据库优化
2.SQL语句进行优化
3.业务逻辑进行优化
4.冷备份和热备份

1.数据库方面:
分库:
分库就是将一些数据量大的按照不同的库来存。将经常不改变的放到redis中,日志文件放到MongoDB数据库中
分区:
在一张表上进行的分区,有一个弊端就是表上需要建立分区索引,
这个时候当查询的时候直接通过表的索引会造成全表锁,这样有点得不偿失。
分表:
水平分表:
和分库原理差距不大,是将大数据量的内容放到多个表中。
纵向分表:
就是将经常查询用的数据放到一张表中,不经常查用的放到另一张表中。

2.SQL语句优化
不使用*
从出发角度上考虑:
以什么角度查,比如两个表联查,这个表10条,那个1000条,
一定要先从小的范围查大的范围,因为从小的查一共就10条,
从大的查1000条,效率肯定更低。
注意笛卡尔积,如果忘写条件,会查出大量数据,给数据库增压
一些关键字要注意,比方说in指包含,可以使用exist代替,比如后边有3条数据(id 5 6 7),可以用between 5 and 7,再有or ,一般千万不要使用,他会全表查询 一般用union 代替,但他有去重效果,使用union all,看业务场景
in是数据库查询到需要的id时,不会停止而是接着向下查询,查询数据越多查询的整表的次数越多
exist是查询到需要的数据时会停止,不会做多余的事情
union:
select * from 表名 where id=1 or id=2;
select * from 表名 where id=1 union select * from 表名 where id=2

3.业务逻辑进行优化
比方视图、函数、存储过程,比方说10张表的内容在一个页面展示,要是关联查询效率就会很低,这时候我们建立视图,就不用做关联了,直接查到想要的数据。
函数,if 判断什么的放到数据库中,但是不建议使用,给数据库增大压力,我们可以在java中写
存储过程的话,里面可以放视图、函数等等复杂语句,但调用简单,方便java代码调用,可以将存储过程提供给第三方厂商,实现接口对接

4.冷备份和热备份
冷备份,数据库和项目在不运行时进行备份,出现错误进行数据恢复
热备份,每次增加或修改或删除的时候都进行热备份,但不建议使用,因为出现错误不能回退

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值