

ADO.NET性能的優(yōu)化
- 期刊名字:現代計算機(專(zhuān)業(yè)版)
- 文件大?。?04kb
- 論文作者:劉萬(wàn)授
- 作者單位:華南師范大學(xué)計算機系
- 更新時(shí)間:2020-09-30
- 下載次數:次
應用技術(shù)ADO.NET性能的優(yōu)化劉萬(wàn)授.(華南師范大學(xué)計算機系,廣州510631 )摘要:本文主要分析了ADO.NET中兩種典型的數據訪(fǎng)問(wèn)模式的性能,以及有肋于提高數據訪(fǎng)問(wèn)性能的存儲結構和連接池技術(shù)并進(jìn)一步研究了ADO.NET中其他優(yōu)化數據訪(fǎng)問(wèn)性能的方法。關(guān)鍵詞:ADO .N ET ;DataSet ;DataReader ;存儲過(guò)程;連接池1概述它以只讀的方式遍歷結果集。由于不需要以隨機ADO.NET是.NET中的一個(gè)核心技術(shù)是一個(gè)的方式訪(fǎng)問(wèn)結果集,因此,就不會(huì )增大額外的系統.功能強大的數據訪(fǎng)問(wèn)類(lèi)庫。然而ADO.NET并不是開(kāi)銷(xiāo),當執行純粹的讀操作,DataReader能提供高ADO的升級版本,它是全新的面向對象模型與效的數據訪(fǎng)問(wèn)性能;當執行一個(gè)搜索并返回多個(gè)結果集時(shí),DataReader更能大大提高性能。每-個(gè)時(shí)ADO相比,它具有平臺無(wú)關(guān)性、可伸縮性和高性能刻只有-行記錄緩存在內存中,因而內存開(kāi)銷(xiāo)也特的數據訪(fǎng)問(wèn)等優(yōu)點(diǎn),比ADO更適應于分布式及別少。由于連接模式是提供快速、只向前、只讀的Internet等大型應用程序環(huán)境。ADO.NET允許以多來(lái)自數據庫的數據流,因此在-些方面采用該模式種有用方式來(lái)訪(fǎng)問(wèn)數據如對數據直接訪(fǎng)問(wèn)的連接并不適當,當應用程序需要以下功能時(shí)可使用模式DataReader也可通過(guò)緩存數據結果集的離線(xiàn)DataReader來(lái)提高數據訪(fǎng)問(wèn)的速度:存取的斷開(kāi)模式DataSet ,DataSet 可以說(shuō)是專(zhuān)門(mén)為①不需要緩存數據;.NET平臺設計的數據存取結構。ADO.NET同時(shí)也②正在處理的結果集太大而不能全部放入內為開(kāi)發(fā)人員提供了豐富的數據訪(fǎng)問(wèn)對象,比如用于存中;連接的Connection對象,用于對數據庫進(jìn)行操作的③需要迅速一次性訪(fǎng)問(wèn)數據采用只向前的只命令Command對象以及為斷開(kāi)模式提供粘合劑的讀方式。數據適配器DataAdapter對象等等。怎樣充分地利默認情況下,DataReader對象在Read方法中用這些數據訪(fǎng)問(wèn)模式以及相關(guān)的訪(fǎng)問(wèn)對象來(lái)開(kāi)發(fā)把整個(gè)行載入內存中這允許你隨機訪(fǎng)問(wèn)當前行的高性能數據訪(fǎng)問(wèn)程序?這就是本文所要研究的問(wèn)任意列。如果隨機訪(fǎng)問(wèn)列是不必要的,可以通過(guò)把題。本文從對ADO.NET的訪(fǎng)問(wèn)模式的剖析入手Command Behavior Sequential Access傳遞給Execute深入分析各種訪(fǎng)問(wèn)模式的性能并且對不同的能提;Reader調用來(lái)提高性能。這改變了DataReader的現高數據訪(fǎng)問(wèn)性能的技術(shù)和方法做-全面的分析。默認行為,只在需要時(shí)才把數據載入內存并且要代2兩大數據訪(fǎng)問(wèn)模式求按次序訪(fǎng)問(wèn)返回的行中的列值,因此可以進(jìn)一步計節省內存開(kāi)銷(xiāo)提高訪(fǎng)問(wèn)的速度。對讀取大量的二算(1漣接訪(fǎng)問(wèn)模式(DataReader)進(jìn)制數據時(shí)這樣更可以大大提高訪(fǎng)問(wèn)速度。機連接訪(fǎng)問(wèn)模式就是用戶(hù)同數據庫交互時(shí)需要當要結束從DataReader中讀取數據,但是仍連接-個(gè)數據庫實(shí)例,向數據庫執行命令再關(guān)閉然有大量的未讀取的結果等待,那么可以調用連接。連接模式是通過(guò)DataReader對象來(lái)實(shí)現的,Command的Cancel取代DataReader的Close 來(lái)提第為了得到一個(gè)DataReader對象,必須在已經(jīng)建立高性能。中國煤化工: Close引起它檢索連接的基礎上執行Command.ExecuteReader方法。未讀取YHCNMH流后關(guān)閉游標。調DataReader是連接的、只向前讀的、游標樣式的類(lèi)用Command的Cancel刪除服務(wù)器上的結果,因此第0 MODERN COMPUTER 2010 .應用技術(shù)當DataReader關(guān)閉時(shí),它不需要再讀取結果,因而貴,因為連接要使用寶貴的系統資源,例如內存和能提高性能。DataReader對象提供了快速的數據訪(fǎng)網(wǎng)絡(luò )帶寬。而連接池可以減少連接所消耗的時(shí)間問(wèn),但卻不具備靈活訪(fǎng)問(wèn)數據的功能,如果程序要和系統資源。連接池允許我們通過(guò)-個(gè)緩沖池重求對數據進(jìn)行大量的操作或者要求能隨機訪(fǎng)問(wèn)數用現有的連接對象避免每次使用連接對象時(shí)都要據,,可以采用下面討論的斷開(kāi)訪(fǎng)問(wèn)模式。新建一個(gè)對象。采用連接池之后,只要少量的連接( 2 )斷開(kāi)訪(fǎng)問(wèn)模式( DataSet )對象就可以滿(mǎn)足大量客戶(hù)端的需要。DataSet 完全是一個(gè)非連接的、與數據源無(wú)關(guān)每一個(gè)連接池都與一個(gè)獨立的連接字符串及的類(lèi)。非連接性表現為,當數據適配器把所需要的其事務(wù)上下文關(guān)聯(lián)。每次打開(kāi)一個(gè)新的連接數據數據載入DataSet后就可以斷開(kāi)數據源而允許對提供者會(huì )嘗試將指定的連接字符串與連接池的字數據進(jìn)行操作。DataSet 總是在脫機模式下對數據符串進(jìn)行匹配。如果匹配失敗數據提供者創(chuàng )建-進(jìn)行操作。本質(zhì)上,DataSet是內存中的高速緩存;個(gè)新的連接并將它加入連接池。連接池被創(chuàng )建之區用于高速緩存關(guān)系型的數據。而數據源無(wú)關(guān)性后除非進(jìn)程結束,否則不會(huì )被拆除并且維護一個(gè)主要表現在,不論DataSet中包含的數據是來(lái)自不活動(dòng)的或者空的連接池不需要多少開(kāi)銷(xiāo)。連接.XML文檔、關(guān)系型數據庫還是通過(guò)用戶(hù)接口以編程池創(chuàng )建之后系統會(huì )創(chuàng )建一些連接對象并將它們加的方式輸入的數據的表示方式都是相同的。通過(guò)緩入連接池直至達到額定的最小連接對象數量。以沖重復使用相同的數據集合可以提高性能(例如排后系統會(huì )根據需要新建和加入連接對象,-直到序、搜索或過(guò)濾數據)并且避免了服務(wù)器長(cháng)時(shí)間維達最大連接對象數量限額為止。如果程序請求一護數據源連接所帶來(lái)的開(kāi)銷(xiāo)。在使用DataReader返個(gè)連接對象時(shí)沒(méi)有空閑的連接對象可用,且連接池回的行上進(jìn)行擴展處理,將使連接存在的時(shí)間比必里面的對象數量已達到上限則請求被放入隊列,要的更長(cháng),從而降低效率。另-方面 與DataReader--旦有連接被釋放回緩沖池就立即取出使用。除.相比,DataSet 需要內存的開(kāi)銷(xiāo),如果內存不是要考了服務(wù)器的連接池功能,ADO.NET 還提供了客戶(hù)慮的問(wèn)題,并且需要對數據進(jìn)行修改或者任意的檢端連接池功能,可供單個(gè)進(jìn)程中參與連接的兩個(gè)數索,那么完全斷開(kāi)連接內存中的數據緩存所提供的據提供程序使用。充分地采用連接池,可以改善性功能就可以更好地滿(mǎn)足程序的需要。能并促進(jìn)應用程序存取數據的可伸縮性。對于一些經(jīng)常沒(méi)有發(fā)生變化的結果集,可以通4使用存儲過(guò)程來(lái)提高性能過(guò)緩存DataSet來(lái)提高應用程序的性能,即不是從數據庫中為每次檢索請求數據,而是將DataSet 放存儲過(guò)程是數據庫的一個(gè)關(guān)鍵組件,它在性能入服務(wù)器的緩存中,每次請求時(shí),可 以檢查DataSet :和開(kāi)發(fā)方面有很多優(yōu)點(diǎn)。存儲過(guò)程是一組SQL語(yǔ)的緩存,在不存在DataSet 的緩存版本的情況下才句,這些語(yǔ)句是已編譯到被命名的單一的單元中連接到數據庫,這樣可以減小連接的開(kāi)銷(xiāo)提高訪(fǎng)被編譯后的存儲過(guò)程具有原子性存儲在要使用它問(wèn)性能。們的數據庫中。它可以是簡(jiǎn)單的只有一個(gè)單-的另外,還可以采用類(lèi)型化的DataSet來(lái)提高性SELECT語(yǔ)句,也可以包含多個(gè)執行復雜計算和更能。類(lèi)型化DataSet是從標準DataSet 類(lèi)繼承而來(lái)新許多表的語(yǔ)句。的,由于在標準DataSet中,每次啟動(dòng)應用程序時(shí)在程序中使用存儲過(guò)程能提高訪(fǎng)問(wèn)數據庫的必須動(dòng)態(tài)建立數據的架構(其中包括表、關(guān)系、列速度。與標準的SQL語(yǔ)句不同存儲過(guò)程是經(jīng)過(guò)數現等),但使用類(lèi)型化DataSet可以把數據的架構預據庫編譯和優(yōu)化的其中的優(yōu)化操作包括使用存儲代先在派生類(lèi)中建立起來(lái)。這就是說(shuō),-旦在設計時(shí)過(guò)程在運行時(shí)所需要的執行計劃的信息,并且緩存計建立了類(lèi)型化的DataSet,在運行時(shí)就不再需要建了該執行計劃。有了優(yōu)化的執行計劃執行存儲過(guò)立數據的結構了。如果在設計階段就知道了數據程時(shí)會(huì )節約很多的時(shí)間在多次調用存儲進(jìn)程時(shí)更機的架構通常將使用類(lèi)型化DataSet。是明顯。另一方面存儲過(guò)程能減少網(wǎng)絡(luò )通信客總戶(hù)應用中國煤化工句就可以執行多第采用連接池條SQL!YHCNMHG程能提供眾多的優(yōu)數據庫連接是很有價(jià)值的資源但是它也很昂點(diǎn),因此在應用ADO.NET訪(fǎng)問(wèn)數據庫時(shí),應該考九七M(jìn)ODERN COMPUTER 2004.10期應用技術(shù)慮使用存儲過(guò)程來(lái)提高性能,ADO.NET的三種數它被關(guān)閉的話(huà))如果Fill或Update方法打開(kāi)了連據提供程序都支持存儲過(guò)程。在A(yíng)DO.NET中使用接,Fill 或Update將在操作完成時(shí)關(guān)閉它。為了提存儲過(guò)程時(shí)只要把相應的命令對象的類(lèi)型設置成高性能,只在必要時(shí)保持數據庫連接打開(kāi),同時(shí)為StoredProcedure然后傳遞存儲過(guò)程的名稱(chēng)就可以多個(gè)操作減少打開(kāi)和關(guān)閉連接的次數。調用存儲過(guò)程并且可以設置輸入、輸出類(lèi)型的參(5)用預先排序的數據數來(lái)傳值。ADO.NET對象模式可以很容易地實(shí)現排序??梢詣?chuàng )建一個(gè)DataView對象并設置其Sort屬性;5其他方法ADO.NETruntime查看新的排序表達式并為視圖(1選擇適當的數據源重編索引。該步驟是在內存中實(shí)現的,但速度并不為了使應用程序獲得最佳的性能需要使用最央。排序的花費很高,更重要的是,它并不是個(gè)線(xiàn)適合數據源的.NET框架組件數據提供程序。當連性操作(linearoperation)對一組數據進(jìn)行排序需接到SQL Server7.0及以上版本時(shí),為了獲得最佳要n* log(n)的計算成本隨著(zhù)需要排序的條目數量性能,應該使用SQLServer.NET數據提供程序。的增加,直 線(xiàn)增加的計算成本是很大的。在Web應SQLServer.NET數據提供程序設計為直接訪(fǎng)問(wèn)用程序中動(dòng)態(tài)排序對性能的影響是相當大的。因SQL Server沒(méi)有其他附加的技術(shù)層。而其他數據源此應該限制應用程序中的排序盡可能地運用預的數據訪(fǎng)問(wèn)則存在要穿越托管-非托管邊界的開(kāi)銷(xiāo)。先排序的數據。(2往返操作在任何時(shí)候創(chuàng )建用于任何數據訪(fǎng)問(wèn)的應用程結語(yǔ)序,首先要使得往返數據源的次數絕對最小并且ADO.NET是Microsoft.NET 戰略的一個(gè)組成往返的數據量最小。除了客戶(hù)程序所需要的數據部分是為分布式程序開(kāi)發(fā)量身定做的,如何適當之外絕對不要請求更多的數據。當使用不返回行地利用ADO.NET提供的強大功能來(lái)提高數據訪(fǎng)的SQL語(yǔ)句時(shí)類(lèi)似修改數據(例如插入、更新或問(wèn)的性能這是熟悉ADO.NET的開(kāi)發(fā)人員所關(guān)心者刪除)或者只返回輸出參數或值,使用Command.的問(wèn)題。本文在充分分析了ADO.NET各組件的工ExecuteNonQuery來(lái)減少往返開(kāi)銷(xiāo)。如果你希望返作原理后給出了優(yōu)化性能的技術(shù)和方法。當然,回單個(gè)值,例 如Count、Sum、 或者Avg ,可以使用上面所分析的各種技術(shù)和方法都具有-定的適應Command.ExecuteScalar. ExecuteScalar 返回第一行范圍只有充分地分析所要設計的程序,才能極大第-列的值,返回的結果集是數量值。ExecuteScalar地優(yōu)化程序訪(fǎng)問(wèn)數據的性能。通過(guò)-步就完成,不僅簡(jiǎn)化了代碼而且提高了性能。參考文獻[ 1 ]Kouresh Ardestani ,Kevin Hoffman ,Donald Xie.高效掌握(3采用類(lèi)型化方法訪(fǎng)問(wèn)結果集中的列值ADO.NET-- C# 編程篇.張哲峰譯.北京清華大學(xué)出AOD.NET提供了多種從返回的結果集中訪(fǎng)問(wèn)版社,2003行中的列的值,可以按下面的一個(gè)方法檢索行的列[2陶剛. ADO.NET使用經(jīng)驗集. htp :// tech.ccidnet.com/的值:按名字指定列、按序號執行列或者使用-一個(gè)pub/ article/c317_ a45023_ pl1.html 2003/4/28類(lèi)型化的方法并以列號作為參數。第-種方法提.[ 3徐靜.ADO.NET調用存儲過(guò)程的方法.電腦與信息技術(shù),現代供了編程的可讀性但它必須以一個(gè)字符串的形式2003(3)計傳遞列名并迫使程序在當前行的各行中搜索具有[ 4 Paul Dickinson ,Fabio Claudio.ADO.NET高級編程一-算指定名字的列,因此降低了訪(fǎng)問(wèn)的性能;第二種方VB.NET編程篇.譚建波,李立新譯.北京清華大學(xué)出版社2003機法能把指定的列的值返回但由于沒(méi)有指定返回數[5 ]John Kauffman ,Brian Matsik 等. ASP.NET數據庫入門(mén)經(jīng)據的類(lèi)型,因而可能存在值的類(lèi)型轉化。因而使用..典-- -C#編程篇.張哲峰黃翔宇譯.北京清華大學(xué)出第二種方法,能提高訪(fǎng)問(wèn)列的值的性能。第( 4 )用數據適配器DataAdapter 優(yōu)化連接[6孟現中國煤化工據訪(fǎng)問(wèn)模型研究.微數據適配器DataAdapter的Fill和Update方MHCNMH G九法自動(dòng)地為相關(guān)的命令屬性打開(kāi)特定的連接(如果(收稿日期2004-05-08 )七(英文摘要見(jiàn)第55頁(yè))兜8 MODERN COMPUTER 20010網(wǎng)絡(luò )縱橫阻力。必須指出的是領(lǐng)導層的確認是企業(yè)網(wǎng)絡(luò )安認的基于時(shí)間的動(dòng)態(tài)安全模型,而安全策略就是動(dòng)全策略能否順利實(shí)施的關(guān)鍵環(huán)節。態(tài)安全模型的核心。在企業(yè)網(wǎng)中建立網(wǎng)絡(luò )安全策實(shí)施是對安全策略最好的檢測,在實(shí)施過(guò)程略大致可以分為風(fēng)險分析和評估、書(shū)寫(xiě)各項網(wǎng)絡(luò )安中一方面會(huì )發(fā)現所制定的安全策略的不足,另-全策略、評估和實(shí)施等步驟整個(gè)過(guò)程將是一個(gè)不方面也會(huì )根據實(shí)際情況的變化為安全策略提出新斷完善的、螺旋式并不斷上升的過(guò)程。的要求,這些為安全策略的進(jìn)一步完善提供了源動(dòng)力。安全策略不斷完善的過(guò)程是一個(gè)螺旋式、不參考文獻斷上升”的過(guò)程。[1何海濤羅笑南郭清順.Newflow在邊界網(wǎng)流量測量中的,應用研究.計算機工程與應用2004( 4)結語(yǔ)[2 Scott Barman. Writing Information Security Polices. New隨著(zhù)企業(yè)信息化的不斷深入,-個(gè)企業(yè)對企業(yè)Riders Publishing,2002[3 ERT. http :/ www.cert.org網(wǎng)的依賴(lài)程度越來(lái)越高因而必須要正視網(wǎng)絡(luò )安全[4 BANS. http :/ www sans.org問(wèn)題、建立合理的安全策略和安全框架,以確保企(收稿日期2004-05-08 )業(yè)網(wǎng)能夠可靠、正常、高效地運行。P2DR 是一套公The Study on the Security Policy ofthe Enterprise Ne tw orkLIU Bao-lu'GU L2( 1. Faculty of Information Technology Macav University of Science and Technology, Macao ;2.Guangzhou City Investigation Design and Research Institute of w ater Conservancy and Hydropower, Guangzhou 510640 China )Abs tract :This paper introduces P2DR(Policy ,Protection ,Detection ,Response),which is the important dynamic securitymodel, and proposes that to establish a sensible security policy is the key to guarantee the security of theenterprise network. Also it iluminates how to develop the successful network security policies.Key words : P2DR ;Security Policy ;Enterprise Network(上接第38頁(yè))P erformance Optimizations of ADO.NET現代計LIU Wan- -shou笪機( Department of Computer Science, South China Normal University, Guangzhou 510631 China )Abs tract :This paper analyzes the performance of two typical data access中國煤化工he sored第procedure and connction pooling technology which are bene. access .performance. Other ways for optimizing data access performanc.MYHCNMHG_paper.九Key words :ADO.NET ;DataSet ;DataReader ;Stored Procedure ;Connection Pooling七M(jìn)ODERN COMPUTER 2004.10期
-
C4烯烴制丙烯催化劑 2020-09-30
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-09-30
-
生物質(zhì)能的應用工程 2020-09-30
-
我國甲醇工業(yè)現狀 2020-09-30
-
JB/T 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規程 2020-09-30
-
石油化工設備腐蝕與防護參考書(shū)十本免費下載,絕版珍藏 2020-09-30
-
四噴嘴水煤漿氣化爐工業(yè)應用情況簡(jiǎn)介 2020-09-30
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-09-30
-
甲醇制芳烴研究進(jìn)展 2020-09-30
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-09-30