Package org.h2.util

Class CacheTQ

java.lang.Object
org.h2.util.CacheTQ
All Implemented Interfaces:
Cache

public class CacheTQ extends Object implements Cache
An alternative cache implementation. This implementation uses two caches: a LRU cache and a FIFO cache. Entries are first kept in the FIFO cache, and if referenced again then marked in a hash set. If referenced again, they are moved to the LRU cache. Stream pages are never added to the LRU cache. It is supposed to be more or less scan resistant, and it doesn't cache large rows in the LRU cache.
  • Field Details

  • Constructor Details

    • CacheTQ

      CacheTQ(CacheWriter writer, int maxMemoryKb)
  • Method Details

    • clear

      public void clear()
      Description copied from interface: Cache
      Clear the cache.
      Specified by:
      clear in interface Cache
    • find

      public CacheObject find(int pos)
      Description copied from interface: Cache
      Get an element from the cache if it is available. This will not move the item to the front of the list.
      Specified by:
      find in interface Cache
      Parameters:
      pos - the unique key of the element
      Returns:
      the element or null
    • get

      public CacheObject get(int pos)
      Description copied from interface: Cache
      Get an element in the cache if it is available. This will move the item to the front of the list.
      Specified by:
      get in interface Cache
      Parameters:
      pos - the unique key of the element
      Returns:
      the element or null
    • getAllChanged

      public ArrayList<CacheObject> getAllChanged()
      Description copied from interface: Cache
      Get all objects in the cache that have been changed.
      Specified by:
      getAllChanged in interface Cache
      Returns:
      the list of objects
    • getMaxMemory

      public int getMaxMemory()
      Description copied from interface: Cache
      Get the maximum memory to be used.
      Specified by:
      getMaxMemory in interface Cache
      Returns:
      the maximum size in KB
    • getMemory

      public int getMemory()
      Description copied from interface: Cache
      Get the used size in KB.
      Specified by:
      getMemory in interface Cache
      Returns:
      the current size in KB
    • put

      public void put(CacheObject r)
      Description copied from interface: Cache
      Add an element to the cache. Other items may fall out of the cache because of this. It is not allowed to add the same record twice.
      Specified by:
      put in interface Cache
      Parameters:
      r - the object
    • remove

      public boolean remove(int pos)
      Description copied from interface: Cache
      Remove an object from the cache.
      Specified by:
      remove in interface Cache
      Parameters:
      pos - the unique key of the element
      Returns:
      true if the key was in the cache
    • setMaxMemory

      public void setMaxMemory(int maxMemoryKb)
      Description copied from interface: Cache
      Set the maximum memory to be used by this cache.
      Specified by:
      setMaxMemory in interface Cache
      Parameters:
      maxMemoryKb - the maximum size in KB
    • update

      public CacheObject update(int pos, CacheObject record)
      Description copied from interface: Cache
      Update an element in the cache. This will move the item to the front of the list.
      Specified by:
      update in interface Cache
      Parameters:
      pos - the unique key of the element
      record - the element
      Returns:
      the element