`
lintomny
  • 浏览: 225902 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[问题]缓存与性能的关系

阅读更多
小弟有个疑惑,就是缓存与性能的关系。很多时候我们通过设置缓存来使得性能得以提高了。可是缓存又是以内存的消耗为代价的。我之前的工作中就碰到有个系统为此居然将整个数据库都进行了缓存,1G内存的PC顿时变得慢如蜗牛,运行效率反而因此急剧下降。为此,我们曾化了大量的时间重新改善/改写了这个数据库中间件。
缓存与性能,似乎是一对矛盾统一的事物。不知道各位在设计系统的时候是怎么协调这两者的关系呢?
分享到:
评论
10 楼 andyxu 2007-03-28  

  个人感觉还是很有用处的,尤其是在与数据库交互频繁的时候,从缓存读取数据明显要比从数据库中查询要有效率的多.比如组织机构,字典等,在缓存要好一些.hashmap和hashtable是很快捷的两种容器式.
9 楼 xieke 2007-03-27  
像数据字典这种是必须要缓存的了,
不过因为缓存效果实在是好,我曾经就起了缓存整个数据库的念头,
以sql,分页参数为key,在512M内存机器上缓存查询结果,
导致硬盘灯常年闪不灭,
终于某一天,重启服务器后,硬盘坏掉了...
不过最后结果皆大欢喜:
数据没丢,硬盘重新申请了一块,
原来的那块没过保修,很快修好喽,
从此我又多了块硬盘用了哈哈
8 楼 chenqj 2007-03-27  
换成8g的
7 楼 cozone_柯中 2007-03-27  
楼上的都分析的很清楚了
6 楼 silentlakeside 2007-03-27  
缓存有2个地方需要注意:
1、值得缓存,经常用的才值得。据以前同事的说法,多数系统都是90%的时候在用10%的数据。
2、同步的代价会不会太高,有些数据变更得太频繁,那么可能就要经常与数据存储的地方进行同步,这会带来相当大的性能损失。要缓存这些数据就要考虑是否支付得起这种损失。
5 楼 giscat 2007-03-27  
缓存不能滥用
  要用在关键的地方
     
4 楼 生命火花 2007-03-27  
缓存要用的其所!
为什么要用缓存,是因为有些对象的构造是非常Expensive的,而缓存整个数据库实在让人费解.如果缓存了整个数据库,如果要进行任何的改动岂不是要同时对缓存和数据库进行改动,那缓存的意义何在?

而已内存换速度的做法一直就是提高响应的最佳实践,内存,cpu都不值钱的,1台服务器不够用2台,2台不够用3台,这种前期的投入是可以看的见的,2次开发的损失才是不可估计的
3 楼 ahuaxuan 2007-03-27  
lintomny 写道

缓存与性能,似乎是一对矛盾统一的事物。不知道各位在设计系统的时候是怎么协调这两者的关系呢?
速度和空间可以说是一个天平的两端,如何协调就得看项目需要。

1,如果项目满足性能需要就不需要再去做什么缓存了,只要温和的超出客户期望而不要走得太多。

2,象你说的数据库整个都做缓存实在是没有必要,为什么呢,因为没有考虑缓存的使用率,只有被频繁使用的数据做缓存会收到良好的效果,其实也就是要考虑缓存命中率的问题

2 楼 SunMicro 2007-03-27  
缓存其实就是以空间换速度,另外缓存也可以以内存以外的形式实现。不觉得缓存与性能有矛盾,关键是要要把握一个度,显然在将整个数据库缓存与将常用表缓存之间存在巨大的差距。
1 楼 LucasLee 2007-03-27  
这个似乎比较容易决定。
可以看得出,用空间换时间。
简单说,如果内存可以配得很多,那么可以更多的是用缓存。
事实上,现在内存的价格相比软件,或硬件的整体价格来说,是便宜的,所以可以搭配数G的内存。

因此,你的机器1G,还是小了点。当然要看具体软件的目标。

不过,可以更好一点的是,缓存可以手动或自动调整大小,这样可以有效地适应具体内存数目。

相关推荐

    Hibernate缓存,性能优化

    在IT领域,尤其是在Java开发中,Hibernate作为一款流行的开源对象关系映射(ORM)框架,其缓存机制是实现高性能数据库交互的关键技术之一。本文将深入探讨Hibernate缓存的原理、类型及其对性能优化的影响。 ### ...

    CPU性能与二级缓存容量的关系——Athlon XP 3000 带来的思考.pdf

    《CPU性能与二级缓存容量的关系——Athlon XP 3000 带来的思考》 CPU性能的提升一直是计算机技术发展的重要驱动力之一,其中二级缓存容量的大小对于处理器性能的影响尤为显著。本文将深入探讨二级缓存与CPU性能之间...

    Hibernate性能优化:一级缓存

    压缩包文件“hibernate_cache_level1”可能包含与一级缓存相关的示例代码、配置文件或文档,可以帮助开发者更深入地理解一级缓存的实现和优化。例如,其中可能有示例展示了如何配置SessionFactory的缓存区域大小,...

    hibernate一级缓存和二级缓存的区别与联系

    Hibernate 是一个流行的对象关系映射(ORM)框架,它提供了数据缓存机制以优化数据库访问性能。缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存...

    ORACLE缓存性能调整与优化研究.pdf

    Oracle 数据库作为一种关系型数据库,在实际应用中,缓存性能调整和优化变得非常重要。本文通过对 Oracle 缓存执行原理和过程的研究,总结出缓存性能调整和优化的规则。 一、引言 数据库性能调整和优化是数据库...

    Hibernate一级缓存和二级缓存

    1. **集合缓存**:用于存储关联关系的集合,如一个用户的多条订单。 2. **查询缓存**:缓存查询结果,避免相同的HQL或SQL查询再次执行。 3. **实体缓存**:存储单个持久化对象。 二级缓存的优点包括: 1. **全局...

    Hibernate缓存与spring事务详解

    **标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...

    Hibernate缓存技术研究

    然而,由于对象模型和关系型数据库模型之间的映射会产生一定的性能开销,Hibernate引入了一套缓存机制来提高数据访问的效率。 #### 二、Hibernate的缓存结构 Hibernate的缓存机制分为两层:第一级缓存(Session...

    显示所有缓存 清除所有缓存 Asp.net(C#)

    ### 显示所有缓存与清除所有缓存:ASP.NET (C#) 在Web开发中,缓存技术被广泛应用于提高应用程序的性能。通过缓存,我们可以存储经常访问的数据或计算结果,减少数据库查询次数,从而加快响应速度。本文将详细介绍...

    Hibernate4(关系映射-事务-原理-性能和二级缓存-最佳实践)

    Hibernate 4是该框架的一个版本,它涵盖了关系映射、事务处理、原理、性能优化以及二级缓存的使用与最佳实践。以下知识点详细解释了这些关键概念。 1. 关系映射:在Hibernate框架中,关系映射是指对象与数据库表...

    WPF缓存实例WPF缓存实例

    ### 八、性能监控与优化 为了确保缓存策略有效,开发者应使用性能分析工具(如Visual Studio的性能分析器)来监控应用程序,找出瓶颈并针对性地优化缓存策略。 总之,WPF提供了多种内置的缓存机制和工具,通过合理...

    hibernate开启二级缓存和查询缓存

    在 Hibernate 中,二级缓存和查询缓存是提高应用性能的重要机制。下面将详细介绍如何开启并理解这两个缓存机制。 ### 1. 一级缓存与二级缓存 #### 1.1 一级缓存 一级缓存是 Hibernate 内置的 Session 缓存,它是每...

    Android应用缓存机制

    六、缓存清理与维护 为了保持设备性能和存储空间,应用需要定期清理不再需要的缓存。Android系统提供了BroadcastReceiver监听ACTION_STORAGE_CHANGED广播,以此判断存储状态变化并进行清理。此外,开发者还应遵循...

    Android app缓存清理实现

    在Android应用开发中,缓存管理是至关重要的一个环节,它关系到应用的性能、内存使用以及用户体验。本文将深入探讨如何实现Android app的缓存清理,并基于提供的"CacheClear"压缩包文件,讲解如何封装一个获取和清理...

    c2_3_编码缓存基本限制_

    6. **性能度量**:通常,缓存性能通过缓存命中率、带宽节省率或者延迟减少等指标来评估。图像可能展示了这些指标随着不同参数变化的趋势。 7. **理论极限**:文献可能探讨了在理想情况下,编码缓存能够达到的最大...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...

    SSH使用缓存例子

    SSH(Struts2 + Spring + Hibernate)是一个经典的Java Web开发框架,它整合了Struts2的MVC设计模式、Spring的依赖注入与事务管理以及Hibernate的对象关系映射功能,为开发者提供了一套高效的开发工具集。...

    Hibernat一级缓存(源码)

    在 Hibernate 中,一级缓存是默认开启的一种缓存机制,对于提高应用程序性能有着重要作用。一级缓存位于 Session 对象中,是每个 Session 的私有缓存,它存储了从数据库中读取的对象实例。 一级缓存的工作原理: 1....

    分布式系统缓存一致性设计与应用.pdf

    在分布式系统中,缓存一致性问题是系统性能的关键。由于分布式系统由多个计算节点组成,这些节点可能分布在不同的地理位置,因此系统中的数据拷贝需要保持一致,以确保系统的正常运行。缓存技术的引入可以缓解数据...

Global site tag (gtag.js) - Google Analytics