asp.net程序优化 尽量减少数据库连接操作
项目以我自己的设计编码完成,并整合测试。初始化数据时,问题出现了。刚开始体现在客户端接受数据很慢。测试环境环境下,数据库服务器部署在国外,网站部署在公司内部,而且我一直认为我的程序在数据库数据处理这里已经做了足够的优化,包括索引和主键已经做到了合理使用。综上所述,起初的速度问题一直没有引起我的关注。
然而最后问题的关键恰恰出在数据库连接查询方面,频繁查询导致数据初始化速度很慢。刚开始我采取的方法是即用即查:需要数据的时候就从数据库查,有比较多的单表查询返回单个字段的情况。假如我有大概3000条左右的数据集合,我循环取出其中的每一条,再从其它数据表里查询得到需要的字段,这样无故增加了3000多次数据库连接和关闭操作,当网络速度不理想时,程序速度就无法忍耐了。
坚持一条原则:尽量减少数据库连接操作。跟前端开发优化中的尽量少Http请求类似。
最终我采取的方案是将所需要的数据经过多个数据表统一放到一个List对象中,也就是放到内存中,在根据LINQ查询其中的每条数据,这样速度会快很多。这样似乎破坏力一个原则,之前我遵循的多表查询最好不要inner join3个以上的表,而这次出现了多次一个sql语句就inner join3个表以上的情况.虽然破坏了这个原则,但是相比速度极慢,连功能都实现不了的情况,显然inner join 也可以让人接受。
相关推荐
-
asp.net 数据库连接类代码(SQL)
复制代码 代码如下: public class SqlOperation { #region 属性 /// <summary> /// 保存在Web.config中的连接字符串 /// </summary> protected static string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["hao"].ConnectionString; /
-
ASP.NET2.0 SQL Server数据库连接详解
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection. SqlConnection类的对象连接SQL Server数据库:OracleConnection 类的对象连接Oracle数据库: OleDbConnection类的对象连接支持OLE DB的数据库,如Access:而OdbcConnection类的对象连接任何支持ODBC的数据库.与数据库的所有通讯最终都是通过Connection对象来完
-
在ASP.NET 2.0中操作数据之六十九:处理Computed Columns列
导言: Microsoft SQL Server里有一种computed columns列.这种列的值是通过一个表达式来计算,而表达式引用的是同一张表的其它列的值.打个比方,有一张ServiceLog表,其包含了ServicePerformed, EmployeeID, Rate, Duration等列. 虽然我们可以在一个web页面或其它什么界面里计算每笔服务的费用(也就是 比率 rate乘以时间段duration),不过我们也可以手动向ServiceLog表添加一个 AmountDue列以反
-
在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
导言: 当向类型化的数据集(Typed DataSet)添加一个TableAdapter时,相应的DataTable的构架已经由TableAdapter的主查询定义好了.比如,如果主查询返回A, B,C这3个域,那么 DataTable将有对应的3个列A, B,和C.除了主查询以外,TableAdapter还可以包含其他的查询,可能是返回基于某些参数的数据.比如,ProductsTableAdapter的主查询返回所有产品的信息,此外,ProductsTableAdapter还包含诸如GetPr
-
ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法
在ASP.NET开发的网站根目录,有一个名为web.config的文件,顾名思义,这是为整个网站进行配置的文件,其格式为XML格式.这里主要谈谈文件中的<connectionStrings>节. <connectionStrings>节是对连接到数据库的字符串进行配置,由于MS SQL Server与ASP.NET同属于微软的产品,因此是使用ASP.NET开发时首选的数据库是MS SQL Server,本文只讨论对MS SQL Server的连接字符串情况.第一种情况,本地开发时,
-
asp.net LINQ中数据库连接字符串的问题
项目我采用了三层结构,我把LINQ的映射文件放到了DAL这个层中,映射文件自动由VS2008生成,在原来的机器上一直正常,一点问题都没有,当我把程序移到了另外一台机子上面时候,情况就发生了变化,怎么都连接不上数据库,这个问题折腾了我好几天,改了DAL下的app.config,也改了Web下的web.config但是都没有效果,一连接数据库就报这个错误 Timeout expired 错误,郁闷好几天,最后从LINQ的映射文件中才发现原来数据库连接字符串一直是调用的Properties下面的Set
-
asp.net 数据库连接池浅析
1,对于ASP.NET数据库连接池可以使用一组名称-值对以链接字符串的形式配置链接池.例如,可以配置池是否有效(默认是有效的),池的最大.最小容量,用于打开链接的排队请求被阻断的时间.下面的示例字符串配置了池的最大和最小容量. "Server=(local); Integrated Security=SSPI; Database=Northwind; Max Pool Size=75; Min Pool Size=5" ASP.NET数据库连接池摘要 连接池允许应用程序从连接池中获得一
-
向asp.Net进发 数据库连接操作
无奈之下,基于现实的考虑,看来还是选.NET吧,起码在我所处的这个城市,这个平台可以给我带来工资上的微薄提升! 说开始就开始,先来熟悉数据库的操作,慢慢将ASP的操作用ASP.NET过一遍 操作:连接数据库,读取表中数据 采用的是OLEDB方式读取Access数据库,需要引入System.Data.OleDb 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { OleDbConnection conn = new O
-
asp.net Accee数据库连接不稳定解决方案
错误信息如下:写了如下的一个方法来返回数据操作影响的行数:如下 复制代码 代码如下: private int GetReturnValue(string sStr, string conn) { OleDbConnection odbconn = AccessHelp(conn); OleDbCommand odbcmd = new OleDbCommand(sStr, odbconn); return odbcmd.ExecuteNonQuery(); } 用下面的一个方法来调用这个类: 复制
-
在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置
导言: 在本系列我们用类型化的DataSets来构建数据访问层.就像在第一章探讨的那样,类型化DataSets的DataTables用作存储数据的"仓库",而TableAdapters作为连接数据库的通道,以检索.修改数据.TableAdapters 将处理数据库的很多复杂的细节进行了封装,将我们解脱出来,免去了写代码连接数据库.发出命名.向DataTable填充数据的痛苦. 不过在某些时候我们需要深入的探究TableAdapter,直接写代码处理ADO.NET对象.在第61章<
随机推荐
- jQuery ajax调用webservice注意事项
- C#实现EXCEL数据到TXT文档的转换
- php基于mcrypt的加密解密实例
- 符合web标准的媒体播放器代码
- jquery+css实现下拉列表功能
- admin.vbs 以管理员身份运行程序的vbs命令
- java身份证合法性校验并提取身份证有效信息
- JavaScript类的写法
- ThinkPHP模版引擎之变量输出详解
- 关于内容的分离,正则抽出图片(一定要加精哦)
- Python 操作MySQL详解及实例
- Python随机生成手机号、数字的方法详解
- 即时通讯软件在网页上启动临时对话的链接代码
- jquery中封装函数传递当前元素的方法示例
- JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
- C#编程和Visual Studio使用技巧(下)
- JavaScript中利用jQuery绑定事件的几种方式小结
- jvm支持最大线程数简单测试
- pandas将DataFrame的列变成行索引的方法
- 全面剖析java中的注解(Annotation)