我的程式優化 儘量減少資料庫連線操作

2022-02-02 21:58:00 字數 1517 閱讀 9529

最近做乙個專案,做的比較鬱悶,現在把專案經驗總結在這裡。專案的主要功能就是為第三方程式提供資料,並根據客戶端的呼叫提供資料更新。我的程式屬於服務端。服務端以站點形式部署,以xml的資料格式輸出。

專案以我自己的設計編碼完成,並整合測試。初始化資料時,問題出現了。剛開始體現在客戶端接受資料很慢。

測試環境環境下,資料庫伺服器部署在國外,**部署在公司內部,而且我一直認為我的程式在資料庫資料處理這裡已經做了足夠的優化,包括索引和主鍵已經做到了合理使用。綜上所述,起初的速度問題一直沒有引起我的關注。

然而最後問題的關鍵恰恰出在資料庫連線查詢方面,頻繁查詢導致資料初始化速度很慢。

剛開始我採取的方法是即用即查:需要資料的時候就從資料庫查,有比較多的單錶查詢返回單個欄位的情況。假如我有大概3000條左右的資料集合,我迴圈取出其中的每一條,再從其它資料表裡查詢得到需要的字段,這樣無故增加了3000多次資料庫連線和關閉操作,當網路速度不理想時,程式速度就無法忍耐了。

堅持一條原則:儘量減少資料庫連線操作。跟前端開發優化中的盡量少http請求類似。

最終我採取的方案是將所需要的資料經過多個資料表統一放到乙個list物件中,也就是放到記憶體中,在根據linq查詢其中的每條資料,這樣速度會快很多。這樣似乎破壞力乙個原則,之前我遵循的多表查詢最好不要inner join3個以上的表,而這次出現了多次乙個sql語句就inner join3個表以上的情況.雖然破壞了這個原則,但是相比速度極慢,連功能都實現不了的情況,顯然inner join 也可以讓人接受。

最近做乙個專案,做的比較鬱悶,現在把專案經驗總結在這裡。專案的主要功能就是為第三方程式提供資料,並根據客戶端的呼叫提供資料更新。我的程式屬於服務端。服務端以站點形式部署,以xml的資料格式輸出。

專案以我自己的設計編碼完成,並整合測試。初始化資料時,問題出現了。剛開始體現在客戶端接受資料很慢。

測試環境環境下,資料庫伺服器部署在國外,**部署在公司內部,而且我一直認為我的程式在資料庫資料處理這裡已經做了足夠的優化,包括索引和主鍵已經做到了合理使用。綜上所述,起初的速度問題一直沒有引起我的關注。

然而最後問題的關鍵恰恰出在資料庫連線查詢方面,頻繁查詢導致資料初始化速度很慢。

剛開始我採取的方法是即用即查:需要資料的時候就從資料庫查,有比較多的單錶查詢返回單個欄位的情況。假如我有大概3000條左右的資料集合,我迴圈取出其中的每一條,再從其它資料表裡查詢得到需要的字段,這樣無故增加了3000多次資料庫連線和關閉操作,當網路速度不理想時,程式速度就無法忍耐了。

堅持一條原則:儘量減少資料庫連線操作。跟前端開發優化中的盡量少http請求類似。

最終我採取的方案是將所需要的資料經過多個資料表統一放到乙個list物件中,也就是放到記憶體中,在根據linq查詢其中的每條資料,這樣速度會快很多。這樣似乎破壞力乙個原則,之前我遵循的多表查詢最好不要inner join3個以上的表,而這次出現了多次乙個sql語句就inner join3個表以上的情況.雖然破壞了這個原則,但是相比速度極慢,連功能都實現不了的情況,顯然inner join 也可以讓人接受。

mybatis效能優化之減少資料庫連線

做效能優化的最重要的功能就是減少資料庫的互動,很多程式設計師一般在開發的時候只考慮簡單的實現功能,不管業務簡單複雜,只要實現就行。mybatis有個重要的功能就是考慮在聯合查詢時技巧 jdbctype varchar select t.id,t.name,s.t s id,s.sid,s.sname...

mybatis效能優化之減少資料庫連線

做效能優化的最重要的功能就是減少資料庫的互動,很多程式設計師一般在開發的時候只考慮簡單的實現功能,不管業務簡單複雜,只要實現就行。mybatis有個重要的功能就是考慮在聯合查詢時技巧 jdbctype varchar select t.id,t.name,s.t s id,s.sid,s.sname...

mybatis效能優化之減少資料庫連線

做效能優化的最重要的功能就是減少資料庫的互動,很多程式設計師一般在開發的時候只考慮簡單的實現功能,不管業務簡單複雜,只要實現就行。mybatis有個重要的功能就是考慮在聯合查詢時技巧 select t.id,t.name,s.t s id,s.sid,s.sname from teacher t j...