性能问题:内存数据库和存储过程哪个性能好?

NoZ 2004-05-05 12:03:18
有一个系统,数据量不是很大,表比较多, 同时访问量巨大,因此对性能要求很高。 但是大部分是对数据的只读操作,进行更新的很少。

因此我想将所有数据一次都读到内存的dataset中,作为application变量或者application wide的static 变量。 这样访问起来是不是要比存储过程要快呢?

表之间的关系稍微有点多, 按理说肯定sqlserver对于关系数据处理应该比.net framework的要好些,而且数据量不大,运行的时候也肯定在sql server的cache内存中, 只是要多传递一次数据了。

谁有这方面的经验? 是不是内存的DataSet一定会快很多? DataSet在操作中是不是有什么独占访问的时候?
...全文
285 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Shrekgrin 2004-06-22
我以前做过测试, 对于简单的SQL语句,使用存储过程不比直接用SQL语句调用快。

但是用内存数据,就要比使用存储过程快的多。 毕竟少了很多交互过程,而且本身SQL Server处理就很复杂,相应肯定时间花的也多。
对于不用常更新的公用数据,放在内存中对于性能的提高是非常有益的。
  • 打赏
  • 举报
回复
NoZ 2004-05-05
to cuike:
1 不是页面变化不频繁,是数据大部分只读。 主要是查询,因此每个页面都不一样。
2 就是为了让每个用户共享同样的数据,来减少数据库查询的次数,从而增加性能
3 Session我从来没提过。
4 不要只想着DataReader(这个谁都知道),实际考虑一下我问的这个具体的问题的实际情况。
  • 打赏
  • 举报
回复
cuike519 2004-05-05
如果你觉得DataSet不行你可以使用DataReader,他提供一个只读的快速(向前)访问数据库的方法。

对于有页面变化不是很频繁,你可以使用页面cache来提高访问效率。至于将DataSet放到Session或者是Application里面我个人认为不是好的办法,Application是一个全局的变量,面向的所有的用户,你的数据我想不会是面向所有用户的吧。Session也是服务器内存,这个东东是有过期的限制,不是用户关了浏览器它就没有了,又由于你的访问量较大,那么如果一个用户登陆只几秒钟她就走了,你的Session里面还有那么多的数据不是浪费吗,如果这样的人太多了你的内存受的了吗?

所以我觉得如果你要只要一个快速只读的方式访问数据最好的方法就是使用DataReader,这个对象在用完以后一定要记得关闭连接和销毁对象!
  • 打赏
  • 举报
回复
dgm8 2004-05-05
这种情况在asp里的话,可以生存html或js文件,asp.net才开始学,呵呵
  • 打赏
  • 举报
回复
NoZ 2004-05-05
cache肯定会用的, 而且每一级都可能用到。
现在就是数据这一级, 是用
a 连接数据库存储过程
还是 b 使用application对象
还是 c static 变量
还是 d cache对象?

哪个更好?给点理由。
  • 打赏
  • 举报
回复
draclosta 2004-05-05
如果数据变动少的话,推荐使用ASP.NET的Cache技术.
  • 打赏
  • 举报
回复
luluso 2004-05-05
当然放在内存中读得快些.不过需要服务器的内存大点好!
或放在cache中也比较不错!
  • 打赏
  • 举报
回复
NoZ 2004-05-05
但是读到DataSet只需要application启动的时候读一次,而用哪个读哪个的话每次访问都要进行一次和数据库服务器之间的通讯阿?

只是不知道这每一次.net framework同sql server之间读数据要耗费多少时间...
  • 打赏
  • 举报
回复
cowbi 2004-05-05
要将所有数据都读到DataTable是一种不太可取的办法.还是建议用哪个读哪个,直接DataReader就可以.如果数据不是很大建议把数据写在XML中,这样能获得理想的读取效果,原因是打开XM文件L的时间是远小于数据库读取数据
  • 打赏
  • 举报
回复
musicllm 2004-05-05
up
  • 打赏
  • 举报
回复
DataSet1 2004-05-05
上面那些人回答问题的时候好烦啊
楼主你不用问啦
我企业数据都是这样的
  • 打赏
  • 举报
回复
NoZ 2004-05-05
问题就是,数据库服务器对数据的查询支持的好, DataSet中好像没有建立索引的东西吧?
数据量不大, 总共不会超过50M,大部分表不会超过2000条记录, 个别表记录数可能会比较多,大概10万。

我想如果Dataset没有访问冲突的话,应该是快的。
有时间的话可以测试对比一下,但现在时间太紧了,所以想问一下大牛。
  • 打赏
  • 举报
回复
mikespook 2004-05-05
数据量不是很大是多大呢?
用内存数据库的话一定要计算好这个不是很大的概念~~~~~~因为就算是DataSet也不是一次将所有的数据都读入内存~~~~如果你读入全局变量数组,那么查询的时候不是也很费CPU时间?
能交给数据库管理的就交给数据库吧~~~~
你所要做的不是选择哪种技术,而是该如何优化服务器数据库配置,以达到高效查询的目的~~~
  • 打赏
  • 举报
回复
pinghero 2004-05-05
此人让别人回答问题,却又一点没有诚意,真是~~~~
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

5.9w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-05-05 12:03
社区公告
暂无公告