Near Cache GetAll Call Taking Longer for Front Cache Misses (Doc ID 2170966.1)

Last updated on AUGUST 12, 2016

Applies to:

Oracle Coherence - Version 3.7.1 to 12.1.3.0.5 [Release AS10g to 12c]
Information in this document applies to any platform.

Symptoms

On : 12.1.3.0.3 version, Oracle Coherence

The performance of getAll() when using a near cache is very poor when there are front cache misses. When the front cache is empty, calling getAll() takes slightly longer than 1ms per key. So, for a getAll() query of 50k keys it takes 50+ seconds. Querying the back cache directly results in substantially better performance, eg 1 or 2 seconds total for large objects.

In the log lines below queried for the same set of 31,935 keys using getAll() on the back cache directly via ((NearCache)cache).getBackCache().getAll(). Then executed cache.getAll() with an empty front cache and then again with a populated front cache.

08:22:11.715 getAll() from back cache takes:3,745.114ms size:31,935
08:22:47.505 getAll() from front cache takes:35,788.594ms size:31,935
08:22:47.515 getAll() from front cache takes:9.801ms size:31,935

As you can see, retrieving the entries directly from the storage nodes took 3.7 seconds but it took 35.7s when using the near cache. Then, as expected, with a populated front cache, subsequent queries took less than 10ms. The front cache miss penalty should not be 9x that of loading directly from the back cache.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms