Oracle'dan veri almak için C++ ile C++ kullanıyorum. Kod iyi çalışıyor, ancak bazı performans düşüşlerini fark ettim. Bunun nedeni, rset-> next() yinelemesinde bazı hesaplamaların zaman almasıdır. Bu gecikmenin etkisi, oracle bağlantı havuzunun bir bağlantının meşgul olması. Aynı anda talepler aynı hesaplamayı talep ediyorsa, havuzdaki tüm bağlantı belki de BUSY olacaktır. Kopyalama Occi :: Sonuç Occi'yi kapatmadan önce :: Bağlantı
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);
Benim soru: Ben Occi :: ResultSet (? Paylaşılan işaretçi kullanarak) sırayla kopya SONRA bağlantıyı kapatmak ve bağlantıyı bırakmadan sonra hesaplaması yapmak kopyalayabilir miyim?
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'da kullanılabilen örnekler var mı?
Mümkünse, bir sınıf nesnesi oluşturun ve her bir ham bilgiyi sınıf nesnesine depolayın ve bir haritada saklayın. Program yüklendiğinde yapın. –