Starting in release 2.2, OrientDB supports caching of command results. Caching command results has been used by other DBMSs and has proven to improve dramatically the following use cases:
- database is mostly read than write
- there are a few heavy queries that return a small result set
- you have available RAM to use for caching results
By default, the command cache is disabled. To enable it, set
command.cache.enabled=true. Look at the Studio page about Command Cache.
There are some settings to tune the command cache. See the table below containing all the available settings.
|command.cache.enabled||Enable command cache||Boolean||false|
|command.cache.evictStrategy||Command cache strategy between: [INVALIDATE_ALL,PER_CLUSTER]||String.class||PER_CLUSTER|
|command.cache.minExecutionTime||Minimum execution time to consider caching result set||Integer.class||10|
|command.cache.maxResultsetSize||Maximum resultset time to consider caching result set||Integer||500|
Using a cache that holds old data could be meaningless, unless you can accept eventual consistency. For this reason, the command cache supports 2 eviction strategies to keep the cache consistent:
- INVALIDATE_ALL to remove all the query results at every Create, Update, and Delete operation. This is faster than PER_CLUSTER if many writes occur.
- PER_CLUSTER to remove all the query results only related to the modified cluster. This operation is more expensive than INVALIDATE_ALL.