From: CSBVAX::MRGATE!RELAY-INFO-VAX@CRVAX.SRI.COM@SMTP 8-SEP-1988 08:59 To: ARISIA::EVERHART Subj: Performance Evaluations of Datatrieve using Rdb/VMS and RMS Received: From KL.SRI.COM by CRVAX.SRI.COM with TCP; Thu, 8 SEP 88 05:18:58 PDT Received: from ucbvax.Berkeley.EDU by KL.SRI.COM with TCP; Thu, 8 Sep 88 04:50:23 PDT Received: by ucbvax.Berkeley.EDU (5.59/1.31) id AA12864; Thu, 8 Sep 88 02:49:26 PDT Received: from USENET by ucbvax.Berkeley.EDU with netnews for info-vax@kl.sri.com (info-vax@kl.sri.com) (contact usenet@ucbvax.Berkeley.EDU if you have questions) Date: 8 Sep 88 01:11:24 GMT From: ssc-vax!uvicctr!smin@beaver.cs.washington.edu (YiMin Shen) Organization: University of Victoria, Victoria, BC, Canada Subject: Performance Evaluations of Datatrieve using Rdb/VMS and RMS Message-Id: <492@uvicctr.UUCP> Sender: info-vax-request@kl.sri.com To: info-vax@kl.sri.com Dear Netlanders; I'm posting a message for a friend who has no net access. The following is the message. I posted a request for info on the preformance of Rdb/VMS and RMS under the Datatrieve and PowerHouse environment a couple weeks back using dtsai@uvicctr 's account which went up in smoke already. I haven't received any reply from the net so I did my own benchmark tests. The results are at the end of this message. Questions: 1, Can I conclude Rdb/VMS is superior than RMS under Datatrieve? (Yes?) 2, Why RMS is so much slower in the CROSS tests and the SORT tests? 3, Can anyone explain the big differences in the direct I/O between Rdb and RMS (in terms of QIO etc) 4, Any way I can monitor what Datatrieve is actually doing when it is doing a sort or find etc (a debugger/PCA would be great!). Please E-mail to any one of the addresses at the end of this message or post it to the net. I will post a summary if I got any response. P.S. Anyone knows the performance of Rdb and RMS under PowerHouse? The following is 132 columns: Environment: VMS 4.6; MacroVAX II with 8 Mbytes memory; RA11 Disk with 20000 blocks free disk space; Datatrieve V 4.1 Efficiency Tests of RMS and Rdb/VMS under the Datatrieve Environment Results Buf I/O Dir I/O PF Peak WS Peak VS CPU Time(s) Connect Time(s) OVERHEAD: Boot up Datatrieve, ready files, close files and exit. RMS 70 79 455 1415 1448 4.56 12.67 RDB 87 127 1226 1953 1974 7.66 18.04 --------------------------------------------------------------------------------------------------------- 0.622 * 0.595 * * A less than 1 ratio suggests that RMS is more efficient than Rdb/VMS. CROSS 1: print rchecks cross rbudgets over budget_code with budget_code = 50 RMS 71 297 455 1496 1448 260.06 878.65 RDB 88 334 1497 1926 1974 23.6 62.52 --------------------------------------------------------------------------------------------------------- 0.889 11.0 CROSS 2: print rchecks cross rbudgets over budget_code with check_num = ' 50' RMS 72 299 719 1339 1448 59.08 98.26 RDB 88 361 1506 1922 1974 24.95 57.49 --------------------------------------------------------------------------------------------------------- 0.828 2.37 SORT 10000 records using key: find rchecks sorted by transaction RMS 85 28749 607 1736 1448 297.78 2280 RDB 89 330 1498 1877 1974 40.3 126.9 --------------------------------------------------------------------------------------------------------- 87.1 7.39 SORT 10000 records using non_key: find checks sorted by description RMS 88 38408 664 1819 1581 324.37 2361.44 RDB 89 497 5935 2048 3831 73.37 125.4 --------------------------------------------------------------------------------------------------------- 77.3 4.42 FIND all records (10000): find rchecks RMS 69 400 454 1445 1448 62.77 140.7 RDB 90 499 1542 1890 1974 50.08 125.6 --------------------------------------------------------------------------------------------------------- 0.802 1.25 FIND 2000 records with key and key: find rchecks with transaction gt 5000 and transaction le 7000 RMS 68 199 697 1362 1448 33.67 56.72 RDB 89 184 1564 1883 1974 14.66 39.46 --------------------------------------------------------------------------------------------------------- 1.08 2.30 FIND 500 records with key and non_key: find rchecks with transaction gt 5000 and description eq "AAAAAAAAAA" RMS 68 186 611 1265 1448 31.95 125.3 RDB 89 261 2482 2023 2486 20.43 52.24 --------------------------------------------------------------------------------------------------------- 0.713 1.56 STORE 2000 new records (budget relation): RMS 68 2755 440 1478 1448 64.22 141.4 RDB 103 398 2078 1978 2626 80.23 173.5 --------------------------------------------------------------------------------------------------------- 6.92 0.800 MODIFY 10000 records: modify rchecks using amount = amount * 2 RMS 67 10285 640 1398 1448 221.35 454.1 RDB 189 1206 3256 2048 3330 167.29 569.05 --------------------------------------------------------------------------------------------------------- 8.53 1.32 MODIFY 2000 records: modify rchecks with check_num gt 5000 and check_num le 7000 using amount = amount * 2 RMS 67 2285 581 1238 1448 120.6 319.5 RDB 88 349 1554 1922 2038 59.78 168.1 --------------------------------------------------------------------------------------------------------- 6.55 2.02 FIND and MODIFY 2000 records: find rchecks with check_num gt 5000 and check_num le 7000 modify current using amount = amount * 2 RMS 67 2358 433 1449 1448 112.82 235.6 RDB 88 369 1685 1809 2038 60.0 125.8 --------------------------------------------------------------------------------------------------------- 6.39 1.88 VIEW: print check_num, description, budget_category of rchecks cross rbudgets over budget_code with check_num = ' 50' RMS 71 307 458 1489 1448 59.25 111.5 --------------------------------------------------------------------------------------------------------- print rcats with check_num = ' 50' RMS 71 335 448 1517 1448 59.76 180.6 print cats with cats.check_num = ' 50' RDB 1 82 474 2585 1996 2742 117.09 186.3 2 82 472 2938 1804 2742 119.37 328.8 --------------------------------------------------------------------------------------------------------- 0.708 0.505 [1mAppendix A Records Layout[0m RMS Records Definitions: map (check_map) long transaction, !key & string date = 11, & check_num = 7, & description = 25, & long amount, & string cleared = 1, & long budget_code map (budget_map) long budget_code, !key & string budget_category = 25, & long budget_amount REDEFINE RECORD RCHECK USING 01 RCHECK_RECORD. 02 transaction pic 9(4) usage long edit_string z(7). 02 date pic x(11). !usage date. 02 check_num pic x(7). 02 description pic x(25). 02 amount pic 9(4) usage long edit_string is S$$$$$$9.99. 02 cleared pic x. 02 budget_code pic 9(4) usage long edit_string z(7). ; REDEFINE RECORD RBUDGET USING 01 RBUDGET_RECORD. 02 budget_code pic 9(4) usage long edit_string z(7). 02 budget_category pic x(25). 02 budget_amount pic 9(4) usage long edit_string is S$$$$$$9.99. ; REDEFINE DOMAIN RCATS of RCHECKS, RBUDGETS USING 01 rcats_rec occurs for rchecks cross rbudgets over budget_code. 03 check_num from rchecks. 03 description from rchecks. 03 budget_category from rbudgets. ; Rdb/VMS Definitions: define database 'acct'. start_transaction read_write define field money datatype signed longword edit_string for datatrieve is "S$$$$$$9.99". define field transaction datatype signed longword. define field date datatype text size 11. define field check_num datatype text size 7. define field budget_code datatype signed longword. define field cleared datatype text size 1 valid if cleared = "1" ! 1 = yes or cleared = "0". ! 0 = no define field description datatype text size 25 missing_value is "Not available". ! define relation checks. transaction. ! unique transaction number date. ! date of the transaction check_num. ! check number description. ! to or from whom? amount based on money. ! amount of check or deposit (+ or -) cleared. ! has it cleared yet? (1 or 0) budget_code. end checks relation. ! define field budget_category datatype text size 25. ! define relation budget. budget_code. ! budget code to link to checks. budget_category. ! name of budget category budget_amount based on money. ! amount budgeted monthly end budget relation. ! !/* make the transaction number as index key */ define index checks_transaction for checks duplicates are not allowed. transaction. end index. ! !/* make budget code an index key */ define index budget_budget_code for budget duplicates are not allowed. budget_code. end index. ! define view cats of c in checks cross b in budget over budget_code. c.check_num. c.description. b.budget_category. end cats view. ! define constraint budget_code_exists for c in checks require any b in budget with b.budget_code = c.budget_code. !!!end constraint. ! -- YiMin Shen smin@uvicctr.nrl-css.arpa, smin@sol.uvic.cdn