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ū)儆诜?wù)端。服務(wù)端以站點形式部署,以Xml的數(shù)據(jù)格式輸出
項目以我自己的設(shè)計編碼完成,并整合測試。初始化數(shù)據(jù)時,問題出現(xiàn)了。剛開始體現(xiàn)在客戶端接受數(shù)據(jù)很慢。測試環(huán)境環(huán)境下,數(shù)據(jù)庫服務(wù)器部署在國外,網(wǎng)站部署在公司內(nèi)部,而且我一直認(rèn)為我的程序在數(shù)據(jù)庫數(shù)據(jù)處理這里已經(jīng)做了足夠的優(yōu)化,包括索引和主鍵已經(jīng)做到了合理使用。綜上所述,起初的速度問題一直沒有引起我的關(guān)注。
然而最后問題的關(guān)鍵恰恰出在數(shù)據(jù)庫連接查詢方面,頻繁查詢導(dǎo)致數(shù)據(jù)初始化速度很慢。剛開始我采取的方法是即用即查:需要數(shù)據(jù)的時候就從數(shù)據(jù)庫查,有比較多的單表查詢返回單個字段的情況。假如我有大概3000條左右的數(shù)據(jù)集合,我循環(huán)取出其中的每一條,再從其它數(shù)據(jù)表里查詢得到需要的字段,這樣無故增加了3000多次數(shù)據(jù)庫連接和關(guān)閉操作,當(dāng)網(wǎng)絡(luò)速度不理想時,程序速度就無法忍耐了。
堅持一條原則:盡量減少數(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 也可以讓人接受。
然而最后問題的關(guān)鍵恰恰出在數(shù)據(jù)庫連接查詢方面,頻繁查詢導(dǎo)致數(shù)據(jù)初始化速度很慢。剛開始我采取的方法是即用即查:需要數(shù)據(jù)的時候就從數(shù)據(jù)庫查,有比較多的單表查詢返回單個字段的情況。假如我有大概3000條左右的數(shù)據(jù)集合,我循環(huán)取出其中的每一條,再從其它數(shù)據(jù)表里查詢得到需要的字段,這樣無故增加了3000多次數(shù)據(jù)庫連接和關(guān)閉操作,當(dāng)網(wǎng)絡(luò)速度不理想時,程序速度就無法忍耐了。
堅持一條原則:盡量減少數(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進(jìn)發(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ù)庫連接和命令等級設(shè)置
相關(guān)文章
ASP.NET?Core中創(chuàng)建中間件的方式匯總
ASP.NET?Core中間件(Middleware)是用于處理HTTP請求和響應(yīng)的組件,它們被安排在請求處理管道中,并按順序執(zhí)行,這篇文章主要介紹了ASP.NET?Core中創(chuàng)建中間件的幾種方式,需要的朋友可以參考下2024-07-07
在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法
下面小編就為大家分享一篇在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
ASP.NET設(shè)計網(wǎng)絡(luò)硬盤之查看文件夾實現(xiàn)代碼
下面要介紹的實例包括網(wǎng)上硬盤的許多功能,將一步步為大家進(jìn)行介紹。首先創(chuàng)建工程實例,然后進(jìn)行主界面的設(shè)計,最后對各個功能的實現(xiàn)分別進(jìn)行介紹2012-10-10
asp.net通過HttpModule自動在Url地址上添加參數(shù)
由于項目中有許多頁面需要用到cid參數(shù),所以想通過傳值cid來獲取數(shù)據(jù)。2010-01-01

