2010-02-14 140 views
3

Hay, 我的系統需要使用相同的連接(異步)執行幾個主要的SQL(在Oracle DB上)。異步處理ODP.NET

這個問題的最佳做法是什麼? 1.打開一個連接並執行不同的線程每個SQL語句(它線程安全的?) 2.每隔SQL語句創建新的連接和「開放+關閉」它

感謝, HEC

回答

4

我們一直在多線程上調用Oracle SQL語句,如果您的數據庫可以處理負載並且不會成爲瓶頸,那麼這可能是最好的。但是,我認爲你需要在將要發佈SQL命令的線程上創建連接。你可以(也可能應該)也使用連接池,所以你的連接將被重用,而不是被重新建立(並且Oracle似乎可以將這些從一個線程重用到另一個線程)。

+0

你是什麼意思使用「連接池」? ODP.NET內置連接池(我只需要在連接字符串上配置它)。對? – 2010-02-15 08:03:48

+1

是的,這就是我所指的連接池。對於我而言,ODP.NET強迫我打開要使用它的線程中的每個連接,但本身會在線程間重用連接(在它自己的連接池中),這只是有點意外(對我來說)。但我想這是強制執行的,以幫助確保客戶端代碼的線程安全。 – 2010-02-15 22:27:18

+0

順便說一下,目前我只使用一個連接並將它傳遞給所有線程,並且它工作得很好......無論如何 - 我認爲它更好地打開連接並在每個線程上「關閉」後綴。感謝你的回答! – 2010-02-16 08:17:35