您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

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

时间:05-14来源:作者:点击数:

作者小编,最近在工作中,是主要负责报表开发,报表开发,是把大量存在数据库得数据,提炼出来,而用得是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.cdsy.xyz/computer/soft/database/mysql/230514/cd43584.html

索引key:参考https://www.cdsy.xyz/computer/soft/database/mysql/230514/cd43585.html

一般我们都是建组合索引,已经足够满足了,所以,我也是做组合索引这步操作,

因为我网上看得也挺多得,但是都不是完全解决我得问题

我的是这样操作的:以主表为例,不写select * 需要什么字段,就写什么字段,然后大表的字段展示什么,都上索引,但不是什么都丢到索引,因为索引的缺点在参考里面,我就步多说了,还得注意一个点,join关联得字段,需要上索引,还要与对面表的结构要一样,就是说你这边的建表如,参考https://www.cdsy.xyz/computer/soft/database/mysql/230514/cd43586.html

我这里就是踩过坑,俩表都建了索引,join之后都没走索引,为什么,建表的时候,排序规则不一样。太尴尬了。。。一个是UTF-8bin 一个是ci

在这里插入图片描述
在这里插入图片描述

把其中一个修改一下,即可。如果不了解bin跟ci的,去百度一下,这里提前说一下,是对大小写敏感还是不敏感。然后修改即可,还要就是写的建了索引之后,sql执行没走索引,多半是你写的sql有问题。sql想要走索引参考这个https://www.cdsy.xyz/computer/soft/database/mysql/230513/cd43578.html

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门