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

KB483840: Best Practices to Configure Large MDX Queries


Tingting Jin

Product Owner, Principal • MicroStrategy


This article outlines three recommendations that can help you when configuring large MDX queries.

Starting with the release of Strategy ONE (March 2024), dossiers are also known as dashboards.
The following outlines four recommended ways to configure large MDX queries: (1) by modifying the Maximum query execution time (sec) setting to a smaller, positive value, or (2) change the job priority setting on DI MDX instance, or (3) adjust the configuration for "MaxTableRows" in the Strategy cube provider, or (4) increaes the maximum RAM usage of the object cache.

Modify the Maximum Query Execution Time Setting for MDX Query


The Maximum query execution time (sec) setting is the maximum amount of time that a single pass of SQL can execute on the data warehouse. When the SQL statement or fetch operation begins, a timer starts counting. If the Maximum query execution time (sec) limit is reached before the SQL operation is concluded, Intelligence Server cancels the operation.
By default, this value is set to -1, which means the query will timeout after one hour. With large MDX queries, it will likely take longer than one hour to execute. In these cases, it's recommended to change the value to a positive meaningful integer based on the query execution time.

How to Modify the Maximum Query Execution Time Setting

  1. Open Strategy Developer.
  2. Go to File > New > Database Instance.
  3. Enter a name, connection type, and description for your database instance. 
  4. Under Database connection, click New. The Database Connection dialog opens.
  5. Select the Advanced tab.
  6. Enter a positive integer in the Maximum query execution time (sec) field.
  7. Click OK.

Change the Job Priority Setting on DI MDX Instance for Concurrency Scenario


By default, the Data Import Database Instance maximum number of concurrency jobs is two. The job priority setting on the Data Import Database Instance will not take affect if the database instance is not in the warehouse database instance list of the project.
To support multiple jobs running parallel in a concurrency scenario, you can open the MDX Cube Catalog on the Data Import Database Instance in Developer. Doing this will add the database instance into the warehouse database instance list of the project and the job priority setting on it will work.

ka0PW0000001JakYAE_0EM2R000000n1QX.jpeg

 

Adjust the Configuration for MaxTableRows in the Strategy Cube Provider


It's recommended that you set a smaller number for the MaxTableRow value for the Strategy cube provider on Windows platforms when a query contains a large number of columns in a row. Otherwise, the Intelligence Server child process may die and no data is returned to the Intelligence Server due to limitation of the child process. 
On a Windows Intelligence Server, edit the Datasources.xml file under the installation path of the MDX cube provider. Change the parameter: <MaxTableRows>240000</MaxTableRows> to <MaxTableRows>120000</MaxTableRows> or a smaller value.
For Example:
 

     <DataSource>       <DataSourceName>Localhost</DataSourceName>       <DataSourceDescription>Strategy MDX Cube Provider for MSOLAP on Localhost</DataSourceDescription>

             
<URL>http://localhost/StrategyMDX/StrategyMDX.asmx</URL>

                        <DataSourceInfo>Localhost</DataSourceInfo>                        <ProviderName>Strategy MDX Cube Provider for MSOLAP on Localhost</ProviderName>                        <ProviderType>MDP</ProviderType>                        <AuthenticationMode>MSOLAPIntegrated</AuthenticationMode>                        <DatasourceType>3</DatasourceType>                        <ProgramID>MSOLAP</ProgramID>                        <MaxXMLSize>1000</MaxXMLSize>                          <MaxTableBufferSize>12000</MaxTableBufferSize>                        <MaxTableRows>240000</MaxTableRows>                        <DecryptionDelay>10</DecryptionDelay>    <IncrementalFetchInterval>30</IncrementalFetchInterval>            </DataSource></DataSources>

Increase Maximum RAM Usage of the Object Cache


Schema objects of an MDX data source can be loaded in the Object Cache. As a result, this improves the execution performance of dossiers and documents. However, if the cache size is too small, those objects may be purged.
To avoid this situation, it's recommended that you increase the Maximum RAM usage of the Object Cache if you have a large schema or many objects in your cube. 

  • In Developer, open Project Configuration.
  • Choose Caching > Auxiliary Caches > Objects.
ka0PW0000001JakYAE_0EM2R000000n9TG.jpeg
  • Increase the value of the Maximum Ram usage (MBytes) for both the Server and the Client.
  • Click OK.
  • Restart the Intelligence Server for your changes to take affect.

Comment

0 comments

Details

Knowledge Article

Published:

December 4, 2019

Last Updated:

March 21, 2024