`
pesome
  • 浏览: 68032 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oscache使用和研究

阅读更多

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

测试方案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方案的性能优势更加明显。

<!----><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>

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

<o:p> </o:p>

 

分享到:
评论

相关推荐

    oscache-2.2jar包

    4. **docs**:文档目录,一般包含API文档、用户手册或者开发者指南,帮助开发者理解osCache的使用方法、API接口和最佳实践。 5. **src**:源代码目录,如果提供的话,可以查看osCache的内部实现,这对于学习和调试...

    oscache-2.1.1-full.zip_full_oscache_oscache 2_oscache2

    2. **src**: 源代码目录,提供了osCache的全部源代码,便于开发者深入研究和定制。 3. **www.pudn.com.txt**: 可能是下载来源的注释或说明文件。 4. **lib**: 库文件夹,包含osCache运行所依赖的JAR文件和其他第三...

    用OSCache进行缓存对象

    1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究

    oscache-2.4.1-full.rar

    网上对于OSCache缓存Web页面很多说明和例子,但对于缓存对象方面说得不多,我就把自已写得一些东西放出来,让大家看一看是怎样缓存对象的! 我基于GeneralCacheAdministrator类来写的BaseCache类 view plaincopy...

    oscache工程示例

    在提供的工程示例中,我们可以看到如何在实际项目中集成和使用osCache。它可能包含了一个简单的Java应用或Web项目,演示了如何配置osCache,以及如何在代码中使用缓存功能。通过运行这个示例,开发者可以直观地理解...

    Oscache简单实例

    **Oscache简介** Oscache是一款开源的Java缓存框架,它提供了高效、轻量级的内存缓存解决方案,适用于提升应用性能,减少数据库访问压力。...同时,研究其源码也有助于提升对缓存机制和并发编程的理解。

    java缓存_源代码

    文档部分可能包含了更详细的使用说明、配置示例、性能测试结果,或者对于如何在实际项目中部署和使用这些缓存技术的指导。 总之,通过深入学习这些源代码和文档,你可以增强对Java缓存机制的理解,学习如何有效地...

    ssm框架整合源码,添加跨服务器上传,回显功能,添加缓存。包含数据库一个表的sql文件。

    SSM框架,全称为Spring、SpringMVC和MyBatis的组合,是Java Web开发中常用的三大组件。这个压缩包提供了SSM框架整合的源码示例...通过深入研究和修改这些源码,你可以加深对Java Web开发的理解,并提升自己的编程技能。

    Hibernte Trainning

    3. **hbtadv_t051_oscache_config**:可能涉及到Oscache配置,Oscache是Hibernate早期常用的二级缓存解决方案,文件可能涵盖如何配置和使用Oscache来提高数据访问效率。 4. **hbtadv_t031_batch_oper**:可能涉及...

    论文研究-基于分散校区网上限时选课系统的研究与实现.pdf

    介绍的解决方案改进了选课策略、采用了Apache整合Tomcat、连接池、Oscache内存缓存技术和MVC设计模式,完全适应了分散校区限时选课的需要。2004年6月和11月的选课情况表明该方案完全适应了分散校区限时选课的要求,...

    jar 源码(spring+ibatis+..)

    研究OSCache的实现,我们可以学习到如何设计和优化缓存系统。对于JavaEE的理解,通过这些源码可以更直观地看到各个组件如何协同工作,提升我们的企业级开发能力。 总之,这个压缩包是一个宝贵的资源,对于想要深入...

    Tomcat集群案例

    工作时间也不久了、所以不能只局限于完成现有功能、所以研究了很多关于网站优化的东西、spring+Quartz定时任务、OsCache缓存框架、以及页面静态化等等 spring+Quartz定时任务:主要是白天的一些不是需要很实时性的...

    毕业设计进展汇报ppt

    本文档是关于服务器缓存框架的毕业设计进展汇报PPT,主要介绍了缓存框架的研究、设计、实现和测试结果。下面是从该文件中提取的知识点: 1. 服务器缓存框架的设计目的:根据对现有缓存框架的研究,能够对缓存相关...

    开源软件架构 软件架构

    开源软件架构的研究对于提高软件开发的效率和质量具有重要作用。通过学习和运用诸如Spring、Hibernate等框架,开发者可以更高效地构建稳定可靠的应用程序。此外,理解框架的设计原理和技术细节也有助于提升自身的...

    iBATIS实战

    书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的大部分知识点,可以作为iBATIS学习和Web开发的经典案例,非常值得深入研究。 本书既可为广大的开发人员(不仅仅是Web应用程序开发人员)...

    中小企业web邮件系统的设计与实现.doc

    系统还集成了诸如socket编程、多线程、线程池技术以及oscache缓存技术,以优化邮件的发送、接收和管理效率,同时使用MySQL数据库存储用户信息、邮件数据和系统配置参数。 邮件系统的核心功能包括用户注册、身份验证...

    hibernate3.2 源码

    常见的第二级缓存提供商有Ehcache和 OSCache。 8. **事件监听器**:Hibernate 3.2允许开发者注册事件监听器,对对象的生命周期事件(如加载、保存、更新、删除)进行拦截和处理。 9. **集合映射**:在实体类中,...

    基于分散校区网上限时选课系统的研究与实现 (2005年)

    介绍的解决方案改进了选课策 略、采用了Apache 整合Tomcat、连接池、Oscache 内存缓存技术和MVC 设计模式,完全适应了分散校区限时选课 的需要。2004 年6 月和11 月的选课情况表明该方案完全适应了分散校区限时选课...

Global site tag (gtag.js) - Google Analytics