oscache使用和研究

Oscache的使用非常方便,特别是jsp cache用的非常广泛。Oscache的文档中也对jsp cache tag的配置有详细说明,但对如普通pojo对象的cache讲的较少,也许是比较简单的缘故。今天做了个测试方案,写测试案例进行了比较和研究。

测试方案1在本机上直接测试,循环从metabase库中的process_info表取得数据(表中只有2条记录)比较使用cache和不使用cache的性能(为平均值)。

代码如下:

 1public class DatabaseCacheTest extends TestCase {
 2    GeneralCacheAdministrator admin = null;
 3
 4    protected ApplicationContext ctx;
 5
 6    protected ProcessInfoDAO processInfoDAO;
 7
 8    protected void setUp() throws Exception {
 9        String[] paths = "/spring/dataAccessContext.xml",
10                "/spring/spring-biz-db.xml" }
;
11        ctx = new ClassPathXmlApplicationContext(paths);
12
13        processInfoDAO = (ProcessInfoDAO) ctx.getBean("processInfoDAO");
14        admin = new GeneralCacheAdministrator();
15    }

16
17    protected void tearDown() throws Exception {
18        admin.destroy();
19    }

20
21    public void testGetFromCache() {
22        long t1 = System.currentTimeMillis();
23
24        for (int i = 0; i < 10000; i++{
25            ProcessInfoDO pdo = getProcess("65");
26            assertEquals(pdo.getProcessName(), "TestProcess");
27        }

28        System.out.println(System.currentTimeMillis() - t1);
29
30    }

31
32    private ProcessInfoDO getProcessByCache(String id) {
33        ProcessInfoDO pdo;
34        try {
35            pdo = (ProcessInfoDO) admin.getFromCache("65");
36            return pdo;
37        }
 catch (NeedsRefreshException e) {
38            pdo = processInfoDAO.selectById(65);
39            admin.putInCache("65", pdo);
40            return pdo;
41        }

42    }

43
44    private ProcessInfoDO getProcess(String id) {
45        return processInfoDAO.selectById(65);
46    }

47}

48


Ø         循环100次,使用cache用时578ms,直接从数据库取用时2015ms

Ø         循环1000次,使用cache用时719ms,直接从数据库取用时13984ms

Ø         循环10000次,使用cache用时2016ms,直接从数据库取用时131188ms

使用图例比较,系列1表示循环的次数,系列2为使用cache的用时,系列3为不使用cache的用时。可以看出,随着循环次数的增多,使用cache方案的性能优势更加明显。

结论:使用cache,随着循环的增多,用时增长较缓慢,而不使用cache基本是等比例增长。在循环次数较多时,使用cache cpu利用率显著提高,能达到90%以上。不使用cache则只能上到50%左右,更多是在等待数据库返回结果。所以使用cache能大大减轻数据库的压力,提高应用服务器的利用率,符合我们对应用服务器进行水平扩展的要求。

 

 

posted on 2006-02-16 13:39 pesome 阅读(4003) 评论(1)  编辑  收藏 所属分类: 开源软件

评论

# re: oscache使用和研究 2006-02-19 09:23 Jonney

在OSCache中,使用了硬盘缓存的话似乎不能删除缓存文件,真是个让人头痛的地方……  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年2月>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

导航

统计

公告

主要记录作者在学习java中的每一步足迹。除非特别说明,所有文章均为本blog作者原创,如需转载请注明出处和原作者,如用于商业目的,需跟作者本人联系。
欢迎大家访问:

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

java技术

人间百态

朋友们的blog

搜索

最新评论

阅读排行榜

评论排行榜