基于.Net的数据库访问技术优化研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于.Net的数据库访问技术优化研究

摘要:随着计算机和因特网的飞速发展,数据库访问技术也变得越来越丰富。尝试从数据库访问技术优化的角度对基于.NET 平台的数据库访问技术进行研究,总结出基于.NET平台的数据库优化技术,有助于.NET平台下广大开发及研究人员的学习及工作。

关键词:.NET;数据库访问技术;;数据库优化

1 基于.Net的数据库访问技术

1.1 .Net框架的介绍

.NET是Microsoft公司在2000年6月推出的“下一代互联网软件和服务战略”,1.0版本正式发行于2002年,.Net是产品、框架、服务和概念的组合,目的是为常规的或以Web Service方式来部署的软件提供基础架构,一般把.NET分解为三个部分:.NET框架、.NET产品、.NET服务,其中.NET框架是.NET 应用程序开发和部署所依赖的技术。是利用访问数据库的过程如图1所示。

设计组件的目的是为了从数据操作中将数据访问分离出来。的两个核心组件会完成此任务:DataSet

和.NET Framework数据提供程序,后者是一组包含Connection、Command、DataReader和DataAdapter对象在内的组件,其中DataSet是的断开式结构的核心组件,能实现独立于数据源的访问。因此,它可以用于多种不同的数据源,用于XML 数据,或用于管理应用程序的本地数据。DataSet是包含一个或多个DataTable对象的集合,这些对象包含数据行和数据列以及主键、外键约束和有关DataTable对象中数据的关系信息。另一个核心组件是.NET Framework数据提供程序,其设计目的是实现数据操作和对数据的快速、向前、只读访问。Connection对象提供与数据源的连接;Command对象用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令;DataReader从数据源中得到高性能的数据流;DataAdapter是连接DataSet对象和数据源的桥梁,DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使DataSet中的数据与数据源保持一致。可以为任何数据源编写.NET Framework数据提供程序,其中的结构如图2所示。

1.2 .NET Framework3.5下的LINQ特性介绍

LINQ,语言级集成查询(Language INtegrated Query)

LINQ 提供了一条更常规的途径即给.Net Framework 添加一些可以应用于所有信息源的具有多种用途的语法查询特性,这

是比向开发语言和运行时添加一些关系数据特性或者类似XML 特性更好的方式。这些语法特性就叫做.NET Language Integrated Query (LINQ) 。Linq的方便之处,您可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询,并具有完全类型检查支持。

2 基于.Net的数据库访问技术的性能优化

2.1 优化数据访问

在对应用程序进行性能优化时,其中最为重要的一点就是对数据访问技术进行优化,而在进行性能优化之前我们首先应确定待开发的应用程序是分布式应用程序还是只在一台计算机上运行的独立应用程序,显然随着通信网络的发展,分布式应用程序开发已成主流,而对于分布式应用程序而言影响其性能的因素主要有以下几种:网络资源、本地处理资源、服务器资源。

在实际应用程序开发中,如何使应用程序能够高速运行,这是每个程序开发者都要面对的问题,在使用进行数据库应用程序开发时,通过以下的方法可以改善程序的性能。

选择使用DataReader还是使用DataSet需要我们足够了解需要访问的数据的类型以及处理它的方式,需要注意的一点是,不管哪种解决方案更快,都不能说明该组件更好,每个组件都适合特定的任务,而且很擅长该任务。

(1) 内存消耗。DataReader和DataSet之间的主要区别是前

者的内存开销要比后者更小,根据数据量和可用的内存资源,与使用更少的内存相关的性能优势可能会差别很大。DataReader是一个一次只能让你访问单行记录信息的对象,其含义是,不管结果集的大小,用DataReader来回移动该结果集时,一次只有单行记录加载到内存中;另一方面,DataSet是专门为内存缓存大量数据而设计的,在这方面,DataSet要比DataReader耗费更多内存。

因此在访问数据时,若内存不是最需要考虑的问题时,则可使用DataSet以利用它的优点,否则DataReader将是一个更合适的选择。

(2)遍历方向。在一个数据库应用程序中传递数据时,必须考虑数据的遍历方向,可以根据数据遍历的方向要求来改善程序的性能。

如果你打算访问数据以便执行一些简单的操作,如以HTML 形式通过页面显示结果集中的所有记录,那么就可以使用DataReader,它专门用于在一个方向上快速读出和显示数据;当不需要在缓冲区中进行数据修改等操作,也不需要索引随机访问数据记录时,DataReader是一个更好的选择,它能提高程序的性能。

(3)多个结果集。DataReader和DataSet两种类都支持多个结果集的概念,但实现方式不同,DataReader通过NextResult方法来支持访问多个结果集,而DataSet将多个结果集加载到其中不

同的DataTable对象中。

使用DataSet时,可以访问其中不同的DataTable对象来访问返回的不同结果集,而用DataReader访问多个结果集时,只能进行向前、只读的操作。这意味着如果某个结果集先前已经被访问过,那么除非重置DataReader再从头显示,否则不能再访问该数据集。

2.2 连接池技术的研究

连接池(Connection Pool)是连接对象的集合体,实际上是指拥有一定数量的连接对象的“缓冲存储池”。连接池内部提供一种管理机制,能控制连接池内部边接对象的个数、使用次数和时间,对应用程序提供获取和释放连接的接口。

建立连接池能显著地提高应用程序的性能和可伸缩性。连接池是根据每个唯一的连接字符串创建的,当创建一个池后,将按最小池大小的要求创建多个连接对象并将其添加到该池中。在请求连接时,将根据需要添加到池中,直至达到连接池上限。当达到上限且没有可用的连接,则该请求将会被排入等待队列。当连接被释放回池中时,连接池管理程序通过重新分配连接来满足这些请求。

当请求SqlConnection对象时,如果存在可用的连接,则将从池中获取该对象。若要成为可用连接,该连接当前必须未被使用,具有匹配的事务上下文或者不与任何事务上下文相关联,并且具有与服务器的有效连接。使用的连接池实际上是

相关文档
最新文档