[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [eclipselink-users] Performance degarde on using caching option
 | 
Are you indicating that there is problem, or just trying to explain your 
results?
More information is required.  Is there a reason you are using the 
checkCacheOnly option instead of the default?  What are you using for 
the original query as a comparison?  If you mean the original query was 
a straight SQL select that goes to the database compared to this, the 
SQL query will go to the database and the rows returned used to get the 
objects from the cache.  This current query will not hit the database at 
all, due to the checkCacheOnly option being used.  Instead, it will go 
through every single Sample object it has in the cache and check to see 
if the NonPromaryKeyProperty1.equals("kk") and 
NonPromaryKeyProperty2.equals("jj") until it finds what it is looking 
for.  The speed this is done is affected by the processor, application 
load and the number of objects in the cache, even the how the JVM 
implements string comparisons.  At some level of JVM load, at some 
number of objects in the cache etc, it will be expected that the in 
memory query will be slower than a query that uses the database.  Using 
a more powerful processor on a JVM with no load and infinite resources 
in a cache of very limited size (say 1 object), I might expect the in 
memory query to be faster - assuming the java string comparisons can be 
done faster than the time it requires to send a JDBC statement to the 
database and get a result back.  There are better options to use for 
performance depending on what you are attemping.
Best Regards,
Chris
On 23/07/2010 10:32 AM, Kiran Kumar Gubbi wrote:
After changing queries from nativequery to sessionquery the performance of
the application drastically degraded. Used the following setting for entity
and data access object for caching.
Entity class 
@Cache(
		type = CacheType.SOFT, 
		shared = true,
		size = 10000,
		coordinationType = CacheCoordinationType.SEND_OBJECT_CHANGES
)
DAO method ( before calling this methops List of sample objects are
available in cache)
 
public Sample getSample() {
  Sample sample = new Sample();
  sample.setNonPromaryKeyProperty1("kk");
  sample.setNonPromaryKeyProperty2("jj");
  ReadObjectQuery query = new ReadObjectQuery( Sample.class );
  query.setExampleObject( sample);
  query.checkCacheOnly();
  return ( Sample ) session().executeQuery( query );
}
This change has degraded performance by 3 times.  Any suggestion please.
Kind regards,
kiran