Oracle Scalability : Environmental Factors Affecting Scalability and Performance

When building applications, designers and architects should aim for as close to perfect scalability as possible. This is sometimes called linear scalability, where system throughput is directly proportional to the number of CPUs.This discussion applies to Oracle, SQL Server, IBM DB2 or anyother system that uses the various components mentioned below.

In real life, linear scalability is impossible for reasons beyond a designer's control. However, making the application design and implementation as scalable as possible should ensure that current and future performance objectives can be achieved through expansion of hardware components and the evolution of CPU technology.

Poor application design, implementation, and configuration
The application has the biggest impact on scalability
o Poor schema design can cause expensive SQL that do not scale.
o Poor transaction design can cause locking and serialization problems.
o Poor connection management can cause poor response times and unreliable systems.

Physical implementation of the application can be the weak link
o Systems can move to production environments with bad I/O strategies.
o The production environment could use different execution plans than those generated in testing.
o Memory-intensive applications that allocate a large amount of memory without much thought for freeing the memory at runtime can cause excessive memory usage.
o Inefficient memory usage and memory leaks put a high stress on the operating virtual memory subsystem. This impacts performance and availability.

Incorrect sizing of hardware components
Bad capacity planning of all hardware components is becoming less of a problem as relative hardware prices decrease. However, too much capacity can mask scalability problems as the workload is increased on a system.

Limitations of software components
All software components have scalability and resource usage limitations. This applies to application servers, database servers, and operating systems. Application design should not place demands on the software beyond what it can handle.

Limitations of Hardware Components
Hardware is not perfectly scalable. Most multiprocessor machines can get close to linear scaling with a finite number of CPUs, but after a certain point each additional CPU can increase performance overall, but not proportionately. There might come a time when an additional CPU offers no increase in performance, or even degrades performance. This behavior is very closely linked to the workload and the operating system setup.