renotreclaimeduntilgarbagecollectionoccursfortheconnection.Failingtoreleaseresourcescancauseseriousresourcepressureandleadtoshortagesandtimeouts.
*Transactionmisuse.Ifyouselectthewrongtypeoftransactionmanagement,youmayaddlatencytoeachoperation.Additionally,ifyoukeeptransactionsactiveforlongperiodsoftime,theactivetransactionsmaycauseresourcepressure.Transactionsarenecessarytoensuretheintegrityofyourdata,butyouneedtoensurethatyouusetheappropriatetypeoftransactionfortheshortestdurationpossibleandonlywherenecessary.
*Overnormalizedtables.Overnormalizedtablesmayrequireexcessivejoinsforsimpleoperations.Theseadditionalstepsmaysignificantlyaffecttheperformanceandscalabilityofyourapplication,especiallyasthenumberofusersandrequestsincreases.
2.中文翻译
改进ADO.NET性能
改进.NET应用性能和可伸缩性
摘要:
这章提供证明策略帮助你设计并且发展可调节的数据存取解决办法。本文包括不同的技术来通过数据遍布应用层,管理数据库连接工具,优化储存的过程调用,降低数据集的大量销费,通过大量结果数据集标识的技术,管理传送,操作BLOBS等。
目标
·优化数据存取设计
·在DataSets和DataReaders之间做出选择
·运行有效的数据库命令
·有效地在层之间流通数据
·进行有效的交易
·优化连接管理
·评估记录标识费用
·评估分析数据存取性能标准
·BLOB操作方案的执行性能
概述
精心设计的数据访问代码和数据处理命令是应用性能和可伸缩性的根本要素。通常,数据库是一个由大量应用请求需要来自数据库的数据导致的应用负载的焦点。
这章为设计和实施数据访问代码的性能及可伸缩性提供证明策略。
如何使用
使用这章可以改进数据访问代码性能及伸缩性的实施.为了最有效地使用这章,考虑如下内容:
·只读标题或者从开始读到结束。这章主要标题帮助你迅速鉴定然后找到使你感兴趣的题目。或者,你可以从头到尾地读获得完整的影响ADO.NET性能问题那一章。
·使用检查表。使用"检查表:ADO.NET性能"迅速在"检查表"部分看到和评估人在这几章内提出的那些指南。
·使用这章的"结构"部分理解ADO.NET怎样工作。通过理解结构,你能更好地设计和实施选择。理解ADO.NET核心组成部分,例如数据支持对象和数据集对象。
·使用"设计方案"来理解那些将影响ADO.NET代码选择的实施的高级决定
·度量应用性能。"了解你所能使用度量应用性能的关键计量学。你必须度量应用性能,以便你能鉴定并且解决执行问题。
·测试你的应用性能。,"测试.NET应用性能"获悉怎样把性能试验应用于你的应用程序。你必须使用一个前后一致的测试过程并且分析结果。
·调试应用性能。通过"协调.NET应用性能"来了解怎样通过使用协调计量学鉴定解决性能问题。
·调试SQLServer。读第14章"提高SQL性能",确保你的Microsoft(r)SQLServer数据库格式正确。
结构性
ADO.NET依赖数据支持提供进入基础数据源的途径。每个数据支持显示你所使用的管理连接,恢复数据,更新数据。核心对象是如下内容:
·连接
·命令
·数据读取器
·数据适配器
另外,ADO.NET提供DataSet对象,来提供分离的高速数据缓存。DataSet对象不需要一种数据源的具体的类型并且不被所获得的基础数据源数据所束缚。
基本的ADO.NET结构如图12.1所示。
图12.1ADO.NET结构图
下列目录略述每个主要ADO.NET物体的对象:
·连接。这个对象描述对数据库的一个连接。
·命令。这个对象代表当连接一个数据源时被运行的一个SQL语句。这个对象可能是一个储存的程序或者一个直接的SQL语句。
·数据读取器。这个对象用来恢复一条来自数据库的数据的只读数据流。与以功能性作为代价将数据读进一个DataSet对象相比较,DataReader对象是为
连结脚本设计的并且能提供更好的性能。
·数据适配器。来自一个DataSet对象和基础的数据源的对象信道数据。数据适配器对象也提供以前与Recordset对象相关的改进的批处理特征。
·数据集。数据集对象描述一个分离的,隐藏的数据集。数据集不依赖提供者并不被可能依附于它的基础的数据源所束缚。数据集能容易地从部件到部件通过各种各样层来应用,并且它可以被作为XML连载。
你应该了解数据集内部建造的方式,因为数据集包含一个潜在的大量的内部对象。这表明许多存储分配程序被要求建造典型的数据集。
数据集由一个或更多数据表对象以及数据关系对象组成。每个数据表包含数据行w对象和数据列对象。限制对象用来代表可以被在一个或更多数据列对象上实施的限制条件。
注意
你也能使用从基本数据集派生来的典型数据集。典型数据集优越性在于构造时间和运行时间。
·数据视图。数据视图对象虽然不在12.1图显示,但是你能使用一个数据视图使数据在数据表内存储和分类。这种性能经常用于具有约束力的数据。
编制数据存储
ADO.NET被设计为用来提取基础的数据处理的功能性的一般的接口。你能直接使用这些接口提取你的数据存取层,以便能使改变这类型数据源的影响减到最小。当你设计你的用户选择数据库服务器的系统时,对编制数据存取极其有帮助。
由ADO.NET提供的核心接口在System.Datanamespace中:
·IDbConnection。这是一个管理数据库连接的接口。
·IDbCommand。这是运行SQL命令的一个接口。
·IDbTransaction。这是管理事务的一个接口。
·IDataReader。这一接口适合读数据以一命令返回。
·IDataAdapter。这是开辟来自数据集数据的一个接口。
例如SqlConnection和OleDbConnection这样的多种支持对象可以实现一般的ADO.NET数据存取接口。如果你决定运行一般的接口,必须了解下列问题:
·有一些小的通过一个接口与一次虚呼叫相关的花费。
·当你使用一般的接口时,注意扩展的功能丢失。例如,ExecuteXmlReader方法以SqlCommand对象但不是通过IDbCommand接口来实现。
·没有一般的基础的异常类型,因此你必须捕获具体提供者的异常类型,例如SqlException,OleDbException或者OdbcException。
·当你使用一般的接口时,你不能使用为被管理的提供者确定的特定数据库的类型;例如,你不能使用SqlClient中的SqlDbType和Oracle提供的具体的Oracle的类型。使用具体的数据库类型对类型检查和参数的约束力有帮助。
性能和可伸缩性
以下内容能从反面影响你的应用程序中的性能和数据存取的可伸缩性的问题的主要目录。
·无效问题。处理、返回更多的行或列而不是用于处理其他请求服务的进程周期的浪费。不利用可能引起劣质性能的索引。
·恢复大量数据。结果中的大量数据通常致使效率不高。SELECT*经常引起这个问题。通常你不需要返回一行的所有列。此外,在提问中进行WHERE语句分析确保没返回太多行。努力使用WHERE语句尽可能保证最小量的行的返回。
·无效或丢失的索引。缺少检索时效率降低,因为必须执行一遍完整的表扫描。此外,随着数据增长,表格可能成为碎片。周期性地再造索引的失败可能也导致不良的质问性能。
·不必要的循环。循环相当影响性能。他们受网络潜伏影响并且到顺流服务器潜伏。很多数据驱动网站重复数据库,适合每个用户请求进入。当使用连接帮助时,增加的网络通信量和处理负荷能影响数据库服务器
上一篇:
vb企业工资管理系统(论文和程序)
下一篇:
英语论文网([网学网]):英语专业本科生毕业论文写作