SPD Server uses parallel
processing where possible to increase performance. 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
I/O 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