浅谈数据库优化经验积累(一)

最近因为客户的项目数据量过多,导致数据库经常出现CPU使用率100%、服务器卡死等问题。搞得我焦头乱额。

发现有几个地方出现了严重的问题。

1、分表设计

  当时并未考虑到用户的数据居然会有一日几十万条。只做了一张表来存储。并未做分表设计。导致数据量过多。查询极慢。

  解决方案:对数据量大的表进行分表处理。以月为单位。这样下来。一张表。大概在数千万条数据。日志表。没有其它操作。所以千万条数据还是没问题。

2、主键设计

  项目开始的时候。因为数据库是由另外一个同事(中途因为不合群被近离开公司)负责,沟通不到位,很多表都未设置主键。导致一些日志表查询缓慢。

  解决方案:当时负责数据表审核的同事已离职,我一个一个表加上索引。

3、表结构设计

  都是坑。2个人设计的数据库表,沟通又不在一频道,便出现了你干你的。我干我的。导致后面问题一堆。

  解决方案:嘴里边BB。连修改表字段。把那些2人重复的字段整合。

4、查询语句

  当时加入项目组的时候。是以外派人员身份过来的(也就是临时工,3个月完后就离开);所以当时查询语法也是按那位已离开的同事的习惯来写的。然后就出现了一大堆的多表查询。有些地方竟然还出现了5张表的连表查询。当数据量达到上10W的时候。直接挂了。好几次都是因为这样的问题被客户找。

  解决方案:把所有的数据量多的表有连表查询的地方都拆分多次查询了。(大部分是在客户线上的项目出现了问题导致服务器挂掉,才排查出来 (>﹏<))!!

 

总结:在项目开始时。就要把数据库表结构、哪些表数据量会很多(多的表要提前做好分表处理)、合理的设置表索引;不然项目运营后出现这些问题。虽然可以处理,但是对于已经存在的少量数据进行处理也是个头疼的事情; 上面这些,仅是我个人在项目中遇到问题并且解决问题的一些积累。写得没有技术含量还请包涵。语文只能勉强考60分的我已经表示很吃力了。做了7年的IT。这是第一次写这类文章,以后慢慢积累慢慢进步!!有问题可以留言。

上面说到的只是一小部分,还有后续。

浅谈数据库优化经验积累(一)

上一篇:idea快捷键替换字符和更改夜间模式,复习Git流程,项目运行正常但是无法跳转页面,类名报红,自动注入失败,Oracle自带的ID(20210510)


下一篇:利用Docker快速部署Mysql