Database Memory Caches and Other Memory Structures
Oracle Database stores information in memory caches and on disk. Memory access is much faster than disk access. Disk access (physical I/O) takes a significant amount of time, compared to memory access, typically in the order of 10 milliseconds. Physical I/O also increases the CPU resources required due to the path length in device drivers and operating system event schedulers. For this reason, it is more efficient for data requests of frequently accessed objects to be perform by memory, rather than also
requiring disk access. Proper sizing and effective use of Oracle Database memory caches greatly improves database performance.
The main Oracle Database memory caches that affect performance include:
- Database buffer cache: The database buffer cache stores data blocks read from disk.
- Redo log buffer: The redo log buffer stores redo entries of changes made to data blocks in the buffer cache.
- Shared pool: The shared pool caches many different types of data and is mainly comprised of the following components:
[Library cache, Data dictionary cache, Server result cache]
- Large pool: The large pool provides large memory allocations for the following Oracle Database features: [Shared server architecture, Parallel query, Recovery Manager (RMAN)
- Java pool: The Java pool stores session-specific Java code and Java Virtual Machine (JVM) data.
- Streams pool: The Streams pool provides memory for Oracle Streams processes.
- Process-private memory: Process-private memory includes memory used for operations such as sorting and hash joins.
- In-Memory Column Store (IM column store): Starting in Oracle Database 12c Release 1 (12.1.0.2), the IM column store is an optional, static SGA pool that stores copies of tables and partitions. In the IM column store, data is stored in a special columnar format, which improves performance of operations such as scans, joins, and aggregations.