论坛首页 综合技术论坛

iBATIS的cache

浏览 2013 次
锁定老帖子 主题:iBATIS的cache
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-04   最后修改:2011-06-18
<settings cacheModelsEnabled="true" />是一定要配置的,不然cache不起作用。

readonly的配置

当readonly为true时,serialize是没有意义的,每个返回的对象就是cache中的对象,所以如果改动了该对象,则cache和数据库就不一致了。当readonly为true是不改动返回值要靠我们人工了。

当readonly为false时,serialize为false时,cache的实体是不需要实现Serializable的,但是很奇怪的是,其返回的实体不是原本cache中的实体,改动返回值不会影响以后的返回值。serialize为true时,cache的实体是需要实现Serializable的,其返回值应该是cache中的一个copy,所以可以随便修改而不影响cache。

看一个性能测试,对一行数据读取100000次。

条件                                                               时间(毫秒)

没有cache                                                   53164
readonly=true,                                            1406
readonly=false,serialize=false,               54538
readonly=false,serialize=true,                 4077

结论:
1 可以看出,加入cache后性能提升还是很可观的。
2 readonly=false,serialize=true的cache比readonly=true的慢一点,但是不是很多,想比没有cache的情况还是性能提升很大。
3 奇怪的readonly=false,serialize=false得到了解答,从测试结果看,应该是每一次都是到db直接读的,这个和没有配置cache差不多,又因为一些关于cache的code,应该比没有cache还慢一点点。
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics