Troubleshooting SQL Server Analysis Services (SSAS) performance problems can be frustrating, especially for data professionals who are new to the platform. To identify and resolve SSAS performance challenges quickly and correctly, you must understand where potential bottlenecks might lie and what metrics help identify the problem areas.
Identifying when, how long, and what performance impact processing your cubes are having...
Lack of visibility into concurrent, inefficient, high-impact events can make it difficult to get the complete picture of your server’s issues.
If SSAS slows to a crawl just when you need to deliver reports to stakeholders, your system might need to be optimized for high-concurrency workloads.
If your SSAS performance troubleshooting involves setting up traces or DMV queries, then you might be wasting time you could be spending on more strategic initiatives.
Finding performance problems related to the database design can be a struggle, especially if you can't easily consult the team who created the data model.
Querying and processing activities affect SSAS performance—whether you’re using Multidimensional mode or Tabular mode. Many of the same concepts and best practices applied to queries and backups in relational databases such as SQL Server can be applied to or used to understand querying and processing in SSAS.
When performing queries, SSAS uses two primary engines: the formula engine and the storage engine. Either engine can be the source of a performance bottleneck; troubleshooting identifies which engine is the problem. The table below breaks down the primary features of each type of engine.
The first thing you need to determine when looking at performance problems is whether processing activities are happening at the same time as querying activities. Once you've ruled that out, SQL Server Profiler trace events can determine which query engine—formula or storage—is creating the bottleneck. The following table provides details on the Profiler trace events that are most important when troubleshooting SSAS performance challenges.
|Profiler Trace Event||Trace Event Indicators|
|Command Begin/End||Processing commands begin and end|
|Query Begin/End||Queries begin and end|
|Query Subcube/ Verbose||Duration the formula engine is querying to the storage engine (Multidimensional mode)|
|Progress Report Begin/End||Begin and end of file reads (Multidimensional mode)|
|Get Data From Aggregation||Time spent getting data from aggregations. This data is stored, pre-calculated data typically needed to handle the workload in the environment (Multidimensional mode)|
|VeritPaq SE Query Begin/End||Duration the formula engine is querying to the storage engine (Tabular mode)|
|Direct Query Begin/End||Time spent querying back to the relational data source for the data|
To determine which engine is the source of the problem, add up the cumulative durations indicated in Query Subcube/Verbose, Progress Report Begin/End, Get Data from Aggregation, VertiPaq SE Query Begin/End, and Direct Query End and compare to the Query Begin/End total time.
If the total duration is:
In addition to understanding which query engine is affecting performance, it’s essential to identify specific query and system attributes that are contributing to performance problems.
In some cases, the identified performance problems involve query optimization. When MDX or DAX query optimization is necessary, there are three primary factors to consider:
SQL Sentry empowers you to monitor, diagnose, and optimize SQL Server Analysis Services (SSAS) Multidimensional and Tabular modes. With SQL Sentry, you gain unparalleled insight into SSAS performance issues, including bottlenecks related to memory and storage systems, aggregation usage, unoptimized queries, as well as query and processing tasks competing for the same resources.
SQL Sentry includes enhanced support for SSAS Tabular mode and continued support for Multidimensional mode so that you can identify and address common SSAS performance problems.
Comprehensive visibility into processing activity, its performance, and impact on your workload
Unique insight into VertiPaq memory limits and paging policy
Top Commands view that captures and aggregates all high-impact SSAS commands (MDX, DMX, DAX, and XMLA), and displays top commands by CPU and I/O usage
Object Memory Usage tab that helps you optimize in-memory compression of your data model
Visibility into SSAS cache and disk activity
The SQL Sentry performance dashboard shows both Windows- and SSAS-specific metrics side by side for a complete view of data platform performance. Learn more about the extended support for SSAS Tabular in SQL Sentry.
SQL Sentry gives you a complete view of SSAS performance so that you can identify and address problems that have widespread impact across your data estate.
The SQL Sentry Top Commands tab shows SSAS query-level collection and any MDX, DAX, or XMLA commands that have run longer than one second. All the like queries have been rolled up and grouped together so you can see their total impact.
The SQL Sentry SSAS Usage Totals tab provides information that can be used to determine what responses to take based on activity levels. For Multidimensional mode, this information is divided into three different groups:
Attributes—used to see which attribute combinations are hit the most to determine if creating an aggregation would improve performance
Aggregations—shows the aggregations that are being used
Partitions—shows which partitions are being read the most
In Tabular Mode, view Object Memory Usage to easily see how your data models are being stored and compressed in-memory and identify areas where you might be able to increase data compression for more efficient memory consumption.
The SSAS Performance Metrics displayed by the Performance Analysis Dashboard in BI Sentry give you valuable insight into the root cause of performance problems with SQL Server Analysis Services (SSAS). With actionable information, you can save time in troubleshooting SSAS performance. Learn more.