EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB33449: Intelligent Cube size increases over time in the MicroStrategy Intelligence Server 9.4.x - 10.x


Community Admin

Placeholder •


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:

ka04W000000ObbcQAC_0EM440000002Apy.jpeg

 
After a few reports are executed against the cube the Size reported for the cube has increased:

ka04W000000ObbcQAC_0EM440000002Apw.jpeg

 
 
The main reasons an Intelligent Cube size would increase after publishing is for the following reasons:

  1. Cube Index generation.
  2. Stored calculations for compound metrics.
  3. Cube Info Cache creation. 

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.
  
 
 


Comment

0 comments

Details

Knowledge Article

Published:

May 30, 2017

Last Updated:

May 30, 2017