8.1.1 In-Memory OLTP and Consolidation Acceleration

Oracle Exadata Storage Servers add a new memory cache in front of flash memory. This is similar to how the current flash cache is in front of hard disks. This feature provides 100 microsecond (µs) online transaction processing (OLTP) read IO latency, which is 2.5 times lower than the 250 μs flash OLTP read IO latency. You can use existing memory upgrade kits to add more memory to storage servers to take advantage of this feature.

Cell RAM cache is a cache in front of the Flash Cache on storage servers and is extension of the database cache. It is faster than the Flash Cache, but has smaller capacity. When buffers are aged out of the database buffer cache, the database notifies the cells so that the cell RAM cache can be populated with these buffers according to caching policies. These buffers are exclusively cached in the cell RAM cache. If a data block needs to be returned to the database buffer cache, then the buffer, if present, is evicted from the cell RAM cache. The cell RAM cache is an exclusive cache — the data block is present only in the cell RAM cache or in the database buffer cache, but not in both.

During read operations, if a data block is not found in the database buffer cache (cache miss), then the database issues a read for the data block from the cell. CELLSRV checks the RAM cache before accessing a lower layer in the IO stack (flash memory or hard disk):

  • If the data block is found in the RAM cache, then the data block is returned synchronously to the database. If the data block is going to be cached in database buffer cache, then the storage server evicts the data block from RAM cache.

  • If the data block is not found in RAM cache, then the storage server looks in the Flash cache. If the data block is not found in the Flash cache, then the data block is read from disk. The data block is returned to the database, but the data block is not added to the RAM cache.

During write operations, the database issues a write for a data block to the storage server. Cell Server (CELLSRV) checks the RAM cache before accessing a lower layer in the IO stack (Flash Cache or hard disk):

  • If the data block is found in the RAM cache, then CELLSRV invalidates the corresponding cache line in the RAM cache, and sends the data block to the lower layer to be written to disk. The RAM cache is not populated.

  • If the data block is not found in RAM cache, then the storage server sends the data block to the lower layer to be written to disk. The RAM cache is not populated.

Unlike the flash cache, the RAM cache on the storage servers is an exclusive cache — the data block stored is present either in RAM cache or in the buffer cache of the database, but not both. When the database evicts a data block from buffer cache, it instructs CELLSRV to populate the data block in the RAM cache. CELLSRV populates the RAM cache in an asynchronous manner.

In the event of storage server failure on the primary mirror, the database sends the RAM cache population to the secondary mirror, so that the blocks are now cached in the RAM cache for the secondary mirror. When the primary mirror comes back to online state, the blocks are populated back in the primary mirror’s RAM cache.

A new Memory Cache section is available in the AWR report for monitoring RAM cache status and activities.

Minimum requirements:

  • Oracle Exadata System Software 18c (18.1.0)

  • Oracle Exadata Storage Server X6 or X7

  • Oracle Database version 12.2.0.1 April 2018 DBRU or 18.1 or higher