我在一本ASP.NET的书上看到这样几句话,不是很明白:他说如果一个dataset包含10000条记录,在某个页面上显示,如果有100个人浏览这个网页,就会耗很多内存,会有100万条记录在内存中。为什么会这样啊,每个人都在内存里创建10000条记录么?
还有dataset不就是缓存么?为什么要用cache来缓存dataset

解决方案 »

  1.   

    如果dataset 是一个静态(Shared or static)变量的话,大家可以都用一个Dataset.不然,肯定是每个人有每个人的Dataset.
      

  2.   

    In VB  as new  Dataset
         ~~~这个说明每个人访问的时候都回实例化一个 dataset 都会展一定的内存的 ……
      

  3.   

    ____________
    他说如果一个dataset包含10000条记录,在某个页面上显示,如果有100个人浏览这个网页,就会耗很多内存,会有100万条记录在内存中。为什么会这样啊,每个人都在内存里创建10000条记录么?
    _________
    dataset是在服务器端的,不是在客户端的,100万条记录在服务器内存中。回传服务器一次,dataset就会丢失,如果想要保存原数据集,只有用cache
    请参考
    http://dotnet.aspx.cc/ShowDetail.aspx?id=108B1516-53CE-4357-B061-17295AF9689F
      

  4.   

    楼上几们理解有误。。CACHE是服务器变量。。用户对数据的访问通过cache的操作。
    cache是服务器变量,对所有用户共享,这样,如果同时有一百个用户访问,也都是对同一个cache进行一百次访问。网上有相关资料。。CSDN上也有
    http://dev.csdn.net/develop/article/26/26445.shtm
      

  5.   

    楼上几们理解有误。。CACHE是服务器变量。。用户对数据的访问通过cache的操作。
    cache是服务器变量,对所有用户共享,这样,如果同时有一百个用户访问,也都是对同一个cache进行一百次访问。网上有相关资料。。CSDN上也有
    http://dev.csdn.net/develop/article/26/26445.shtm
      

  6.   

    可是一般好的分页不会每次都将所有的记录读入DataSet啊.
      

  7.   

    自定义分页,可控制dataset的数据量
      

  8.   

    首先数据库有缓存,其次iis也有缓存
    当很多人请求同一页时直接在iis被缓存命中,于是直接返回页面。
    内存可能只吃了一点。
      

  9.   

    Dataset是一个断开连接式数据存储对象,也就是说,在数据服务器和ASP页断开的情况下,ASP服务器上能缓存数据,供客户端使用(客户端不保存数据)。试想,当100人每人申请10000条记录,ASP服务器上就会缓存1000000条记录。因此,客户端不存在这样一个数据缓存,因此,当提交新页时,需要将原数据集保存在本地计算机上,供下一次操作使用。
      

  10.   

    真是晕
    ——————————
    因此,当提交新页时,需要将原数据集保存在本地计算机上,供下一次操作使用。
    ——————————这是什么意思啊?
    ——————————
    在数据服务器和ASP页断开的情况下,ASP服务器上能缓存数据
    ——————————
    --》
    在数据服务器和.NET服务器断开的情况下,web服务器能缓存数据
      

  11.   

    ________________
    回传服务器一次,dataset就会丢失
    ________________那岂不是每次回传服务器一次,dataset都要重新建立一次,那么是不是又要和数据库连接一次呢?————————
    客户端不保存数据——当提交新页时,需要将原数据集保存在本地计算机上,供下一次操作使用。
    -----------------
    是不是矛盾啊?
      

  12.   

    如果用“如果dataset 是一个静态(Shared or static)变量的话,大家可以都用一个Dataset”这种方法可以减少内存的消耗,那么在更新不频繁的情况下,是不是可以这样做,来提高网站性能呢?
      

  13.   

    ________________
    回传服务器一次,dataset就会丢失
    ________________那岂不是每次回传服务器一次,dataset都要重新建立一次,那么是不是又要和数据库连接一次呢?————————
    客户端不保存数据——当提交新页时,需要将原数据集保存在本地计算机上,供下一次操作使用。
    -----------------
    是不是矛盾啊?**************************************************************************************
    比如说一个简单的datagrid分页问题,你每点一次换页时,都需要重新绑定数据源,这会相当麻烦。因此可以将数据集保存在本地缓存,就是Session[]中,换页就不需要重新执行查询了。只需要
    DataGrid.databind(Session["data"]);我认为采用全局变量不好,这会增加服务器负担,交给客户端缓存或许更好吧。
      

  14.   

    楼上的又搞错了,Session也是在服务器内存中的
      

  15.   

    penning(飞鱼),那你说说你的想法呢?
    如果我要提高一个培训考试系统的性能,可以采取那些方案?
    是否可以使用(Shared or static)dataset。
    分页是否也有可以改进的地方么?
    有人曾说过太多人访问dataset,会有问题,是指内存不够么?
      

  16.   

    是否可以使用(Shared or static)dataset?
    可以,只要你没有更新数据库的操作。
    分页是否也有可以改进的地方么?
    是的,通过存储过程分页每次绑定是个不错的方法
    有人曾说过太多人访问dataset,会有问题,是指内存不够么?
    是的,内存可能会崩溃,你可以做压力测试