ADO.NET串連池FAQ
來源:互聯網
上載者:User
ado 摘要
串連池允許應用程式從串連池中獲得一個串連並使用這個串連,而不需要為每一個串連請求重建立立一個串連。一旦一個新的串連被建立並且放置在串連池中,應用程式就可以重複使用這個串連而不必實施整個資料庫連接建立過程。
當應用程式請求一個串連時,串連池為該應用程式分配一個串連而不是重建立立一個串連;當應用程式使用完串連後,該串連被歸還給串連池而不是直接釋放。
如何?串連池
確保你每一次的串連使用相同的連接字串(和串連池相同);只有連接字串相同時串連池才會工作。如果連接字串不相同,應用程式就不會使用串連池而是建立一個新的串連。
優點
使用串連池的最主要的優點是效能。建立一個新的資料庫連接所耗費的時間主要取決於網路的速度以及應用程式和資料庫伺服器的(網路)距離,而且這個過程通常是一個很耗時的過程。而採用資料庫連接池後,資料庫連接請求可以直接通過串連池滿足而不需要為該請求重新串連、認證到資料庫伺服器,這樣就節省了時間。
缺點
資料庫連接池中可能存在著多個沒有被使用的串連一直串連著資料庫(這意味著資源的浪費)。
技巧和提示
1. 當你需要資料庫連接時才去建立串連池,而不是提前建立。一旦你使用完串連立即關閉它,不要等到垃圾收集器來處理它。
2. 在關閉資料庫連接前確保關閉了所有使用者定義的事務。
3. 不要關閉資料庫中所有的串連,至少保證串連池中有一個串連可用。如果記憶體和其他資源是你必須首先考慮的問題,可以關閉所有的串連,然後在下一個請求到來時建立串連池。
串連池FAQ
1. 何時建立串連池?
當第一個串連請求到來時建立串連池;串連池的建立由資料庫連接的串連字元創來決定。每一個串連池都與一個不同的連接字串相關。當一個新的串連請求到來時如果連接字串和串連池使用的字串相同,就從串連池取出一個串連;如果不相同,就建立一個串連池。
2. 何時關閉串連池?
當串連池中的所有串連都已經關閉時關閉串連池。
3. 當串連池中的串連都已經用完,而有新的串連請求到來時會發生什嗎?
當串連池已經達到它的最大串連數目時,有新的串連請求到來時,新的串連請求將放置到串連隊列中。當有串連釋放給串連池時,串連池將新釋放的串連分配給在隊列中排隊的串連請求。你可以調用close和dispose將串連歸還給串連池。
4. 我應該如何允許串連池?
對於.NET應用程式而言,預設為允許串連池。(這意味著你可以不必為這件事情做任何的事情)當然,如果你可以在SQLConnection對象的連接字串中加進Pooling=true;確保你的應用程式允許串連池的使用。
5. 我應該如何禁止串連池?
ADO.NET預設為允許資料庫連接池,如果你希望禁止串連池,可以使用如下的方式:
1) 使用SQLConnection對象時,往連接字串加入如下內容:Pooling=False;
2) 使用OLEDBConnection對象時,往連接字串加入如下內容:OLE DB Services=-4;