TOraQuery / memory and performance within service apps

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
jim.eckels
Posts: 6
Joined: Tue 28 Jan 2014 23:15

TOraQuery / memory and performance within service apps

Post by jim.eckels » Fri 31 Jan 2014 23:20

I have a 64 bit multi-threaded console application that use the ODAC library. This works fine (with exception of a few posts here I am awaiting responses to).

I also have a 64 bit service application (runs as an NT service).

One thing that I have found is that if a table has more than 20+ columns in an insert or update that when the console is run from the command-line .. it runs fine. If is launched as the service (which just calls CreateProcess of that commandline app), there is MASSIVE CPU waste.

I can run the commandline hundreds of times, and it is always about 60 seconds.
When letting the scheduler run the console application, takes upwards of 5 minutes. This are repeatable.

What I observe is that the CPU "kernel" time goes through the roof, effectively killing the performance.

If I remove just a few columns from ONE query (there are hundreds of others that are not "wide") then the service "behaves".

This seems very peculiar that a query (insert) goes from 60 second overall to 5x slow, simply adding more columns. This appears to related the service app going into kernel mode for whereas the commandline remains in user-mode. (viewing task manager, performance, with Kernel also shown). The difference is evident. 10-15% CPU overall for commandline. 90-100% overall for scheduler/service (of which almost all of it is kernel time)

Not sure I've done a great job explaining, but I wanted to post this, and see if anyone else has seen something like this.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: TOraQuery / memory and performance within service apps

Post by AlexP » Wed 07 May 2014 12:42

hello,

Please create a small sample demonstrating the problem and send it to alexp*devart*com.

Post Reply