在我的项目中,开发人员在 Oracle 12c 上使用单个连接实例而不是连接池。
使用池是一种常见的做法,Oracle本身会记录它:http://docs.oracle.com/database/121/JJUCP/get_started.htm#JJUCP8120。
13.1.1创建语句
每个Connection对象都可以创建多个可以由程序同时使用的Statement对象。
为什么使用连接池而不是单个连接,如果可以使用语句来管理并发?
答案 0 :(得分:1)
Oracle数据库开发团队强烈反对在多个线程中使用单个连接。这几乎总会导致问题。作为一般规则,我们不会考虑任何问题报告。
连接可以同时打开多个语句和/或结果集,但一次只能执行一个。连接严格是单线程和阻塞。我们试图阻止多个线程同时访问Connection,但有一些奇怪的情况是可能的。这些都可以保证会引起问题。 (由于性能原因,修复或阻止这些情况是不切实际的。只是不要在多个线程之间共享一个连接。)
答案 1 :(得分:0)
如果客户端通过专用服务器连接连接到数据库,则该数据库会话将仅为该客户端提供服务。如果客户端通过共享服务器连接连接到数据库,则给定的数据库会话可以在其生命周期内为多个客户端提供服务。
此外,在任何一个时间点,会话一次只能执行一件事。如果不是这样,那么并行运行就不会产生多个其他会话!
答案 2 :(得分:0)
单个连接不能同时执行多个语句。
答案 3 :(得分:0)
是的,一个连接可以执行多个语句。在多个线程上执行时,程序员将选择连接池设置或多个语句。市场上的大多数数据库可以在一个连接中处理多个语句。