首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> ADO.NET应用 -> ADO.NET性能改善方法集合
ADO.NET性能改善方法集合


文章类别:ADO.NET应用 来源: 作者: 发表日期:2006-5-22 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

l  总的考虑方向

1)        根据数据使用的方式来设计数据访问层

2)        缓存数据,避免不必要的操作

3)        使用服务帐户进行连接

4)        必要时连接,尽早释放

5)        关闭可关闭的资源

6)        减少往返

7)        仅返回需要的数据

8)        选择适当的事务类型

9)        使用存储过程

根据性能、可维护性、及实现难度来决定跨层数据传递的方式

2   具体实现

1)选用合适的Data Provider
应尽量使用专用的Data Provider,下面是一个性能比较表

由上图中可以看出SqlClient的速度是最快的,其主要原因是其他的数据提供者都经过的几个层次的转换,如下图

从图中可以看出,SqlClient直接访问DB Netlib而其他的数据提供者都经过了两层转换,因此,在设计多层应用的时候,并不是层次越多越好,而是应该在可扩展性与性能间取折中,增加层次是会降低性能的。

1)        数据库连接

                         i.              在方法中打开和关闭连接,即不要在类的构造函数中打开连接,在类的析构函数中关闭连接。

                       ii.              使用完连接明确地关闭。因为有连接池的支持,关闭连接只是将连接放回连接池,并不是真正销毁,不会带来性能开销,而会增加连接池中可用连接,提升性能。

                      iii.              当使用DataReaders时,指定CommandBehavior.CloseConnection

                     iv.              当使用Fill()与Updata()时,不要手动打开连接。因为DataAdapter会自动开启连接,但是如果是Command则需要手动开启。

                       v.              避免检查OleDbConnection的State属性,其性能开销相当大。

                     vi.              使用连接池。这种方法可以大幅度提高性能。默认的情况下,通过SqlClient连接数据库时,会使用连接池,另可以通过连接字符串来控制连接池的最大值,最小值,以及是否开启连接池。

 

2)        SQL指令

                         i.              检查SQL的输入,并使用参数,直接使用字符连接容易遭受注入式攻击。

                       ii.              仅返回需要的行和例

                      iii.              对大的数据集使用分页功能

                     iv.              批次执行SQL,避免多次往返。

                       v.              如果没有数据返回则使用ExecuteNonQuery方法

                     vi.              当返回一个标量时,使用ExecuteScalar方法

                    vii.              不要在运行时间使用CommandBuilder,尽管很省事,但是开销很大。

3)        存储过程

                         i.              尽量使用存储过程

                       ii.              对于OleDbCommand,指令类型为CommandType.Text

                      iii.              使用SqlCommand,指令类型为CommandType.StoredProcedure

                     iv.              尽可能使用输出参数

                       v.              考虑在SQL Server中SET NOCOUNT ON,即关闭SQL Server的记数功能。

4)        事务

5)        使用参数

                         i.              在存储过程上使用参数

                       ii.              创建参数并指定类型

                      iii.              可将参数对象进行缓存

6)        DataReader和DataSet

                        i.              DataReader对象需要关闭

                       ii.              用DataReader时应,使用CommandBehavior.CloseConnection关闭连接

                      iii.              DataReader应用在只读、只向前翻滚的数据访问场景

                     iv.              只想快速访问数据,不需要缓存功能应使用DataReader

DataSet在需要数据缓存,并在不同层间传递时使用。它可以存放多个结果集,可以在离线的情况下自由定位,查找数据。

总的来说,提高性能会降低可扩展性,以及维护难度,应在满足功能与非功能需求的情况下提高性能,另应在设计时就考虑性能,好的设计在性能上的提升比差的设计后期再修改要好得多。

上一篇:用Photoshop打造刀削苹果皮逼真效果 下一篇:对asp.net1.1开发模板类的一些修改说明
本栏目热门文章
·使用ADO.net将数据导出到Excel并提供下载 2005-12-20
·ASP.NET中存取图片到数据库的示例 2005-10-4
·ADO.NET 数据库实例教程 2005-10-4
·ADO.NET中的多数据表操作浅析之读取 2005-10-4
·用ado.net对word,excel进行存取 2005-10-4
·ASP.NET数据库编程 2005-10-4
·ADO.NET 数据集中浏览多个相关表 2 2005-10-4
·ADO.NET 数据集中浏览多个相关表 1 2005-10-4
·ADO.NET操纵数据库 2006-2-2
·最佳实践 ADO.NET实用经验无保留曝光 2005-10-4
新近更新文章
·ADO.NET性能改善方法集合 2006-5-22
·使用 DataAdapter 执行批量更新 2006-4-30
·ADO.NET起步 2006-4-28
·NHibernate与Ado.Net查询速度的比较 2006-3-20
·通过DataTable获得表的主键 2006-2-28
·ADO.NET操纵数据库 2006-2-2
·用多活动结果集优化ADO.NET2.0数据连接 2005-12-25
·使用ADO.net将数据导出到Excel并提供下载 2005-12-20
·ADO.NET 2.0批量数据操作和多动态结果集 2005-11-1
·ADO.NET 数据集中浏览多个相关表 4 2005-10-4
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: