We are happy to announce that the following benchmarks will be available, just in time for Tech conference 2015. We have published both summary and detail documents for each benchmark. Microsoft Dynamics AX 2012 R2 Benchmark for Multiple Retail Workloads In 2014, Microsoft conducted a benchmark on Microsoft Dynamics AX 2012 to measure the performance…
Improving SSRS Report Performance using new R3 features – Part 6
Using SrsReportDataProviderPreProcessTempDB class In Ax2012, we introduced class SrsReportDataProviderPreProcess class as the solution for long running SSRS reports that cause SSRS time out. The approach is to process data in Ax session before calling SSRS. The preprocessed data stored in a regular SQL table shared by all user sessions, only to be striped by session id….
Overcoming parameter sniffing issue in Microsoft Dynamics AX 2012-R2 – CU6
Parameter sniffing is the default behavior that SQL Server uses when compiling parameterized SQL statements. When a stored procedure or a parameterized SQL statement is compiled or recompiled, the parameter values passed for that invocation are “sniffed” and used for cardinality estimation. The net effect is that the plan is optimized as if those specific…
Improving SSRS Report Performance at Line level – Part 5
Inevitably, we can’t completely get rid of all line-based data accesses or calculations. So, we discuss here a few ways to improve without change the basic report logic. Remove duplicated DB calls Most of the duplicated DB calls are hidden deep in the stack. For example, Vendor report calls DirPartyTable::ElectornicAddressType2primaryFieldId() 4 times (4 db access)…
Improving SSRS Report Performance with Hybrid of Line-based and Set-based Processing – Part 4
This pattern applies to a wide range of reports. It is the most applied pattern so far as based on our experience. The idea is to isolate line-based code to the minimum and leverage set-based operations to the maximum at the same time. Here is a list of approaches. Working with Dynamic Parameters As it…
Improving SSRS Query-based Report Performance by not Using Display Methods – Part 3
This post is about Query based reports in Ax2012. Ax2012 supports table display method in query based reports. It is convenient to use. For example, the query for VendDueReportDetail is on VendTable and looks like this in VS designer: The table display methods above look up VendInvoiceJour and VendTrans tables to get the last…
Improving SSRS Report Performance by Applying Filters/Ranges Earlier – Part 2
We post it second because it is a low hanging fruit for better performance. One example helps explains this pattern. Here is a code excerpt from CustTransOpenPerDate report. perDate = contract.parmPerDate(); while (queryRun.next()) { if (queryRun.changed(tablenum(CustTable))) { custTable = queryRun.get(tablenum(CustTable)); } custTrans = queryRun.get(tablenum(CustTrans)); if (custTrans.TransDate <=…
Improving SSRS Report Performance with Set-Based Operations – part 1
Introduction Ax reports were migrated to Microsoft SSRS in Ax2012, mostly in the form of Report Data Provider classes (RDP). We want to share with our customers and ISVs, through this series of blogs, with some best practices to improve SSRS report performance. Our goal is to improving report performance without introducing much disruptions or…
Improve Check Report Performance by Reducing the Size of Company Logo and Signature Image Files
Microsoft Dynamics AX 2012 uses SSRS as its report engine. For each data source in a report, SSRS retrieves the data by making a call to AOS Query Service, which streams back the data in xml. The size of streaming dataset from AOS Query Service has a limit of about 1GB, partly due to the…
Retail Benchmark Summary and Detailed Results published
In 2012, Microsoft conducted a benchmark on Microsoft Dynamics AX 2012 to measure the performance and scalability characteristics of the Microsoft Dynamics AX 2012 Feature Pack retail solution in a simulated retail scenario. The benchmark showcases the ability of Microsoft Dynamics AX 2012 to handle various specialized loads concurrently, without compromising performance and scalability on…