Publish date: 2013-02-20

IBProvider 3.14. New asynchronous accelerator for your Firebird and InterBase

The new IBProvider v3.14 has acquired asynchronous loading of the resulting rowsets data.

IBProvider offers two methods for activating this functionality:

  1. Standard method that exposes an extended control for asynchronous operation.
  2. Simplified method by way of using an implicit asynchronous loading.

Standard method for enabling an asynchronous loading

In this case, the asynchronous work of the rowset is set up via the standard command and rowset property «Asynchronous Rowset Processing». You can set up:

  • Blocking asynchronous loading
  • Non-blocking asynchronous loading

Asynchronous loading management interfaces: IDBAsynchStatus and ISSAsynchStatus

After you have enabled asynchronous loading of the rowset, IDBAsynchStatus and ISSAsynchStatus interfaces will become available to you. These interfaces allow you to:

  • Request data on the state of asynchronous loading
  • Terminate asynchronous loading
  • Wait for the end of asynchronous loading

Notification receipt interfaces: IConnectionPointContainer and IDBAsynchNotify

In addition, via IConnectionPointContainer you will be able to connect to asynchronous operation notifications. Connection point interface: IDBAsynchNotify.

In the case of working with Firebird and InterBase via ADODB library, the asynchronous fetch is enabled through definition of adAsyncFetch in Options parameter of ADODB.Command.Execute method.

Simplified method for enabling an asynchronous loading

For cases, when you can’t use a standard method for enabling an asynchronous loading, in IBProvider was added the simplified variant — implicit asynchronous loading. It can be enabled through new initialization property asynch_fetch. The following values can be set up:

  • 0 – implicit asynchronous loading is forbidden
  • 1 — implicit asynchronous loading is always enabled
  • 2 — implicit asynchronous loading is enabled only if the client enables asynchronous initialization (MSSQL)
If you want to use asynchronous loading for MSSQL linked server, define «asynch_fetch=2» in the connection string.

In the simplified mode, the rowsets will not provide interfaces for asynchronous loading management and receipt of notifications.

Performance of asynchronous loading

Performance of asynchronous loading depends on many factors. In our experiments with asynchronous loading, we obtained performance improvement more that 30%.

Comparison of synchronous and asynchronous data processings.

Generally, global enabling of asynchronous loading (asynch_fetch=1) did not result in performance decline in our test system.

Publish date: 2013-02-20. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link required.