国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET性能優化小結(ASP.NET&C#)

2024-07-10 12:41:58
字體:
來源:轉載
供稿:網友
ASP.NET:

一、返回多個數據集

  檢查你的訪問數據庫的代碼,看是否存在著要返回多次的請求。每次往返降低了你的應用程序的每秒能夠響應請求的次數。通過在單個數據庫請求中返回多個結果集,可以減少與數據庫通信的時間,使你的系統具有擴展性,也可以減少數據庫服務器響應請求的工作量。

  如果用動態的SQL語句來返回多個數據集,那用存儲過程來替代動態的SQL語句會更好些。是否把業務邏輯寫到存儲過程中,這個有點爭議。但是我認為,把業務邏輯寫到存儲過程里面可以限制返回結果集的大小,減小網絡數據的流量,在邏輯層也不用在過濾數據,這是一個好事情。

  用SqlCommand對象的ExecuteReader方法返回一個強類型的業務對象,再調用NextResult方法來移動數據集指針來定位數據集。返回多個ArrayList強類型對象。只從數據庫中返回你需要的數據可以大大的減小你的服務器所耗用的內存。

二、對數據進行分頁

  ASP.NET的DataGrid有一個非常有用的功能:分頁。如果DataGrid允許分頁,在某一時刻它只下載某一頁的數據,另外,它有一個數據分頁的濟覽導航欄,它讓你可以選擇瀏覽某一頁,而且每次只下載一頁的數據。

  但是它有一個小小的缺點,就是你必須把所有的數據都綁定到DataGrid中。也就是說,你的數據層必須返回所有的數據,然后DataGrid再根據當前頁過濾出當前頁所需要的數據顯示出來。如果有一個一萬條記錄的結果集要用DataGrid進行分頁,假設DataGrid每頁只顯示25條數據,那就意味著每次請求都有9975條數據都是要丟棄的。每次請求都要返回這么大的數據集,對應用程序的性能影響是非常大的。

  一個好的解決方案是寫一個分頁的存儲過程,例如對Northwind數據庫orders表的分頁存儲過程。你只需要傳當前頁碼,每頁顯示的條數兩個參數進來,存儲過程會返回相應的結果。

  在服務器端,專門寫了一個分頁的控件來處理數據的分頁,在一個存儲過程里面返回了兩個結果集:數據記錄總數和要求的結果集。

  返回的記錄總數取決于要執行查詢,例如,一個where條件可以限制返回的結果集的大小。因為在分頁界面中必須要根據數據集記錄的大小來計算總的頁數,所以必須要返回結果集的記錄數。例如,如果一共有1000000條記錄,如果用where條件就可以過濾成只返回1000條記錄,存儲過程的分頁邏輯應該知道返回那些需要顯示的數據。

三、連接池

  用TCP來連接你的應用程序與數據庫是一件昂貴的事情(很費時的事情),微軟的開發者可以通過用連接池來反復的使用數據庫的連接。比起每次請求都用TCP來連一次數據庫,連接池只有在不存在有效的連接時才新建一個TCP 連接。當關閉一個連接的時候,它會被放到池中,它仍然會保持與數據庫的連接,這樣就可以減少與數據庫的TCP連接次數。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通榆县| 西乡县| 阿城市| 高邮市| 宣恩县| 乌审旗| 东辽县| 武夷山市| 法库县| 玉山县| 武鸣县| 临泽县| 十堰市| 富锦市| 临清市| 曲阜市| 远安县| 丽水市| 丁青县| 宜春市| 郧西县| 乐安县| 井研县| 琼海市| 且末县| 梓潼县| 黑河市| 通辽市| 江油市| 宝山区| 大关县| 衡东县| 奉新县| 永新县| 金坛市| 河间市| 通河县| 藁城市| 大竹县| 临海市| 宜昌市|