ASP.NET程式的優化建議資料庫操作
1、用完馬上關閉資料庫連線
訪問資料庫資源需要建立連線、開啟連線和關閉連線幾個操作。這些過程需要多次與資料庫交換資訊以通過身份驗證,比較耗費伺服器資
源。ASP.NET中提供了連線池(Connection Pool)改善開啟和關閉資料庫對效能的影響。系統將使用者的資料庫連線放在連線池中,需要時取出,關閉時收回連線,等待下一次的連線請求。
連線池的大小是有限的,如果在連線池達到最大限度後仍要求建立連線,必然大大影響效能。因此,在建立資料庫連線後只有在真正需要操作時才開啟連線,使用完畢後馬上關閉,從而儘量減少資料庫連線開啟的時間,避免出現超出連線限制的情況。
用(推薦)
using(SqlConnection Conn=new SqlConnection(connstr))
{}//不必顯示關閉
或
try{conn.Open();}
catch{}
finally{conn.Close();}
2、儘量使用儲存過程,並優化查詢語句
儲存過程是儲存在伺服器上的一組預編譯的SQL語句,類似於DOS系統中的批處理檔案。儲存過程具有對資料庫立即訪問的功能,資訊處理極為迅速。使用儲存過程可以避免對命令的多次編譯,在執行一次後其執行規劃就駐留在快取記憶體中,以後需要時只需直接呼叫快取中的二進位制程式碼即可。在 .NET Framework 提供的所有資料訪問方法中,基於 SQL Server 的資料訪問是生成高效能、可縮放 Web 應用程式的推薦選擇。使用託管 SQL Server 提供程式時,可通過使用編譯的儲存過程而不是特殊查詢獲得額外的效能提高。
另外,儲存過程在伺服器端執行,獨立於ASP.NET程式,便於修改,最重要的是它可以減少資料庫操作語句在網路中的傳輸。
優化查詢語句
ASP.NET中ADO連線消耗的資源相當大,SQL語句執行的時間越長,佔用系統資源的時間也越長。因此,儘量使用優化過的SQL語句以減少執行時間。比如,不在查詢語句中包含子查詢語句,儘量只返回有用的資料、欄位,充分利用索引等。
3、只讀資料訪問用SqlDataReader,不要使用DataSet
SqlDataReader 類提供了一種讀取從 SQL Server 資料庫檢索的只進資料流的方法。如果當建立 ASP.NET 應用程式時出現允許您使用它的情況,則 SqlDataReader 類提供比 DataSet 類更高的效能。情況之所以這樣,是因為 SqlDataReader 使用 SQL Server 的本機網路資料傳輸格式從資料庫連線直接讀取資料。另外,SqlDataReader 類實現 IEnumerable 介面,該介面也允許您將資料繫結到伺服器控制元件。DataSet作為一個功能強大的、支援離線的資料庫,其對效能的開銷也相對較大。
Sqldataread優點:讀取資料非常快。如果對返回的資料不需做大量處理的情況下,建議使用SqlDataReader,其效能要比datset好很多。缺點:直到資料讀完才可close掉於資料庫的連線。
Dataset是把資料讀出,快取在記憶體中。缺點:對記憶體的佔用較高。如果對返回的資料需做大量的處理用Dataset比較好些可以減少對資料庫的連線操作。優點:只需連線一次就可close於資料庫的連線。
一般情況下,讀取大量資料,對返回資料不做大量處理用SqlDataReader.對返回資料大量處理用datset比較合適.對SqlDataReader和Dataset的選擇取決於程式功能的實現。
4、資料的繫結DataBinder
一般的繫結方法
用DataBinder.eval 繫結不必關心資料來源(read或dataset)。不必關心資料的型別eval會把這個資料物件轉換為一個字串。在底層繫結做了很多工作,使用了反射效能。正因為使用方便了,但卻影響了資料效能。
來看下。當於dataset繫結時,DataItem其實式一個DataRowView(如果繫結的是一個資料讀取器(dataread)它就是一個 IdataRecord。)因此直接轉換成DataRowView的話,將會給效能帶來很大提升。
對資料的繫結建議使用。使用時注意兩個方面:
1.需在頁面新增.
2.注意欄位名的大小寫(要特別注意)。如果和查詢的不一致,在某些情況下會導致比還要慢。如果想進一步提高速度,可採用的方法。不過其可讀性不高。
以上的是vb.net的寫法。在c#中:
5、返回多個結果集
無論SqlDataReader還是datset,返回多個結果集,然後用rd.NextResult()或ds.Tables[i]來分別處理資料,減少重複連線資料庫的次數。同時儘量用比較高效的SQL代替後續複雜的DataSet二次加工。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-446847/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫優化建議資料庫優化
- MySQL資料庫優化:縮小資料的五點建議VCMySql資料庫優化
- 記一次資料庫的分析和優化建議資料庫優化
- MySQL資料庫設計規範和優化建議MySql資料庫優化
- Java I/O 操作及優化建議Java優化
- 資料庫日常運維中的幾個操作建議資料庫運維
- 資料庫查詢和資料庫(MySQL)索引的最佳化建議資料庫MySql索引
- 資料庫操作規範及SQL書寫建議資料庫SQL
- PHP程式碼優化的40條建議PHP優化
- 優化python程式的幾點建議優化Python
- 改善 ASP.NET MVC 程式碼庫的 5 點建議ASP.NETMVC
- MySql資料庫最佳化的幾條核心建議MySql資料庫
- Redis優化建議Redis優化
- EntityFramework 優化建議Framework優化
- Mysql優化建議MySql優化
- .NET程式的效能要領和優化建議優化
- 【資料庫優化】面向程式設計師的資料庫訪問效能優化法則資料庫優化程式設計師
- 資料庫系統操作規範及SQL書寫建議資料庫SQL
- C\C++程式碼優化的27個建議C++優化
- Zabbix 5.0 優化建議優化
- html前端優化建議HTML前端優化
- 頁面優化建議優化
- mysql優化 | 儲存引擎,建表,索引,sql的優化建議MySql優化儲存引擎索引
- 資料庫優化 - SQL優化資料庫優化SQL
- 優化MySQL的21個建議優化MySql
- oracle資料庫之plsql視覺化操作建表Oracle資料庫SQL視覺化
- ASP.NET MongoDB資料庫操作類ASP.NETMongoDB資料庫
- SequoiaDB資料庫之建議資料庫
- 資料庫優化資料庫優化
- 資料庫的優化需要資料庫優化
- 優化 Webpack 構建效能的幾點建議優化Web
- 優化Webpack構建效能的幾點建議優化Web
- MySQL 調優/優化的 100 個建議MySql優化
- UITableView效能優化的幾點建議UIView優化
- 對SGA和PGA的優化建議優化
- 資料遷移中的資料庫檢查和建議資料庫
- 設計HBase資料庫資料表有關的建議資料庫
- Django資料庫效能優化之 - 使用Python集合操作Django資料庫優化Python