君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。DCFramework,基于.NET的动态分布式计算框架。sky.zhuwei@163.com
posted on 2008-06-27 20:00 zhuweisky 阅读(3671) 评论(17) 编辑 收藏 网摘 所属分类: 数据库
经常访问的且不是经常改动的缓存才合适,,不是什么都缓存吧..缓存也占用系统资源的. 回复 引用 查看
能不能考虑缓存同步写?对于数据的变更,采用对缓存对象进行修改,随后将缓存对象写入数据库中进行更新的方式,这样不需要缓存过期,同时也保证了同步性 回复 引用 查看
@Gray Zhang 缓存同步写不是个好的解决办法,首先不能用于多台应用服务器的情况,其次容易造成缓存和数据库不同步的情况。 回复 引用 查看
感谢你的经验分享,我正要做一个大规模数据处理相关的项目。 回复 引用 查看
@一味我理解不能用于多台应用服务器,但这可以通过memcache之类的单一服务器集中式缓存管理方案解决但是对于缓存和数据库不同步的情况,我无法理解你是什么意思,我的方案是,当比如要UpdateUser时,先去缓存读取缓存着的那个User对象,进行更新,随后再拿这个对象的值到数据库中进行同步更新,因此此时缓存对象和数据库应当是相同的内容,是同步的 回复 引用 查看
@zhuweisky 我觉得缓存是提高性能的比较好的方式;但缓存的更新应该是需要非常高级的模式;希望博主有此高见,学习 回复 引用 查看
用内存数据库吧 回复 引用 查看
我把缓存分为这么几类: 1,数据库中定义的常量,程序代码中也经常使用,使用只读或者常量定义这些数据,例如博客的类型:public const int BlogType_PowerUser = 1;。 2,经常使用的数据,例如某个博客的个人基本信息,他的博客网页每一个页面都要显示。 3,大计算量的数据,这类数据一般实时性不强,例如统计每个页面来自那些地区的访问者数量(按照地区和兴趣)。这些数据需要二次缓存,先定时统计,把结果保存到缓 存文件或者缓存数据库,然后在使用的时候从缓存文件或者缓存数据库读入,放入内存缓存。 4,历史统计数据。这类数据可以看作是大计算量的数据,但他还有一个特点,历史数据,恒定不变。这也有两种方法,一是做一个统计表,定时把统计结果写入。我是直接 把统计结果写入缓存数据库,没有那个冗余的统计表。这样其实有个灵活性,统计方式变化了,不需要去更改那个统计表的设计。 是需要划分内存缓存和数据库(或文件)缓存的。 内存缓存那些经常使用的,小的,更新比较频繁的,执行查询效率比较高的 数据。一般我喜欢使用定时清空的策略,不容易出错。 数据库缓存那些笨重(数据量大)的,计算量大(执行SQL查询效率低)的,实时性要求不高的,历史性的 数据。 对于blog类网站来说,我觉得只需要缓存文字。图片声音这类的,直接放到硬盘。 这类网站的缓存,我甚至都觉得可以把所有请求的文字内容使用定期清除的方式缓存起来。想想1G的文字是什么概念,现在内存这么便宜。 但是需要注意的是,缓存的内容要比数据库中的数据多,其实这个很简单,缓存的内容是基于数据库“计算”得到的,是“衍生”的。 使用一个单独的缓存服务器是必要的,内存大是他的特点。多个WebServer可以连接到这个缓存服务器。这样对于整个系统的扩展和性能都是很有好处的。 使用缓存会导致系统的复杂,稍微不注意会出问题。所有我觉得每个团队使用缓存的时候要有自己的一套简单高效的使用缓存的开发模式,否则那些错误会搞死人的。 如果使用单独的缓存服务器,还会增加一个WebServer和缓存服务器之间的通讯管理。虽然这种通讯的开发方式定下来了就是千篇一律的写代码了,但实际上还是增加了开发的复杂和工作量。 回复 引用
补充一点,使用内存数据库并不能完全解决缓存带来的好处。缓存的数据一般和数据库中的“原生”数据是不一样的,有很多是需要计算的。缓存不仅仅只是提高读取数据的速度,更重要的获取是节约CPU,以空间换取执行速度。 回复 引用
数据库本身好像就有一个大大的缓存呀,SQL Server跑起来之后是很此内存的,300多M算是少的,5、6百兆是很正常的,这样的话,我们在加一个自己的缓存,是不是更咱用资源呀? 回复 引用 查看
SQL Server并发数量有限,什么都扔到数据库,撑死了并发几百个请求/s 回复 引用
Mark 回复 引用 查看
说起来easy,做起来光是数据分为四类:恒定不变的数据,只发生增量的数据,偶尔改变的数据,经常改变的数据估计都不是特容易。 即使分完了,如果有朝一日,状况改变了,如何相应变化也是难题 回复 引用 查看
该生成静态页的还是生成Html最快 回复 引用
如果是一个几十万行的数据甚至更大,将之放在缓存中岂不是很占资源,最近正是为此苦脑,不知如何取舍好 回复 引用 查看
你做过大型系统吗?电信移动的系统是你这样缓存的 回复 引用
路过 回复 引用 查看
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]
Powered by: 博客园 Copyright © zhuweisky