"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" Stress Test results
Comments Locked

97 Comments

View All Comments

  • bob661 - Monday, February 14, 2005 - link

    #14
    The difference is the 2xx can go up to 2 CPU's and the 8xx can go up to 8 CPU's. That's it.
  • Ross Whitehead - Monday, February 14, 2005 - link

    R3MF, we plan to discuss w/ AMD and Tyan the lack of benefit the 1 GHz HyperTransport provided.
  • Jason Clark - Monday, February 14, 2005 - link

    ceefka, meager? 3 of the most popular uses of a database? If there is something you think we are missing, please reveal ;).

    We'll work on a web article asap.
  • ksherman - Monday, February 14, 2005 - link

    is it just me, or did you take the best Xeon and put it against a mid range Opteron? what about the 8xx series? what is the difference between 2xx and 8xx?
  • blackbrrd - Monday, February 14, 2005 - link

    Seems Intel just turned the table again. What about webserver performance?
  • blckgrffn - Monday, February 14, 2005 - link

    I meant on the desktop, which is why the PM doesn't really count, sorry I wasn't more clear on that...
  • blckgrffn - Monday, February 14, 2005 - link

    I hope that the upcoming prescotts with 2meg L2 cache show similar improvements across the board - not because I am Intel fan, but really AMD hasn't had much in the way of direct competition from Intel lately (the PM doesn't count)

    Every benchmark has been: The 3000+ AMD64 is better than nearly any P4 for gaming performance, and if you really want to win all the benches but one or two, shell out for the fx-55... kind of boring, really :)
  • ceefka - Monday, February 14, 2005 - link

    However meager the benchies, it proofs my point that a company should mix and match according to their needs and not just stick with one or the other because their supplier says they shoud buy this or that.

    We have lots of financial data and scans, tables etc. going here, so a 4-way Opteron can be justified to sit between a few Xeon boxes for other apps. Unfortunately we're in the Intel comfort zone and browsing through accounts, scans and tables is therefore tedious.
  • R3MF - Monday, February 14, 2005 - link

    just because i'm awkward -

    i'd like to see a comparison between a:
    > FX55 (2.6GHz) & O252 (2.6GHz)
    > nF4 Ultra & nF4 Pro (abit wln8+)
    > 2x 512MB DDR500
    > 2x 300GB Max10 NCQ
    > 6800 Ultra

    in order to see whether the core enhancements in the new Opteron make a difference........?

    am i asking for too much? :p
  • gordon151 - Monday, February 14, 2005 - link

    Yeah, this article needs to be re-written because the Opteron doesn't crush Xeon. These numbers are dubious!

Log in

Don't have an account? Sign up now