
2008-6-3 07:24
dotnetworker
一个非常非常大的表,如何操作提升性能??
假设有一个非大的表,数据非常的多,访问量也很大,但程序仅要求提供查询的功能(select)。
大家有什么好办法提升性能,以免频繁读取数据库?
我的想法是这样的:
在程序刚开始的时候,将这个表的所有记录都放到内存中去,就叫缓存吧。
然后,程序中所有的select操作,将直接从缓存中读取(内存读取快)。
疑问:
asp.net中有没有能够存储二维表格的类or对象,占用的是服务器的内存空间,并且能够被当作是数据控件的数据源?
如果有的话,能不能整个程序运行中只存在一个这样的对象,并对所有的客户端有效??
这个缓存应该在哪个位置(事件)中初始化、赋值?
当物理数据库中的数据发生了变化,在哪个位置(事件)中更新这个缓存比较合适?
2008-6-3 07:25
duxiaochu1972
用Index,View、Stored procedures可以缓解瓶颈吗?
建议做一个B+ tree,放在application["BTree"]中
2008-6-3 07:25
juanpeng
缓存有页面缓存( <%@ Page OutPut..%>) 和数据缓存(Cache["data"]=dt),可查相关资料,很简单
查询数据量大的表,首先是对表结构优化,如建立相关索引等
2008-6-18 19:06
lyong
菜鸟的几点建议
数据库方面:
1 根据搜索的相关性建立非聚集索引.
2 采用存储过程对表进行读取操作.
3 增加数据库缓存的容量.
4 如果数据量很大建议根据日期进行分表
.net数据库逻辑方面
1 自己编写数据库缓存,可以是内存也可以是内存.
2 建立数据库类操作实现,如hebinit的框架可以参考.
数据显示方面
1 建议采用缓存显示,具体的含义就是只从缓存中读出需要显示的数据部分不要把整个select符合条件的全部加载到显示控件上.
如果以上的方法还是不能解决问题,那么说明你的数据库设计的不合理.
2008-6-25 09:25
dahuzizyd
你的数据量非常大,全部缓存下来要吃多少内存,有计算过吗?
2008-8-8 13:17
阳光灵芝QQ
不是很懂的
2008-8-11 23:27
joe_xuqj
[quote]原帖由 [i]lyong[/i] 于 2008-6-18 19:06 发表 [url=http://www.itpub.net/redirect.php?goto=findpost&pid=10707785&ptid=998831][img]http://www.itpub.net/images/common/back.gif[/img][/url]
数据库方面:
1 根据搜索的相关性建立非聚集索引.
2 采用存储过程对表进行读取操作.
3 增加数据库缓存的容量.
4 如果数据量很大建议根据日期进行分表
.net数据库逻辑方面
1 自己编写数据库缓存,可以是内存也可以是内存.
2 建立数据库类操作实现,如hebinit的框架可以参考.
数据显示方面
1 建议采用缓存显示,具体的含义就是只从缓存中读出需要显示的数据部分不要把整个select符合条件的全部加载到显示控件上.
如果以上的方法还是不能解决问题,那么说明你的数据库设计的不合理. [/quote]
很有道理
页:
[1]

Powered by ITPUB论坛