[ADO.NET] Web Form為求快速,可使用 DataReader直接處理資料來源

引述「Professional in ASP.NET 4 in C# and VB / Wrox出版」
在大多數處理 Web Form的情況下,都應使用 DataReader,而不是創建 DataSet。

微軟MSDN網站有提到 -- ASP.NET效能概觀
如果可行的話,請使用 SqlDataReader 類別,因為該類別提供的效能比 DataSet 類別好。




 

 

 

 

[ADO.NET] Web Form為求快速,可使用 DataReader直接處理資料來源


引述「Professional in ASP.NET 4 in C# and VB / Wrox出版」

簡體中文版,ASP.NET 4 高級編程 -- 涵蓋C#和VB(第7版)/ 清華大學出版社
 

http://www.books.com.tw/exep/prod/booksfile.php?item=F011846061

Professional ASP.NET 4 in C# and VB

=============================================================================

今天看書的時候,溫故知新

記錄下這一段,以後上課可以作為補充說明。

 

第八章,   8.1.8  瞭解 DataSet和 DataTable


如果處理 Web Form,每次都會重新創建 Web Form。當發生這種情況,不僅要調用數據源(資料來源)重建頁面,還要重建 DataSet,除非您可以以某種高速緩存(快取) DataSet。


這是一個昂貴的過程,因此在這種情況下最好使用 DataReader直接處理數據源(資料來源)。
在大多數處理 Web Form的情況下,都應使用 DataReader,而不是創建 DataSet。



這一章還提到:

  • 除非要使用 "多個" DataTable,不然的話不需要創建包含一個 DataTable的 DataSet。直接使用 "一個" DataTable即可。
  • 依照實際的狀況,來選擇 DataReader或是 DataSet。



這本簡體中文書,在台灣也能買到。
書本非常~非常,但應有盡有。

 

 

微軟MSDN網站有提到 -- ASP.NET效能概觀
 
使用 SqlDataReader 類別做為快速單向捲動檢視 (Forward-only) 的資料游標
 
SqlDataReader 類別會建立從 SQL Server 資料庫擷取的單向捲動檢視唯讀資料流。 SqlDataReader 類別會使用 SQL Server 的原生 (Native) 網路資料傳輸格式,從資料庫連接中直接讀取資料。 如果可行的話,請使用 SqlDataReader 類別,因為該類別提供的效能比 DataSet 類別好。
例如,繫結資料控制項至 SqlDataSource 控制項時,如果將 DataSourceMode 屬性設為 DataReader,即可達到較佳的效能 (不過,資料讀取器支援的功能比 DataSet 模式少)。SqlDataReader 類別會實作 IEnumerable 介面,可讓您將伺服器控制項繫結至該介面。 
 

 



 

參考「聖殿祭司」老師的大作:當DataGrid遇見100萬筆資料

http://blog.sina.com.tw/4907/article.php?pbgid=4907&entryid=3921   摘錄一段如下:

ADO.NET的問題: 
1.在ADO.NET之中DataSet是一個In Memory的Database,也就是存在於記憶體中的資料庫,一般資料庫中有的基本特性它都有,資料量幾千幾萬筆難不倒它,但若幾十萬筆~100萬筆呢?可能在ASP.NET環境中DataSet就是一個大問題,會非常的不經濟(和ASP.NET、IIS及AP Server運作的方式原理有關,但在這不深入說明),但是它的承載性究竟被設計到多大是一個未知數?!有空大家可以去測試一下… 

2.SqlDataAdapter.Fill(ds)這樣的動作,要耗費多少記憶體空間和運算成本cost?且在你的程式碼之中,因為ASP.NET”無狀態”的特性,若每次DataSet中Fill 8000筆資料,耗費幾十MB~100MB,用完一次就丟棄了,你覺得能負荷多少人?若以我的經驗,如果是DataSet每次用掉100MB記憶體空間,不到10次就會Timeout掉了。 

3.對DataSet而言,即使你一頁只看30筆資料,8000筆-30筆=7970筆,對系統資源而言,不但7970筆資料也要吃掉記體不說,最後耗費系統成本來處理這些沒用的7970筆廢物般的資料,活似個拖油瓶。 

4.DataGrid不分頁一次顯示的話會更慘。 

 

 

DataTable 的行與不行

如同我在本文一開就提到的, DataTable 既然是離線式資料處理的核心工具, 而且其本質就像是個以記憶體為儲存空間的超小型資料庫 (也超快), 所以你應該認清楚它的本質, 才不會誤用它的能力。DataTable (其實附著其上的 DataSet 也是一樣) 可以單獨存在, 也可以直接讀取及寫入資料庫中的資料 (這也是它之所以能夠比 .NET 裡面的其它資料容器更強大的原因), 但是它完全依附於伺服器上的 (揮發性) 記憶體, 這就是它最重大的缺陷。

當你的網站伺服器的同時上線人數到達幾千人的規模時, 我想你絕對會慎重考慮是否應該繼續使用 DataTable。其實, 如果你真的拿 DataTable 來讀入一個龐大資料庫的話, 或許僅區區五個同時上線的使用者, 就會讓你感受到網頁被拖慢了, 還用不了幾千人。

 

 

 

使用DataReader 或是 DataSet?

http://blog.csdn.net/21aspnet/article/details/151224   點選下面圖片可以連回原址

      

      

      

 

 

 

 

 

或參閱以前的文章:

初探ADO.NET #2,DataReader 與 DataSet(資料集)

http://www.dotblogs.com.tw/mis2000lab/archive/2008/08/15/4919.aspx

 

[給初學者的話] 完全沒基礎的話.....請不要來問我 ADO.NET的問題,謝謝~(因為我不可能在短時間內,講得清楚)
http://www.dotblogs.com.tw/mis2000lab/archive/2011/01/14/20808.aspx

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估