Users of Intelligent Cubes in Strategy 9.4.x -10.x may observe that after a period of time from the initial publishing of the cube, the size of the cubes as reported by the Cube monitor increases, in some cases by substantial amounts. An example of this behavior for a relatively small cube is shown in the screen shots below:
Original Cube:
After a few reports are executed against the cube the Size reported for the cube has increased:
The main reasons an Intelligent Cube size would increase after publishing is for the following reasons:
The Strategy Intelligence Server generates various indexes that allow it to speed up performance for the various reports that would use the cube. In addition to a "main" index, the Intelligent Cube while loaded will also store indexes for each distinct View Report that uses the cube. Only view reports with distinct template units will cause the generation of new indexes - for example a template with (Year, Country) is distinct from a template of (Country, Month).
When these view reports are executed against the Intelligent Cube, the Strategy Intelligence Server stores all the indexes generated for the view so that the next time a report with the same template is run, the server can quickly use the set of indexes previously generated for the view to return the results. This helps the Intelligence Server to provide enhanced performance for report execution..
The amount of memory that is used for the indexes for a view reports depends on the level of the cube, and the number of rows for each level in the cube. For example consider a cube with the (Year, Month, Day, Country, City, Category, Item) attributes. Generating indexes for a report that uses the higher level attributes, for example (Year) or (Country) or even (Year, City) has a low memory overhead because there are only a few rows to be indexed. However when a report accessing lower level attributes is run, the worst case being (Day, City, Item), or any supersets of these attributes, the Intelligence Server has to generate indexes for all the rows in the cube, and the overhead in terms of memory usage can be significant.
A number of indexes are generated for the view reports by the Strategy Intelligence Server: A "property" index for the view filter units, a "true level" index and a "report level" index for the view report hitting the cube. The increase in memory usage for the cube for each index generation can be broadly calculated as NumOfUnits * NumOfRows * TableKey (4 Bytes). So any operation that generates a new view report for the cube especially at the levels with a larger number of rows, for example - a drill operation, will result in an increase in the cube size.
Currently there is no way to turn off the generation of these indexes or any way to direct the engine to drop these indexes if they are not used. When the cube is unloaded, the generated indexes are discarded, after the cube is reloaded again, the next time a user accesses the cube they will be built again.