论坛首页 Java企业应用论坛

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

浏览 6791 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-27  
小弟有个疑惑,就是缓存与性能的关系。很多时候我们通过设置缓存来使得性能得以提高了。可是缓存又是以内存的消耗为代价的。我之前的工作中就碰到有个系统为此居然将整个数据库都进行了缓存,1G内存的PC顿时变得慢如蜗牛,运行效率反而因此急剧下降。为此,我们曾化了大量的时间重新改善/改写了这个数据库中间件。
缓存与性能,似乎是一对矛盾统一的事物。不知道各位在设计系统的时候是怎么协调这两者的关系呢?
   发表时间:2007-03-27  
这个似乎比较容易决定。
可以看得出,用空间换时间。
简单说,如果内存可以配得很多,那么可以更多的是用缓存。
事实上,现在内存的价格相比软件,或硬件的整体价格来说,是便宜的,所以可以搭配数G的内存。

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

不过,可以更好一点的是,缓存可以手动或自动调整大小,这样可以有效地适应具体内存数目。
0 请登录后投票
   发表时间:2007-03-27  
缓存其实就是以空间换速度,另外缓存也可以以内存以外的形式实现。不觉得缓存与性能有矛盾,关键是要要把握一个度,显然在将整个数据库缓存与将常用表缓存之间存在巨大的差距。
0 请登录后投票
   发表时间:2007-03-27  
lintomny 写道

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

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

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

0 请登录后投票
   发表时间:2007-03-27  
缓存要用的其所!
为什么要用缓存,是因为有些对象的构造是非常Expensive的,而缓存整个数据库实在让人费解.如果缓存了整个数据库,如果要进行任何的改动岂不是要同时对缓存和数据库进行改动,那缓存的意义何在?

而已内存换速度的做法一直就是提高响应的最佳实践,内存,cpu都不值钱的,1台服务器不够用2台,2台不够用3台,这种前期的投入是可以看的见的,2次开发的损失才是不可估计的
0 请登录后投票
   发表时间:2007-03-27  
缓存不能滥用
  要用在关键的地方
     
0 请登录后投票
   发表时间:2007-03-27  
缓存有2个地方需要注意:
1、值得缓存,经常用的才值得。据以前同事的说法,多数系统都是90%的时候在用10%的数据。
2、同步的代价会不会太高,有些数据变更得太频繁,那么可能就要经常与数据存储的地方进行同步,这会带来相当大的性能损失。要缓存这些数据就要考虑是否支付得起这种损失。
0 请登录后投票
   发表时间:2007-03-27  
楼上的都分析的很清楚了
0 请登录后投票
   发表时间:2007-03-27  
换成8g的
0 请登录后投票
   发表时间:2007-03-27  
像数据字典这种是必须要缓存的了,
不过因为缓存效果实在是好,我曾经就起了缓存整个数据库的念头,
以sql,分页参数为key,在512M内存机器上缓存查询结果,
导致硬盘灯常年闪不灭,
终于某一天,重启服务器后,硬盘坏掉了...
不过最后结果皆大欢喜:
数据没丢,硬盘重新申请了一块,
原来的那块没过保修,很快修好喽,
从此我又多了块硬盘用了哈哈
0 请登录后投票
论坛首页 Java企业应用版

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