"Order Entry" Stress Test: Measuring Enterprise Class Performance

One complaint we've historically received about our Forums database test was that it isn't strenuous enough for some of the Enterprise customers to make a good decision based on the results.

In our infinite desire to please everyone we worked very closely with a company that could provide us with a truly Enterprise Class SQL stress application. We cannot reveal the identity of the Corporation that provided us with the application because of non-disclosure agreements in place. As a result, we will not go into specifics of the application, but rather provide an overview of it's database interaction so that you can grasp the profile of this application and better understand the results of the tests (and how they relate to your database environment).

We will use an Order Entry system as an analogy for how this test interacts with the database. All interaction with the database is via stored procedures. The main stored procedures used during the test are:

sp_AddOrder - inserts an Order
sp_AddLineItem - inserts a Line Item for an Order
sp_UpdateOrderShippingStatus - updates an status to "Shipped"
sp_AssignOrderToLoadingDock - inserts a record to indicate which Loading Dock the Order should be shipped from
sp_AddLoadingDock - inserts a new record to define an available Loading Dock
sp_GetOrderAndLineItems - selects all information related to an Order and it's Line Items

The above is only intended as an overview of the stored procedure functionality; obviously the stored procedures perform other validation, and audit operations.

Each Order had a random number of Line Items, ranging from one to three. Also randomized was the Line Items chosen for an order, from a pool of approximately 1500 line items.

Each test was run for 10 minutes and was repeated three times. The average between the three tests was used. The number of Reads to Writes was maintained at 10 reads for every write. We debated for a long while about which ratio of reads to writes to would best services the benchmark and we decided there was no correct answer... so we went with 10.

The application was developed using C# and all database connectivity was accomplished using ADO.NET and used 20 threads, 10 for reading and 10 for inserting.

So as to ensure that IO was not the bottleneck, each test was started with an empty database and expanded to ensure that autogrow activity did not occur during the test. Additionally, a gigabit switch was used between the client and the server. During the execution of the tests, there were no applications running on the server or monitoring software. Task Manager, Profiler, and Performance Monitor where used when establishing the baseline for the test, but never during execution of the tests.

At the beginning of each platform both the server and client workstation was rebooted to ensure a clean and consistent environment. The database was always copied to the 8 disk RAID 0 array with no other files present to ensure that file placement and fragmentation was consistent between runs. In between each of the three test the database was deleted, the empty one was copied again the clean array. SQL Server was not restarted.

AnandTech Forums Database Test Results Stored Procedures per Second Analysis
Comments Locked

58 Comments

View All Comments

  • Blackbrrd - Wednesday, March 3, 2004 - link

    Hmm... the site below has some info about Numa (non unified memory architecture), and it looks like the os you're using isn't Numa enabled... Is this correct? Is there any real world benefit from Numa with Opteron?

    http://www.gamepc.com/labs/view_content.asp?id=opt...
  • zarjad - Wednesday, March 3, 2004 - link

    Could you speculate which way the advantage should be going in a BI benchmark (say TPC-H type of a test)? These are long running queries with gigabytes size tables.
  • Jason Clark - Wednesday, March 3, 2004 - link

    We started playing around with a couple of mysql benchmarks a few weeks ago namely OSDB and some new multithreaded benchmarks from MySQL themselves. We're hoping to get some valid tests that produce real results in the future.

    Cheers.
  • Jason Clark - Wednesday, March 3, 2004 - link

    In fact we did some recent testing to start out 64bit linux testing and mysql 4.0.17 on suse 64 had a segmentation fault starting <WINK> known issue for mysql as well... <WINK> <WINK>
  • Jason Clark - Wednesday, March 3, 2004 - link

    Steveoc, it hardly runs like a dog. Let's not turn this into a one sided os war :) The test make sense as they are, but a 64bit article is on the books for later. We've already been playing around with Suse 64bit and some others and whether you agree or not 64bit is still immature, period full stop. Support is there but it has some maturing to do.
  • steveoc - Wednesday, March 3, 2004 - link

    All these tests show is that Opteron, running Windows, runs like a Dog. As if we couldnt predict that result already ...

    The tests will only make sense once you are running 64bit linux. In fact, Id love to see a test of Dual Xeon + Win2003 + MSSQL vs Dual Opteron + 64bit Gentoo + 64bit MySQL .. that would be very interesting indeed.

    For anyone out there claiming that '64bit software has a looong way to go', that is only true for Windows. Unix (and Linux) have been running 64bit for a long time now, and the AMD64 has very good support under Linux.
  • dweigert - Wednesday, March 3, 2004 - link

    Seeing the difference whether NUMA us used or not would be *VERY* interesting. Also comparing against other NUMA aware OS's (Linux 2.63 or better kernel, or whatever) would be a good test too.
  • hirschma - Wednesday, March 3, 2004 - link

    #25 - Seems that it is not for sale to the general public, not that I could find. If anyone knows where/how to get one, please let me know.

    I have an application that is quite expensive and is licensed by the box, no matter how many CPUs it has ;) I'm guessing that building a low-end quad would give me more throughput per $$ than a second license/second box.

    Jonathan
  • Jason Clark - Wednesday, March 3, 2004 - link

    We're also looking at some 64bit .NET benchmarks as we're real close to having a real-world application that we can hammer.
  • Jason Clark - Wednesday, March 3, 2004 - link

    An interesting article would be the effect of NUMA on enterprise level applications. GamePC did a bit of a write up on it, but it was limited to desktop and synthetic benchmarks. Would any of you be interested in seeing the effects of NUMA on and off on the sql tests?

Log in

Don't have an account? Sign up now