我正在使用OCCI和C++从Oracle中获取数据。代码运行良好,但我注意到一些性能下降。发生这种情况是因为在rset-> next()迭代中,一些计算需要时间。这种延迟的影响是oracle连接池有一个连接繁忙。如果并发请求需要相同的计算,则可能池中的所有连接都将处于繁忙状态。在关闭前复制Occi :: ResultSet Occi ::连接
Statement *stmt = conn->createStatement (sqlQuery);
ResultSet *rset = stmt->executeQuery();
while (rset->next())
{
//Slow computation takes time
compute()
}
stmt->closeResultSet (rset);
conn->terminateStatement (stmt);
env->terminateConnection (conn);
所以我的问题是:我可以复制OCCI :: ResultSet中以(使用共享指针?)关闭副本后的连接和释放连接后做计算?
go_to_oracle(ResultSet &result) {
Statement *stmt = conn->createStatement (sqlQuery);
ResultSet *rset = stmt->executeQuery();
copy_rset_to_result;
stmt->closeResultSet (rset);
conn->terminateStatement (stmt);
env->terminateConnection (conn);
}
my_method() {
ResultSet *result = NULL
go_to_oracle(result);
//here connection is closed, but we have the data
compute(result) // do this without have connection occupied
}
GitHub上有任何可用的示例?
如果可以创建类对象并将每个原始信息存储到类对象中并将其存储在地图中。当程序加载时执行它。 –