Constructing a database benchmark (average load)

Our first new benchmark was custom written in .NET, using ADO.NET to connect to the database. The AnandTech Forums database, which is over 14GB in size at the time of the benchmark, was used as the source database. We'll dub this benchmark tool "SQL Loader" for the purposes of discussing what it does.

SQL Loader allows us to specify the following: an XML based workload file for the test, how long the test should run, and how many threads it should use with which to load the database. The XML workload file contains queries that we want executed against the database, and some random ID generator queries that populate a memory resident array with ID's to be used in conjunction with our workload queries. The purpose of using random ID's is to keep the test as real-world as possible by selecting random data. This test should give us a lot of room for growth, as the workload can be whatever we want in future tests.

Example workload:

< workload>

< !--- A SAMPLE WORKLOAD QUERY THAT RETURNS ALL THE FIELDS FROM THE PRIVATEMESSAGES TABLE RANDOMLY --->

<query>

<code>select * from privatemessages where imessageid = @pmessageid</code>

<type>read</type>

<randkey>pmessageid</randkey>

</query>

<!--- RANDOM ID GENERATOR FOR SELECTING RANDOM PRIVATE MESSAGES --->

<randomid>

<rcode>select imessageid,newid() as pmsgid from privatemessages order by pmsgid</rcode>

<name>pmessageid</name>

</randomid>

< /workload>


A screenshot of the SQL Loader

Test Information

The workload used for the test was based on every day use of the Forums, which are running FuseTalk. We took the most popular queries and put them in the workload. Functions, such as reading threads and messages, getting user information, inserting threads and messages, and reading private messages, were in the spotlight. Each iteration of the test was run for 10 minutes, with the first being from a cold boot. SQL was restarted in between each test that was run consecutively.

The importance of this test is that it is as real world as you can get; for us, the performance in this test directly influences what upgrade decisions we make for our own IT infrastructure.

Hyper Threading and The Tests AnandTech Forums Database Test Results
Comments Locked

58 Comments

View All Comments

  • Fraggster - Tuesday, March 2, 2004 - link

    intel=pwnd again :)
  • Jason Clark - Tuesday, March 2, 2004 - link

    64Bit tests are next on our agenda, once there is an Extended 64bit version of SQL Server.... :) We're looking into other avenues as well.

    Andreas, windows 2003 enterprise is what we used.
  • fukka - Tuesday, March 2, 2004 - link

    Would the Opterons gain any advantage using a 64bit OS (aka Linux) and a database that is much bigger than 4GB in size?

    That would be interesting to see, but I suppose the IA32e will address that advantage...
  • andreasl - Tuesday, March 2, 2004 - link

    Hey Anand have you thought about moving to Server 2003 instead of running 2000? And any chance of seeing 64-bit results anytime soon? (does a 64-bit version of your app even exist?)
  • christophergorge - Tuesday, March 2, 2004 - link

    Opteron only works with ECC registered memory. They only come up to DDR333.
  • raptor666 - Tuesday, March 2, 2004 - link

    Maybe because 4 way boards might not support it.

    Just a guess but honestly i'm not sure.

    Peter

  • tolgae - Tuesday, March 2, 2004 - link

    Stupid question probably but why didn't you use DDR400 on the Opteron?
  • CRAMITPAL - Tuesday, March 2, 2004 - link

    No surprises here... Anyone with a clue has known for a year that Opteron/A64 is a far superior architecture to anything Intel bulds, sells, or plans to produce in the next two years.

Log in

Don't have an account? Sign up now