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. The 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 take 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.
The server focuses on
the following areas to speed overall processing using parallelism:
-
-
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.