Vertical, horizontal, and pipelined parallelism

Adaptive Server supports horizontal and vertical parallelism for query execution. Vertical parallelism is the ability to run multiple operators simultaneously by employing different system resources such as CPUs, disks, and so on. Horizontal parallelism is the ability to run multiple instances of an operator on the specified portion of the data.

The way you partition your data greatly affects the efficiency horizontal parallelism. The logical partitioning of data is useful in operational decision-support systems (DSS) queries where large volumes of data are being processed.

See Chapter 10, “Partitioning Tables and Indexes,” in the Transact-SQL User’s Guide and the Performance and Tuning Series: Physical Database Tuning guide for a more detailed discussion of partitioning on Adaptive Server. Understanding different types of partitioning is a prerequisite to understanding this chapter.

Adaptive Server also supports pipelined parallelism. Pipelining is a form of vertical parallelism in which intermediate results are piped to higher operators in a query tree. The output of one operator is used as input for another operator. The operator used as input can run simultaneously with the operator feeding the data, which is an essential element in pipelined parallelism. Use parallelism only when multiple resources like disks and CPUs are available. Using parallelism can be detrimental if your system is not configured for resources that can work in tandem. In addition, data must be spread across disk resources in a way that closely ties the logical partitioning of the data with the physical partitioning on parallel devices. The biggest challenge for a parallel system is to control the correct granularity of parallelism. If parallelism is too finely grained, communication and synchronization overhead can offset any benefit that is obtained from parallel operations. Making parallelism too coarse does not permit proper scaling.