微软企业级缓存

寂空冷 2015-09-28 09:14:01
各位大神,用微软的企业级缓存HttpRuntime.Cache,千万级数据,表大概在50个的样子,表字段在30个以内,服务器内存大概要多大?
...全文
191 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
寂空冷 2015-09-28
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
你只说了千万级,但你没说你条记录大概占用多少空间,你本机可以模拟一定量,然后按曲线比例预估,另外httpruntime.cache只是约定了一个缓存方案,然后微软默认提供了memorycache,你也可以实现分布式缓存,具体怎么实现在博客园有相应文章,如果要缓存的数据要以g为单位的话,memorycache肯定是会出篓子的,别忘了你的内存不是仅仅只给缓存用的
我刚进这家公司,目前别人已设计好表格,没有真实数据,所以我也不知道每条记录大概占用多少空间,我去找找博客园的文章看看,感谢! PS:这个功能主要是为了对比修改前后修改后的字段值比对,有差异的记录日志,我暂时只想到了,更新前去获取一次最新数据,但是这样每次都要获取,感觉不太好,有木有更好的方案?
  • 打赏
  • 举报
回复
你只说了千万级,但你没说你条记录大概占用多少空间,你本机可以模拟一定量,然后按曲线比例预估,另外httpruntime.cache只是约定了一个缓存方案,然后微软默认提供了memorycache,你也可以实现分布式缓存,具体怎么实现在博客园有相应文章,如果要缓存的数据要以g为单位的话,memorycache肯定是会出篓子的,别忘了你的内存不是仅仅只给缓存用的
寂空冷 2015-09-28
  • 打赏
  • 举报
回复
引用 1 楼 moonwrite 的回复:
千万级数据 自己加载一次看看,不就知道了~
没服务器给我测试...有的话自己搞了,我自己机器卡...
moonwrite 2015-09-28
  • 打赏
  • 举报
回复
千万级数据 自己加载一次看看,不就知道了~
  • 打赏
  • 举报
回复
不够人性 --> 不够任性 一个原本占用内存40M的网站服务系统,你高效率地使用到缓存,将主要功能的服务速度平均提高20倍,可能这个服务说不定也不过占用了45M内存而已。而不是你认为的需要有多大的内存才能撑起来的。 这是因为正确地用了缓存设计,而不是滥用内存。
  • 打赏
  • 举报
回复
引用 2 楼 lihui398 的回复:
[quote=引用 1 楼 moonwrite 的回复:] 千万级数据 自己加载一次看看,不就知道了~
没服务器给我测试...有的话自己搞了,我自己机器卡...[/quote] 几百M内存,照样缓存,得到缓存设计的足够好处。缓存系统会自动丢掉数据的。而你其实是要弄一个内存数据库,还不是缓存概念。所以才会嫌自己的机器不够人性,不够挥霍内存。根本原因,这不是搞缓存呢!
寂空冷 2015-09-28
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
你的数据库只有一个进程用,而绝不会另外被改变数据? 把整个表放入缓存,那其实就是滥用缓存的。缓存利用率这么低,那是多么奢侈的事情啊。 缓存中应该放的是比较前端的东西,例如根据某个sql语句的查询结果,那么只要这个sql语句涉及的数据库表没有改变,这个sql语句的查询就不会改变,因此就可以放到缓存里。 并不是放整个数据表。 例如csdn的首页,假设是这样的 sql 语句: select top 40 ....n个字段里列表..... from [帖子] where [1级栏目]='.NET‘ order by [最后更新时间] desc 你可以用它或者它的md5作为缓存的key,用查询结果(序列化为实体对象集合)作为value,保存到缓存集合中。这样就能对于重复几千次的查询,直接返回“查询结果”而无须查询数据库了。 这里并不是把什么 [帖子] 表里的几千万条帖子放到缓存里,而是仅仅放40条而已。 而且不同的缓存单元,完全可能有从相同的表中查询的记录。因为缓存技术根本不纠结数据库表,而是真正从前端查询出发来缓存的。 那种纠结于数据库表、把数据库表放到缓存中的做法,其实不叫做缓存。叫做“内存数据库”。把它叫做“缓存”的人往往都是图省事,任性地滥用内存,糊弄老板和投资人的。那就是在背后的关系数据库之前再弄一层“内存数据库”额外机制,而不是缓存概念。
有道理,我也想过用内存数据库Redis,不过这个网站的服务器貌似只给一台。
  • 打赏
  • 举报
回复
另外,对于进程中的缓存机制,最终要、最有内涵的是“缓存依赖项”的设置技术。当一个表的数据被改变了、或者一个文件改变了,或者一个缓存单元的数据被改变了,那么就应该像“雪崩一样”地引起所有依赖于它的其它n个缓存单元自动清空。而不是仅仅会去设置 Duration。 只知道设置定时时间长度的人,那是不太懂缓存控制的,十有八九还是在用缓存当内存数据库去玩儿。 设计缓存策略,一定是以控制缓存依赖项为提纲、为技术关键门道。看这个就能看出缓存技术应用的高低。而看其它粗浅的概念则是只看“热闹”不看“门道”的。 即使是服务器集群,当一个业务服务器上更新了某个人的信息时,它也可能要将一个通用的“缓存依赖项改变”消息复制式地发给其它所有服务器,这样其它服务器上就会改变自己的这个依赖项下的缓存单元的值(例如就是“最后修改时间”),而这个改变就会雪崩一样地自动被其它缓存单元捕获而自动清空它们。这样当出现同样sql语句的查询时,这个服务器就会到数据库服务器上去查询了,并且重新在本地进程中把最新查询结果缓存起来。 看缓存依赖项策略设计,能看出缓存系统设计的门道。没有这个,就等于没有缓存,或者是欺骗性地用内存数据库来当作缓存。
  • 打赏
  • 举报
回复
另外,对于进程中的缓存机制,最终要、最有内涵的是“缓存依赖项”的设置技术。当一个表的数据被改变了、或者一个文件改变了,或者一个缓存单元的数据被改变了,那么就应该像“雪崩一样”地引起所有依赖于它的其它n个缓存单元自动清空。而不是仅仅会去设置 Duration。 只知道设置定时时间长度的人,那是不太懂缓存控制的,十有八九还是在用缓存当内存数据库去玩儿。 设计缓存策略,一定是以控制缓存依赖项为提纲、为技术关键门道。看这个就能看出缓存技术应用的高低。而看其它粗浅的概念则是只看“热闹”不看“门道”的。 即使是服务器集群,当一个业务服务器上更新了某个人的信息时,它也可能要将一个通用的“缓存依赖项改变”消息复制式地发给其它所有服务器,这样其它服务器上就会改变自己的这个依赖项下的缓存单元的值(例如就是“最后修改时间”),而这个改变就会雪崩一样地自动被其它缓存单元捕获而自动清空它们。这样当出现同样sql语句的查询时,这个服务器就会到数据库服务器上去查询了,并且重新在本地进程中把最新查询结果缓存起来。 看缓存依赖项策略设计,能看出缓存系统设计的门道。没有这个,就等于没有缓存,或者是欺骗性地用内存数据库来当作缓存。
  • 打赏
  • 举报
回复
你的数据库只有一个进程用,而绝不会另外被改变数据? 把整个表放入缓存,那其实就是滥用缓存的。缓存利用率这么低,那是多么奢侈的事情啊。 缓存中应该放的是比较前端的东西,例如根据某个sql语句的查询结果,那么只要这个sql语句涉及的数据库表没有改变,这个sql语句的查询就不会改变,因此就可以放到缓存里。 并不是放整个数据表。 例如csdn的首页,假设是这样的 sql 语句: select top 40 ....n个字段里列表..... from [帖子] where [1级栏目]='.NET‘ order by [最后更新时间] desc 你可以用它或者它的md5作为缓存的key,用查询结果(序列化为实体对象集合)作为value,保存到缓存集合中。这样就能对于重复几千次的查询,直接返回“查询结果”而无须查询数据库了。 这里并不是把什么 [帖子] 表里的几千万条帖子放到缓存里,而是仅仅放40条而已。 而且不同的缓存单元,完全可能有从相同的表中查询的记录。因为缓存技术根本不纠结数据库表,而是真正从前端查询出发来缓存的。 那种纠结于数据库表、把数据库表放到缓存中的做法,其实不叫做缓存。叫做“内存数据库”。把它叫做“缓存”的人往往都是图省事,任性地滥用内存,糊弄老板和投资人的。那就是在背后的关系数据库之前再弄一层“内存数据库”额外机制,而不是缓存概念。
SQL Server 2005微软官方权威参考书.   公球公认SQL Server 2005 经典著作..   数据库“铁人”、微软MVP胡百敬先生鼎力推荐   微软SQL Server 总部Principal Group 项目经理朱凌志鼎力推荐   本书详细介绍了数据引擎的基础运作,包含了数据库的设定与数据实际在硬盘的摆放、索引结构、事务与锁定等。除了解释设计理念与运作原理外,还辅之以测试验证的方式。数据库开发者和管理员可从中获得最优的方法、务实的建议和实例代码来帮助他们掌握创建和维护企业级关系数据库所需的复杂技术。该书获得资深专家关于创建和维护健壮数据库的高屋建瓴般的视野和入木三分的剖析,十分适合有一定数据库基础的读者学习。 内容简介 本书是Inside Microsoft SQL Server 2000的作者Kalen Delaney的又一经典著作,是Inside Microsoft SQL Server 2005系列四本著作中的一本。本书对SQL Server 2005存储引擎方面的知识进行了全面而详细的阐述,包括数据库文件、日志和恢复、表、索引及其管理、锁定和并发等内容。除了解释设计理念与运作原理外,书中还辅之以大量简短而有力的实例。您将跟随一位广受欢迎的作家同时也是SQL Server资深专家一起深入探索SQL Server存储引擎的技术内幕。   本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者。本书不仅适合SQL Server 2005的初级读者,也适合SQL Server 2005的中高级读者。读者可以从中获得最优的方法、务实的建议和实例代码来帮助他们掌握创建和维护企业级关系数据库所需的复杂技术。本书是所有SQL Server 2005用户的案头必备之书。 作者简介 Kalen Delaney,她还是微软出版社inside SQL Sever丛书的编辑。她从1987年开始便一直从事SQL Server相关的工作,1995年被评为MVP(微软最有价值专家》。她同时也是Solid Quality Learning的首席顾问和创始人。除此之外,她还是SQL Server Magazine的优秀编辑和专栏作家,她还写作了大量的SQL Server类书籍,包括著名的Inside Microsoft SQL Server2000。 目录 前言 致谢 引言 第1章 SQL Server 2005 的安装与升级  1.1 SQL Server 2005安装前提   SQL Server 2005 版本   软件要求   硬件要求  1.2 安装前决策   安全性和用户上下文   字符与排序规则   排序次序   安装SQL Server的多个实例   安装SQL Server命名实例  1.3 做好安装准备   SQL Server 2005升级向导  1.4 迁移还是升级   迁移   升级   升级后的操作  1.5 选择组件   SQL Server数据库服务(数据库引擎)   Analysis Services   Reporting Services   Notification Services   Integration Services   工作站组件、联机丛书及开发工具  1.6 小结 第2章 SQL Server 2005体系结构  2.1 SQL Server引擎组件   观测数据库引擎行为   协议   表格格式数据流(TDS)端点   关系引擎   存储引擎   SQLOS  2.2 内存   缓冲池和高速数据缓冲区   访问内存中的数据页   管理数据高速缓冲区中的页面   检查点   管理其他高速缓存中的内存   调节内存大小   调节缓存池大小  2.3 小结 第3章 SQL Server 2005的配置  3.1 使用SQL Server 配置管理器   配置网络协议   默认的网络配置   管理服务  3.2 系统配置   任务管理   资源分配   系统分页文件的位置   非必需的服务   网络协议   与SQL Server 早期版本之间的兼容性   跟踪标记(Trace Flags)   SQL Server 的配置设定   内存选项   调度选项(Scheduling Options)   磁盘I/O 选项   查询处理选项   默认跟踪(Default Trace)  3.3 小结 第4章 数据库和数据库文件 第5章 日志和恢复 第6章 表 第7章 索引的内部构造和管理 第8章 锁定和并发

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧