0

Does UniData (Rocket U2) only allow one query or command to run at a time per connection?

I know each connection has a process or two (udapi_server/slave/etc. I believe), and we pool connections via UniObjects connection pooling. I know there have been optimizations to the UniRPC service in recent releases allowing threaded connection acceptance, but my suspicion is that even with that only one query is executed at a time on each connection synchronously.

i.e. if you have a maximum of 10 pooled connections and 10 long running queries, nothing else is even starting until one process completes its query - even if they are all I/O bound and CPU idle.

Tony B
  • 159
  • 6
  • 1
    I don't want to answer the question, because I have no special insight other than as a user, but I'll offer an uniformed comment. I believe you're correct and each connection is single threaded and will block. In a previous system, we would write a request to a file/table and have a phantom pulling records out for processing as a very primitive message queue, for those longer lived requests (in that example it was creating PDF documents). – Ian McGowan Dec 03 '19 at 18:07

1 Answers1

0

In connection pooling the process using the connection needs to finish prior to another request being accepted and using the same CP process. Connection pooling is ideal for small requests. Large queries returning the entire result set at once will tie up the CP process, and cause other requests for a connection to queue up.

Ian provided one possible solution, and I expect there are many ways you could break up the request to smaller requests that would not tie up the connection pooling licenses for prolonged periods of time.

Mike
  • 194
  • 11