"Order Entry" Stress Test: Measuring Enterprise Class Performance

One complaint that we've historically received regarding 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 its database interaction so that you can grasp the profile of this application, and understand the results of the tests better (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 a status to "Shipped"
sp_AssignOrderToLoadingDock - inserts a record to indicate from which Loading Dock the Order should be shipped
sp_AddLoadingDock - inserts a new record to define an available Loading Dock
sp_GetOrderAndLineItems - selects all information related to an Order and its 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 would best serve the benchmark, and we decided that 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 20 threads - 10 for reading and 10 for inserting.

So, to ensure that IO was not the bottleneck, each test was started with an empty database and expanded to ensure that auto-grow 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 were 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 were 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 tests, the database was deleted, and the empty one was copied again to the clean array. SQL Server was not restarted.

SQL Stress Results Order Entry Results
Comments Locked

144 Comments

View All Comments

  • patrick0 - Sunday, April 24, 2005 - link

    If they would have the dual-core in stores in June, I would buy one, but this isn't the case, so I'll buy San-Diego 4000+.
    I'll upgrade when quad-core will be out.
  • Barneyk - Sunday, April 24, 2005 - link

    oh, you cant edit your comments...

    Anyway, im really excited about this development of computing, not having good multitasking ability feels so outdated, i've been crying about that for years, and fianlly its here...
    Well, almost, and its probably another year before i can afford it, but still... :)
  • Barneyk - Sunday, April 24, 2005 - link

    test
  • jvarszegi - Sunday, April 24, 2005 - link

    Again, the lack of technical superiority of AT's "experts" is obvious. On SQL Server, you're not supposed to prepend stored-procedure names with "sp_", as it introduces a performance penalty. This is basic knowledge. Some have remarked before on how their .NET "experts" code like, um, transplanted ColdFusion "experts". :)
  • Visual - Sunday, April 24, 2005 - link

    a minor error: on page 12 right above the graph it says "The Dual Opteron 252's lead by 19% over the closest Xeon, which was the Quad Xeon 3.6 GHz 667MHz FSB" but the slowest xeon is the 3.3 GHz one.
  • mechBgon - Saturday, April 23, 2005 - link

    Zebo... hehe, yep :D
  • justly - Friday, April 22, 2005 - link

    An outstanding article about AMDs duel core, just what I would expect from Anandtech (to bad I had to go to techreport.com to read it).
  • Zebo - Friday, April 22, 2005 - link

    Hahaha makes Chetta's drool: Looks just like you MECH.:)
  • MACKTEK - Friday, April 22, 2005 - link

    I appreciate the article but am disappointed by the misleading title... AMD's dual core Opteron & Athlon 64 X2 - Server/Desktop Performance Preview. The 939 is not equal to 940. Also, the article clearly says
    COMPARE ATHLON 64 X2... right on the 1st page. In fact the article does not admit to "not having a real x2" until page 13. I love reading anandtech's articles and visit frequently... Perhaps a better title would have been... Preview of Athlon64 X2 using an Opteron CPU.
  • mechBgon - Friday, April 22, 2005 - link

    http://pics.bbzzdd.com/users/mechBgon/drool.jpg



    #82 says "and corporate PCs could work perfectly and more with a K5-K6/P2-P3."

    Ahhh, this again. You obviously haven't worked with a fully-armed installation of McAfee VirusScan Enterprise 8.0i. *evil grin* Hope you enjoyed your stay in 1999... welcome to 2005.

    ;)

Log in

Don't have an account? Sign up now