asp.net程序優(yōu)化 盡量減少數(shù)據(jù)庫連接操作
更新時間:2012年05月02日 23:26:49 作者:
最近做一個項目,做的比較郁悶,現(xiàn)在把項目經(jīng)驗總結(jié)在這里。項目的主要功能就是為第三方程序提供數(shù)據(jù),并根據(jù)客戶端的調(diào)用提供數(shù)據(jù)更新。我的程序?qū)儆诜斩?。服務端以站點形式部署,以Xml的數(shù)據(jù)格式輸出
項目以我自己的設計編碼完成,并整合測試。初始化數(shù)據(jù)時,問題出現(xiàn)了。剛開始體現(xiàn)在客戶端接受數(shù)據(jù)很慢。測試環(huán)境環(huán)境下,數(shù)據(jù)庫服務器部署在國外,網(wǎng)站部署在公司內(nèi)部,而且我一直認為我的程序在數(shù)據(jù)庫數(shù)據(jù)處理這里已經(jīng)做了足夠的優(yōu)化,包括索引和主鍵已經(jīng)做到了合理使用。綜上所述,起初的速度問題一直沒有引起我的關注。
然而最后問題的關鍵恰恰出在數(shù)據(jù)庫連接查詢方面,頻繁查詢導致數(shù)據(jù)初始化速度很慢。剛開始我采取的方法是即用即查:需要數(shù)據(jù)的時候就從數(shù)據(jù)庫查,有比較多的單表查詢返回單個字段的情況。假如我有大概3000條左右的數(shù)據(jù)集合,我循環(huán)取出其中的每一條,再從其它數(shù)據(jù)表里查詢得到需要的字段,這樣無故增加了3000多次數(shù)據(jù)庫連接和關閉操作,當網(wǎng)絡速度不理想時,程序速度就無法忍耐了。
堅持一條原則:盡量減少數(shù)據(jù)庫連接操作。跟前端開發(fā)優(yōu)化中的盡量少Http請求類似。
最終我采取的方案是將所需要的數(shù)據(jù)經(jīng)過多個數(shù)據(jù)表統(tǒng)一放到一個List對象中,也就是放到內(nèi)存中,在根據(jù)LINQ查詢其中的每條數(shù)據(jù),這樣速度會快很多。這樣似乎破壞力一個原則,之前我遵循的多表查詢最好不要inner join3個以上的表,而這次出現(xiàn)了多次一個sql語句就inner join3個表以上的情況.雖然破壞了這個原則,但是相比速度極慢,連功能都實現(xiàn)不了的情況,顯然inner join 也可以讓人接受。
然而最后問題的關鍵恰恰出在數(shù)據(jù)庫連接查詢方面,頻繁查詢導致數(shù)據(jù)初始化速度很慢。剛開始我采取的方法是即用即查:需要數(shù)據(jù)的時候就從數(shù)據(jù)庫查,有比較多的單表查詢返回單個字段的情況。假如我有大概3000條左右的數(shù)據(jù)集合,我循環(huán)取出其中的每一條,再從其它數(shù)據(jù)表里查詢得到需要的字段,這樣無故增加了3000多次數(shù)據(jù)庫連接和關閉操作,當網(wǎng)絡速度不理想時,程序速度就無法忍耐了。
堅持一條原則:盡量減少數(shù)據(jù)庫連接操作。跟前端開發(fā)優(yōu)化中的盡量少Http請求類似。
最終我采取的方案是將所需要的數(shù)據(jù)經(jīng)過多個數(shù)據(jù)表統(tǒng)一放到一個List對象中,也就是放到內(nèi)存中,在根據(jù)LINQ查詢其中的每條數(shù)據(jù),這樣速度會快很多。這樣似乎破壞力一個原則,之前我遵循的多表查詢最好不要inner join3個以上的表,而這次出現(xiàn)了多次一個sql語句就inner join3個表以上的情況.雖然破壞了這個原則,但是相比速度極慢,連功能都實現(xiàn)不了的情況,顯然inner join 也可以讓人接受。
您可能感興趣的文章:
- 向asp.Net進發(fā) 數(shù)據(jù)庫連接操作
- asp.net Accee數(shù)據(jù)庫連接不穩(wěn)定解決方案
- ASP.NET2.0 SQL Server數(shù)據(jù)庫連接詳解
- asp.net 數(shù)據(jù)庫連接類代碼(SQL)
- asp.net LINQ中數(shù)據(jù)庫連接字符串的問題
- asp.net 數(shù)據(jù)庫連接池淺析
- ASP.NET web.config中數(shù)據(jù)庫連接字符串connectionStrings節(jié)的配置方法
- 在ASP.NET 2.0中操作數(shù)據(jù)之六十八:為DataTable添加額外的列
- 在ASP.NET 2.0中操作數(shù)據(jù)之六十九:處理Computed Columns列
- 在ASP.NET 2.0中操作數(shù)據(jù)之七十:配置數(shù)據(jù)庫連接和命令等級設置
相關文章
C#/.NET讀取或修改文件的創(chuàng)建時間及修改時間詳解
這篇文章主要給大家介紹了關于C#/.NET讀取或修改文件的創(chuàng)建時間及修改時間的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08IE和火狐中模仿Click事件及提交到新窗口總結(jié)(asp.net)
在程序中去模擬一個click事件是可以的,如果這個click事件是來自<a>標簽的,那如果希望得到單擊按鈕的效果,IE可以,但火狐無法實現(xiàn)2012-01-01asp.net?Core中同名服務注冊的實現(xiàn)代碼
Asp.Net?Core中自帶了容器,同時也可以使用AutoFac替換掉默認的容器,以下為兩種方式同名服務的注冊實現(xiàn),對asp.net?Core服務注冊的實現(xiàn)代碼感興趣的朋友一起看看吧2022-03-03asp.net關于onpropertychange和oninput事件實現(xiàn)代碼
文本框,數(shù)據(jù)列表,當在文本框中輸入條件時需要實時刷新數(shù)據(jù)列表,而且需要滿足多瀏覽器(IE6.0/7.0/8.0,FireFox,Opera,google chrome,Safair)其功能類似google的智能匹配,我是用asp.net實現(xiàn)的。2009-11-11.Net整合Json實現(xiàn)REST服務客戶端的方法詳解
這篇文章主要給大家介紹了關于.Net整合Json實現(xiàn)REST服務客戶端的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-01-01asp.net access添加返回自遞增id的實現(xiàn)方法
今天花了一點時間研究了這個問題,除此之外,還順帶研究了小孔子cms添加數(shù)據(jù)的過程,access添加返回自遞增id也是從小孔子cms中研究出來的。2008-08-08