Essbase Statistics DW: How to automatically administrate Essbase using ODI (Part 4: Dynamic Calculator Cache)
Hey guys, how are you? Continuing the Essbase Statistics DW: How to automatically administrate Essbase using ODI series (Part 3 Here), today we’ll talk about Dynamic Calculator Cache.
The Dynamic calculator cache basically it is a buffer to store all uncompressed blocks on memory to calculate the dynamic members in the dense dimensions. Expanded Blocks including: Store, Never Share, Dynamic Calc members and dynamic time series members.
This is important because show how everything is related in Essbase. If you set the CALCLOCKBLOCK to 1000 you need to be sure that the data cache can hold 2000 uncompressed blocks. If not doesn’t matter the setting you put, Essbase will put half what fits in the data cache
We also need the size of the expanded blocks is all the store members plus the dynamic calc members and dynamic time series members together plus 8.
We also need the largest expanded block across all database on the machine and the maximum number of expected concurrent users. This can be analyzed by gathering the session information into our DW as well, but for this post it’ll be a constant number.
This information can be acquired by:
EAS | MAXL | ESSCMD | JAVA |
Data Cache Right click in a cube edit properties->Storage | query database sample.basic list all file information; | listfiles “” “sample” “basic”; | maxl.execute(“query database ” + s_application + “.” + s_cube + ” list all file information”); |
Amount of members Right click in a cube edit properties->Dimensions | None | None | selection.executeQuery(dimension.getName(), IEssMemberSelection.QUERY_TYPE_DESCENDANTS, 0, null, null, null); |
In resume Dynamic Calculator Cache is:
- A buffer in memory that Essbase uses to store all the blocks needed for calculate a Dynamic Calc member in a dense dimension
- To find the optimal size of this cache we need:
- CALCLOCKBLOCK size: it is half the number of expanded blocks that fit into the data cache
- Expanded Blocks including: Store, Never Share, Dynamic Calc members and dynamic time series members
- The largest expanded block across all databases on the machine.
- The maximum number of expected concurrent users
- Can be analysed by gathering the session info into a table and analyse the patterns but for this presentation is a constant number based in experience
- To calculate the Maximum Calculator Cache, we need to multiply:
- CALCLOCKBLOCK: (Data Cache in bytes (already calculated) / Size of the expanded Block in bytes) / 2
- The largest expanded Block in bytes on the server
- The maximum number of expected concurrent Users (Constant)
And that’s it, we talked about the 5 most important caches in Essbase, how do we calculate them and how we get them.
So far, we talked about these caches and how they are calculated:
Cache Type | Description |
Index | A buffer in memory that holds index pages (.ind files) |
Data file | A buffer in memory that holds compressed data files (.pag files). Essbase allocates memory to the data file cache during data load, calculation, and retrieval operations, as needed. (only when direct I/O is in effect) |
Data | A buffer in memory that holds uncompressed data blocks. Essbase allocates memory to the data cache during data load, calculation, and retrieval operations, as needed |
Calculator | A buffer in memory that Essbase uses to create and track data blocks during calculation operations |
Dynamic calculator | A buffer in memory that Essbase uses to store all of the blocks needed for a calculation of a Dynamic Calc member in a dense dimension |
And here we have a resume of all calculations needed to have the exactly amount of cache per application we have:
Cache Type | Description |
Index | number of existing Blocks * 112 bytes = the size of database index |
Data file | Combined size of all essn.pag files, if possible; otherwise, as large as possible |
Data | 0.125 * the value of Data File Cache size |
Calculator | Bitmap size in bytes * Number of bitmaps: Bitmap size in bytes: Max((member combinations on the bitmap dimensions / 8), 4) Number of bitmaps: Maximum number of dependent parents in the anchoring dimension + 2 constant bitmaps |
Dynamic Calculator | C * S * U: C is the value of the appropriate CALCLOCKBLOCK setting. (Data Cache in bytes / Size of the expanded Block S is the size of the largest expanded block across all databases on the machine. Multiply the number of members in each dense dimension together and multiply by 8 bytes U is the maximum number of expected concurrent users |
From now on we’ll going to see how we can create a process to extract and handle this information and how can we create a DW and use it to keep our Essbase apps with the right cache all the time.
I hope you guys enjoy it and see you soon.
Leave a Reply