Caching Database Service

Hello All,

I have adapter service( A select * from Table query without any conditions ) which takes 1 minute to fetch 50k records.

Since,this service is integrated to a mobile application ,one minute wait is too long for the end users.

I tried caching the IS service which calls this adapter service.

I increased the heap size in IS and also the maximum results on memory to 50k in “Caching–>Service Results cache in IS”.

But,still it takes the same time to retrieve full results from cache.

My webMethods version is 9.0. and min and max memory is 3gb and 4gb respectively .

Request your suggestion to increase the performance for this service.

Thanks,
Sathya

Hi Sathya,

please check the cache expiration timer.
When the cache has expired the service will perform a call to the database to refresh the cache.

Additionally make sure the caching service is invoked correctly to avoid data corruption.

Regards,
Holger

You can consider TSA to offload the DB content for faster response time. Make sure, you have the proper TSA license.

Hi Holger,

The cache expiration time is 1 day. Everytime I call the service it takes more time.

@Sasanka,

I tried that option to convert this cache manager from Heap to TSA .But, it failed with error that IS cannot conver this cache manager.

Thanks,
Sathya

Hi Sathya,

I have one approach which we use in our organization.

→ Create service to load the database data in IS using IS built in
storage services and make it startup service.
→ Fetch the data using key-value pair using storage service.

Please provide your comments on this approach.

Regards,
Manikumar

Hi,

thanks for your suggestion.

Tried this approach. In designer, the results get displayed in service Results immediately. But, it takes so much time like around 2 minutes to give full result set.

I guess its because of 50k records .

Thanks,
Sathya

Hi,

Manikumars approach is not really helping here (especially when using storage services), as storage is also database based.
It is stored in the internal database structure in the ISInternal section.
It needs to be explicitly updated when content is to be changed and it can lead to locking issues if not used correctly.

I would prefer to use pub.cache-services instead which are available from wM 9.5 SP1 onwards
These will even work without having Terracotta in place. but they are caching in memory, which will be refreshed at least upon each restart of IS.

Regards,
Holger

Thanks for the suggestion. But , pub.cache put ,get services and the cache in the service properties almost do the same functionality right?

Regards,
Sathya