Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Ignite also uses special component that manages information about pages currently available in memory (FullPageIdTable). There is one page ID table per memory segment. This table manages mapping from Page ID to relative pointer map (rowAddr) within unsafe segment. This table is used to check if page is actually available in memory or is to be loaded.

As a result of these changes: SQL query now can start running without full data available in memory. For recently started cluster first time SQL query run will be, of cause, slower.

If memory amount less than whole index size, Ignite still can operate. When free memory amount will be insufficient to allocate new page, some page will be removed from RAM back to disk. Removal decision is based on latest touch time.

Algorithm used are LRU-S/LRU 2, see also Variants on LRU is Random LRU.

Page based eviction

Let's suppose RAM memory is fully filled with pages, and it is required to allocate new. It is required to evict some page from memory

...

Algorithm used instead is Random-LRU (most recent access timestamp is stored for a data page). This algorihtm is used always if Persistent Data store mode enabled.

Entry eviction

Eviction is used not only in Ignite Persistent Store - mode. Same technique is required if Ignite is used as fast access cache with 3rd party DB as persistence.

...

There is second option for eviction if Persitent Data store is not enabled. In that algorithm two most recent access timestamps are stored for every data page.

...