21
Principled Technologies, Inc.: Initial investment payback analysis: Dell PowerEdge R710
solution with VMware ESX vs. HP ProLiant DL385 solution
8. We set the database recovery model back to full.
We made the following changes in the build scripts:
• Because we varied the size of the datasets, we sized the files in our scripts to reflect the database size
and the number of files per filegroup. We allowed for approximately 40 percent free space in our
database files to ensure that filegrowth activity did not occur during the testing.
• We followed Microsoft’s recommendation of having 0.25 to 1 file per filegroup per core. We used two files
per filegroup on the HP ProLiant DL385 server and in the virtual machines on the Dell PowerEdge R710
server.
• We did not use the DBCC PINTABLE command for the CATEGORIES and PRODUCTS tables, both
because Microsoft recommends against this practice and because the commands do nothing in SQL
Server 2005 and SQL Server 2008.
• In the case of SQL Server 2008, we added the FORCESEEK hint in the BROWSE_BY_ACTOR stored
procedure because in initial testing we found that SQL Server 2008 was choosing an index scan instead
of the preferred index seek, adding unnecessary overhead. This problem was not evident in SQL Server
2005.
• We created a SQL Server login we called ds2user and mapped a database user to this login. We made
each such user a member of the db_owner fixed database role.
• Using the DVD Store scripts as a reference, we created the full-text catalog and index on the PRODUCTS
table manually in SQL Server Management Studio.
We then performed a full backup of the database. This backup allowed us to restore the databases to a pristine
state relatively quickly between tests.
Editing the workload script - ds2xdriver.cs module
To use the 10GB database we created earlier, we had to change the following constants:
• In the routine Controller(), we changed the string sizes. We added the T option for the 10GB database
size. DS2 uses the sizes string to interpret the db_size_str option.
• In the class Controller, we changed the arrays MAX_CUSTOMER and MAX_PRODUCT. To each, we
added values specifying the bounds for the customer and product IDs. The Controller() routine uses these
arrays.
• We added a command line parameter for the database name:
—database_name
Editing the workload script - ds2sqlserverfns.cs module
We changed the connection string to increase the number of available connections, to not use the default
administrator (“sa”) account, and to include a parameter for the database name. We raised the available
connections limit from the default of 100 to 200 to allow room for experimentation. We created a user account we
called ds2User and used that account.
The ds2connect routine in the ds2sqlserverfns.cs module defines sConnectionString. We used the following
string; the changes we made appear in bold:
string sConnectionString = “User ID=ds2User;Initial Catalog=“+dbname+”;Max
Pool Size=200;Connection Timeout=120;Data Source=“ + Controller.target;
Recompiling the ds2sqlserverdriver.exe executable
We recompiled the ds2xdriver.cs and ds2sqlserverfns.cs module in Windows by following the instructions in the
header comments. Because the DS2 instructions were for compiling from the command line, we used the
following steps:
1. Open a command prompt.
2. Use the cd command to change to the directory containing our sources.