最近开始接触大数据量查询的处理问题,用hibernate用习惯了,发现hibernate二级缓存非常重要但是用的人好像很少? hibernate默认是不用二级缓存的。
这个就更感到奇怪了,为什么默认不开启二级缓存?
以ehcache为例,缓存分为几种:class级别缓存、查询缓存(好吧,我对着2种缓存还是不太理解。网上的资料也很感觉肤浅。。。)
ehcache一般不适用条件其中有一点:经常修改的数据。
以我的理解这一点完全可以忽略掉,因为修改的次数和查询的次数比起来根本就可以忽略不计, ehcache开启查询缓存之后每次查询会去缓存中找一次如果没有就查数据库,如果数据库有更新这个缓存就是失效(失效的意思就是下次没有缓存直接去找数据库,并且再次缓存起来)
如果你有10W条数据分页查找,虽然你只查第一页,如果你不用二级缓存那么hibernate会去查找一次所有记录返回这一页记录。
用了二级缓存着根本就不会发送sql去麻烦数据库
以我的认知条件看来开启二级缓存永远比不开二级缓存有优势!! 即便是一旦数据发生更改缓存就失效,二级缓存的作用也是巨大的!!
不知道我的看法是否有误,还是说二级缓存会有事物等其他问题
还是说把精力都放到其他地方优化去了。 |