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:
- Standard method that exposes an extended control for asynchronous operation.
- 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.
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)
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%.
Generally, global enabling of asynchronous loading (asynch_fetch=1) did not result in performance decline in our test system.