目前正在尝试优化一些代码,并注意到在每个事务之前都会进行连接,并在事务结束时调用断开连接。
根据我之前的经验,我确实注意到调用 connect 很慢。重复执行此操作可能成本非常高...或者是吗?
最佳答案
是的,如果您实际上为每个事务创建和拆除物理连接,那么成本可能会很高,除非您有非常长时间运行的事务。如果您的事务是一百万行的批量加载,则打开和关闭连接的成本可能相当小。另一方面,如果您的事务由表中的单行插入组成,则您的绝大多数时间将花费在打开和关闭连接上。
然而,大多数时候,您有一个三层应用程序,其中中间层维护一个连接池,当中间层代码打开和关闭连接时,它们实际上是在逻辑连接上操作,而不是在逻辑连接上操作。物理连接。打开连接从池中获取连接,业务层执行事务,然后关闭连接只是将连接返回到池中。从数据库的角度来看,没有打开或关闭任何物理连接。如果您实际上正在使用池中的连接,则在每个事务上打开和关闭连接是完全正常的,并且假设您的连接池大小合理,则不会产生太多开销。关于performance - 每个事务的连接/断开连接的 Oracle 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113075/