Here I am going to introduce repository level caching mechanism in ATG. Caching is very critical to application performance.
The thumb rule for caching is
You should design an application so it requires minimal access to the database and ensures data integrity.
Each item descriptor in SQL repository has its own 2 types of cache.
Advantages of having item and query cache at each item descriptor level.
The thumb rule for caching is
You should design an application so it requires minimal access to the database and ensures data integrity.
Each item descriptor in SQL repository has its own 2 types of cache.
- Item Cache
- Query Cache
2. Query Cache : The query cache holds the repository IDs of items that match particular queries in the cache.
- Set caching size for each item type separately.
- Flush cache for each item type separately (selective cache invalidation).
How is work ?
Repository queries are performed in
two passes, using two separate SELECT statements.
1. Repository id fetching (query cache) : The first statement
gathers the IDs of the repository items that match that query. Repository first examines the query cache whether same query is already cached or not. In the case query is already cached, it returns matching ids from query cache. In this case no query will be fired on Database. If this query is not cached, then repository fires query on database. Create entry in query cache for this query and return the results. It is very useful when repeated queries are common.
2. Repository Item fetching (Item cache) : The SQL
repository then examines the result set from the first SELECT statement
and finds any items that already exist in the item cache. A second
SELECT statement retrieves from the database any items that are not in
the item cache.
Interesting fact about query cache : When application executes query using id parameter.
For example id="1234"
In this case ATG is not going to create entry in query cache. As query parameter and id returned from query is same. It bypass the first query, and directly work on second query and item cache.
Cache Tuning :
1. Query Cache Tuning : It is generally safe to set the size
of the query cache to 1000 or higher. Query caches only contain the
query parameters and string IDs of the result set items, so large query
cache sizes can usually be handled comfortably without running out of
memory.A query whose parameters are subject to less frequent changes is a good candidate for caching.
2. Item Cache Tuning : Item cache size should be large enough to accommodate the number of items in the repository. For example repository contains 50000 SKUs. Then sku item cache size should be 50000. Item cache size need set properly as it requires more space(memory) as compare to query cache. You need to test application performance with different item cache size based on hardware availability.
Good Luck..!!
No comments:
Post a Comment