Query Execution Models

Query Execution Services supports the following models:

Model

Description

Synchronous Request and Response

Request is sent and processed returning the response.

Synchronous Request and Synchronous Poll with Chunked Response

Request is sent synchronously and run in the Process Scheduler. Requestor will need to retrieve the results when the process has finished.

Asynchronous Request and Response

Request is sent asynchronously and queued in Integration Broker and processed. The response is returned to the http url specified in the ws addressing soap header. Requestor has the option of requesting a response when the process has finished.

Note: In order to use Integration Broker for asynchronous and synchronous poll message processing Pub/Sub must be active.

See Monitoring Asynchronous Service Operation Transactions, Understanding Messaging Server Administration.

Performance Considerations

Which execution model to run depends on the number of rows and columns returned in the response. Note the following guidelines:

  • Synchronous execution is not recommended for large result sets.

  • Response data that consists of a large number of columns with fewer rows of data has a slower response than response data that consists of fewer columns and more rows, even though the response size may be smaller.

  • Executing synchronous poll query with block size = 0 or Max will result in all data in one block.

  • In synchronous poll execution, the larger the response block, the fewer blocks are returned and total response time for all blocks is shorter, but the user has to wait longer for the response.

  • In synchronous poll execution, if the heap size in the web server is not sufficient to retrieve the large response block, a JAVA out of memory exception will occur.

  • In synchronous poll execution, if a smaller block size (less than 100,000) is used, the result will be too many blocks containing very few rows. Optimal request block size in KB is in the range from 100,000 to 1,000,000.