ITPUB论坛 » Web开发 » ASP.NET与AJAX » 一个非常非常大的表,如何操作提升性能??
新一届的微软MVP评选已经开始,欢迎各位推荐!
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论坛