When the Optimizer generates a request plan, it parcels out the components of a request into a number of suboperations referred to as concrete steps, which are then dispatched to the appropriate AMPs for execution. An individual step can perform a substantial quantity of work. Within an individual step, multiple relational operations are pipelined for parallel processing. For example, while a table scan is occurring, rows that have already been selected can be pipelined into an ongoing join process. The Optimizer chooses the mix of relational operations within a step very carefully to avoid the possibility of stalls within the pipeline.
The following graphic illustrates how the operations performed by a single step can be pipelined within an AMP: