Part 17.5 - (more) Over Using Computed Fields

Let's see how data values effect entity performance.

Related to Part 17, I didn't quite get the result I was looking for so I created a large amount of data - approximately 400k orders. We will be running the same tests as in part 17 - only the amount of data has changed. I wasn't satisfied with creating, confirming, packing and invoicing 400k Sales Orders. I let the multithreaded batch job run a little bit longer this time and created approximately 4.5 million SO's that were confirmed, packed, and invoiced. Here Is what I found.

Data Growth Rate (more Infinite Hyper Death)

I was interested in the overall growth of data over time just to see what is happeneding in terms of throughput. Also, I wanted to record if there was a measureable difference between using Standard HDDs on the VM versus using Premium SSDs when using a standard storage account.

OData Performance

First, I want to call out the we did have some infrastructure changes on the VM. The VM was sized up to a DS14V2 and the Drive type was upgraded to premium SSD (P20). Because of this, we have to re-baseline our machine for what we should expect for the given workload. As a reminder, our data entities look like this:

  • CustCustomerV2Entity - we'll use this entity to establish a baseline
  • AAXCustCustomerV3Entity - this is a copy of CustCustomerV2Entity with 1 additional computed field; "Sales Last Year"
  • AAXCustCustomerV4Entity - just like AAXCustCustomerV3Entity but has 2 additional computed fields; "Sales Last Year" and "Sales This Year"
  • AAXCustCustomerV5Entity - Just like AAXCustCustomerV3Entity but has 22 additional competed fields to get sales values from 2000 to 2022 plus the 2 extra fields from the V4 version.

Next, let's compare the baseline to after we have approximately 4.5M

When working with customers, you can see that creating lots of sales orders negative effected performance for customers - even though we made no changes to our customer data entities. This illustrates how different areas of Finance and Operations can have performance impacts not related to the main thing we're working with. Additionally, using computed fields like we are on our custom entities can lead to some unexpected results in terms of performance.

Data Growth

I thought the data growth over time was interesting.I gathered some data while these long processes were running just to display it in a chart.