Below is a description on how I ran my speed test.
I created a small DB called TESTMU containing 1 table Invt containing 2
integer columns Invt1 & Invt2. I populated the table with 1000 rows
containing integer values for both Invt1 & Invt2 ranging from 1 to 1000. I
created a (single-column) index on Invt1.
I then ran the following CMD file, with several variations, and recorded the
resulting time.
DISCO
CLS
DIALOG 'Set MULTI ON?' vr vk YES AT 15
IF vr = 'YES' THEN
SET MULTI ON
ELSE
SET MULTI OFF
ENDI
CONN TESTMU
CLS
SET V vTR = (ISTAT('TotalReads'))
SET TIME FOR 'HH:MM:SS.SS'
SET V VSTIME TIME = .#TIME
SET V vNum INT = 1
LABEL AGAIN
*( Statements below referred to as 1st, 2nd, 3rd & 4th respectively)
SEL Invt1 INTO vInvt1 FROM Invt WHERE Invt1 = .vNum
-- SET V vInvt1 = Invt1 IN Invt WHERE Invt1 = .vNum
-- SEL Invt1 INTO vInvt1 FROM Invt WHERE Invt2 = .vNum
-- SET V vInvt1 = Invt1 IN Invt WHERE Invt2 = .vNum
WRI .vInvt1=5 AT 20 05 WHITE ON RED
SET V vNum = (.vNum+1)
IF vNum <= 1000 THEN
GOTO AGAIN
ENDI
SET V VETIME TIME = .#TIME
SET V vTimeDiff REAL = ((.VETIME-.VSTIME)/1000)
WRI 'Elapsed time =',.vTimeDiff,'seconds' AT 10 10 WHITE ON RED
SET V vTR = (ISTAT('TotalReads'))
WRI 'Total Reads =',.vTR AT 15 10
SET TIME FOR 'HH:MM AP'
--------------------------------------------------------------------------
I ran this leaving only one of the four statements after "LABEL AGAIN" not
remed out.
I used this to test for any difference between reading a value using
"SET..." vs "SEL..." as well as using an indexed column vs a non-indexed
column in the WHERE clause.
You can also rem out the "WRI .vInvt1=5 AT 20 05 WHITE ON RED", if desired,
or make any other changes you want to make/test. I also ran this using a
WHILE loop instead of the "IF...THEN...GOTO..." loop.
This was run on a 100mb network with the server running WIN2000, 512MB
memory 533MH pentium. One workstation was running WIN98 with 196MB memory &
Celeron 500 processor and the other was running WIN2000 with 196MB memory &
400MH Pentium2. The TESTMU database is about 128K.
I ran this both with the database on a workstation and with the database on
the server.
I also ran it with 1 and 2 users on the network when multi was set on.
============================================================================
=============
RESULTS
=======
-1st statement- -2nd statement- -3rd statement- -4th
statement-
WHERE MULTI Users Reads Time,sec Reads Time,sec Reads Time,sec Reads
Time,sec
===== ===== ===== ===== ======== ===== ======== ===== ======== =====
========
Local ON 1 4071 1.98 4035 2.41 6999 26.37 3634
8.85
Local OFF 1 2037 1.27 2037 1.26 2004 24.89 2002
7.69
Network ON 1 4071 6.92 4035 7.99 6999 35.82 3634
15.43
Network ON 2 4071 6.97 4035 8.73 6999 35.81 3634
16.25
Network OFF 1 2037 2.14 2037 2.14 2004 25.54 2002
8.41
----------------------------------------------------------------------------
--------------
The time taken to run this test on the server, with MULTI ON was
significantly longer than with MULTI OFF and/or running on a local
workstation (with either multi setting). Also, note the results, under
different conditions, for SEL...(#1 & #3) vs SET...(#2 & #4)
The time for 1 or 2 users on the network are essentially the same. The
following changes were made to the Win2000 server prior to running these
tests. Refer to Microsoft articles Q296264 & Q126026 and ACSL article
dealing with RFCB caching & Opportunistic locking.
Registry changes (only qualified personnel should do this):
HKey_Local_Machine
System
Current Control Set
Services
LanmanServer
Parameters
EnableOpLockForceClose REG_DWORD set to 1
EnableOpLocks REG_DWORD set to 0
CachedOpenLimit REG_DWORD set to 1
(You may need to Add these parameters, if they do not currently exist)
Prior to making the above changes, I observed a substantial time difference
between 1 and 2 users on the network, but I do not have any timed results
for comparison purposes. The above changes seem to have fixed other
problems relating to I/O problems, hesitation/lock-up and a problem with the
server failing to release files used by Win98 workstations, but "speed" is
still an issue.
----------------------------------------------------------------------------
--------------
Frank Radice
[EMAIL PROTECTED]