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

上传人:h**** 文档编号:138328 上传时间:2018-07-10 格式:DOC 页数:65 大小:444KB
下载 相关 举报
基于.NET的数据库访问技术的优化研究.doc_第1页
第1页 / 共65页
基于.NET的数据库访问技术的优化研究.doc_第2页
第2页 / 共65页
基于.NET的数据库访问技术的优化研究.doc_第3页
第3页 / 共65页
基于.NET的数据库访问技术的优化研究.doc_第4页
第4页 / 共65页
基于.NET的数据库访问技术的优化研究.doc_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、 基于 .Net的数据库访问技术的 优化 研究 伍锐锋 主页: http:/www.ken- ( 2005 级 信息管理与信息系统) 摘要 : 随着计算机和因特网的飞速发展,数据库访问技术也变得越来越丰富。随着分布式数据库技术的发展及 XML WEB 服务的普及,人们对断开式数据库访问技术及分层数据(特别是 XML 文档)处理能力的要求也越来越高。 .NET 作为为一个被广泛接受的开发及应用平台,其平台上的数据库访问技术也就自然成了 一个重要的研究课题。现今关于 .NET 平台的研究文章越来越多 ,这们都有各自的特点和适用范围, 但是在结构和应用上各有偏重,本文则尝试从数据库访问技术优化的角度

2、对基于 .NET 平台的数据库访问技术 进行研究,总结出基于 .NET 平台的数据库优化技术 ,以有助于 .NET 平台下广大开发及研究人员的学习及工作 。 关键词 : .NET; 数据库访问技术 ; ADO.NET;数据库优化; Database Access Technology Optimization Based On .NET Wu Ruifeng (2005 Information Management and Information System) Abstract Along with the rapid development of computer and Internet

3、 technologies, the technologies of database access are increasingly varied and plentiful. With the development of distributed database technology and the popularity of XML WEB services, the requirements of disconnected database access technology and the ability to deal with hierarchical data (XML do

4、cuments in particular) are increasingly high. NET as a widely accepted development and application platform, the platform of the database access technology naturally becomes an important research topic. Today, the number of research papers on the. NET platform is becoming more and more, which have t

5、heir own characteristics and the scope of application, but also have their own structure and emphasis on applications, this article try to do a research from a view on database access technology optimization based on.NET platform to sort out the main essence of database access technology on .NET pla

6、tform, to help the vast numbers of researchers to study and work on .NET platform. Key Words.NET; Database Access Technology;ADO.NET; Database Optimization; 目录 1.引言 1 2.基于 .NET 的数据库访问技术 2.1 .NET 框架介绍 2.2 ADO.NET 体系结构概述 2.3 .NET Framework3.5 下的 LINQ 特性介绍 3.基于 .Net 的数据库访问技术的性能优化 3.1 优化数据访问 3.1.1 DataR

7、eader 和 DataSet 的使用 3.1.2 存储过程的使用 3.1.3 缓存数据 3.2 连接池技术的研究 3.3 其他优化技术 4.总结 1. 引言 在现在这个信息化时代,计算机技术在信息管理中的作用越来越重要,由微软公司开发提供的 .Net 平台可称得上是计算机开发领域的一场革命,同时它为广大计算机开发人员提供了简单强大的可视化开发工具,大大提高了开发效率,而数据库的访问技术在开发过程中又 占了举足轻重的地位,如何为开发人员提供简单、高效、安全的数据库访问技术也自然成了大家关注的焦点之一 . 在 windows 系统下的数据库访问技术主要有: ODBC(开放数据库连接), DAO(

8、数据访问对象), RDO(远程数据对象), JDBC( java 数据库连接), OLE DB(对象链接嵌入数据库), ADO( ActiveX 数据对象),随着微软 .net 框架的推出,基于 .net 平台的数据库访问技术也在原来 ado 的基础上做出了重大的改进,升级到了全新的 数据库访问技术, 也是 .net 平台上最重要的数 据库访问技术,下面我们主要对 有关的数据库访问技术的进行优化研究,以期对我们的工作及学习提供帮助及参考。 2. 基于 .NET 的数据库访问技术 2.1 .Net框架的介绍 .NET 是 Microsoft 公司在 2000 年 6月推出的“下一代互联网软

9、件和服务战略”, 1.0 版本正式发行于 2002 年, .Net 是产品、框架、服务和概念的组合,目的是为常规的或以 Web Service 方式来部署的软件提供基础架构,一般把 .NET分解为三个部分: .NET 框架、 .NET 产品、 .NET 服务,其中 .NET 框架是 .NET 应用程序开发和部署 所依赖的技术。 .NET 框架 (.NET framework)是用于建立、部署、运行 XML Web 服务( XML Web Service)和其他应用程序(包括基于 Windows 的应用程序、基于 Web 的应用程序和针对移动设备的应用程序)的编程模型。 .NET 框架主要由两部

10、分组成:公共语言运行库( Common Language Runtime)和 .NET 框架类库 (Unified Class).公共语言运行库为开发、部署和运行应用程序提供引擎;类库则涵盖了系统函数、数据访问、组件模型、事务处理以及其他服务。如图 1 所示, .NET 框架位于操作系统之上,为应用程序提供基础服务: 图 1: .NET 框架的位置及其组成 随着技术的发展, .net 框架也由原来的 1.0 版本发展到了 3.5 版本了(于2008 年随 visual studio 2008 一起发布), 2.0 及以后的 .NET 框架构成如图 2所示 1: PLINQ TPL FUTURE

11、 RELEASE LINQ ADO.NET Entity Framework 3.5 WPF WCF WF Card Space 3.0 Winforms ASP.NET ADO.NET .NET Framework2.0 Base Class Library Common Language Runtime 图 2: .NET2.0 及 2.0 以后的框架结构 2.2 ADO.NET 体系结构概述 ADO.NET 是微软 .NET 框架的一部分,它由一组工具和层组成,应用程序可以借此与基于文件或基于服务器的数据存储很轻松地进行通信和管理。在 .NET 框架中, ADO.NET 类库位于 Sys

12、tem.Data 命名空间下。这些类库包括连接到数据源、执行命令以及在存储、操作和获取数据等功能。 对于不同的应用需要 ,ADO.NET设计了两种访问数据库的模式 :使用 DataReader 对象进行基于连接的访问和使用 DataAdapter 对象进行的非连接的访问。由于这两种模式的设计目的不同 ,所.NET 应用程序 .NET 框架 公共语言运行库( CLR) 类库( UC) 操作系统 硬件 以在应用程序开发中应该根据实际需要选择合适的数据库访问模式以发挥出ADO.NET 的最佳性能 ,这对于提升应用程序性能有着非常重要的意义。如图 3 是利用 ADO.NET 访问数据库的过程 2: 图

13、 3:使用 ADO.NET 访问数据库的过程 ADO.NET 与以前的数据访问技术 相比的不同之处,就是它可以让应用程序与数据库以完全非连接的数据缓存的方式来交互以实现离线操作数据。过去使用诸如远程数据对象( RDO)来实现这样的功能,但是那只是在已有的技术上做一些修正。而 ADO.NET 则是基于这样的需求从头开始搭建的。 非连接的数据访问 (disconnected data access)对于今天高要求的应用程序而言是很关键的,它并不是简单地直接把单个用户或系统中的实体连接到数据库。非连接的数据访问的一个要素就是用于表格数据的与数据库无关的容器。这个非连接的容器在 ADO.NET 类库中

14、是用 DataSet 或 DataTable 对象来表示的。 设计 ADO.NET 组件的目的是为了从数据操作中将数据访问分离出来。ADO.NET 的两个核心组件会完成此任务: DataSet 和 .NET Framework 数据提供程序,后者是一组包含 Connection、 Command、 DataReader 和 DataAdapter 对象在内的组件,其中 DataSet 是 ADO.NET 的断开式结构的核心组件,能实现独立于数据源的访问。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序的本地数据。 DataSet 是包含一个 或多个 DataTable

15、对象的集合,这些.NET 应用 程序 DataReader 对象 Command 对象 Connection对象 数据库 DataSet 对象 DataAdapter对象 连接模式 非连 接模式 对象包含数据行和数据列以及主键、外键约束和有关 DataTable 对象中数据的关系信息。另一个核心组件是 .NET Framework 数据提供程序,其设计目的是实现数据操作和对数据的快速、向前、只读访问。 Connection 对象提供与数据源的连接; Command 对象用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令; DataReader 从数据源中得到高性能的数据流;

16、 DataAdapter 是连接 DataSet 对象和数据源的桥梁, DataAdapter 使 用 Command对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使 DataSet中的数据与数据源保持一致。可以为任何数据源编写 .NET Framework 数据提供程序,其中 ADO.NET 的结构如下图所示 3: 图 4: ADO.NET 结构示意图 2.3 .NET Framework3.5 下的 LINQ 特性介绍 LINQ,语言级集成查询( Language INtegrated Query) 自八十年代以来,随着面向对象编程技术的发展, 其在各种应用领域

17、已经进入了一个稳定的发展阶段,编程人员对于面向对象中的各种概念也已普遍熟悉并接受 。但随着技术的发展,一个新的问题也同时显现出来,即面向对象技术诞数据库 XML .NET Framework 数据提供程序 DataSet DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand Connection Command DataReader DataTableCollection DataTable DataRowCollection ConstraintCollection DataColumnCollection D

18、ataRelationCollection 生以来并没有解决降低访问和整合信息数据的复杂度的问题,其中主要原因在于最主要的访问数据源与数据库和 XML 相关。 LINQ 提供了一条更常规的途径即给 .Net Framework 添加一些可以应用于所有信息源( all sources of information )的具有多种用途( general-purpose)的语法查询特性( query facilities),这是比向开发语言和运行时( runtime)添加一些关系数据( relational )特性或者类似 XML 特性( XML-specific)更好的方式。这些语法特性就叫做 .N

19、ET Language Integrated Query(LINQ) 4。 一般来讲,这类查询语句的一个重要特点就是可以并行化执行。虽然有些情况下并行可能会带来一些问题,但这种情况非常少见。这样也就水到渠成地引出了 PLINQ 这个并行处理的 LINQ 类库。 PLINQ 可以以三种方式执行。第一种是管道处理:一个线程用来读取数据 源,而其他的线程则用来处理查询语句,二者同步进行 虽然这个单一的消费线程可能并不那么容易与多个生产线程同步。不过若是能够仔细配置好负载平衡的话,仍然会极大地减少内存占用。 第二种模式叫做“ stop and go”,用于处理结果集需要被一次返回时(例如调用 ToLi

20、st、 ToArray 或对结果排序)的情况。在这种模式下,将依次完成各个处理过程,并将结果统一返回给消费线程。这个模式在性能上将优于第一种模式,因为它省去了用来保持线程同步所花费的开销。 最后一种方法叫做“ inverted enumeration”。 该方法并不需要实现收集到所有的输出,然后在单一的线程中处理,而是将最终调用的函数通过 ForAll 扩展传递到每个线程中。这是目前为止最快的一种处理模式,不过这需要传递到ForAll 中的函数是线程安全的,且最好不包含任何 lock 之类的互斥语句。 若是 PLINQ 中任意的一个线程抛出异常,那么所有的其他线程将会被终止。若 是 抛 出 了

21、 多 个 异 常 , 那 么 这 些 异 常 将 被 组 合 成 一 个MultipleFailuresException 类型的异常,但每个异常的调用堆栈仍会被保留。 3. 基于 .Net 的数据库访问技术的性能优化 3.1 优化数据访问 在对 应用程序进行性能优化时,其中最为重要的一点就是对数据访问技术进行优化,而在进行性能优化之前我们首先应确定待开发的应用程序是分布式应用程序还是只在一台计算机上运行的独立应用程序,显然随着通信网络的发展,分布式应用程序开发已成主流 5,而对于分布式应用程序而言影响其性能的因素主要有以下几种: 1. 网络资源 这里的网络资源主要指实际带宽; 2. 本地处理

22、资源 如果本地机器有可以利用的资源,则大部分数据处理工作都可以放在本地完成,当然这还要考虑带宽和服务器的处理资源; 3. 服务器资源 如果有足够的服务器资源, 则在服务器端进行较多处理就相对可取了,这也便于应用程序的升级,对本地机的要求也不高; 在实际应用程序开发中,如何使应用程序能够高速运行,这是每个程序开发者都要面对的问题,在使用 ADO.NET 进行数据库应用程序开发时,通过以下的方法可以改善程序的性能: 3.1.1 DataReader 和 DataSet 的使用 选择使用 DataReader 还是使用 DataSet 需要我们足够了解需要访问的数据的类型以及处理它的方式,需要注意的

23、一点是,不管哪种解决方案更快,都不能说明该组件更好,每个组件都适合特定的任务,而且很擅长该 任务 6。 (1) 内存消耗 DataReader 和 DataSet 之间的主要区别是前者的内存开销要比后者更小,根据数据量和可用的内存资源,与使用更少的内存相关的性能优势可能会差别很大。 DataReader 是一个一次只能让你访问单行记录信息的对象,其含义是,不管结果集的大小,用 DataReader 来回移动该结果集时,一次只有单行记录加载到内存中;另一方面, DataSet 是专门为内存缓存大量数据而设计的,在这方面, DataSet 要比 DataReader 耗费更多内存; 因此在访问数据

24、 时,若内存不是最需要考虑的问题时,则可使用DataSet 以利用它的优点,否则 DataReader 将是一个更合适的选择。 (2)遍历方向 在一个数据库应用程序中传递数据时,必须考虑数据的遍历方向,可以根据数据遍历的方向要求来改善程序的性能。 如果你打算访问数据以便执行一些简单的操作,如以 HTML 形式通过ASP.NET 页面显示结果集中的所有记录,那么就可以使用 DataReader,它专门用于在一个方向上快速读出和显示数据;当不需要在缓冲区中进行数据修改等操作,也不需要索引随机访问数据记录 时, DataReader 是一个更好的选择,它能提高程序的性能。 (3)多个结果集 Data

25、Reader 和 DataSet 两种类都支持多个结果集的概念,但实现方式不同, DataReader 通过 NextResult 方法来支持访问多个结果集,而DataSet 将多个结果集加载到其中不同的 DataTable 对象中; 使用 DataSet 时,可以访问其中不同的 DataTable 对象来访问返回的不同结果集,而用 DataReader 访问多个结果集时,只能进行向前、只读的操作。这意味着如果某个结果集先前已经被访问过,那么除非重置DataReader 再从头显示,否则不能再访问该数据集 7。 3.1.2 存储过程的使用 存储过程是指存储在数据服务器上预编译好的 SQL 语句

26、的批命令,存储过程一直被认为是一种让服务器处理数据的好方法,它能显著减少客户机的工作负担;在各种系统开发中 ,使用存储过程是一个良好的习惯 ,不仅可以带来临时表、函数、游标等特性 ,而且调试、升级、维护都变得方便 8。 使用存储过程还有很多好处,使用它可将 SQL 语句组合起来并存储在数据库服务器上,经一次调用就可执行。同时由于存储过程是预编译好的,这就省下编译时间并缩短执行时 间。客户执行存储过程时,只需调用服务器上的存储过程(有时传递存储过程所需的参数值)而不用发送整个 SQL 语句,网络上传输的数据就减少了许多 9。在下面的情况下应考虑使用存储过程: ( 1) 有规律地多次执行一条或多条相关的 SQL 语句; ( 2) 网络带宽有限; ( 3) 客户机的处理资源有限,这时需将数据处理委托给服务器承担; ( 4) 许多客户有规律地执行包含 SQL 语句的批命令; 需要注意的是,使用存储过程来进行数据处理时,当应用发生改变时,一般

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。