当前位置: 代码迷 >> ASP.NET >> C# SQLServer 企业应用解决思路
  详细解决方案

C# SQLServer 企业应用解决思路

热度:1349   发布时间:2013-02-25 00:00:00.0
C# SQLServer 企业应用
最近给公司做的企业ERP网站由于共模块日益增加,数据库数据也是与日俱增,因此也是问题不断.希望大家踊跃发言,不吝赐教。

  主要问题如下:
  系统在多表字段关联显示时先前使用的方法都是在页面加载过程中去数据库中现查现取的,结果就经常出现数据库连接已打开需要关闭的情况;
  后来就把字段关联改用了SQLServer视图来查询绑定,结果问题就是由于视图太多,数据库服务器在上班时间通常都是满负荷运行,CPU经常都在90%以上;还是会出现连接问题,有时查出来的表没有字段的问题。
  因此在使用的时候经常出现无法访问的情况。

  本人有两年的多的.NET开发经验,但是没有完整负责过这样大的项目,关于字段关联绑定这方面知道的不是太多,希望大家给些意见,建议,方向都可以。

  拜谢!拜谢!


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

数据库连接应该是每次操作完之后自动关闭的。

服务器的cpu利用率跟视图的多少没有多大的关系。

如果服务器的配置还过得去的话,cpu的利用率这么高,可能是程序某个环节出问题了。

比如,索引,数据库连接是否关闭。
------解决方案--------------------------------------------------------
csdn怎么回事,显示的4个回复,但是我只能看见自己的回复。

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

而且还老是404,彻底无语了。还技术论坛。
------解决方案--------------------------------------------------------
有是程序的是错误导致不停和数据库数据交换问题, 有的查询报表的语句写的不好 或者索引没有建好导致读取数据库读死掉 这样的话就要修改表结构或者修改查询语句
------解决方案--------------------------------------------------------
多个CPU的话,可以分配几个给数据库用
------解决方案--------------------------------------------------------
造成cpu满负荷的原因比较多,仅从描述很难准确判断,只有你自己做压力测试排查,再优化。
------解决方案--------------------------------------------------------
我觉得是不是需要从你操作数据库那方面入手,比如查询语句的执行,我一般都是使用的存储过程,这样方便维护,服务器上面修改一下内容客户端立马就可以看到效果,二来可以在存储过程里面写一些复杂的数据处理,如果是在程序里面写SQL的话那不知道要写多少次语句才可以搞得定。另外,优化一下SQL,增加一些索引之类的,有索引的字段用来当条件的话速度是非常快的,跟没有索引的完全是两回事。
------解决方案--------------------------------------------------------
另外看看当前的连接数是不是很多,可以在程序里面或者服务器后台增加一些判断,如果某一个用户一直处于连接状态,但是没有任何的操作,那么就强制T出去。减少连接资源.
------解决方案--------------------------------------------------------
字段关联绑定的话,我也是经常使用视图来处理的,SQL里面有Linked Servers,通过授权之后可以查询不同服务器上面的不同数据库(我经常用到这一点,因为公司的服务器太多了,这也是一个比较郁闷的问题),这样就不用写太多的连接去连接不同的数据库。
------解决方案--------------------------------------------------------
绑定的话连接会自动关闭,可以把关闭前间隔操作时间改短
------解决方案--------------------------------------------------------
我只看到这个

服务器 是戴尔的专业服务器, Inter(R) Xeon(R) CPU X3430 2.40GHz 内存8G 32位 Windows Server 2008 Enterprise SP1 系统 ;


32位上的计算机,内存最大只支持有4G
------解决方案--------------------------------------------------------
看看程序中在数据库连接中有没有啥优化的
------解决方案--------------------------------------------------------
把你的那个“DBHelper彻底删除掉”,大概就不会出现“数据库连接已打开需要关闭的情况”问题了。

至于滥用视图,这个需要具体规划。
------解决方案--------------------------------------------------------
至于滥用视图,这个需要具体规划 --> 至于遇到滥用视图的问题,这个需要具体规划


你总是给一个理由,不管其原理。你似乎是靠试探,只要摸索着有点效果,就认为“问题已经解决了”。所以我不知道所谓“视图太多”到底有什么影响,也看不出该如何评估。不知道你是如何测试出它“太多”的,怎么知道多了呢?
------解决方案--------------------------------------------------------
DBHelper 类方式 和 视图太多 。。没规划好,,都是比较消耗内存的..
------解决方案--------------------------------------------------------
你这么确定是关联表查询造成性能瓶颈,那就加一些冗余数据。将不会修改,或很少修改的列,同时写入多张表。
  相关解决方案