千百万级数据库优化心得(实战经验)

千百万级数据库优化心得

作者小编,最近在工作中,是主要负责报表开发,报表开发,是把大量存在数据库得数据,提炼出来,而用得是mysql数据库。Spring Cloud 框架,JPA 和mybaties 。首先,多表关联写完sql,自己捏造完数据,发现并没有多大问题,然后开始导入大批量数据,发现页面数据展现不出来了。赶紧后台看一下。这个sql执行时间也太长了把
在这里插入图片描述
大家可以看到,单表条数为200多万条,还关联了6张表,其中有一张还是大表,有1000多万数据
大家第一反应是需要加索引。
**

但是加索引得怎么加,还有索引生效时如何生效得

**
第一点:你先执行完sql之后,因为我用得时Navicat ,我会去看一下,剖析这个界面在这里插入图片描述
因为大量时间花在了sending data 中,sending data包括“收集 + 发送 数据”。
这里的关键是为什么要收集数据,原因在于:mysql使用“索引”完成查询结束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“数据行”上将需要返回的数据读取出来返回个客户端。

猜测可能是索引没有添加正确
用explain跑一下sql,看索引执行情况
这里注意一点在这里插入图片描述
这里有三列需要注意得
索引类型 type:参考https://www.cnblogs.com/luyucheng/p/6289714.html
索引key:参考https://wwwxz.blog.youkuaiyun.com/article/details/113763668
一般我们都是建组合索引,已经足够满足了,所以,我也是做组合索引这步操作,
因为我网上看得也挺多得,但是都不是完全解决我得问题
我的是这样操作的:以主表为例,不写select * 需要什么字段,就写什么字段,然后大表的字段展示什么,都上索引,但不是什么都丢到索引,因为索引的缺点在参考里面,我就步多说了,还得注意一个点,join关联得字段,需要上索引,还要与对面表的结构要一样,就是说你这边的建表如,参考https://blog.youkuaiyun.com/qdboi/article/details/109291069
我这里就是踩过坑,俩表都建了索引,join之后都没走索引,为什么,建表的时候,排序规则不一样。太尴尬了。。。一个是UTF-8bin 一个是ci
在这里插入图片描述
在这里插入图片描述
把其中一个修改一下,即可。如果不了解bin跟ci的,去百度一下,这里提前说一下,是对大小写敏感还是不敏感。然后修改即可,还要就是写的建了索引之后,sql执行没走索引,多半是你写的sql有问题。sql想要走索引参考这个https://blog.youkuaiyun.com/qq_32331073/article/details/79041232

如上所述,我这里是自己的心得。祝大家少bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值