【发布时间】:2016-01-13 09:28:21
【问题描述】:
在我的项目中,我们从 c++ 应用程序调用 oracle 过程 借助oracle提供的Pro *C/C++库。
我们有一个大程序,我的想法是将程序分成两部分以实现模块化。但他们的建议是调用该程序一次,然后一次性执行所有工作。
我从他们那里得到的原因是它会导致性能影响,因为应用程序与数据库进行多次交互。
我同意,当应用程序连接数据库,调用过程并最终为每个过程调用断开数据库时,会发生上述情况。但是,我们真正要做的是在启动时创建一个连接池,并重用预先连接的数据库连接来与数据库交互。
我的申请信息:
- 它是
multi-threaded application,每秒处理大约1000个请求,线程池大小为20。目前对于每个请求,我们与数据库通信4次。
编辑:
“PLSQL 和 SQL 之间的切换比其他方式快得多”。 Q1。这与我的实际问题有什么关系?我的问题是将程序分成两个相等的部分。假设我在过程中执行了 4 个查询,我只是将它分成两个过程 a 和过程 b,每个过程将有两个查询。
“调用 PLSQL 的 pro*c 调用会影响性能”。 Q2。你的意思是应用程序(pro *C/C++)和数据库(oracle)之间的通信吗?如果是这样,通信是否会对性能造成很大影响?
在您附加的 ask tom 链接中,“但不要害怕从 PLSQL 调用 SQL - 这是 PLSQL 最擅长的” Q4。当我们从 PLSQL 调用 SQL 时是否会发生上下文切换?因为,按照上面的说法,它似乎对性能没有影响。
【问题讨论】:
-
您是否对其进行了测量以了解对现实世界的影响?
标签: c++ multithreading oracle performance oracle-pro-c