五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > .NET性能優(yōu)化方面的總結

.NET性能優(yōu)化方面的總結

文章來源:365jz.com     點擊數(shù):308    更新時間:2009-09-20 09:05   參與評論

一、 SqlDataRead和Dataset的選擇
   Sqldataread優(yōu)點:讀取數(shù)據(jù)非???。如果對返回的數(shù)據(jù)不需做大量處理的情況下,建議使用SqlDataReader,其性能要

比datset好很多。缺點:直到數(shù)據(jù)讀完才可close掉于數(shù)據(jù)庫的連接 。(SqlDataReader 讀數(shù)據(jù)是快速向前的。

SqlDataReader 類提供了一種讀取從 SQL Server 數(shù)據(jù)庫檢索的只進數(shù)據(jù)流的方法。它使用 SQL Server 的本機網(wǎng)絡數(shù)據(jù)傳

輸格式從數(shù)據(jù)庫連接直接讀取數(shù)據(jù)。DataReader需及時顯式的close??杉皶r的釋放對數(shù)據(jù)的連接。)
    Dataset是把數(shù)據(jù)讀出,緩存在內存中。缺點:對內存的占用較高。如果對返回的數(shù)據(jù)需做大量的處理用Dataset比較好些

可以減少對數(shù)據(jù)庫的連接操作。優(yōu)點:只需連接一次就可close于數(shù)據(jù)庫的連接。
    一般情況下,讀取大量數(shù)據(jù),對返回數(shù)據(jù)不做大量處理用SqlDataReader.對返回數(shù)據(jù)大量處理用datset比較合適.對

SqlDataReader和Dataset的選擇取決于程序功能的實現(xiàn)。

二、 ExecuteNonQuery和ExecuteScalar
    對數(shù)據(jù)的更新不需要返回結果集,建議使用ExecuteNonQuery。由于不返回結果集可省掉網(wǎng)絡數(shù)據(jù)傳輸。它僅僅返回受

影響的行數(shù)。如果只需更新數(shù)據(jù)用ExecuteNonQuery性能的開銷比較小。
    ExecuteScalar它只返回結果集中第一行的第一列。使用 ExecuteScalar 方法從數(shù)據(jù)庫中檢索單個值(例如id號)。與使

用 ExecuteReader 方法, 返回的數(shù)據(jù)執(zhí)行生成單個值所需的操作相比,此操作需要的代碼較少。
    只需更新數(shù)據(jù)用ExecuteNonQuery.單個值的查詢使用ExecuteScalar 。
數(shù)據(jù)綁定的選擇
三、 數(shù)據(jù)的綁定DataBinder
    一般的綁定方法<%# DataBinder.Eval(Container.DataItem, "字段名") %> 用DataBinder.eval 綁定不必關心數(shù)據(jù)來源

(Dataread或dataset)。不必關心數(shù)據(jù)的類型eval會把這個數(shù)據(jù)對象轉換為一個字符串。在底層綁定做了很多工作,使用了反

射性能。正因為使用方便了,但卻影響了數(shù)據(jù)性能。
    來看下<%# DataBinder.Eval(Container.DataItem, "字段名") %>。當于dataset綁定時,DataItem其實式一個

DataRowView(如果綁定的是一個數(shù)據(jù)讀取器(dataread)它就是一個IdataRecord。)因此直接轉換成DataRowView的話

,將會給性能帶來很大提升。.
    <%# ctype(Container.DataItem,DataRowView).Row("字段名") %>
    對數(shù)據(jù)的綁定建議使用<%# ctype(Container.DataItem,DataRowView).Row("字段名") %>。數(shù)據(jù)量大的時候可提高幾百倍

的速度。使用時注意2方面:1.需在頁面添加<%@ Import namespace="System.Data"%>.2.注意字段名的大小寫(要特別注

意)。如果和查詢的不一致,在某些情況下會導致比<%# DataBinder.Eval(Container.DataItem, "字段名") %>還要慢。如果

想進一步提高速度,可采用<%# ctype(Container.DataItem,DataRowView).Row(0) %>的方法。不過其可讀性不高。

    以上的是vb.net的寫法。在c#中:<@% ((DataRowView)Container.DataItem)["字段名"] %>

 

一、 應用Ado.net的一些思考原則
    1. 根據(jù)數(shù)據(jù)使用的方式來設計數(shù)據(jù)訪問層
    2. 緩存數(shù)據(jù),避免不必要的操作
    3. 使用服務帳戶進行連接
    4. 必要時申請,盡早釋放
    5. 關閉可關閉的資源
    6. 減少往返
    7. 僅返回需要的數(shù)據(jù)
    8. 選擇適當?shù)氖聞疹愋?br />     9. 使用存儲過程

二、 Connection
    數(shù)據(jù)庫連接是一種共享資源,并且打開和關閉的開銷較大。Ado.net默認啟用了連接池機制,關閉連接不會真的關閉物理

連接,而只是把連接放回到連接池中。因為池中共享的連接資源始終是有限的,如果在使用連接后不盡快關閉連接,
那么就有可能導致申請連接的線程被阻塞住,影響整個系統(tǒng)的性能表現(xiàn)。
    1、在方法中打開和關閉連接
    這個原則有幾層含義:
    1)主要目的是為了做到必要時申請和盡早釋放
    2)不要在類的構造函數(shù)中打開連接、在析構函數(shù)中釋放連接。因為這將依賴于垃圾回收,而垃圾回收只受內存影響,
回收時機不定
    3)不要在方法之間傳遞連接,這往往導致連接保持打開的時間過長

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進入論壇

發(fā)表評論 (308人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號