I've the next situation


   hnd = CreateTHread( func1 );

   // Call fun2()


   return ;


  //Access database to perform some read operation on TAble A


//Access database to perform some read operation on TAble A
// Recursive operations

Things I observed is, fun2() requires a longer duration to accomplish basically use threads approach. Can it be because the THread func and fuc2 are focusing on exactly the same table. Note, there's merely a read operation both in the functions. The AWR report recommended , quantity of query exectutions elevated once the threads approach was adopted

An identical question - Multi-threaded database read access.

Oracle JDBC connects in addition to Oracle native motorists (i guess) can handle handling multithreaded demands ( http://www.cs.umbc.edu/portal/help/oracle8/java.815/a64685/tips1.htm )

However, if it involves implementation within the database engine - this isn't obvious. In the current documentation my understanding is the fact that as lengthy as the request is READONLY without any intent to update no securing would occur and you ought to be visiting a performance boost (atleast minor).

You will find a number of other factors however that see whether the engine would use parallelism. The hardware config from the server (multi-core) etc may also determine whether the query engine they resort to a parallel or queued approach.

Btw the amount of timing difference are the watching both in approaches you have attempted. That which was the magnitude of the data ?

Attempt to change isolation level towards the READ COMMITTED making queries with READ ONLY "clause". It ought to be less limited and permit you to read same tables concurrently.

Use two different connections. Multi-threads same connection accesing same table would always degrade performance, you're placing a stress in connection itself. You did not say which driver you utilize for being able to access, but I have examined an identical approach with JDBC driver in Oracle 10 coupled with performance degradation, I have reckon that SQL instructions are somewhat pipelined one after other if you are using same connection.

Concurrency always cause you to lose performance. You if need concurrency, you'll have to accept this If you do not require it, you should not utilize it!

Some procedures in SQL like "count" perform LOCKs in tables. Are you able to share your SQL?