最近给公司做的企业ERP网站由于共模块日益增加,数据库数据也是与日俱增,因此也是问题不断.希望大家踊跃发言,不吝赐教。    主要问题如下:
    系统在多表字段关联显示时先前使用的方法都是在页面加载过程中去数据库中现查现取的,结果就经常出现数据库连接已打开需要关闭的情况;
    后来就把字段关联改用了SQLServer视图来查询绑定,结果问题就是由于视图太多,数据库服务器在上班时间通常都是满负荷运行,CPU经常都在90%以上;还是会出现连接问题,有时查出来的表没有字段的问题。
    因此在使用的时候经常出现无法访问的情况。    本人有两年的多的.NET开发经验,但是没有完整负责过这样大的项目,关于字段关联绑定这方面知道的不是太多,希望大家给些意见,建议,方向都可以。    拜谢!拜谢!

解决方案 »

  1.   

    用存储过程和零时表吧。尽量少用视图,如果表单更新频繁,更新视图的代价是很高的。还有优化你的sql语言,看看该加的索引都加上了没。如果实时性要求的不是很高,可以使用job在业务不繁忙的时候处理比较消耗资源的工作。
      

  2.   

    用存储过程和零时表吧。尽量少用视图,如果表单更新频繁,更新视图的代价是很高的。还有优化你的sql语言,看看该加的索引都加上了没。如果实时性要求的不是很高,可以使用job在业务不繁忙的时候处理比较消耗资源的工作。
      

  3.   

    用存储过程和零时表吧。尽量少用视图,如果表单更新频繁,更新视图的代价是很高的。还有优化你的sql语言,看看该加的索引都加上了没。如果实时性要求的不是很高,可以使用job在业务不繁忙的时候处理比较消耗资源的工作。
      

  4.   

    用的数据库是哪个版本的?数据库连接应该是每次操作完之后自动关闭的。服务器的cpu利用率跟视图的多少没有多大的关系。如果服务器的配置还过得去的话,cpu的利用率这么高,可能是程序某个环节出问题了。比如,索引,数据库连接是否关闭。
      

  5.   

    csdn怎么回事,显示的4个回复,但是我只能看见自己的回复。而且还老是404,彻底无语了。还技术论坛。
      

  6.   

    csdn怎么回事,显示的4个回复,但是我只能看见自己的回复。而且还老是404,彻底无语了。还技术论坛。
      

  7.   

    多个CPU的话,可以分配几个给数据库用
      

  8.   

        服务器 是戴尔的专业服务器, Inter(R) Xeon(R) CPU X3430 2.40GHz  内存8G  32位 Windows Server 2008 Enterprise SP1 系统 ;    数据库访问方式有两种,前期的少部分用的是 DBHelper 类方式,后来大部分用的是 LinqToSql,都是用Using 关键字方式。    视图有些关联比较复杂,可以确定不是视图的问题吗,是不是主要还是程序逻辑运算设计的不合理?
        一般的企业级应用类似多表字段关联数据绑定都是怎么实现的呢?
        
      

  9.   

    造成cpu满负荷的原因比较多,仅从描述很难准确判断,只有你自己做压力测试排查,再优化。
      

  10.   

    我觉得是不是需要从你操作数据库那方面入手,比如查询语句的执行,我一般都是使用的存储过程,这样方便维护,服务器上面修改一下内容客户端立马就可以看到效果,二来可以在存储过程里面写一些复杂的数据处理,如果是在程序里面写SQL的话那不知道要写多少次语句才可以搞得定。另外,优化一下SQL,增加一些索引之类的,有索引的字段用来当条件的话速度是非常快的,跟没有索引的完全是两回事。
      

  11.   

    字段关联绑定的话,我也是经常使用视图来处理的,SQL里面有Linked Servers,通过授权之后可以查询不同服务器上面的不同数据库(我经常用到这一点,因为公司的服务器太多了,这也是一个比较郁闷的问题),这样就不用写太多的连接去连接不同的数据库。
      

  12.   

    我只看到这个服务器 是戴尔的专业服务器, Inter(R) Xeon(R) CPU X3430 2.40GHz 内存8G 32位 Windows Server 2008 Enterprise SP1 系统 ;
    32位上的计算机,内存最大只支持有4G
      

  13.   

    把你的那个“DBHelper彻底删除掉”,大概就不会出现“数据库连接已打开需要关闭的情况”问题了。至于滥用视图,这个需要具体规划。
      

  14.   

    DBHelper 类方式 和 视图太多 。。没规划好,,都是比较消耗内存的..  
      

  15.   

     Windows Server 2008 32位内存支持:标准版4GB、企业版和数据中心版64GB;
      

  16.   

        视图太多,真的就是凭感觉到,系统里原本基本上没有使用视图,后来由于经常无法访问,总结的结果就是页面数据绑定的时候查数据库次数过多,特别是绑定列表的时候每一行数据都要再去其他关联表里查字段,然后就全部改成视图了,所以视图就一下多了;  
        现在数据库表有将近120个,视图有将近50个,最明显的就是数据库服务器开始在上班时段CPU持续居高不下。
        还请各位多指点指点方向;
        拜谢!拜谢!
      

  17.   

    感谢大家的踊跃发言,这个问题大致上已经解决了, 主要是 DBHelper 类的问题,和数据关联问题,后来修改 DBHelper 类,添加一些 缓存,效果就好多了。拜谢,各位!