2010-02-14 170 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