Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11699074
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-07-14 12:03:23

这个问题在这个板块有专门的帖子讨论,我觉得cache的两个主要作用是:
(1)数据暂时放在缓存中,下次再访问的时候不用去读磁盘这种机械设备,节约时间。
(2)可以把多个读写优化组合,在实际向机械设备中写时可以提升写入速度。

关于cache提升性能我觉得不能一概而论。特别是不能通过一般的性能测试软件如iometer这类来得出结论。

有几点是很通用的说法:
cache对随机读写的性能有较大的提升,对顺序读写性能提升不大。
在数据库等实际应用中,启用cache可以提高很多的性能。

cache性能的提升是建立在cache命中率,例如某个时间段统计发现cache的命中率有80%,那么几乎可以说性能提升了5倍。所以对于数据库这种实际应用,一般某一个时间段可能访问的数据是相对集中的。

而对于用iometer这种测试工具,测试随机读写的时候,它真的很随机,随机到你的cache命中率可能真的只有(cache容量/阵列总大小),一般这个比例都不会超过1/100,所以一般用iometer测试随机读写,性能几乎没什么提升,反正我测试的设备是这样。

相反,在用iometer这类工具测试顺序读写工具时,cache的优化写动作可能起到作用,所以你用iometer测试阵列的顺序读写,可能会发现打开cache以后性能有所提升。

但是千万不要因为这样的测试结果就认为cache对顺序读写有效果,对随机读写没有效果。

实际数据库使用中,启用cache的效果是明显的。

所以我觉得讨论cache能不能起作用之前,最好先弄清楚cache命中率问题,命中率决定一切。
阅读(650) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~