Symmetric Multiple Processor (SMP) Utilization

A cornerstone of SPD Server's power is the ability to perform parallel processing. Parallel processing uses multiple processors to execute more than one set of instructions, or threads, concurrently. SPD Server is oriented to exploit parallelism whenever it can improve transaction times and processor utilization.
A fundamental question about parallelism is whether using additional CPUs on a specific problem will deliver data faster. Extra CPUs do not guarantee faster results every time. The amount of CPU-intensive work that a thread must do needs to last long enough to justify the cost of the thread. The cost of the thread is creating it, managing it, and interacting with other threads involved in the same parallel algorithm.
If not properly matched to the workload, the parallel algorithm can use more CPU time without reducing data delivery time. Additional threads can create conflicting demands for critical system resources such as physical memory. Excessive execution times can occur if too many threads attempt to access a large table at the same time, because many threads demand large amounts of physical memory. Extreme resource constraints can result in slower overall processing.
SPD Server focuses on the following areas to speed overall processing using parallelism:
  • User-definable parallel execution blocks for SQL Pass-Through statements
  • Parallel aggregation for common summary functions when performing SELECT [...] GROUP BY statements
  • WHERE clause evaluation for indexed and non-indexed strategies
  • Overlapped table and concurrent index updates when appending to tables
  • Index creation when creating multiple indexes
  • Optimize PROC SORT BY clauses
  • Pipelined read-ahead when concurrently accessing multiple tables