
29
Principled Technologies, Inc.: Dell PowerVault MD3000i high-availability testing on
Windows Server 2008 R2 and Hyper-V
• We followed Microsoft’s recommendation of having 0.25 to 1 file per filegroup per core and we used 8
files per filegroup on our 24-core 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 2008.
• In SQL 2008, we added the FORCESEEK query hint to the BROWSE_BY_ACTOR stored procedure, to
force SQL Server 2008 to use an index seek, instead of an index scan, in its query execution plan. We
made this change because our initial tests showed that SQL Server was using a highly inefficient index
scan. Therefore, we created the SQL Server 2008 BROWSE_BY_ACTOR procedure as follows:
CREATE PROCEDURE BROWSE_BY_ACTOR
(
@batch_size_in INT,
@actor_in VARCHAR(50)
)
AS
SET ROWCOUNT @batch_size_in
SELECT * FROM PRODUCTS
--added to force index seek
WITH (FORCESEEK)
WHERE CONTAINS(ACTOR, @actor_in)
SET ROWCOUNT 0
GO
• We created a SQL Server login we called ds2user and a database user we mapped 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 server to a pristine state
relatively quickly between tests.
Editing the DVD Store scripts
We had to make a few minor modifications to the DVD Store test scripts. We detail these modifications below.
Editing the ds2xdriver.cs module
To use the 250GB database we created earlier, we had to change the following constants:
• In the routine Controller(), we changed the string “sizes.” We added the W option for the 20GB 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 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
called ds2User and used that account.
Comentarios a estos manuales