Prior to fSeries version 3.4 the data groups in a DSD were executed one at a time in the order in which the DSD designer decided. Since 3.4 by default fData will execute data groups asynchronously as much as it is able to.
If the first data group is not dependent on any other it can be executed straight away. If the next data group is also not dependent on any other it can be run at the same time as the first. And so on.
Since 3.4, fData determines the dependencies between data groups and decides on the correct sequence to execute data groups (see Data Group Dependencies). If your DSD is set to run “async” fData will execute every data group as soon as it can, each waiting only for any on which it is dependent to be complete.
If, for example, you have a Chronology DSD that gathers data from fifteen different database tables, they can all be executed together. The chronology merge data group will wait until the last of its base data groups has completed and then merge all fifteen. This is potentially a significant performance improvement.
If you are using fRemote to gather data from other fSeries servers, again each server will be requested at the same time and your overall DSD completed once all servers have responded.
This process applies to the top level of data gathering (all top level data groups and the first pass of all child data groups).
New DSDs are set to execute “async” by default but this can be switched off under the Advanced options of a DSD. Similarly, existing DSDs can be switched to “async” by checking the Advanced option.