最近开始接触大数据量查询的处理问题,用hibernate用习惯了,发现hibernate二级缓存非常重要但是用的人好像很少?

hibernate默认是不用二级缓存的。

 

这个就更感到奇怪了,为什么默认不开启二级缓存?

 

以ehcache为例,缓存分为几种:class级别缓存、查询缓存(好吧,我对着2种缓存还是不太理解。网上的资料也很感觉肤浅。。。)

 

 

ehcache一般不适用条件其中有一点:经常修改的数据。

 

以我的理解这一点完全可以忽略掉,因为修改的次数和查询的次数比起来根本就可以忽略不计,

ehcache开启查询缓存之后每次查询会去缓存中找一次如果没有就查数据库,如果数据库有更新这个缓存就是失效(失效的意思就是下次没有缓存直接去找数据库,并且再次缓存起来)

 

 

 

 

 

如果你有10W条数据分页查找,虽然你只查第一页,如果你不用二级缓存那么hibernate会去查找一次所有记录返回这一页记录。

 

 

 

 

 

用了二级缓存着根本就不会发送sql去麻烦数据库

 

 

 

 

以我的认知条件看来开启二级缓存永远比不开二级缓存有优势!!

即便是一旦数据发生更改缓存就失效,二级缓存的作用也是巨大的!!

 

不知道我的看法是否有误,还是说二级缓存会有事物等其他问题

 

还是说把精力都放到其他地方优化去了。