今天跟大家分享一篇刚哥写的关于数据库优化的文章,这篇文章会教会你面对问题解决的方法,真是很实用,这可是刚哥的经验之谈,感觉不错就分享给你的小伙伴吧!
原因分析
主要原因1:后台数据库中的数据过多,没做数据优化导致后台查询数据很慢
次要原因2:前端数据请求-解析-展示过程处理不当
次要原因3:网络问题所致
那么我们应该怎么做后台数据优化呢?
解决问题
这里总结了几种方案,如何提高数据库查询的速度,大家参考.
1、缓存,在持久层或持久层之上做缓存
使用ehcache缓存,这个一般用于持久层的缓存,提供持久层、业务层的快速缓存,hibenate默认使用的二级缓存就是ehcache;
2、数据库表的大字段剥离
假如一个表的字段数有100多个,学会拆分字段,保证单条记录的数据量很小;
3、恰当地使用索引
必要时建立多级索引,分析MySQL的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描;
4、表的拆分
表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表、分库)还是无业务含义的分区(如根据ID取模分区);
5、字段冗余
减少跨库查询和大表连接操作;,数据通过单个或多个JOB生成出来,减少实时查询;
6、从磁盘上做文章
数据存放的在磁盘的内、外磁道上,数据获取的效率都是不一样的;
7、放弃关系数据库的某些特性
引入NoSQL数据库;
换种思路存放数据,例如搜索中的倒排表;
干货如下:
1.字段适当添加索引,索引尽量添加数据唯一或是该字段数据量小的字段上
2.where条件中减少null判断
3.避免使用 <> 和 != 操作符
4.条件中的 or 使用union all 来代替
5.尽量少用in / not in / between and,都会导致权标扫描
6.使用exists() 代替 in()
索引添加方法:
1.索引尽量添加数据唯一或是该字段数据量小的字段上
2.过多的索引会降低insert和update的效率
转自:https://www.jianshu.com/p/fea61b518dc4