我正在使用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上有任何可用的示例?
如果可以創建類對象並將每個原始信息存儲到類對象中並將其存儲在地圖中。當程序加載時執行它。 –