add db.1.85
[nvi.git] / db.1.85 / docs / libtp.usenix.ps
blobea821a9145e2482e7e17b157cff518aecfaeffc4
1 %!PS-Adobe-1.0
2 %%Creator: utopia:margo (& Seltzer,608-13E,8072,)
3 %%Title: stdin (ditroff)
4 %%CreationDate: Thu Dec 12 15:32:11 1991
5 %%EndComments
6 %       @(#)psdit.pro   1.3 4/15/88
7 % lib/psdit.pro -- prolog for psdit (ditroff) files
8 % Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
9 % last edit: shore Sat Nov 23 20:28:03 1985
10 % RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $
12 % Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
13 % 17 Feb, 87.
15 /$DITroff 140 dict def $DITroff begin
16 /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
17 /xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
18  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
19  /pagesave save def}def
20 /PB{save /psv exch def currentpoint translate 
21  resolution 72 div dup neg scale 0 0 moveto}def
22 /PE{psv restore}def
23 /arctoobig 90 def /arctoosmall .05 def
24 /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
25 /tan{dup sin exch cos div}def
26 /point{resolution 72 div mul}def
27 /dround {transform round exch round exch itransform}def
28 /xT{/devname exch def}def
29 /xr{/mh exch def /my exch def /resolution exch def}def
30 /xp{}def
31 /xs{docsave restore end}def
32 /xt{}def
33 /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
34  {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
35 /xH{/fontheight exch def F}def
36 /xS{/fontslant exch def F}def
37 /s{/fontsize exch def /fontheight fontsize def F}def
38 /f{/fontnum exch def F}def
39 /F{fontheight 0 le{/fontheight fontsize def}if
40  fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
41  fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
42  makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
43 /X{exch currentpoint exch pop moveto show}def
44 /N{3 1 roll moveto show}def
45 /Y{exch currentpoint pop exch moveto show}def
46 /S{show}def
47 /ditpush{}def/ditpop{}def
48 /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
49 /AN{4 2 roll moveto 0 exch ashow}def
50 /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
51 /AS{0 exch ashow}def
52 /MX{currentpoint exch pop moveto}def
53 /MY{currentpoint pop exch moveto}def
54 /MXY{moveto}def
55 /cb{pop}def     % action on unknown char -- nothing for now
56 /n{}def/w{}def
57 /p{pop showpage pagesave restore /pagesave save def}def
58 /Dt{/Dlinewidth exch def}def 1 Dt
59 /Ds{/Ddash exch def}def -1 Ds
60 /Di{/Dstipple exch def}def 1 Di
61 /Dsetlinewidth{2 Dlinewidth mul setlinewidth}def
62 /Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]}
63  {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def
64 /Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore
65  currentpoint newpath moveto}def
66 /Dl{rlineto Dstroke}def
67 /arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
68  currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
69  currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
70 /Dc{dup arcellipse Dstroke}def
71 /De{arcellipse Dstroke}def
72 /Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
73  /cradius centerv centerv mul centerh centerh mul add sqrt def
74  /eradius endv endv mul endh endh mul add sqrt def
75  /endang endv endh atan def
76  /startang centerv neg centerh neg atan def
77  /sweep startang endang sub dup 0 lt{360 add}if def
78  sweep arctoobig gt
79  {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
80   /midh midang cos midrad mul def /midv midang sin midrad mul def
81   midh neg midv neg endh endv centerh centerv midh midv Da
82   Da}
83  {sweep arctoosmall ge
84   {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
85    centerv neg controldelt mul centerh controldelt mul
86    endv neg controldelt mul centerh add endh add
87    endh controldelt mul centerv add endv add
88    centerh endh add centerv endv add rcurveto Dstroke}
89   {centerh endh add centerv endv add rlineto Dstroke}
90   ifelse}
91  ifelse}def
92 /Dpatterns[
93 [%cf[widthbits]
94 [8<0000000000000010>]
95 [8<0411040040114000>]
96 [8<0204081020408001>]
97 [8<0000103810000000>]
98 [8<6699996666999966>]
99 [8<0000800100001008>]
100 [8<81c36666c3810000>]
101 [8<0f0e0c0800000000>]
102 [8<0000000000000010>]
103 [8<0411040040114000>]
104 [8<0204081020408001>]
105 [8<0000001038100000>]
106 [8<6699996666999966>]
107 [8<0000800100001008>]
108 [8<81c36666c3810000>]
109 [8<0f0e0c0800000000>]
110 [8<0042660000246600>]
111 [8<0000990000990000>]
112 [8<0804020180402010>]
113 [8<2418814242811824>]
114 [8<6699996666999966>]
115 [8<8000000008000000>]
116 [8<00001c3e363e1c00>]
117 [8<0000000000000000>]
118 [32<00000040000000c00000004000000040000000e0000000000000000000000000>]
119 [32<00000000000060000000900000002000000040000000f0000000000000000000>]
120 [32<000000000000000000e0000000100000006000000010000000e0000000000000>]
121 [32<00000000000000002000000060000000a0000000f00000002000000000000000>]
122 [32<0000000e0000000000000000000000000000000f000000080000000e00000001>]
123 [32<0000090000000600000000000000000000000000000007000000080000000e00>]
124 [32<00010000000200000004000000040000000000000000000000000000000f0000>]
125 [32<0900000006000000090000000600000000000000000000000000000006000000>]]
126 [%ug
127 [8<0000020000000000>]
128 [8<0000020000002000>]
129 [8<0004020000002000>]
130 [8<0004020000402000>]
131 [8<0004060000402000>]
132 [8<0004060000406000>]
133 [8<0006060000406000>]
134 [8<0006060000606000>]
135 [8<00060e0000606000>]
136 [8<00060e000060e000>]
137 [8<00070e000060e000>]
138 [8<00070e000070e000>]
139 [8<00070e020070e000>]
140 [8<00070e020070e020>]
141 [8<04070e020070e020>]
142 [8<04070e024070e020>]
143 [8<04070e064070e020>]
144 [8<04070e064070e060>]
145 [8<06070e064070e060>]
146 [8<06070e066070e060>]
147 [8<06070f066070e060>]
148 [8<06070f066070f060>]
149 [8<060f0f066070f060>]
150 [8<060f0f0660f0f060>]
151 [8<060f0f0760f0f060>]
152 [8<060f0f0760f0f070>]
153 [8<0e0f0f0760f0f070>]
154 [8<0e0f0f07e0f0f070>]
155 [8<0e0f0f0fe0f0f070>]
156 [8<0e0f0f0fe0f0f0f0>]
157 [8<0f0f0f0fe0f0f0f0>]
158 [8<0f0f0f0ff0f0f0f0>]
159 [8<1f0f0f0ff0f0f0f0>]
160 [8<1f0f0f0ff1f0f0f0>]
161 [8<1f0f0f8ff1f0f0f0>]
162 [8<1f0f0f8ff1f0f0f8>]
163 [8<9f0f0f8ff1f0f0f8>]
164 [8<9f0f0f8ff9f0f0f8>]
165 [8<9f0f0f9ff9f0f0f8>]
166 [8<9f0f0f9ff9f0f0f9>]
167 [8<9f8f0f9ff9f0f0f9>]
168 [8<9f8f0f9ff9f8f0f9>]
169 [8<9f8f1f9ff9f8f0f9>]
170 [8<9f8f1f9ff9f8f1f9>]
171 [8<bf8f1f9ff9f8f1f9>]
172 [8<bf8f1f9ffbf8f1f9>]
173 [8<bf8f1fdffbf8f1f9>]
174 [8<bf8f1fdffbf8f1fd>]
175 [8<ff8f1fdffbf8f1fd>]
176 [8<ff8f1fdffff8f1fd>]
177 [8<ff8f1ffffff8f1fd>]
178 [8<ff8f1ffffff8f1ff>]
179 [8<ff9f1ffffff8f1ff>]
180 [8<ff9f1ffffff9f1ff>]
181 [8<ff9f9ffffff9f1ff>]
182 [8<ff9f9ffffff9f9ff>]
183 [8<ffbf9ffffff9f9ff>]
184 [8<ffbf9ffffffbf9ff>]
185 [8<ffbfdffffffbf9ff>]
186 [8<ffbfdffffffbfdff>]
187 [8<ffffdffffffbfdff>]
188 [8<ffffdffffffffdff>]
189 [8<fffffffffffffdff>]
190 [8<ffffffffffffffff>]]
191 [%mg
192 [8<8000000000000000>]
193 [8<0822080080228000>]
194 [8<0204081020408001>]
195 [8<40e0400000000000>]
196 [8<66999966>]
197 [8<8001000010080000>]
198 [8<81c36666c3810000>]
199 [8<f0e0c08000000000>]
200 [16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>]
201 [16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>]
202 [8<c3c300000000c3c3>]
203 [16<0040008001000200040008001000200040008000000100020004000800100020>]
204 [16<0040002000100008000400020001800040002000100008000400020001000080>]
205 [16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>]
206 [8<80>]
207 [8<8040201000000000>]
208 [8<84cc000048cc0000>]
209 [8<9900009900000000>]
210 [8<08040201804020100800020180002010>]
211 [8<2418814242811824>]
212 [8<66999966>]
213 [8<8000000008000000>]
214 [8<70f8d8f870000000>]
215 [8<0814224180402010>]
216 [8<aa00440a11a04400>]
217 [8<018245aa45820100>]
218 [8<221c224180808041>]
219 [8<88000000>]
220 [8<0855800080550800>]
221 [8<2844004482440044>]
222 [8<0810204080412214>]
223 [8<00>]]]def
224 /Dfill{
225  transform /maxy exch def /maxx exch def
226  transform /miny exch def /minx exch def
227  minx maxx gt{/minx maxx /maxx minx def def}if
228  miny maxy gt{/miny maxy /maxy miny def def}if
229  Dpatterns Dstipple 1 sub get exch 1 sub get
230  aload pop /stip exch def /stipw exch def /stiph 128 def
231  /imatrix[stipw 0 0 stiph 0 0]def
232  /tmatrix[stipw 0 0 stiph 0 0]def
233  /minx minx cvi stiph idiv stiph mul def
234  /miny miny cvi stipw idiv stipw mul def
235  gsave eoclip 0 setgray
236  miny stiph maxy{
237   tmatrix exch 5 exch put
238   minx stipw maxx{
239    tmatrix exch 4 exch put tmatrix setmatrix
240    stipw stiph true imatrix {stip} imagemask
241   }for
242  }for
243  grestore
244 }def
245 /Dp{Dfill Dstroke}def
246 /DP{Dfill currentpoint newpath moveto}def
249 /ditstart{$DITroff begin
250  /nfonts 60 def                 % NFONTS makedev/ditroff dependent!
251  /fonts[nfonts{0}repeat]def
252  /fontnames[nfonts{()}repeat]def
253 /docsave save def
254 }def
256 % character outcalls
257 /oc{
258  /pswid exch def /cc exch def /name exch def
259  /ditwid pswid fontsize mul resolution mul 72000 div def
260  /ditsiz fontsize resolution mul 72 div def
261  ocprocs name known{ocprocs name get exec}{name cb}ifelse
262 }def
263 /fractm [.65 0 0 .6 0 0] def
264 /fraction{
265  /fden exch def /fnum exch def gsave /cf currentfont def
266  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
267  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 
268  grestore ditwid 0 rmoveto
269 }def
270 /oce{grestore ditwid 0 rmoveto}def
271 /dm{ditsiz mul}def
272 /ocprocs 50 dict def ocprocs begin
273 (14){(1)(4)fraction}def
274 (12){(1)(2)fraction}def
275 (34){(3)(4)fraction}def
276 (13){(1)(3)fraction}def
277 (23){(2)(3)fraction}def
278 (18){(1)(8)fraction}def
279 (38){(3)(8)fraction}def
280 (58){(5)(8)fraction}def
281 (78){(7)(8)fraction}def
282 (sr){gsave 0 .06 dm rmoveto(\326)show oce}def
283 (is){gsave 0 .15 dm rmoveto(\362)show oce}def
284 (->){gsave 0 .02 dm rmoveto(\256)show oce}def
285 (<-){gsave 0 .02 dm rmoveto(\254)show oce}def
286 (==){gsave 0 .05 dm rmoveto(\272)show oce}def
287 (uc){gsave currentpoint 400 .009 dm mul add translate
288      8 -8 scale ucseal oce}def
291 % an attempt at a PostScript FONT to implement ditroff special chars
292 % this will enable us to 
293 %       cache the little buggers
294 %       generate faster, more compact PS out of psdit
295 %       confuse everyone (including myself)!
296 50 dict dup begin
297 /FontType 3 def
298 /FontName /DIThacks def
299 /FontMatrix [.001 0 0 .001 0 0] def
300 /FontBBox [-260 -260 900 900] def% a lie but ...
301 /Encoding 256 array def
302 0 1 255{Encoding exch /.notdef put}for
303 Encoding
304  dup 8#040/space put %space
305  dup 8#110/rc put %right ceil
306  dup 8#111/lt put %left  top curl
307  dup 8#112/bv put %bold vert
308  dup 8#113/lk put %left  mid curl
309  dup 8#114/lb put %left  bot curl
310  dup 8#115/rt put %right top curl
311  dup 8#116/rk put %right mid curl
312  dup 8#117/rb put %right bot curl
313  dup 8#120/rf put %right floor
314  dup 8#121/lf put %left  floor
315  dup 8#122/lc put %left  ceil
316  dup 8#140/sq put %square
317  dup 8#141/bx put %box
318  dup 8#142/ci put %circle
319  dup 8#143/br put %box rule
320  dup 8#144/rn put %root extender
321  dup 8#145/vr put %vertical rule
322  dup 8#146/ob put %outline bullet
323  dup 8#147/bu put %bullet
324  dup 8#150/ru put %rule
325  dup 8#151/ul put %underline
326  pop
327 /DITfd 100 dict def
328 /BuildChar{0 begin
329  /cc exch def /fd exch def
330  /charname fd /Encoding get cc get def
331  /charwid fd /Metrics get charname get def
332  /charproc fd /CharProcs get charname get def
333  charwid 0 fd /FontBBox get aload pop setcachedevice
334  2 setlinejoin 40 setlinewidth
335  newpath 0 0 moveto gsave charproc grestore
336  end}def
337 /BuildChar load 0 DITfd put
338 /CharProcs 50 dict def
339 CharProcs begin
340 /space{}def
341 /.notdef{}def
342 /ru{500 0 rls}def
343 /rn{0 840 moveto 500 0 rls}def
344 /vr{0 800 moveto 0 -770 rls}def
345 /bv{0 800 moveto 0 -1000 rls}def
346 /br{0 840 moveto 0 -1000 rls}def
347 /ul{0 -140 moveto 500 0 rls}def
348 /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
349 /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
350 /sq{80 0 rmoveto currentpoint dround newpath moveto
351     640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
352 /bx{80 0 rmoveto currentpoint dround newpath moveto
353     640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
354 /ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
355     50 setlinewidth stroke}def
357 /lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
358 /lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
359 /rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
360 /rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
361 /lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
362     0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
363 /rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
364     0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
365 /lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
366 /rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
367 /lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
368 /rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
371 /Metrics 50 dict def Metrics begin
372 /.notdef 0 def
373 /space 500 def
374 /ru 500 def
375 /br 0 def
376 /lt 416 def
377 /lb 416 def
378 /rt 416 def
379 /rb 416 def
380 /lk 416 def
381 /rk 416 def
382 /rc 416 def
383 /lc 416 def
384 /rf 416 def
385 /lf 416 def
386 /bv 416 def
387 /ob 350 def
388 /bu 350 def
389 /ci 750 def
390 /bx 750 def
391 /sq 750 def
392 /rn 500 def
393 /ul 500 def
394 /vr 0 def
397 DITfd begin
398 /s2 500 def /s4 250 def /s3 333 def
399 /a4p{arcto pop pop pop pop}def
400 /2cx{2 copy exch}def
401 /rls{rlineto stroke}def
402 /currx{currentpoint pop}def
403 /dround{transform round exch round exch itransform} def
406 /DIThacks exch definefont pop
407 ditstart
408 (psc)xT
409 576 1 1 xr
410 1(Times-Roman)xf 1 f
411 2(Times-Italic)xf 2 f
412 3(Times-Bold)xf 3 f
413 4(Times-BoldItalic)xf 4 f
414 5(Helvetica)xf 5 f
415 6(Helvetica-Bold)xf 6 f
416 7(Courier)xf 7 f
417 8(Courier-Bold)xf 8 f
418 9(Symbol)xf 9 f
419 10(DIThacks)xf 10 f
420 10 s
421 1 f
423 %%EndProlog
425 %%Page: 1 1
426 10 s 10 xH 0 xS 1 f
427 3 f
428 14 s
429 1205 1206(LIBTP:)N
430 1633(Portable,)X
431 2100(M)X
432 2206(odular)X
433 2551(Transactions)X
434 3202(for)X
435 3374(UNIX)X
436 1 f
437 11 s
438 3661 1162(1)N
439 2 f
440 12 s
441 2182 1398(Margo)N
442 2467(Seltzer)X
443 2171 1494(Michael)N
444 2511(Olson)X
445 1800 1590(University)N
446 2225(of)X
447 2324(California,)X
448 2773(Berkeley)X
449 3 f
450 2277 1878(Abstract)N
451 1 f
452 10 s
453 755 2001(Transactions)N
454 1198(provide)X
455 1475(a)X
456 1543(useful)X
457 1771(programming)X
458 2239(paradigm)X
459 2574(for)X
460 2700(maintaining)X
461 3114(logical)X
462 3364(consistency,)X
463 3790(arbitrating)X
464 4156(con-)X
465 555 2091(current)N
466 808(access,)X
467 1059(and)X
468 1200(managing)X
469 1540(recovery.)X
470 1886(In)X
471 1977(traditional)X
472 2330(UNIX)X
473 2555(systems,)X
474 2852(the)X
475 2974(only)X
476 3140(easy)X
477 3307(way)X
478 3465(of)X
479 3556(using)X
480 3753(transactions)X
481 4160(is)X
482 4237(to)X
483 555 2181(purchase)N
484 876(a)X
485 947(database)X
486 1258(system.)X
487 1554(Such)X
488 1748(systems)X
489 2035(are)X
490 2168(often)X
491 2367(slow,)X
492 2572(costly,)X
493 2817(and)X
494 2967(may)X
495 3139(not)X
496 3275(provide)X
497 3554(the)X
498 3686(exact)X
499 3890(functionality)X
500 555 2271(desired.)N
501 848(This)X
502 1011(paper)X
503 1210(presents)X
504 1493(the)X
505 1611(design,)X
506 1860(implementation,)X
507 2402(and)X
508 2538(performance)X
509 2965(of)X
510 3052(LIBTP,)X
511 3314(a)X
512 3370(simple,)X
513 3623(non-proprietary)X
514 4147(tran-)X
515 555 2361(saction)N
516 809(library)X
517 1050(using)X
518 1249(the)X
519 1373(4.4BSD)X
520 1654(database)X
521 1957(access)X
522 2189(routines)X
523 2473(\()X
524 3 f
525 2500(db)X
526 1 f
527 2588(\(3\)\).)X
528 2775(On)X
529 2899(a)X
530 2961(conventional)X
531 3401(transaction)X
532 3779(processing)X
533 4148(style)X
534 555 2451(benchmark,)N
535 959(its)X
536 1061(performance)X
537 1495(is)X
538 1575(approximately)X
539 2065(85%)X
540 2239(that)X
541 2386(of)X
542 2480(the)X
543 2604(database)X
544 2907(access)X
545 3139(routines)X
546 3423(without)X
547 3693(transaction)X
548 4071(protec-)X
549 555 2541(tion,)N
550 725(200%)X
551 938(that)X
552 1084(of)X
553 1177(using)X
554 3 f
555 1376(fsync)X
556 1 f
557 1554(\(2\))X
558 1674(to)X
559 1761(commit)X
560 2030(modi\256cations)X
561 2490(to)X
562 2577(disk,)X
563 2755(and)X
564 2896(125%)X
565 3108(that)X
566 3253(of)X
567 3345(a)X
568 3406(commercial)X
569 3810(relational)X
570 4138(data-)X
571 555 2631(base)N
572 718(system.)X
573 3 f
574 555 2817(1.)N
575 655(Introduction)X
576 1 f
577 755 2940(Transactions)N
578 1186(are)X
579 1306(used)X
580 1474(in)X
581 1557(database)X
582 1855(systems)X
583 2129(to)X
584 2212(enable)X
585 2443(concurrent)X
586 2807(users)X
587 2992(to)X
588 3074(apply)X
589 3272(multi-operation)X
590 3790(updates)X
591 4055(without)X
592 555 3030(violating)N
593 863(the)X
594 985(integrity)X
595 1280(of)X
596 1371(the)X
597 1493(database.)X
598 1814(They)X
599 2003(provide)X
600 2271(the)X
601 2392(properties)X
602 2736(of)X
603 2826(atomicity,)X
604 3171(consistency,)X
605 3588(isolation,)X
606 3906(and)X
607 4045(durabil-)X
608 555 3120(ity.)N
609 701(By)X
610 816(atomicity,)X
611 1160(we)X
612 1276(mean)X
613 1472(that)X
614 1614(the)X
615 1734(set)X
616 1845(of)X
617 1934(updates)X
618 2200(comprising)X
619 2581(a)X
620 2638(transaction)X
621 3011(must)X
622 3187(be)X
623 3284(applied)X
624 3541(as)X
625 3629(a)X
626 3686(single)X
627 3898(unit;)X
628 4085(that)X
629 4226(is,)X
630 555 3210(they)N
631 714(must)X
632 890(either)X
633 1094(all)X
634 1195(be)X
635 1292(applied)X
636 1549(to)X
637 1632(the)X
638 1751(database)X
639 2049(or)X
640 2137(all)X
641 2238(be)X
642 2335(absent.)X
643 2601(Consistency)X
644 3013(requires)X
645 3293(that)X
646 3434(a)X
647 3491(transaction)X
648 3864(take)X
649 4019(the)X
650 4138(data-)X
651 555 3300(base)N
652 725(from)X
653 908(one)X
654 1051(logically)X
655 1358(consistent)X
656 1704(state)X
657 1877(to)X
658 1965(another.)X
659 2272(The)X
660 2423(property)X
661 2721(of)X
662 2814(isolation)X
663 3115(requires)X
664 3400(that)X
665 3546(concurrent)X
666 3916(transactions)X
667 555 3390(yield)N
668 750(results)X
669 994(which)X
670 1225(are)X
671 1358(indistinguishable)X
672 1938(from)X
673 2128(the)X
674 2260(results)X
675 2503(which)X
676 2733(would)X
677 2967(be)X
678 3077(obtained)X
679 3387(by)X
680 3501(running)X
681 3784(the)X
682 3916(transactions)X
683 555 3480(sequentially.)N
684 1002(Finally,)X
685 1268(durability)X
686 1599(requires)X
687 1878(that)X
688 2018(once)X
689 2190(transactions)X
690 2593(have)X
691 2765(been)X
692 2937(committed,)X
693 3319(their)X
694 3486(results)X
695 3715(must)X
696 3890(be)X
697 3986(preserved)X
698 555 3570(across)N
699 776(system)X
700 1018(failures)X
701 1279([TPCB90].)X
702 755 3693(Although)N
703 1080(these)X
704 1268(properties)X
705 1612(are)X
706 1734(most)X
707 1912(frequently)X
708 2265(discussed)X
709 2595(in)X
710 2680(the)X
711 2801(context)X
712 3060(of)X
713 3150(databases,)X
714 3501(they)X
715 3661(are)X
716 3782(useful)X
717 4000(program-)X
718 555 3783(ming)N
719 750(paradigms)X
720 1114(for)X
721 1238(more)X
722 1433(general)X
723 1700(purpose)X
724 1984(applications.)X
725 2441(There)X
726 2659(are)X
727 2788(several)X
728 3046(different)X
729 3353(situations)X
730 3689(where)X
731 3916(transactions)X
732 555 3873(can)N
733 687(be)X
734 783(used)X
735 950(to)X
736 1032(replace)X
737 1285(current)X
738 1533(ad-hoc)X
739 1772(mechanisms.)X
740 755 3996(One)N
741 910(situation)X
742 1206(is)X
743 1280(when)X
744 1475(multiple)X
745 1762(\256les)X
746 1916(or)X
747 2004(parts)X
748 2181(of)X
749 2269(\256les)X
750 2422(need)X
751 2594(to)X
752 2676(be)X
753 2772(updated)X
754 3046(in)X
755 3128(an)X
756 3224(atomic)X
757 3462(fashion.)X
758 3758(For)X
759 3889(example,)X
760 4201(the)X
761 555 4086(traditional)N
762 907(UNIX)X
763 1131(\256le)X
764 1256(system)X
765 1501(uses)X
766 1661(ordering)X
767 1955(constraints)X
768 2324(to)X
769 2408(achieve)X
770 2676(recoverability)X
771 3144(in)X
772 3228(the)X
773 3348(face)X
774 3505(of)X
775 3594(crashes.)X
776 3893(When)X
777 4107(a)X
778 4165(new)X
779 555 4176(\256le)N
780 678(is)X
781 752(created,)X
782 1026(its)X
783 1122(inode)X
784 1321(is)X
785 1395(written)X
786 1642(to)X
787 1724(disk)X
788 1877(before)X
789 2103(the)X
790 2221(new)X
791 2375(\256le)X
792 2497(is)X
793 2570(added)X
794 2782(to)X
795 2864(the)X
796 2982(directory)X
797 3292(structure.)X
798 3633(This)X
799 3795(guarantees)X
800 4159(that,)X
801 555 4266(if)N
802 627(the)X
803 748(system)X
804 993(crashes)X
805 1253(between)X
806 1544(the)X
807 1665(two)X
808 1808(I/O's,)X
809 2016(the)X
810 2137(directory)X
811 2450(does)X
812 2620(not)X
813 2744(contain)X
814 3002(a)X
815 3060 0.4531(reference)AX
816 3383(to)X
817 3467(an)X
818 3565(invalid)X
819 3809(inode.)X
820 4049(In)X
821 4138(actu-)X
822 555 4356(ality,)N
823 741(the)X
824 863(desired)X
825 1119(effect)X
826 1326(is)X
827 1402(that)X
828 1545(these)X
829 1733(two)X
830 1876(updates)X
831 2144(have)X
832 2319(the)X
833 2440(transactional)X
834 2873(property)X
835 3168(of)X
836 3258(atomicity)X
837 3583(\(either)X
838 3816(both)X
839 3981(writes)X
840 4200(are)X
841 555 4446(visible)N
842 790(or)X
843 879(neither)X
844 1124(is\).)X
845 1266(Rather)X
846 1501(than)X
847 1660(building)X
848 1947(special)X
849 2191(purpose)X
850 2466(recovery)X
851 2769(mechanisms)X
852 3186(into)X
853 3331(the)X
854 3450(\256le)X
855 3573(system)X
856 3816(or)X
857 3904(related)X
858 4144(tools)X
859 555 4536(\()N
860 2 f
861 582(e.g.)X
862 3 f
863 726(fsck)X
864 1 f
865 864(\(8\)\),)X
866 1033(one)X
867 1177(could)X
868 1383(use)X
869 1518(general)X
870 1783(purpose)X
871 2064(transaction)X
872 2443(recovery)X
873 2752(protocols)X
874 3077(after)X
875 3252(system)X
876 3501(failure.)X
877 3778(Any)X
878 3943(application)X
879 555 4626(that)N
880 705(needs)X
881 918(to)X
882 1010(keep)X
883 1192(multiple,)X
884 1508(related)X
885 1757(\256les)X
886 1920(\(or)X
887 2044(directories\))X
888 2440(consistent)X
889 2790(should)X
890 3032(do)X
891 3141(so)X
892 3241(using)X
893 3443(transactions.)X
894 3895(Source)X
895 4147(code)X
896 555 4716(control)N
897 805(systems,)X
898 1101(such)X
899 1271(as)X
900 1361(RCS)X
901 1534(and)X
902 1673(SCCS,)X
903 1910(should)X
904 2146(use)X
905 2276(transaction)X
906 2651(semantics)X
907 2990(to)X
908 3075(allow)X
909 3276(the)X
910 3397(``checking)X
911 3764(in'')X
912 3903(of)X
913 3992(groups)X
914 4232(of)X
915 555 4806(related)N
916 801(\256les.)X
917 1001(In)X
918 1095(this)X
919 1237(way,)X
920 1418(if)X
921 1493(the)X
922 1617 0.2841(``check-in'')AX
923 2028(fails,)X
924 2212(the)X
925 2336(transaction)X
926 2714(may)X
927 2878(be)X
928 2980(aborted,)X
929 3267(backing)X
930 3547(out)X
931 3675(the)X
932 3799(partial)X
933 4030(``check-)X
934 555 4896(in'')N
935 691(leaving)X
936 947(the)X
937 1065(source)X
938 1295(repository)X
939 1640(in)X
940 1722(a)X
941 1778(consistent)X
942 2118(state.)X
943 755 5019(A)N
944 842(second)X
945 1094(situation)X
946 1398(where)X
947 1624(transactions)X
948 2036(can)X
949 2177(be)X
950 2282(used)X
951 2458(to)X
952 2549(replace)X
953 2811(current)X
954 3068(ad-hoc)X
955 3316(mechanisms)X
956 3741(is)X
957 3822(in)X
958 3912(applications)X
959 555 5109(where)N
960 776(concurrent)X
961 1144(updates)X
962 1413(to)X
963 1499(a)X
964 1559(shared)X
965 1793(\256le)X
966 1919(are)X
967 2042(desired,)X
968 2318(but)X
969 2444(there)X
970 2629(is)X
971 2706(logical)X
972 2948(consistency)X
973 3345(of)X
974 3435(the)X
975 3556(data)X
976 3713(which)X
977 3932(needs)X
978 4138(to)X
979 4223(be)X
980 555 5199(preserved.)N
981 928(For)X
982 1059(example,)X
983 1371(when)X
984 1565(the)X
985 1683(password)X
986 2006(\256le)X
987 2128(is)X
988 2201(updated,)X
989 2495(\256le)X
990 2617(locking)X
991 2877(is)X
992 2950(used)X
993 3117(to)X
994 3199(disallow)X
995 3490(concurrent)X
996 3854(access.)X
997 4120(Tran-)X
998 555 5289(saction)N
999 804(semantics)X
1000 1142(on)X
1001 1244(the)X
1002 1364(password)X
1003 1689(\256les)X
1004 1844(would)X
1005 2066(allow)X
1006 2266(concurrent)X
1007 2632(updates,)X
1008 2919(while)X
1009 3119(preserving)X
1010 3479(the)X
1011 3598(logical)X
1012 3837(consistency)X
1013 4232(of)X
1014 555 5379(the)N
1015 681(password)X
1016 1012(database.)X
1017 1357(Similarly,)X
1018 1702(UNIX)X
1019 1930(utilities)X
1020 2196(which)X
1021 2419(rewrite)X
1022 2674(\256les)X
1023 2834(face)X
1024 2996(a)X
1025 3059(potential)X
1026 3366(race)X
1027 3528(condition)X
1028 3857(between)X
1029 4152(their)X
1030 555 5469(rewriting)N
1031 871(a)X
1032 929(\256le)X
1033 1053(and)X
1034 1191(another)X
1035 1453(process)X
1036 1715(reading)X
1037 1977(the)X
1038 2096(\256le.)X
1039 2259(For)X
1040 2391(example,)X
1041 2704(the)X
1042 2823(compiler)X
1043 3129(\(more)X
1044 3342(precisely,)X
1045 3673(the)X
1046 3792(assembler\))X
1047 4161(may)X
1048 8 s
1049 10 f
1050 555 5541(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
1051 5 s
1052 1 f
1053 727 5619(1)N
1054 8 s
1055 763 5644(To)N
1056 850(appear)X
1057 1035(in)X
1058 1101(the)X
1059 2 f
1060 1195(Proceedings)X
1061 1530(of)X
1062 1596(the)X
1063 1690(1992)X
1064 1834(Winter)X
1065 2024(Usenix)X
1066 1 f
1067 2201(,)X
1068 2233(San)X
1069 2345(Francisco,)X
1070 2625(CA,)X
1071 2746(January)X
1072 2960(1992.)X
1074 2 p
1075 %%Page: 2 2
1076 8 s 8 xH 0 xS 1 f
1077 10 s
1078 3 f
1079 1 f
1080 555 630(have)N
1081 737(to)X
1082 829(rewrite)X
1083 1087(a)X
1084 1152(\256le)X
1085 1283(to)X
1086 1374(which)X
1087 1599(it)X
1088 1672(has)X
1089 1808(write)X
1090 2002(permission)X
1091 2382(in)X
1092 2473(a)X
1093 2538(directory)X
1094 2857(to)X
1095 2948(which)X
1096 3173(it)X
1097 3246(does)X
1098 3422(not)X
1099 3553(have)X
1100 3734(write)X
1101 3928(permission.)X
1102 555 720(While)N
1103 779(the)X
1104 904(``.o'')X
1105 1099(\256le)X
1106 1228(is)X
1107 1308(being)X
1108 1513(written,)X
1109 1787(another)X
1110 2055(utility)X
1111 2272(such)X
1112 2446(as)X
1113 3 f
1114 2540(nm)X
1115 1 f
1116 2651(\(1\))X
1117 2772(or)X
1118 3 f
1119 2866(ar)X
1120 1 f
1121 2942(\(1\))X
1122 3063(may)X
1123 3228(read)X
1124 3394(the)X
1125 3519(\256le)X
1126 3648(and)X
1127 3791(produce)X
1128 4077(invalid)X
1129 555 810(results)N
1130 790(since)X
1131 981(the)X
1132 1105(\256le)X
1133 1233(has)X
1134 1366(not)X
1135 1494(been)X
1136 1672(completely)X
1137 2054(written.)X
1138 2347(Currently,)X
1139 2700(some)X
1140 2895(utilities)X
1141 3160(use)X
1142 3293(special)X
1143 3542(purpose)X
1144 3821(code)X
1145 3998(to)X
1146 4085(handle)X
1147 555 900(such)N
1148 722(cases)X
1149 912(while)X
1150 1110(others)X
1151 1326(ignore)X
1152 1551(the)X
1153 1669(problem)X
1154 1956(and)X
1155 2092(force)X
1156 2278(users)X
1157 2463(to)X
1158 2545(live)X
1159 2685(with)X
1160 2847(the)X
1161 2965(consequences.)X
1162 755 1023(In)N
1163 845(this)X
1164 983(paper,)X
1165 1205(we)X
1166 1322(present)X
1167 1577(a)X
1168 1635(simple)X
1169 1870(library)X
1170 2106(which)X
1171 2324(provides)X
1172 2622(transaction)X
1173 2996(semantics)X
1174 3334(\(atomicity,)X
1175 3705(consistency,)X
1176 4121(isola-)X
1177 555 1113(tion,)N
1178 720(and)X
1179 857(durability\).)X
1180 1236(The)X
1181 1382(4.4BSD)X
1182 1658(database)X
1183 1956(access)X
1184 2182(methods)X
1185 2473(have)X
1186 2645(been)X
1187 2817(modi\256ed)X
1188 3121(to)X
1189 3203(use)X
1190 3330(this)X
1191 3465(library,)X
1192 3719(optionally)X
1193 4063(provid-)X
1194 555 1203(ing)N
1195 682(shared)X
1196 917(buffer)X
1197 1139(management)X
1198 1574(between)X
1199 1867(applications,)X
1200 2298(locking,)X
1201 2582(and)X
1202 2722(transaction)X
1203 3098(semantics.)X
1204 3478(Any)X
1205 3640(UNIX)X
1206 3865(program)X
1207 4161(may)X
1208 555 1293(transaction)N
1209 930(protect)X
1210 1176(its)X
1211 1274(data)X
1212 1430(by)X
1213 1532(requesting)X
1214 1888(transaction)X
1215 2262(protection)X
1216 2609(with)X
1217 2773(the)X
1218 3 f
1219 2893(db)X
1220 1 f
1221 2981(\(3\))X
1222 3097(library)X
1223 3333(or)X
1224 3422(by)X
1225 3524(adding)X
1226 3764(appropriate)X
1227 4152(calls)X
1228 555 1383(to)N
1229 646(the)X
1230 773(transaction)X
1231 1154(manager,)X
1232 1480(buffer)X
1233 1706(manager,)X
1234 2032(lock)X
1235 2199(manager,)X
1236 2525(and)X
1237 2670(log)X
1238 2801(manager.)X
1239 3147(The)X
1240 3301(library)X
1241 3543(routines)X
1242 3829(may)X
1243 3995(be)X
1244 4099(linked)X
1245 555 1473(into)N
1246 708(the)X
1247 834(host)X
1248 995(application)X
1249 1379(and)X
1250 1523(called)X
1251 1743(by)X
1252 1851(subroutine)X
1253 2217(interface,)X
1254 2547(or)X
1255 2642(they)X
1256 2808(may)X
1257 2974(reside)X
1258 3194(in)X
1259 3284(a)X
1260 3348(separate)X
1261 3640(server)X
1262 3865(process.)X
1263 4174(The)X
1264 555 1563(server)N
1265 772(architecture)X
1266 1172(provides)X
1267 1468(for)X
1268 1582(network)X
1269 1865(access)X
1270 2091(and)X
1271 2227(better)X
1272 2430(protection)X
1273 2775(mechanisms.)X
1274 3 f
1275 555 1749(2.)N
1276 655(Related)X
1277 938(Work)X
1278 1 f
1279 755 1872(There)N
1280 1000(has)X
1281 1164(been)X
1282 1373(much)X
1283 1608(discussion)X
1284 1998(in)X
1285 2117(recent)X
1286 2371(years)X
1287 2597(about)X
1288 2831(new)X
1289 3021(transaction)X
1290 3429(models)X
1291 3716(and)X
1292 3888(architectures)X
1293 555 1962 0.1172([SPEC88][NODI90][CHEN91][MOHA91].)AN
1294 2009(Much)X
1295 2220(of)X
1296 2310(this)X
1297 2448(work)X
1298 2636(focuses)X
1299 2900(on)X
1300 3003(new)X
1301 3160(ways)X
1302 3348(to)X
1303 3433(model)X
1304 3656(transactions)X
1305 4062(and)X
1306 4201(the)X
1307 555 2052(interactions)N
1308 953(between)X
1309 1245(them,)X
1310 1449(while)X
1311 1651(the)X
1312 1772(work)X
1313 1960(presented)X
1314 2291(here)X
1315 2453(focuses)X
1316 2717(on)X
1317 2820(the)X
1318 2941(implementation)X
1319 3466(and)X
1320 3605(performance)X
1321 4035(of)X
1322 4125(tradi-)X
1323 555 2142(tional)N
1324 757(transaction)X
1325 1129(techniques)X
1326 1492(\(write-ahead)X
1327 1919(logging)X
1328 2183(and)X
1329 2319(two-phase)X
1330 2669(locking\))X
1331 2956(on)X
1332 3056(a)X
1333 3112(standard)X
1334 3404(operating)X
1335 3727(system)X
1336 3969(\(UNIX\).)X
1337 755 2265(Such)N
1338 947(traditional)X
1339 1308(operating)X
1340 1643(systems)X
1341 1928(are)X
1342 2059(often)X
1343 2256(criticized)X
1344 2587(for)X
1345 2713(their)X
1346 2892(inability)X
1347 3190(to)X
1348 3283(perform)X
1349 3573(transaction)X
1350 3956(processing)X
1351 555 2355(adequately.)N
1352 971([STON81])X
1353 1342(cites)X
1354 1517(three)X
1355 1706(main)X
1356 1894(areas)X
1357 2088(of)X
1358 2183(inadequate)X
1359 2559(support:)X
1360 2849(buffer)X
1361 3074(management,)X
1362 3532(the)X
1363 3658(\256le)X
1364 3788(system,)X
1365 4058(and)X
1366 4201(the)X
1367 555 2445(process)N
1368 823(structure.)X
1369 1191(These)X
1370 1410(arguments)X
1371 1771(are)X
1372 1897(summarized)X
1373 2316(in)X
1374 2405(table)X
1375 2587(one.)X
1376 2769(Fortunately,)X
1377 3184(much)X
1378 3388(has)X
1379 3521(changed)X
1380 3815(since)X
1381 4006(1981.)X
1382 4232(In)X
1383 555 2535(the)N
1384 683(area)X
1385 848(of)X
1386 945(buffer)X
1387 1172(management,)X
1388 1632(most)X
1389 1817(UNIX)X
1390 2048(systems)X
1391 2331(provide)X
1392 2606(the)X
1393 2734(ability)X
1394 2968(to)X
1395 3060(memory)X
1396 3357(map)X
1397 3525(\256les,)X
1398 3708(thus)X
1399 3870(obviating)X
1400 4201(the)X
1401 555 2625(need)N
1402 734(for)X
1403 855(a)X
1404 918(copy)X
1405 1101(between)X
1406 1396(kernel)X
1407 1624(and)X
1408 1766(user)X
1409 1926(space.)X
1410 2171(If)X
1411 2251(a)X
1412 2313(database)X
1413 2616(system)X
1414 2864(is)X
1415 2943(going)X
1416 3151(to)X
1417 3239(use)X
1418 3372(the)X
1419 3496(\256le)X
1420 3624(system)X
1421 3872(buffer)X
1422 4095(cache,)X
1423 555 2715(then)N
1424 719(a)X
1425 781(system)X
1426 1029(call)X
1427 1171(is)X
1428 1250(required.)X
1429 1584(However,)X
1430 1924(if)X
1431 1998(buffering)X
1432 2322(is)X
1433 2400(provided)X
1434 2710(at)X
1435 2793(user)X
1436 2952(level)X
1437 3133(using)X
1438 3331(shared)X
1439 3566(memory,)X
1440 3878(as)X
1441 3970(in)X
1442 4057(LIBTP,)X
1443 555 2805(buffer)N
1444 776(management)X
1445 1210(is)X
1446 1287(only)X
1447 1452(as)X
1448 1542(slow)X
1449 1716(as)X
1450 1806(access)X
1451 2035(to)X
1452 2120(shared)X
1453 2353(memory)X
1454 2643(and)X
1455 2782(any)X
1456 2921(replacement)X
1457 3337(algorithm)X
1458 3671(may)X
1459 3832(be)X
1460 3931(used.)X
1461 4121(Since)X
1462 555 2895(multiple)N
1463 849(processes)X
1464 1185(can)X
1465 1325(access)X
1466 1559(the)X
1467 1685(shared)X
1468 1923(data,)X
1469 2105(prefetching)X
1470 2499(may)X
1471 2665(be)X
1472 2769(accomplished)X
1473 3238(by)X
1474 3346(separate)X
1475 3638(processes)X
1476 3973(or)X
1477 4067(threads)X
1478 555 2985(whose)N
1479 782(sole)X
1480 932(purpose)X
1481 1207(is)X
1482 1281(to)X
1483 1364(prefetch)X
1484 1649(pages)X
1485 1853(and)X
1486 1990(wait)X
1487 2149(on)X
1488 2250(them.)X
1489 2471(There)X
1490 2680(is)X
1491 2754(still)X
1492 2894(no)X
1493 2995(way)X
1494 3150(to)X
1495 3233(enforce)X
1496 3496(write)X
1497 3682(ordering)X
1498 3975(other)X
1499 4161(than)X
1500 555 3075(keeping)N
1501 829(pages)X
1502 1032(in)X
1503 1114(user)X
1504 1268(memory)X
1505 1555(and)X
1506 1691(using)X
1507 1884(the)X
1508 3 f
1509 2002(fsync)X
1510 1 f
1511 2180(\(3\))X
1512 2294(system)X
1513 2536(call)X
1514 2672(to)X
1515 2754(perform)X
1516 3033(synchronous)X
1517 3458(writes.)X
1518 755 3198(In)N
1519 845(the)X
1520 966(area)X
1521 1124(of)X
1522 1214(\256le)X
1523 1339(systems,)X
1524 1635(the)X
1525 1756(fast)X
1526 1895(\256le)X
1527 2020(system)X
1528 2265(\(FFS\))X
1529 2474([MCKU84])X
1530 2871(allows)X
1531 3103(allocation)X
1532 3442(in)X
1533 3527(units)X
1534 3704(up)X
1535 3806(to)X
1536 3890(64KBytes)X
1537 4232(as)X
1538 555 3288(opposed)N
1539 846(to)X
1540 932(the)X
1541 1054(4KByte)X
1542 1327(and)X
1543 1466(8KByte)X
1544 1738(\256gures)X
1545 1979(quoted)X
1546 2220(in)X
1547 2305([STON81].)X
1548 2711(The)X
1549 2859(measurements)X
1550 3341(in)X
1551 3426(this)X
1552 3564(paper)X
1553 3766(were)X
1554 3946(taken)X
1555 4143(from)X
1556 555 3378(an)N
1557 655(8KByte)X
1558 928(FFS,)X
1559 1104(but)X
1560 1230(as)X
1561 1320(LIBTP)X
1562 1565(runs)X
1563 1726(exclusively)X
1564 2114(in)X
1565 2199(user)X
1566 2356(space,)X
1567 2578(there)X
1568 2762(is)X
1569 2838(nothing)X
1570 3105(to)X
1571 3190(prevent)X
1572 3454(it)X
1573 3521(from)X
1574 3700(being)X
1575 3901(run)X
1576 4031(on)X
1577 4134(other)X
1578 555 3468(UNIX)N
1579 776(compatible)X
1580 1152(\256le)X
1581 1274(systems)X
1582 1547(\(e.g.)X
1583 1710(log-structured)X
1584 2180([ROSE91],)X
1585 2558(extent-based,)X
1586 3004(or)X
1587 3091(multi-block)X
1588 3484([SELT91]\).)X
1589 755 3591(Finally,)N
1590 1029(with)X
1591 1199(regard)X
1592 1433(to)X
1593 1523(the)X
1594 1648(process)X
1595 1916(structure,)X
1596 2244(neither)X
1597 2494(context)X
1598 2757(switch)X
1599 2993(time)X
1600 3162(nor)X
1601 3296(scheduling)X
1602 3670(around)X
1603 3920(semaphores)X
1604 555 3681(seems)N
1605 785(to)X
1606 881(affect)X
1607 1099(the)X
1608 1231(system)X
1609 1487(performance.)X
1610 1968(However,)X
1611 2317(the)X
1612 2449(implementation)X
1613 2984(of)X
1614 3084(semaphores)X
1615 3496(can)X
1616 3641(impact)X
1617 3892(performance)X
1618 555 3771(tremendously.)N
1619 1051(This)X
1620 1213(is)X
1621 1286(discussed)X
1622 1613(in)X
1623 1695(more)X
1624 1880(detail)X
1625 2078(in)X
1626 2160(section)X
1627 2407(4.3.)X
1628 755 3894(The)N
1629 908(Tuxedo)X
1630 1181(system)X
1631 1431(from)X
1632 1615(AT&T)X
1633 1861(is)X
1634 1941(a)X
1635 2004(transaction)X
1636 2383(manager)X
1637 2687(which)X
1638 2910(coordinates)X
1639 3307(distributed)X
1640 3676(transaction)X
1641 4055(commit)X
1642 555 3984(from)N
1643 738(a)X
1644 801(variety)X
1645 1051(of)X
1646 1145(different)X
1647 1449(local)X
1648 1632(transaction)X
1649 2011(managers.)X
1650 2386(At)X
1651 2493(this)X
1652 2634(time,)X
1653 2822(LIBTP)X
1654 3070(does)X
1655 3243(not)X
1656 3371(have)X
1657 3549(its)X
1658 3650(own)X
1659 3814(mechanism)X
1660 4205(for)X
1661 555 4074(distributed)N
1662 942(commit)X
1663 1231(processing,)X
1664 1639(but)X
1665 1786(could)X
1666 2009(be)X
1667 2130(used)X
1668 2322(as)X
1669 2434(a)X
1670 2515(local)X
1671 2716(transaction)X
1672 3113(agent)X
1673 3331(by)X
1674 3455(systems)X
1675 3752(such)X
1676 3943(as)X
1677 4054(Tuxedo)X
1678 555 4164([ANDR89].)N
1679 10 f
1680 863 4393(i)N
1681 870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1682 1 f
1683 903 4483(Buffer)N
1684 1133(Management)X
1685 10 f
1686 1672(g)X
1687 1 f
1688 1720(Data)X
1689 1892(must)X
1690 2067(be)X
1691 2163(copied)X
1692 2397(between)X
1693 2685(kernel)X
1694 2906(space)X
1695 3105(and)X
1696 3241(user)X
1697 3395(space.)X
1698 10 f
1699 1672 4573(g)N
1700 1 f
1701 1720(Buffer)X
1702 1950(pool)X
1703 2112(access)X
1704 2338(is)X
1705 2411(too)X
1706 2533(slow.)X
1707 10 f
1708 1672 4663(g)N
1709 1 f
1710 1720(There)X
1711 1928(is)X
1712 2001(no)X
1713 2101(way)X
1714 2255(to)X
1715 2337(request)X
1716 2589(prefetch.)X
1717 10 f
1718 1672 4753(g)N
1719 1 f
1720 1720(Replacement)X
1721 2159(is)X
1722 2232(usually)X
1723 2483(LRU)X
1724 2663(which)X
1725 2879(may)X
1726 3037(be)X
1727 3133(suboptimal)X
1728 3508(for)X
1729 3622(databases.)X
1730 10 f
1731 1672 4843(g)N
1732 1 f
1733 1720(There)X
1734 1928(is)X
1735 2001(no)X
1736 2101(way)X
1737 2255(to)X
1738 2337(guarantee)X
1739 2670(write)X
1740 2855(ordering.)X
1741 10 f
1742 863 4853(i)N
1743 870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1744 1 f
1745 903 4943(File)N
1746 1047(System)X
1747 10 f
1748 1672(g)X
1749 1 f
1750 1720(Allocation)X
1751 2078(is)X
1752 2151(done)X
1753 2327(in)X
1754 2409(small)X
1755 2602(blocks)X
1756 2831(\(usually)X
1757 3109(4K)X
1758 3227(or)X
1759 3314(8K\).)X
1760 10 f
1761 1672 5033(g)N
1762 1 f
1763 1720(Logical)X
1764 1985(organization)X
1765 2406(of)X
1766 2493(\256les)X
1767 2646(is)X
1768 2719(redundantly)X
1769 3122(expressed.)X
1770 10 f
1771 863 5043(i)N
1772 870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1773 1 f
1774 903 5133(Process)N
1775 1168(Structure)X
1776 10 f
1777 1672(g)X
1778 1 f
1779 1720(Context)X
1780 1993(switching)X
1781 2324(and)X
1782 2460(message)X
1783 2752(passing)X
1784 3012(are)X
1785 3131(too)X
1786 3253(slow.)X
1787 10 f
1788 1672 5223(g)N
1789 1 f
1790 1720(A)X
1791 1798(process)X
1792 2059(may)X
1793 2217(be)X
1794 2313(descheduled)X
1795 2730(while)X
1796 2928(holding)X
1797 3192(a)X
1798 3248(semaphore.)X
1799 10 f
1800 863 5233(i)N
1801 870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1802 863(c)X
1803 5193(c)Y
1804 5113(c)Y
1805 5033(c)Y
1806 4953(c)Y
1807 4873(c)Y
1808 4793(c)Y
1809 4713(c)Y
1810 4633(c)Y
1811 4553(c)Y
1812 4473(c)Y
1813 3990 5233(c)N
1814 5193(c)Y
1815 5113(c)Y
1816 5033(c)Y
1817 4953(c)Y
1818 4873(c)Y
1819 4793(c)Y
1820 4713(c)Y
1821 4633(c)Y
1822 4553(c)Y
1823 4473(c)Y
1824 3 f
1825 1156 5446(Table)N
1826 1371(One:)X
1827 1560(Shortcomings)X
1828 2051(of)X
1829 2138(UNIX)X
1830 2363(transaction)X
1831 2770(support)X
1832 3056(cited)X
1833 3241(in)X
1834 3327([STON81].)X
1836 3 p
1837 %%Page: 3 3
1838 10 s 10 xH 0 xS 3 f
1839 1 f
1840 755 630(The)N
1841 901(transaction)X
1842 1274(architecture)X
1843 1675(presented)X
1844 2004(in)X
1845 2087([YOUN91])X
1846 2474(is)X
1847 2548(very)X
1848 2712(similar)X
1849 2955(to)X
1850 3038(that)X
1851 3179(implemented)X
1852 3618(in)X
1853 3701(the)X
1854 3820(LIBTP.)X
1855 4103(While)X
1856 555 720([YOUN91])N
1857 947(presents)X
1858 1236(a)X
1859 1298(model)X
1860 1524(for)X
1861 1644(providing)X
1862 1981(transaction)X
1863 2359(services,)X
1864 2663(this)X
1865 2803(paper)X
1866 3007(focuses)X
1867 3273(on)X
1868 3378(the)X
1869 3501(implementation)X
1870 4028(and)X
1871 4169(per-)X
1872 555 810(formance)N
1873 881(of)X
1874 970(a)X
1875 1028(particular)X
1876 1358(system.)X
1877 1642(In)X
1878 1731(addition,)X
1879 2034(we)X
1880 2149(provide)X
1881 2415(detailed)X
1882 2690(comparisons)X
1883 3116(with)X
1884 3279(alternative)X
1885 3639(solutions:)X
1886 3970(traditional)X
1887 555 900(UNIX)N
1888 776(services)X
1889 1055(and)X
1890 1191(commercial)X
1891 1590(database)X
1892 1887(management)X
1893 2317(systems.)X
1894 3 f
1895 555 1086(3.)N
1896 655(Architecture)X
1897 1 f
1898 755 1209(The)N
1899 906(library)X
1900 1146(is)X
1901 1224(designed)X
1902 1534(to)X
1903 1621(provide)X
1904 1891(well)X
1905 2054(de\256ned)X
1906 2315(interfaces)X
1907 2653(to)X
1908 2740(the)X
1909 2863(services)X
1910 3147(required)X
1911 3440(for)X
1912 3559(transaction)X
1913 3936(processing.)X
1914 555 1299(These)N
1915 777(services)X
1916 1066(are)X
1917 1195(recovery,)X
1918 1527(concurrency)X
1919 1955(control,)X
1920 2232(and)X
1921 2378(the)X
1922 2506(management)X
1923 2946(of)X
1924 3043(shared)X
1925 3283(data.)X
1926 3487(First)X
1927 3663(we)X
1928 3787(will)X
1929 3941(discuss)X
1930 4201(the)X
1931 555 1389(design)N
1932 795(tradeoffs)X
1933 1112(in)X
1934 1205(the)X
1935 1334(selection)X
1936 1650(of)X
1937 1748(recovery,)X
1938 2081(concurrency)X
1939 2510(control,)X
1940 2787(and)X
1941 2933(buffer)X
1942 3160(management)X
1943 3600(implementations,)X
1944 4183(and)X
1945 555 1479(then)N
1946 713(we)X
1947 827(will)X
1948 971(present)X
1949 1223(the)X
1950 1341(overall)X
1951 1584(library)X
1952 1818(architecture)X
1953 2218(and)X
1954 2354(module)X
1955 2614(descriptions.)X
1956 3 f
1957 555 1665(3.1.)N
1958 715(Design)X
1959 966(Tradeoffs)X
1960 1 f
1961 3 f
1962 555 1851(3.1.1.)N
1963 775(Crash)X
1964 1004(Recovery)X
1965 1 f
1966 755 1974(The)N
1967 909(recovery)X
1968 1220(protocol)X
1969 1516(is)X
1970 1598(responsible)X
1971 1992(for)X
1972 2115(providing)X
1973 2455(the)X
1974 2582(transaction)X
1975 2963(semantics)X
1976 3308(discussed)X
1977 3644(earlier.)X
1978 3919(There)X
1979 4136(are)X
1980 4263(a)X
1981 555 2064(wide)N
1982 739(range)X
1983 946(of)X
1984 1041(recovery)X
1985 1351(protocols)X
1986 1677(available)X
1987 1995([HAER83],)X
1988 2395(but)X
1989 2525(we)X
1990 2647(can)X
1991 2786(crudely)X
1992 3054(divide)X
1993 3281(them)X
1994 3468(into)X
1995 3619(two)X
1996 3766(main)X
1997 3953(categories.)X
1998 555 2154(The)N
1999 706(\256rst)X
2000 856(category)X
2001 1159(records)X
2002 1422(all)X
2003 1528(modi\256cations)X
2004 1989(to)X
2005 2077(the)X
2006 2201(database)X
2007 2504(in)X
2008 2592(a)X
2009 2653(separate)X
2010 2942(\256le,)X
2011 3089(and)X
2012 3230(uses)X
2013 3393(this)X
2014 3533(\256le)X
2015 3660(\(log\))X
2016 3841(to)X
2017 3928(back)X
2018 4105(out)X
2019 4232(or)X
2020 555 2244(reapply)N
2021 825(these)X
2022 1019(modi\256cations)X
2023 1483(if)X
2024 1561(a)X
2025 1626(transaction)X
2026 2007(aborts)X
2027 2232(or)X
2028 2328(the)X
2029 2455(system)X
2030 2706(crashes.)X
2031 3012(We)X
2032 3153(call)X
2033 3298(this)X
2034 3442(set)X
2035 3560(the)X
2036 3 f
2037 3687(logging)X
2038 3963(protocols)X
2039 1 f
2040 4279(.)X
2041 555 2334(The)N
2042 703(second)X
2043 949(category)X
2044 1249(avoids)X
2045 1481(the)X
2046 1602(use)X
2047 1732(of)X
2048 1822(a)X
2049 1881(log)X
2050 2006(by)X
2051 2109(carefully)X
2052 2418(controlling)X
2053 2792(when)X
2054 2989(data)X
2055 3146(are)X
2056 3268(written)X
2057 3518(to)X
2058 3603(disk.)X
2059 3799(We)X
2060 3934(call)X
2061 4073(this)X
2062 4210(set)X
2063 555 2424(the)N
2064 3 f
2065 673(non-logging)X
2066 1096(protocols)X
2067 1 f
2068 1412(.)X
2069 755 2547(Non-logging)N
2070 1185(protocols)X
2071 1504(hold)X
2072 1666(dirty)X
2073 1837(buffers)X
2074 2085(in)X
2075 2167(main)X
2076 2347(memory)X
2077 2634(or)X
2078 2721(temporary)X
2079 3071(\256les)X
2080 3224(until)X
2081 3390(commit)X
2082 3654(and)X
2083 3790(then)X
2084 3948(force)X
2085 4134(these)X
2086 555 2637(pages)N
2087 769(to)X
2088 862(disk)X
2089 1026(at)X
2090 1115(transaction)X
2091 1498(commit.)X
2092 1813(While)X
2093 2040(we)X
2094 2165(can)X
2095 2308(use)X
2096 2446(temporary)X
2097 2807(\256les)X
2098 2971(to)X
2099 3064(hold)X
2100 3237(dirty)X
2101 3418(pages)X
2102 3631(that)X
2103 3781(may)X
2104 3949(need)X
2105 4131(to)X
2106 4223(be)X
2107 555 2727(evicted)N
2108 810(from)X
2109 988(memory)X
2110 1277(during)X
2111 1508(a)X
2112 1566(long-running)X
2113 2006(transaction,)X
2114 2400(the)X
2115 2520(only)X
2116 2684(user-level)X
2117 3023(mechanism)X
2118 3410(to)X
2119 3494(force)X
2120 3682(pages)X
2121 3887(to)X
2122 3971(disk)X
2123 4126(is)X
2124 4201(the)X
2125 3 f
2126 555 2817(fsync)N
2127 1 f
2128 733(\(2\))X
2129 850(system)X
2130 1095(call.)X
2131 1274(Unfortunately,)X
2132 3 f
2133 1767(fsync)X
2134 1 f
2135 1945(\(2\))X
2136 2062(is)X
2137 2138(an)X
2138 2237(expensive)X
2139 2581(system)X
2140 2826(call)X
2141 2965(in)X
2142 3050(that)X
2143 3193(it)X
2144 3260(forces)X
2145 3480(all)X
2146 3583(pages)X
2147 3789(of)X
2148 3879(a)X
2149 3938(\256le)X
2150 4062(to)X
2151 4146(disk,)X
2152 555 2907(and)N
2153 691(transactions)X
2154 1094(that)X
2155 1234(manage)X
2156 1504(more)X
2157 1689(than)X
2158 1847(one)X
2159 1983(\256le)X
2160 2105(must)X
2161 2280(issue)X
2162 2460(one)X
2163 2596(call)X
2164 2732(per)X
2165 2855(\256le.)X
2166 755 3030(In)N
2167 853(addition,)X
2168 3 f
2169 1166(fsync)X
2170 1 f
2171 1344(\(2\))X
2172 1469(provides)X
2173 1776(no)X
2174 1887(way)X
2175 2051(to)X
2176 2143(control)X
2177 2400(the)X
2178 2528(order)X
2179 2728(in)X
2180 2820(which)X
2181 3046(dirty)X
2182 3227(pages)X
2183 3440(are)X
2184 3569(written)X
2185 3826(to)X
2186 3918(disk.)X
2187 4121(Since)X
2188 555 3120(non-logging)N
2189 976(protocols)X
2190 1304(must)X
2191 1489(sometimes)X
2192 1861(order)X
2193 2061(writes)X
2194 2287(carefully)X
2195 2603([SULL92],)X
2196 2987(they)X
2197 3155(are)X
2198 3284(dif\256cult)X
2199 3567(to)X
2200 3659(implement)X
2201 4030(on)X
2202 4139(Unix)X
2203 555 3210(systems.)N
2204 868(As)X
2205 977(a)X
2206 1033(result,)X
2207 1251(we)X
2208 1365(have)X
2209 1537(chosen)X
2210 1780(to)X
2211 1862(implement)X
2212 2224(a)X
2213 2280(logging)X
2214 2544(protocol.)X
2215 755 3333(Logging)N
2216 1050(protocols)X
2217 1372(may)X
2218 1534(be)X
2219 1634(categorized)X
2220 2029(based)X
2221 2236(on)X
2222 2340(how)X
2223 2502(information)X
2224 2904(is)X
2225 2981(logged)X
2226 3223(\(physically)X
2227 3602(or)X
2228 3692(logically\))X
2229 4022(and)X
2230 4161(how)X
2231 555 3423(much)N
2232 767(is)X
2233 854(logged)X
2234 1106(\(before)X
2235 1373(images,)X
2236 1654(after)X
2237 1836(images)X
2238 2097(or)X
2239 2198(both\).)X
2240 2441(In)X
2241 3 f
2242 2542(physical)X
2243 2855(logging)X
2244 1 f
2245 3103(,)X
2246 3157(images)X
2247 3417(of)X
2248 3517(complete)X
2249 3844(physical)X
2250 4144(units)X
2251 555 3513(\(pages)N
2252 786(or)X
2253 874(buffers\))X
2254 1150(are)X
2255 1270(recorded,)X
2256 1593(while)X
2257 1792(in)X
2258 3 f
2259 1875(logical)X
2260 2118(logging)X
2261 1 f
2262 2387(a)X
2263 2444(description)X
2264 2820(of)X
2265 2907(the)X
2266 3025(operation)X
2267 3348(is)X
2268 3421(recorded.)X
2269 3763(Therefore,)X
2270 4121(while)X
2271 555 3603(we)N
2272 675(may)X
2273 839(record)X
2274 1071(entire)X
2275 1280(pages)X
2276 1489(in)X
2277 1577(a)X
2278 1639(physical)X
2279 1932(log,)X
2280 2080(we)X
2281 2200(need)X
2282 2378(only)X
2283 2546(record)X
2284 2777(the)X
2285 2900(records)X
2286 3162(being)X
2287 3365(modi\256ed)X
2288 3674(in)X
2289 3761(a)X
2290 3822(logical)X
2291 4065(log.)X
2292 4232(In)X
2293 555 3693(fact,)N
2294 718(physical)X
2295 1006(logging)X
2296 1271(can)X
2297 1404(be)X
2298 1501(thought)X
2299 1766(of)X
2300 1854(as)X
2301 1942(a)X
2302 1999(special)X
2303 2243(case)X
2304 2403(of)X
2305 2491(logical)X
2306 2730(logging,)X
2307 3015(since)X
2308 3201(the)X
2309 3320 0.3125(``records'')AX
2310 3686(that)X
2311 3827(we)X
2312 3942(log)X
2313 4065(in)X
2314 4148(logi-)X
2315 555 3783(cal)N
2316 673(logging)X
2317 941(might)X
2318 1151(be)X
2319 1251(physical)X
2320 1542(pages.)X
2321 1789(Since)X
2322 1991(logical)X
2323 2233(logging)X
2324 2501(is)X
2325 2578(both)X
2326 2743(more)X
2327 2931(space-ef\256cient)X
2328 3423(and)X
2329 3562(more)X
2330 3750(general,)X
2331 4030(we)X
2332 4147(have)X
2333 555 3873(chosen)N
2334 798(it)X
2335 862(for)X
2336 976(our)X
2337 1103(logging)X
2338 1367(protocol.)X
2339 755 3996(In)N
2340 3 f
2341 843(before-image)X
2342 1315(logging)X
2343 1 f
2344 1563(,)X
2345 1604(we)X
2346 1719(log)X
2347 1842(a)X
2348 1899(copy)X
2349 2076(of)X
2350 2164(the)X
2351 2283(data)X
2352 2438(before)X
2353 2665(the)X
2354 2784(update,)X
2355 3039(while)X
2356 3238(in)X
2357 3 f
2358 3321(after-image)X
2359 3739(logging)X
2360 1 f
2361 3987(,)X
2362 4027(we)X
2363 4141(log)X
2364 4263(a)X
2365 555 4086(copy)N
2366 740(of)X
2367 836(the)X
2368 963(data)X
2369 1126(after)X
2370 1303(the)X
2371 1429(update.)X
2372 1711(If)X
2373 1793(we)X
2374 1915(log)X
2375 2045(only)X
2376 2215(before-images,)X
2377 2723(then)X
2378 2889(there)X
2379 3078(is)X
2380 3159(suf\256cient)X
2381 3485(information)X
2382 3891(in)X
2383 3981(the)X
2384 4107(log)X
2385 4237(to)X
2386 555 4176(allow)N
2387 761(us)X
2388 860(to)X
2389 3 f
2390 950(undo)X
2391 1 f
2392 1150(the)X
2393 1276(transaction)X
2394 1656(\(go)X
2395 1791(back)X
2396 1971(to)X
2397 2061(the)X
2398 2187(state)X
2399 2361(represented)X
2400 2759(by)X
2401 2866(the)X
2402 2991(before-image\).)X
2403 3514(However,)X
2404 3876(if)X
2405 3952(the)X
2406 4077(system)X
2407 555 4266(crashes)N
2408 814(and)X
2409 952(a)X
2410 1010(committed)X
2411 1374(transaction's)X
2412 1806(changes)X
2413 2087(have)X
2414 2261(not)X
2415 2385(reached)X
2416 2658(the)X
2417 2778(disk,)X
2418 2953(we)X
2419 3068(have)X
2420 3241(no)X
2421 3342(means)X
2422 3568(to)X
2423 3 f
2424 3651(redo)X
2425 1 f
2426 3828(the)X
2427 3947(transaction)X
2428 555 4356(\(reapply)N
2429 849(the)X
2430 973(updates\).)X
2431 1311(Therefore,)X
2432 1675(logging)X
2433 1945(only)X
2434 2113(before-images)X
2435 2599(necessitates)X
2436 3004(forcing)X
2437 3262(dirty)X
2438 3439(pages)X
2439 3648(at)X
2440 3732(commit)X
2441 4002(time.)X
2442 4210(As)X
2443 555 4446(mentioned)N
2444 913(above,)X
2445 1145(forcing)X
2446 1397(pages)X
2447 1600(at)X
2448 1678(commit)X
2449 1942(is)X
2450 2015(considered)X
2451 2383(too)X
2452 2505(costly.)X
2453 755 4569(If)N
2454 834(we)X
2455 953(log)X
2456 1080(only)X
2457 1247(after-images,)X
2458 1694(then)X
2459 1857(there)X
2460 2043(is)X
2461 2121(suf\256cient)X
2462 2444(information)X
2463 2847(in)X
2464 2934(the)X
2465 3057(log)X
2466 3184(to)X
2467 3271(allow)X
2468 3474(us)X
2469 3570(to)X
2470 3657(redo)X
2471 3825(the)X
2472 3947(transaction)X
2473 555 4659(\(go)N
2474 687(forward)X
2475 967(to)X
2476 1054(the)X
2477 1177(state)X
2478 1348(represented)X
2479 1743(by)X
2480 1847(the)X
2481 1969(after-image\),)X
2482 2411(but)X
2483 2537(we)X
2484 2655(do)X
2485 2759(not)X
2486 2885(have)X
2487 3061(the)X
2488 3183(information)X
2489 3585(required)X
2490 3877(to)X
2491 3963(undo)X
2492 4147(tran-)X
2493 555 4749(sactions)N
2494 845(which)X
2495 1073(aborted)X
2496 1346(after)X
2497 1526(dirty)X
2498 1709(pages)X
2499 1924(were)X
2500 2113(written)X
2501 2372(to)X
2502 2466(disk.)X
2503 2670(Therefore,)X
2504 3039(logging)X
2505 3314(only)X
2506 3487(after-images)X
2507 3920(necessitates)X
2508 555 4839(holding)N
2509 819(all)X
2510 919(dirty)X
2511 1090(buffers)X
2512 1338(in)X
2513 1420(main)X
2514 1600(memory)X
2515 1887(until)X
2516 2053(commit)X
2517 2317(or)X
2518 2404(writing)X
2519 2655(them)X
2520 2835(to)X
2521 2917(a)X
2522 2973(temporary)X
2523 3323(\256le.)X
2524 755 4962(Since)N
2525 956(neither)X
2526 1202(constraint)X
2527 1541(\(forcing)X
2528 1823(pages)X
2529 2029(on)X
2530 2132(commit)X
2531 2399(or)X
2532 2489(buffering)X
2533 2811(pages)X
2534 3016(until)X
2535 3184(commit\))X
2536 3477(was)X
2537 3624(feasible,)X
2538 3916(we)X
2539 4032(chose)X
2540 4237(to)X
2541 555 5052(log)N
2542 683(both)X
2543 851(before)X
2544 1083(and)X
2545 1225(after)X
2546 1399(images.)X
2547 1672(The)X
2548 1823(only)X
2549 1991(remaining)X
2550 2342(consideration)X
2551 2800(is)X
2552 2879(when)X
2553 3079(changes)X
2554 3363(get)X
2555 3486(written)X
2556 3738(to)X
2557 3825(disk.)X
2558 4023(Changes)X
2559 555 5142(affect)N
2560 764(both)X
2561 931(data)X
2562 1090(pages)X
2563 1298(and)X
2564 1438(the)X
2565 1560(log.)X
2566 1726(If)X
2567 1804(the)X
2568 1926(changed)X
2569 2218(data)X
2570 2376(page)X
2571 2552(is)X
2572 2629(written)X
2573 2880(before)X
2574 3110(the)X
2575 3232(log)X
2576 3358(page,)X
2577 3554(and)X
2578 3694(the)X
2579 3816(system)X
2580 4062(crashes)X
2581 555 5232(before)N
2582 787(the)X
2583 911(log)X
2584 1039(page)X
2585 1217(is)X
2586 1296(written,)X
2587 1569(the)X
2588 1693(log)X
2589 1820(will)X
2590 1969(contain)X
2591 2230(insuf\256cient)X
2592 2615(information)X
2593 3018(to)X
2594 3105(undo)X
2595 3290(the)X
2596 3413(change.)X
2597 3706(This)X
2598 3873(violates)X
2599 4147(tran-)X
2600 555 5322(saction)N
2601 803(semantics,)X
2602 1160(since)X
2603 1346(some)X
2604 1536(changed)X
2605 1825(data)X
2606 1980(pages)X
2607 2184(may)X
2608 2343(not)X
2609 2466(have)X
2610 2638(been)X
2611 2810(written,)X
2612 3077(and)X
2613 3213(the)X
2614 3331(database)X
2615 3628(cannot)X
2616 3862(be)X
2617 3958(restored)X
2618 4237(to)X
2619 555 5412(its)N
2620 650(pre-transaction)X
2621 1152(state.)X
2622 755 5535(The)N
2623 914(log)X
2624 1050(record)X
2625 1290(describing)X
2626 1658(an)X
2627 1768(update)X
2628 2016(must)X
2629 2205(be)X
2630 2315(written)X
2631 2576(to)X
2632 2672(stable)X
2633 2893(storage)X
2634 3159(before)X
2635 3398(the)X
2636 3529(modi\256ed)X
2637 3846(page.)X
2638 4071(This)X
2639 4246(is)X
2640 3 f
2641 555 5625(write-ahead)N
2642 992(logging)X
2643 1 f
2644 1240(.)X
2645 1307(If)X
2646 1388(log)X
2647 1517(records)X
2648 1781(are)X
2649 1907(safely)X
2650 2126(written)X
2651 2380(to)X
2652 2469(disk,)X
2653 2649(data)X
2654 2810(pages)X
2655 3020(may)X
2656 3185(be)X
2657 3288(written)X
2658 3542(at)X
2659 3627(any)X
2660 3770(time)X
2661 3939(afterwards.)X
2662 555 5715(This)N
2663 721(means)X
2664 950(that)X
2665 1094(the)X
2666 1216(only)X
2667 1382(\256le)X
2668 1508(that)X
2669 1652(ever)X
2670 1815(needs)X
2671 2022(to)X
2672 2108(be)X
2673 2208(forced)X
2674 2438(to)X
2675 2524(disk)X
2676 2681(is)X
2677 2758(the)X
2678 2880(log.)X
2679 3046(Since)X
2680 3248(the)X
2681 3370(log)X
2682 3495(is)X
2683 3571(append-only,)X
2684 4015(modi\256ed)X
2686 4 p
2687 %%Page: 4 4
2688 10 s 10 xH 0 xS 1 f
2689 3 f
2690 1 f
2691 555 630(pages)N
2692 760(always)X
2693 1005(appear)X
2694 1242(at)X
2695 1322(the)X
2696 1442(end)X
2697 1580(and)X
2698 1718(may)X
2699 1878(be)X
2700 1976(written)X
2701 2224(to)X
2702 2307(disk)X
2703 2461(ef\256ciently)X
2704 2807(in)X
2705 2890(any)X
2706 3027(\256le)X
2707 3150(system)X
2708 3393(that)X
2709 3534(favors)X
2710 3756(sequential)X
2711 4102(order-)X
2712 555 720(ing)N
2713 677(\()X
2714 2 f
2715 704(e.g.)X
2716 1 f
2717 820(,)X
2718 860(FFS,)X
2719 1032(log-structured)X
2720 1502(\256le)X
2721 1624(system,)X
2722 1886(or)X
2723 1973(an)X
2724 2069(extent-based)X
2725 2495(system\).)X
2726 3 f
2727 555 906(3.1.2.)N
2728 775(Concurrency)X
2729 1245(Control)X
2730 1 f
2731 755 1029(The)N
2732 918(concurrency)X
2733 1354(control)X
2734 1619(protocol)X
2735 1923(is)X
2736 2013(responsible)X
2737 2415(for)X
2738 2546(maintaining)X
2739 2965(consistency)X
2740 3376(in)X
2741 3475(the)X
2742 3610(presence)X
2743 3929(of)X
2744 4033(multiple)X
2745 555 1119(accesses.)N
2746 897(There)X
2747 1114(are)X
2748 1242(several)X
2749 1499(alternative)X
2750 1867(solutions)X
2751 2183(such)X
2752 2358(as)X
2753 2453(locking,)X
2754 2741(optimistic)X
2755 3088(concurrency)X
2756 3514(control)X
2757 3769([KUNG81],)X
2758 4183(and)X
2759 555 1209(timestamp)N
2760 912(ordering)X
2761 1208([BERN80].)X
2762 1619(Since)X
2763 1821(optimistic)X
2764 2164(methods)X
2765 2459(and)X
2766 2599(timestamp)X
2767 2956(ordering)X
2768 3252(are)X
2769 3374(generally)X
2770 3696(more)X
2771 3884(complex)X
2772 4183(and)X
2773 555 1299(restrict)N
2774 804(concurrency)X
2775 1228(without)X
2776 1498(eliminating)X
2777 1888(starvation)X
2778 2230(or)X
2779 2323(deadlocks,)X
2780 2690(we)X
2781 2810(chose)X
2782 3018(two-phase)X
2783 3373(locking)X
2784 3638(\(2PL\).)X
2785 3890(Strict)X
2786 4088(2PL)X
2787 4246(is)X
2788 555 1389(suboptimal)N
2789 935(for)X
2790 1054(certain)X
2791 1297(data)X
2792 1455(structures)X
2793 1791(such)X
2794 1962(as)X
2795 2053(B-trees)X
2796 2309(because)X
2797 2588(it)X
2798 2656(can)X
2799 2792(limit)X
2800 2966(concurrency,)X
2801 3408(so)X
2802 3503(we)X
2803 3621(use)X
2804 3752(a)X
2805 3812(special)X
2806 4059(locking)X
2807 555 1479(protocol)N
2808 842(based)X
2809 1045(on)X
2810 1145(one)X
2811 1281(described)X
2812 1609(in)X
2813 1691([LEHM81].)X
2814 755 1602(The)N
2815 901(B-tree)X
2816 1123(locking)X
2817 1384(protocol)X
2818 1672(we)X
2819 1787(implemented)X
2820 2226(releases)X
2821 2502(locks)X
2822 2691(at)X
2823 2769(internal)X
2824 3034(nodes)X
2825 3241(in)X
2826 3323(the)X
2827 3441(tree)X
2828 3582(as)X
2829 3669(it)X
2830 3733(descends.)X
2831 4083(A)X
2832 4161(lock)X
2833 555 1692(on)N
2834 658(an)X
2835 757(internal)X
2836 1025(page)X
2837 1200(is)X
2838 1276(always)X
2839 1522(released)X
2840 1808(before)X
2841 2036(a)X
2842 2094(lock)X
2843 2254(on)X
2844 2356(its)X
2845 2453(child)X
2846 2635(is)X
2847 2710(obtained)X
2848 3008(\(that)X
2849 3177(is,)X
2850 3272(locks)X
2851 3463(are)X
2852 3584(not)X
2853 3 f
2854 3708(coupled)X
2855 1 f
2856 3996([BAY77])X
2857 555 1782(during)N
2858 786(descent\).)X
2859 1116(When)X
2860 1330(a)X
2861 1388(leaf)X
2862 1531(\(or)X
2863 1647(internal\))X
2864 1941(page)X
2865 2115(is)X
2866 2190(split,)X
2867 2369(a)X
2868 2427(write)X
2869 2614(lock)X
2870 2774(is)X
2871 2849(acquired)X
2872 3148(on)X
2873 3250(the)X
2874 3370(parent)X
2875 3593(before)X
2876 3821(the)X
2877 3941(lock)X
2878 4100(on)X
2879 4201(the)X
2880 555 1872(just-split)N
2881 855(page)X
2882 1028(is)X
2883 1102(released)X
2884 1387(\(locks)X
2885 1604(are)X
2886 3 f
2887 1724(coupled)X
2888 1 f
2889 2011(during)X
2890 2241(ascent\).)X
2891 2530(Write)X
2892 2734(locks)X
2893 2924(on)X
2894 3025(internal)X
2895 3291(pages)X
2896 3495(are)X
2897 3615(released)X
2898 3899(immediately)X
2899 555 1962(after)N
2900 723(the)X
2901 841(page)X
2902 1013(is)X
2903 1086(updated,)X
2904 1380(but)X
2905 1502(locks)X
2906 1691(on)X
2907 1791(leaf)X
2908 1932(pages)X
2909 2135(are)X
2910 2254(held)X
2911 2412(until)X
2912 2578(the)X
2913 2696(end)X
2914 2832(of)X
2915 2919(the)X
2916 3037(transaction.)X
2917 755 2085(Since)N
2918 964(locks)X
2919 1164(are)X
2920 1294(released)X
2921 1589(during)X
2922 1828(descent,)X
2923 2119(the)X
2924 2247(structure)X
2925 2558(of)X
2926 2655(the)X
2927 2783(tree)X
2928 2934(may)X
2929 3102(change)X
2930 3360(above)X
2931 3582(a)X
2932 3648(node)X
2933 3834(being)X
2934 4042(used)X
2935 4219(by)X
2936 555 2175(some)N
2937 752(process.)X
2938 1061(If)X
2939 1143(that)X
2940 1291(process)X
2941 1560(must)X
2942 1743(later)X
2943 1914(ascend)X
2944 2161(the)X
2945 2287(tree)X
2946 2435(because)X
2947 2717(of)X
2948 2811(a)X
2949 2874(page)X
2950 3053(split,)X
2951 3237(any)X
2952 3380(such)X
2953 3554(change)X
2954 3809(must)X
2955 3991(not)X
2956 4120(cause)X
2957 555 2265(confusion.)N
2958 938(We)X
2959 1077(use)X
2960 1211(the)X
2961 1336(technique)X
2962 1675(described)X
2963 2010(in)X
2964 2099([LEHM81])X
2965 2487(which)X
2966 2710(exploits)X
2967 2989(the)X
2968 3113(ordering)X
2969 3411(of)X
2970 3504(data)X
2971 3664(on)X
2972 3770(a)X
2973 3832(B-tree)X
2974 4059(page)X
2975 4237(to)X
2976 555 2355(guarantee)N
2977 888(that)X
2978 1028(no)X
2979 1128(process)X
2980 1389(ever)X
2981 1548(gets)X
2982 1697(lost)X
2983 1832(as)X
2984 1919(a)X
2985 1975(result)X
2986 2173(of)X
2987 2260(internal)X
2988 2525(page)X
2989 2697(updates)X
2990 2962(made)X
2991 3156(by)X
2992 3256(other)X
2993 3441(processes.)X
2994 755 2478(If)N
2995 836(a)X
2996 899(transaction)X
2997 1278(that)X
2998 1425(updates)X
2999 1697(a)X
3000 1760(B-tree)X
3001 1988(aborts,)X
3002 2231(the)X
3003 2356(user-visible)X
3004 2757(changes)X
3005 3043(to)X
3006 3131(the)X
3007 3255(tree)X
3008 3402(must)X
3009 3583(be)X
3010 3685(rolled)X
3011 3898(back.)X
3012 4116(How-)X
3013 555 2568(ever,)N
3014 735(changes)X
3015 1015(to)X
3016 1097(the)X
3017 1215(internal)X
3018 1480(nodes)X
3019 1687(of)X
3020 1774(the)X
3021 1892(tree)X
3022 2033(need)X
3023 2205(not)X
3024 2327(be)X
3025 2423(rolled)X
3026 2630(back,)X
3027 2822(since)X
3028 3007(these)X
3029 3192(pages)X
3030 3395(contain)X
3031 3651(no)X
3032 3751(user-visible)X
3033 4145(data.)X
3034 555 2658(When)N
3035 771(rolling)X
3036 1008(back)X
3037 1184(a)X
3038 1244(transaction,)X
3039 1640(we)X
3040 1758(roll)X
3041 1893(back)X
3042 2069(all)X
3043 2173(leaf)X
3044 2318(page)X
3045 2494(updates,)X
3046 2783(but)X
3047 2909(no)X
3048 3013(internal)X
3049 3281(insertions)X
3050 3615(or)X
3051 3705(page)X
3052 3880(splits.)X
3053 4111(In)X
3054 4201(the)X
3055 555 2748(worst)N
3056 759(case,)X
3057 944(this)X
3058 1085(will)X
3059 1235(leave)X
3060 1431(a)X
3061 1493(leaf)X
3062 1640(page)X
3063 1818(less)X
3064 1964(than)X
3065 2128(half)X
3066 2279(full.)X
3067 2456(This)X
3068 2624(may)X
3069 2788(cause)X
3070 2993(poor)X
3071 3166(space)X
3072 3371(utilization,)X
3073 3741(but)X
3074 3869(does)X
3075 4042(not)X
3076 4170(lose)X
3077 555 2838(user)N
3078 709(data.)X
3079 755 2961(Holding)N
3080 1038(locks)X
3081 1228(on)X
3082 1329(leaf)X
3083 1471(pages)X
3084 1675(until)X
3085 1842(transaction)X
3086 2215(commit)X
3087 2480(guarantees)X
3088 2845(that)X
3089 2986(no)X
3090 3087(other)X
3091 3273(process)X
3092 3535(can)X
3093 3668(insert)X
3094 3866(or)X
3095 3953(delete)X
3096 4165(data)X
3097 555 3051(that)N
3098 711(has)X
3099 854(been)X
3100 1042(touched)X
3101 1332(by)X
3102 1448(this)X
3103 1598(process.)X
3104 1914(Rolling)X
3105 2188(back)X
3106 2375(insertions)X
3107 2721(and)X
3108 2872(deletions)X
3109 3196(on)X
3110 3311(leaf)X
3111 3467(pages)X
3112 3685(guarantees)X
3113 4064(that)X
3114 4219(no)X
3115 555 3141(aborted)N
3116 819(updates)X
3117 1087(are)X
3118 1209(ever)X
3119 1371(visible)X
3120 1607(to)X
3121 1692(other)X
3122 1880(transactions.)X
3123 2326(Leaving)X
3124 2612(page)X
3125 2787(splits)X
3126 2978(intact)X
3127 3179(permits)X
3128 3442(us)X
3129 3536(to)X
3130 3621(release)X
3131 3867(internal)X
3132 4134(write)X
3133 555 3231(locks)N
3134 744(early.)X
3135 965(Thus)X
3136 1145(transaction)X
3137 1517(semantics)X
3138 1853(are)X
3139 1972(preserved,)X
3140 2325(and)X
3141 2461(locks)X
3142 2650(are)X
3143 2769(held)X
3144 2927(for)X
3145 3041(shorter)X
3146 3284(periods.)X
3147 755 3354(The)N
3148 901(extra)X
3149 1083(complexity)X
3150 1464(introduced)X
3151 1828(by)X
3152 1929(this)X
3153 2065(locking)X
3154 2326(protocol)X
3155 2614(appears)X
3156 2881(substantial,)X
3157 3264(but)X
3158 3387(it)X
3159 3452(is)X
3160 3525(important)X
3161 3856(for)X
3162 3970(multi-user)X
3163 555 3444(execution.)N
3164 950(The)X
3165 1118(bene\256ts)X
3166 1410(of)X
3167 1520(non-two-phase)X
3168 2040(locking)X
3169 2323(on)X
3170 2446(B-trees)X
3171 2721(are)X
3172 2863(well)X
3173 3044(established)X
3174 3443(in)X
3175 3548(the)X
3176 3689(database)X
3177 4009(literature)X
3178 555 3534([BAY77],)N
3179 899([LEHM81].)X
3180 1320(If)X
3181 1394(a)X
3182 1450(process)X
3183 1711(held)X
3184 1869(locks)X
3185 2058(until)X
3186 2224(it)X
3187 2288(committed,)X
3188 2670(then)X
3189 2828(a)X
3190 2884(long-running)X
3191 3322(update)X
3192 3556(could)X
3193 3754(lock)X
3194 3912(out)X
3195 4034(all)X
3196 4134(other)X
3197 555 3624(transactions)N
3198 967(by)X
3199 1076(preventing)X
3200 1448(any)X
3201 1593(other)X
3202 1787(process)X
3203 2057(from)X
3204 2241(locking)X
3205 2509(the)X
3206 2635(root)X
3207 2792(page)X
3208 2972(of)X
3209 3067(the)X
3210 3193(tree.)X
3211 3382(The)X
3212 3535(B-tree)X
3213 3764(locking)X
3214 4032(protocol)X
3215 555 3714(described)N
3216 884(above)X
3217 1096(guarantees)X
3218 1460(that)X
3219 1600(locks)X
3220 1789(on)X
3221 1889(internal)X
3222 2154(pages)X
3223 2357(are)X
3224 2476(held)X
3225 2634(for)X
3226 2748(extremely)X
3227 3089(short)X
3228 3269(periods,)X
3229 3545(thereby)X
3230 3806(increasing)X
3231 4156(con-)X
3232 555 3804(currency.)N
3233 3 f
3234 555 3990(3.1.3.)N
3235 775(Management)X
3236 1245(of)X
3237 1332(Shared)X
3238 1596(Data)X
3239 1 f
3240 755 4113(Database)N
3241 1075(systems)X
3242 1353(permit)X
3243 1587(many)X
3244 1790(users)X
3245 1980(to)X
3246 2067(examine)X
3247 2364(and)X
3248 2505(update)X
3249 2744(the)X
3250 2866(same)X
3251 3055(data)X
3252 3213(concurrently.)X
3253 3683(In)X
3254 3774(order)X
3255 3968(to)X
3256 4054(provide)X
3257 555 4203(this)N
3258 702(concurrent)X
3259 1078(access)X
3260 1316(and)X
3261 1464(enforce)X
3262 1738(the)X
3263 1868(write-ahead)X
3264 2280(logging)X
3265 2556(protocol)X
3266 2855(described)X
3267 3195(in)X
3268 3289(section)X
3269 3548(3.1.1,)X
3270 3759(we)X
3271 3884(use)X
3272 4022(a)X
3273 4089(shared)X
3274 555 4293(memory)N
3275 848(buffer)X
3276 1071(manager.)X
3277 1414(Not)X
3278 1559(only)X
3279 1726(does)X
3280 1898(this)X
3281 2038(provide)X
3282 2308(the)X
3283 2431(guarantees)X
3284 2800(we)X
3285 2919(require,)X
3286 3192(but)X
3287 3319(a)X
3288 3380(user-level)X
3289 3722(buffer)X
3290 3944(manager)X
3291 4246(is)X
3292 555 4383(frequently)N
3293 916(faster)X
3294 1126(than)X
3295 1295(using)X
3296 1498(the)X
3297 1626(\256le)X
3298 1758(system)X
3299 2010(buffer)X
3300 2237(cache.)X
3301 2491(Reads)X
3302 2717(or)X
3303 2814(writes)X
3304 3040(involving)X
3305 3376(the)X
3306 3504(\256le)X
3307 3636(system)X
3308 3888(buffer)X
3309 4115(cache)X
3310 555 4473(often)N
3311 746(require)X
3312 1000(copying)X
3313 1284(data)X
3314 1444(between)X
3315 1738(user)X
3316 1898(and)X
3317 2040(kernel)X
3318 2266(space)X
3319 2470(while)X
3320 2673(a)X
3321 2734(user-level)X
3322 3076(buffer)X
3323 3298(manager)X
3324 3600(can)X
3325 3737(return)X
3326 3954(pointers)X
3327 4237(to)X
3328 555 4563(data)N
3329 709(pages)X
3330 912(directly.)X
3331 1217(Additionally,)X
3332 1661(if)X
3333 1730(more)X
3334 1915(than)X
3335 2073(one)X
3336 2209(process)X
3337 2470(uses)X
3338 2628(the)X
3339 2746(same)X
3340 2931(page,)X
3341 3123(then)X
3342 3281(fewer)X
3343 3485(copies)X
3344 3710(may)X
3345 3868(be)X
3346 3964(required.)X
3347 3 f
3348 555 4749(3.2.)N
3349 715(Module)X
3350 997(Architecture)X
3351 1 f
3352 755 4872(The)N
3353 913(preceding)X
3354 1262(sections)X
3355 1552(described)X
3356 1892(modules)X
3357 2195(for)X
3358 2321(managing)X
3359 2669(the)X
3360 2799(transaction)X
3361 3183(log,)X
3362 3337(locks,)X
3363 3558(and)X
3364 3706(a)X
3365 3774(cache)X
3366 3990(of)X
3367 4089(shared)X
3368 555 4962(buffers.)N
3369 847(In)X
3370 938(addition,)X
3371 1244(we)X
3372 1362(need)X
3373 1538(to)X
3374 1624(provide)X
3375 1893(functionality)X
3376 2326(for)X
3377 2444(transaction)X
3378 2 f
3379 2819(begin)X
3380 1 f
3381 2997(,)X
3382 2 f
3383 3040(commit)X
3384 1 f
3385 3276(,)X
3386 3319(and)X
3387 2 f
3388 3458(abort)X
3389 1 f
3390 3654(processing,)X
3391 4040(necessi-)X
3392 555 5052(tating)N
3393 769(a)X
3394 837(transaction)X
3395 1221(manager.)X
3396 1570(In)X
3397 1669(order)X
3398 1871(to)X
3399 1965(arbitrate)X
3400 2265(concurrent)X
3401 2641(access)X
3402 2879(to)X
3403 2973(locks)X
3404 3173(and)X
3405 3320(buffers,)X
3406 3599(we)X
3407 3724(include)X
3408 3991(a)X
3409 4058(process)X
3410 555 5142(management)N
3411 995(module)X
3412 1264(which)X
3413 1489(manages)X
3414 1799(a)X
3415 1864(collection)X
3416 2209(of)X
3417 2305(semaphores)X
3418 2713(used)X
3419 2889(to)X
3420 2980(block)X
3421 3187(and)X
3422 3332(release)X
3423 3585(processes.)X
3424 3962(Finally,)X
3425 4237(in)X
3426 555 5232(order)N
3427 752(to)X
3428 841(provide)X
3429 1113(a)X
3430 1176(simple,)X
3431 1436(standard)X
3432 1735(interface)X
3433 2044(we)X
3434 2165(have)X
3435 2344(modi\256ed)X
3436 2655(the)X
3437 2780(database)X
3438 3084(access)X
3439 3317(routines)X
3440 3602(\()X
3441 3 f
3442 3629(db)X
3443 1 f
3444 3717(\(3\)\).)X
3445 3904(For)X
3446 4041(the)X
3447 4165(pur-)X
3448 555 5322(poses)N
3449 758(of)X
3450 850(this)X
3451 990(paper)X
3452 1194(we)X
3453 1313(call)X
3454 1453(the)X
3455 1575(modi\256ed)X
3456 1883(package)X
3457 2171(the)X
3458 3 f
3459 2293(Record)X
3460 2567(Manager)X
3461 1 f
3462 2879(.)X
3463 2943(Figure)X
3464 3176(one)X
3465 3316(shows)X
3466 3540(the)X
3467 3662(main)X
3468 3846(interfaces)X
3469 4183(and)X
3470 555 5412(architecture)N
3471 955(of)X
3472 1042(LIBTP.)X
3474 5 p
3475 %%Page: 5 5
3476 10 s 10 xH 0 xS 1 f
3477 3 f
3478 1 f
3479 11 s
3480 1851 1520(log_commit)N
3481 2764 2077(buf_unpin)N
3482 2764 1987(buf_get)N
3483 3633 1408(buf_unpin)N
3484 3633 1319(buf_pin)N
3485 3633 1230(buf_get)N
3486 3 f
3487 17 s
3488 1163 960(Txn)N
3489 1430(M)X
3490 1559(anager)X
3491 2582(Record)X
3492 3040(M)X
3493 3169(anager)X
3494 1 Dt
3495 2363 726 MXY
3496 0 355 Dl
3497 1426 0 Dl
3498 0 -355 Dl
3499 -1426 0 Dl
3500 3255 1616 MXY
3501 0 535 Dl
3502 534 0 Dl
3503 0 -535 Dl
3504 -534 0 Dl
3505 2185 MX
3506 0 535 Dl
3507 535 0 Dl
3508 0 -535 Dl
3509 -535 0 Dl
3510 1116 MX
3511 0 535 Dl
3512 534 0 Dl
3513 0 -535 Dl
3514 -534 0 Dl
3515 726 MY
3516 0 355 Dl
3517 891 0 Dl
3518 0 -355 Dl
3519 -891 0 Dl
3520 1 f
3521 11 s
3522 2207 1297(lock)N
3523 2564 1386(log)N
3524 865(unlock_all)X
3525 1851 1609(log_unroll)N
3526 1650 2508 MXY
3527 0 178 Dl
3528 1605 0 Dl
3529 0 -178 Dl
3530 -1605 0 Dl
3531 1294 1616 MXY
3532 19 -30 Dl
3533 -19 11 Dl
3534 -20 -11 Dl
3535 20 30 Dl
3536 0 -535 Dl
3537 2319 2508 MXY
3538 -22 -30 Dl
3539 4 23 Dl
3540 -18 14 Dl
3541 36 -7 Dl
3542 -936 -357 Dl
3543 3277 2455(sleep_on)N
3544 1405 1616 MXY
3545 36 4 Dl
3546 -18 -13 Dl
3547 1 -22 Dl
3548 -19 31 Dl
3549 1070 -535 Dl
3550 2631 2508 MXY
3551 36 6 Dl
3552 -18 -14 Dl
3553 3 -22 Dl
3554 -21 30 Dl
3555 891 -357 Dl
3556 1426 2455(sleep_on)N
3557 3255 1884 MXY
3558 -31 -20 Dl
3559 11 20 Dl
3560 -11 19 Dl
3561 31 -19 Dl
3562 -535 0 Dl
3563 1554 2366(wake)N
3564 3277(wake)X
3565 2185 1884 MXY
3566 -31 -20 Dl
3567 12 20 Dl
3568 -12 19 Dl
3569 31 -19 Dl
3570 -356 0 Dl
3571 0 -803 Dl
3572 3 f
3573 17 s
3574 1236 1851(Lock)N
3575 1118 2030(M)N
3576 1247(anager)X
3577 2339 1851(Log)N
3578 2187 2030(M)N
3579 2316(anager)X
3580 3333 1851(Buffer)N
3581 3257 2030(M)N
3582 3386(anager)X
3583 3522 1616 MXY
3584 20 -30 Dl
3585 -20 11 Dl
3586 -20 -11 Dl
3587 20 30 Dl
3588 0 -535 Dl
3589 1950 2654(Process)N
3590 2424(M)X
3591 2553(anager)X
3592 2542 1616 MXY
3593 19 -30 Dl
3594 -19 11 Dl
3595 -20 -11 Dl
3596 20 30 Dl
3597 0 -535 Dl
3598 1 f
3599 11 s
3600 2207 1364(unlock)N
3601 2452 2508 MXY
3602 20 -31 Dl
3603 -20 11 Dl
3604 -19 -11 Dl
3605 19 31 Dl
3606 0 -357 Dl
3607 2497 2322(sleep_on)N
3608 2497 2233(wake)N
3609 3 Dt
3610 -1 Ds
3611 3 f
3612 10 s
3613 1790 2830(Figure)N
3614 2037(1:)X
3615 2144(Library)X
3616 2435(module)X
3617 2708(interfaces.)X
3618 1 f
3619 10 f
3620 555 3010(h)N
3621 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
3622 3 f
3623 555 3286(3.2.1.)N
3624 775(The)X
3625 928(Log)X
3626 1081(Manager)X
3627 1 f
3628 755 3409(The)N
3629 3 f
3630 907(Log)X
3631 1067(Manager)X
3632 1 f
3633 1406(enforces)X
3634 1706(the)X
3635 1831(write-ahead)X
3636 2238(logging)X
3637 2509(protocol.)X
3638 2843(Its)X
3639 2949(primitive)X
3640 3268(operations)X
3641 3628(are)X
3642 2 f
3643 3753(log)X
3644 1 f
3645 3855(,)X
3646 2 f
3647 3901(log_commit)X
3648 1 f
3649 4279(,)X
3650 2 f
3651 555 3499(log_read)N
3652 1 f
3653 844(,)X
3654 2 f
3655 889(log_roll)X
3656 1 f
3657 1171(and)X
3658 2 f
3659 1312(log_unroll)X
3660 1 f
3661 1649(.)X
3662 1714(The)X
3663 2 f
3664 1864(log)X
3665 1 f
3666 1991(call)X
3667 2132(performs)X
3668 2447(a)X
3669 2508(buffered)X
3670 2806(write)X
3671 2996(of)X
3672 3088(the)X
3673 3211(speci\256ed)X
3674 3520(log)X
3675 3646(record)X
3676 3876(and)X
3677 4016(returns)X
3678 4263(a)X
3679 555 3589(unique)N
3680 809(log)X
3681 947(sequence)X
3682 1278(number)X
3683 1559(\(LSN\).)X
3684 1840(This)X
3685 2017(LSN)X
3686 2203(may)X
3687 2376(then)X
3688 2549(be)X
3689 2660(used)X
3690 2842(to)X
3691 2939(retrieve)X
3692 3220(a)X
3693 3291(record)X
3694 3532(from)X
3695 3723(the)X
3696 3856(log)X
3697 3993(using)X
3698 4201(the)X
3699 2 f
3700 555 3679(log_read)N
3701 1 f
3702 865(call.)X
3703 1042(The)X
3704 2 f
3705 1188(log)X
3706 1 f
3707 1311(interface)X
3708 1614(knows)X
3709 1844(very)X
3710 2008(little)X
3711 2175(about)X
3712 2374(the)X
3713 2493(internal)X
3714 2759(format)X
3715 2993(of)X
3716 3080(the)X
3717 3198(log)X
3718 3320(records)X
3719 3577(it)X
3720 3641(receives.)X
3721 3965(Rather,)X
3722 4219(all)X
3723 555 3769(log)N
3724 681(records)X
3725 942(are)X
3726 1065 0.4028(referenced)AX
3727 1430(by)X
3728 1534(a)X
3729 1594(header)X
3730 1833(structure,)X
3731 2158(a)X
3732 2218(log)X
3733 2344(record)X
3734 2574(type,)X
3735 2756(and)X
3736 2896(a)X
3737 2956(character)X
3738 3276(buffer)X
3739 3497(containing)X
3740 3859(the)X
3741 3981(data)X
3742 4138(to)X
3743 4223(be)X
3744 555 3859(logged.)N
3745 834(The)X
3746 980(log)X
3747 1103(record)X
3748 1330(type)X
3749 1489(is)X
3750 1563(used)X
3751 1731(to)X
3752 1814(call)X
3753 1951(the)X
3754 2070(appropriate)X
3755 2457(redo)X
3756 2621(and)X
3757 2758(undo)X
3758 2939(routines)X
3759 3217(during)X
3760 2 f
3761 3446(abort)X
3762 1 f
3763 3639(and)X
3764 2 f
3765 3775(commit)X
3766 1 f
3767 4031(process-)X
3768 555 3949(ing.)N
3769 721(While)X
3770 941(we)X
3771 1059(have)X
3772 1235(used)X
3773 1406(the)X
3774 3 f
3775 1528(Log)X
3776 1684(Manager)X
3777 1 f
3778 2019(to)X
3779 2104(provide)X
3780 2372(before)X
3781 2601(and)X
3782 2740(after)X
3783 2911(image)X
3784 3130(logging,)X
3785 3417(it)X
3786 3484(may)X
3787 3645(also)X
3788 3797(be)X
3789 3896(used)X
3790 4066(for)X
3791 4183(any)X
3792 555 4039(of)N
3793 642(the)X
3794 760(logging)X
3795 1024(algorithms)X
3796 1386(discussed.)X
3797 755 4162(The)N
3798 2 f
3799 905(log_commit)X
3800 1 f
3801 1308(operation)X
3802 1636(behaves)X
3803 1920(exactly)X
3804 2177(like)X
3805 2322(the)X
3806 2 f
3807 2445(log)X
3808 1 f
3809 2572(operation)X
3810 2900(but)X
3811 3026(guarantees)X
3812 3394(that)X
3813 3538(the)X
3814 3660(log)X
3815 3786(has)X
3816 3917(been)X
3817 4093(forced)X
3818 555 4252(to)N
3819 643(disk)X
3820 802(before)X
3821 1034(returning.)X
3822 1394(A)X
3823 1478(discussion)X
3824 1837(of)X
3825 1930(our)X
3826 2063(commit)X
3827 2333(strategy)X
3828 2613(appears)X
3829 2884(in)X
3830 2971(the)X
3831 3094(implementation)X
3832 3621(section)X
3833 3873(\(section)X
3834 4152(4.2\).)X
3835 2 f
3836 555 4342(Log_unroll)N
3837 1 f
3838 935(reads)X
3839 1126(log)X
3840 1249(records)X
3841 1507(from)X
3842 1684(the)X
3843 1803(log,)X
3844 1946(following)X
3845 2278(backward)X
3846 2611(transaction)X
3847 2983(pointers)X
3848 3261(and)X
3849 3397(calling)X
3850 3635(the)X
3851 3753(appropriate)X
3852 4139(undo)X
3853 555 4432(routines)N
3854 839(to)X
3855 927(implement)X
3856 1295(transaction)X
3857 1673(abort.)X
3858 1904(In)X
3859 1997(a)X
3860 2059(similar)X
3861 2307(manner,)X
3862 2 f
3863 2594(log_roll)X
3864 1 f
3865 2877(reads)X
3866 3073(log)X
3867 3201(records)X
3868 3464(sequentially)X
3869 3877(forward,)X
3870 4178(cal-)X
3871 555 4522(ling)N
3872 699(the)X
3873 817(appropriate)X
3874 1203(redo)X
3875 1366(routines)X
3876 1644(to)X
3877 1726(recover)X
3878 1988(committed)X
3879 2350(transactions)X
3880 2753(after)X
3881 2921(a)X
3882 2977(system)X
3883 3219(crash.)X
3884 3 f
3885 555 4708(3.2.2.)N
3886 775(The)X
3887 928(Buffer)X
3888 1171(Manager)X
3889 1 f
3890 755 4831(The)N
3891 3 f
3892 912(Buffer)X
3893 1167(Manager)X
3894 1 f
3895 1511(uses)X
3896 1681(a)X
3897 1749(pool)X
3898 1923(of)X
3899 2022(shared)X
3900 2264(memory)X
3901 2563(to)X
3902 2657(provide)X
3903 2934(a)X
3904 3002(least-recently-used)X
3905 3641(\(LRU\))X
3906 3886(block)X
3907 4095(cache.)X
3908 555 4921(Although)N
3909 886(the)X
3910 1013(current)X
3911 1270(library)X
3912 1513(provides)X
3913 1818(an)X
3914 1923(LRU)X
3915 2112(cache,)X
3916 2345(it)X
3917 2418(would)X
3918 2647(be)X
3919 2752(simple)X
3920 2994(to)X
3921 3085(add)X
3922 3229(alternate)X
3923 3534(replacement)X
3924 3955(policies)X
3925 4232(as)X
3926 555 5011(suggested)N
3927 903(by)X
3928 1015([CHOU85])X
3929 1408(or)X
3930 1507(to)X
3931 1601(provide)X
3932 1878(multiple)X
3933 2176(buffer)X
3934 2405(pools)X
3935 2610(with)X
3936 2784(different)X
3937 3092(policies.)X
3938 3412(Transactions)X
3939 3853(request)X
3940 4116(pages)X
3941 555 5101(from)N
3942 736(the)X
3943 859(buffer)X
3944 1081(manager)X
3945 1383(and)X
3946 1524(keep)X
3947 1701(them)X
3948 3 f
3949 1886(pinned)X
3950 1 f
3951 2145(to)X
3952 2232(ensure)X
3953 2466(that)X
3954 2610(they)X
3955 2772(are)X
3956 2895(not)X
3957 3021(written)X
3958 3272(to)X
3959 3358(disk)X
3960 3515(while)X
3961 3717(they)X
3962 3879(are)X
3963 4002(in)X
3964 4088(a)X
3965 4148(logi-)X
3966 555 5191(cally)N
3967 732(inconsistent)X
3968 1135(state.)X
3969 1343(When)X
3970 1556(page)X
3971 1729(replacement)X
3972 2143(is)X
3973 2217(necessary,)X
3974 2571(the)X
3975 3 f
3976 2689(Buffer)X
3977 2932(Manager)X
3978 1 f
3979 3264(\256nds)X
3980 3439(an)X
3981 3535(unpinned)X
3982 3853(page)X
3983 4025(and)X
3984 4161(then)X
3985 555 5281(checks)N
3986 794(with)X
3987 956(the)X
3988 3 f
3989 1074(Log)X
3990 1227(Manager)X
3991 1 f
3992 1559(to)X
3993 1641(ensure)X
3994 1871(that)X
3995 2011(the)X
3996 2129(write-ahead)X
3997 2529(protocol)X
3998 2816(is)X
3999 2889(enforced.)X
4000 3 f
4001 555 5467(3.2.3.)N
4002 775(The)X
4003 928(Lock)X
4004 1121(Manager)X
4005 1 f
4006 755 5590(The)N
4007 3 f
4008 901(Lock)X
4009 1095(Manager)X
4010 1 f
4011 1428(supports)X
4012 1720(general)X
4013 1978(purpose)X
4014 2253(locking)X
4015 2514(\(single)X
4016 2753(writer,)X
4017 2986(multiple)X
4018 3273(readers\))X
4019 3553(which)X
4020 3769(is)X
4021 3842(currently)X
4022 4152(used)X
4023 555 5680(to)N
4024 638(provide)X
4025 904(two-phase)X
4026 1254(locking)X
4027 1514(and)X
4028 1650(high)X
4029 1812(concurrency)X
4030 2230(B-tree)X
4031 2451(locking.)X
4032 2751(However,)X
4033 3086(the)X
4034 3204(general)X
4035 3461(purpose)X
4036 3735(nature)X
4037 3956(of)X
4038 4043(the)X
4039 4161(lock)X
4041 6 p
4042 %%Page: 6 6
4043 10 s 10 xH 0 xS 1 f
4044 3 f
4045 1 f
4046 555 630(manager)N
4047 857(provides)X
4048 1158(the)X
4049 1281(ability)X
4050 1510(to)X
4051 1597(support)X
4052 1862(a)X
4053 1923(variety)X
4054 2171(of)X
4055 2263(locking)X
4056 2528(protocols.)X
4057 2890(Currently,)X
4058 3241(all)X
4059 3345(locks)X
4060 3538(are)X
4061 3661(issued)X
4062 3885(at)X
4063 3967(the)X
4064 4089(granu-)X
4065 555 720(larity)N
4066 747(of)X
4067 837(a)X
4068 896(page)X
4069 1071(\(the)X
4070 1219(size)X
4071 1367(of)X
4072 1457(a)X
4073 1516(buffer)X
4074 1736(in)X
4075 1821(the)X
4076 1942(buffer)X
4077 2161(pool\))X
4078 2352(which)X
4079 2570(is)X
4080 2645(identi\256ed)X
4081 2969(by)X
4082 3071(two)X
4083 3213(4-byte)X
4084 3440(integers)X
4085 3716(\(a)X
4086 3801(\256le)X
4087 3925(id)X
4088 4009(and)X
4089 4147(page)X
4090 555 810(number\).)N
4091 898(This)X
4092 1071(provides)X
4093 1378(the)X
4094 1507(necessary)X
4095 1851(information)X
4096 2259(to)X
4097 2351(extend)X
4098 2595(the)X
4099 3 f
4100 2723(Lock)X
4101 2926(Manager)X
4102 1 f
4103 3268(to)X
4104 3360(perform)X
4105 3649(hierarchical)X
4106 4059(locking)X
4107 555 900([GRAY76].)N
4108 982(The)X
4109 1133(current)X
4110 1387(implementation)X
4111 1915(does)X
4112 2088(not)X
4113 2216(support)X
4114 2482(locks)X
4115 2677(at)X
4116 2760(other)X
4117 2950(granularities)X
4118 3376(and)X
4119 3517(does)X
4120 3689(not)X
4121 3816(promote)X
4122 4108(locks;)X
4123 555 990(these)N
4124 740(are)X
4125 859(obvious)X
4126 1132(future)X
4127 1344(additions)X
4128 1657(to)X
4129 1739(the)X
4130 1857(system.)X
4131 755 1113(If)N
4132 831(an)X
4133 929(incoming)X
4134 1253(lock)X
4135 1413(request)X
4136 1667(cannot)X
4137 1903(be)X
4138 2001(granted,)X
4139 2284(the)X
4140 2404(requesting)X
4141 2760(process)X
4142 3023(is)X
4143 3098(queued)X
4144 3352(for)X
4145 3467(the)X
4146 3586(lock)X
4147 3745(and)X
4148 3882(descheduled.)X
4149 555 1203(When)N
4150 769(a)X
4151 827(lock)X
4152 987(is)X
4153 1062(released,)X
4154 1368(the)X
4155 1488(wait)X
4156 1647(queue)X
4157 1860(is)X
4158 1934(traversed)X
4159 2250(and)X
4160 2387(any)X
4161 2524(newly)X
4162 2741(compatible)X
4163 3118(locks)X
4164 3308(are)X
4165 3428(granted.)X
4166 3730(Locks)X
4167 3947(are)X
4168 4067(located)X
4169 555 1293(via)N
4170 680(a)X
4171 743(\256le)X
4172 872(and)X
4173 1015(page)X
4174 1194(hash)X
4175 1368(table)X
4176 1551(and)X
4177 1694(are)X
4178 1820(chained)X
4179 2097(both)X
4180 2266(by)X
4181 2373(object)X
4182 2595(and)X
4183 2737(by)X
4184 2843(transaction,)X
4185 3241(facilitating)X
4186 3614(rapid)X
4187 3805(traversal)X
4188 4108(of)X
4189 4201(the)X
4190 555 1383(lock)N
4191 713(table)X
4192 889(during)X
4193 1118(transaction)X
4194 1490(commit)X
4195 1754(and)X
4196 1890(abort.)X
4197 755 1506(The)N
4198 907(primary)X
4199 1188(interfaces)X
4200 1528(to)X
4201 1617(the)X
4202 1742(lock)X
4203 1907(manager)X
4204 2211(are)X
4205 2 f
4206 2337(lock)X
4207 1 f
4208 2471(,)X
4209 2 f
4210 2518(unlock)X
4211 1 f
4212 2732(,)X
4213 2779(and)X
4214 2 f
4215 2922(lock_unlock_all)X
4216 1 f
4217 3434(.)X
4218 2 f
4219 3500(Lock)X
4220 1 f
4221 3682(obtains)X
4222 3939(a)X
4223 4001(new)X
4224 4161(lock)X
4225 555 1596(for)N
4226 680(a)X
4227 747(speci\256c)X
4228 1023(object.)X
4229 1290(There)X
4230 1509(are)X
4231 1638(also)X
4232 1797(two)X
4233 1947(variants)X
4234 2231(of)X
4235 2328(the)X
4236 2 f
4237 2456(lock)X
4238 1 f
4239 2620(request,)X
4240 2 f
4241 2902(lock_upgrade)X
4242 1 f
4243 3373(and)X
4244 2 f
4245 3519(lock_downgrade)X
4246 1 f
4247 4053(,)X
4248 4103(which)X
4249 555 1686(allow)N
4250 755(the)X
4251 875(caller)X
4252 1076(to)X
4253 1160(atomically)X
4254 1519(trade)X
4255 1701(a)X
4256 1758(lock)X
4257 1917(of)X
4258 2005(one)X
4259 2142(type)X
4260 2301(for)X
4261 2416(a)X
4262 2473(lock)X
4263 2632(of)X
4264 2720(another.)X
4265 2 f
4266 3022(Unlock)X
4267 1 f
4268 3275(releases)X
4269 3551(a)X
4270 3608(speci\256c)X
4271 3874(mode)X
4272 4073(of)X
4273 4161(lock)X
4274 555 1776(on)N
4275 655(a)X
4276 711(speci\256c)X
4277 976(object.)X
4278 2 f
4279 1232(Lock_unlock_all)X
4280 1 f
4281 1786(releases)X
4282 2061(all)X
4283 2161(the)X
4284 2279(locks)X
4285 2468(associated)X
4286 2818(with)X
4287 2980(a)X
4288 3036(speci\256c)X
4289 3301(transaction.)X
4290 3 f
4291 555 1962(3.2.4.)N
4292 775(The)X
4293 928(Process)X
4294 1207(Manager)X
4295 1 f
4296 755 2085(The)N
4297 3 f
4298 900(Process)X
4299 1179(Manager)X
4300 1 f
4301 1511(acts)X
4302 1656(as)X
4303 1743(a)X
4304 1799(user-level)X
4305 2136(scheduler)X
4306 2464(to)X
4307 2546(make)X
4308 2740(processes)X
4309 3068(wait)X
4310 3226(on)X
4311 3326(unavailable)X
4312 3716(locks)X
4313 3905(and)X
4314 4041(pending)X
4315 555 2175(buffer)N
4316 778(cache)X
4317 988(I/O.)X
4318 1161(For)X
4319 1297(each)X
4320 1470(process,)X
4321 1756(a)X
4322 1817(semaphore)X
4323 2190(is)X
4324 2268(maintained)X
4325 2649(upon)X
4326 2834(which)X
4327 3055(that)X
4328 3200(process)X
4329 3466(waits)X
4330 3660(when)X
4331 3859(it)X
4332 3928(needs)X
4333 4136(to)X
4334 4223(be)X
4335 555 2265(descheduled.)N
4336 1014(When)X
4337 1228(a)X
4338 1286(process)X
4339 1549(needs)X
4340 1754(to)X
4341 1838(be)X
4342 1936(run,)X
4343 2084(its)X
4344 2180(semaphore)X
4345 2549(is)X
4346 2623(cleared,)X
4347 2897(and)X
4348 3034(the)X
4349 3153(operating)X
4350 3477(system)X
4351 3720(reschedules)X
4352 4116(it.)X
4353 4201(No)X
4354 555 2355(sophisticated)N
4355 1002(scheduling)X
4356 1378(algorithm)X
4357 1718(is)X
4358 1799(applied;)X
4359 2085(if)X
4360 2162(the)X
4361 2288(lock)X
4362 2454(for)X
4363 2576(which)X
4364 2800(a)X
4365 2864(process)X
4366 3133(was)X
4367 3286(waiting)X
4368 3554(becomes)X
4369 3863(available,)X
4370 4201(the)X
4371 555 2445(process)N
4372 824(is)X
4373 905(made)X
4374 1107(runnable.)X
4375 1456(It)X
4376 1533(would)X
4377 1761(have)X
4378 1941(been)X
4379 2121(possible)X
4380 2411(to)X
4381 2501(change)X
4382 2757(the)X
4383 2883(kernel's)X
4384 3170(process)X
4385 3439(scheduler)X
4386 3775(to)X
4387 3865(interact)X
4388 4134(more)X
4389 555 2535(ef\256ciently)N
4390 900(with)X
4391 1062(the)X
4392 1180(lock)X
4393 1338(manager,)X
4394 1655(but)X
4395 1777(doing)X
4396 1979(so)X
4397 2070(would)X
4398 2290(have)X
4399 2462(compromised)X
4400 2918(our)X
4401 3045(commitment)X
4402 3469(to)X
4403 3551(a)X
4404 3607(user-level)X
4405 3944(package.)X
4406 3 f
4407 555 2721(3.2.5.)N
4408 775(The)X
4409 928(Transaction)X
4410 1361(Manager)X
4411 1 f
4412 755 2844(The)N
4413 3 f
4414 901(Transaction)X
4415 1335(Manager)X
4416 1 f
4417 1668(provides)X
4418 1965(the)X
4419 2084(standard)X
4420 2377(interface)X
4421 2680(of)X
4422 2 f
4423 2768(txn_begin)X
4424 1 f
4425 3084(,)X
4426 2 f
4427 3125(txn_commit)X
4428 1 f
4429 3499(,)X
4430 3540(and)X
4431 2 f
4432 3676(txn_abort)X
4433 1 f
4434 3987(.)X
4435 4047(It)X
4436 4116(keeps)X
4437 555 2934(track)N
4438 742(of)X
4439 835(all)X
4440 941(active)X
4441 1159(transactions,)X
4442 1588(assigns)X
4443 1845(unique)X
4444 2089(transaction)X
4445 2467(identi\256ers,)X
4446 2833(and)X
4447 2974(directs)X
4448 3213(the)X
4449 3336(abort)X
4450 3526(and)X
4451 3667(commit)X
4452 3936(processing.)X
4453 555 3024(When)N
4454 772(a)X
4455 2 f
4456 833(txn_begin)X
4457 1 f
4458 1174(is)X
4459 1252(issued,)X
4460 1497(the)X
4461 3 f
4462 1620(Transaction)X
4463 2058(Manager)X
4464 1 f
4465 2395(assigns)X
4466 2651(the)X
4467 2773(next)X
4468 2935(available)X
4469 3249(transaction)X
4470 3625(identi\256er,)X
4471 3958(allocates)X
4472 4263(a)X
4473 555 3114(per-process)N
4474 948(transaction)X
4475 1322(structure)X
4476 1625(in)X
4477 1709(shared)X
4478 1941(memory,)X
4479 2249(increments)X
4480 2622(the)X
4481 2741(count)X
4482 2940(of)X
4483 3028(active)X
4484 3241(transactions,)X
4485 3665(and)X
4486 3802(returns)X
4487 4046(the)X
4488 4165(new)X
4489 555 3204(transaction)N
4490 937(identi\256er)X
4491 1256(to)X
4492 1348(the)X
4493 1476(calling)X
4494 1724(process.)X
4495 2034(The)X
4496 2188(in-memory)X
4497 2573(transaction)X
4498 2954(structure)X
4499 3264(contains)X
4500 3560(a)X
4501 3625(pointer)X
4502 3881(into)X
4503 4034(the)X
4504 4161(lock)X
4505 555 3294(table)N
4506 734(for)X
4507 851(locks)X
4508 1043(held)X
4509 1204(by)X
4510 1307(this)X
4511 1445(transaction,)X
4512 1840(the)X
4513 1961(last)X
4514 2095(log)X
4515 2220(sequence)X
4516 2538(number,)X
4517 2826(a)X
4518 2885(transaction)X
4519 3260(state)X
4520 3430(\()X
4521 2 f
4522 3457(idle)X
4523 1 f
4524 (,)S
4525 2 f
4526 3620(running)X
4527 1 f
4528 3873(,)X
4529 2 f
4530 3915(aborting)X
4531 1 f
4532 4190(,)X
4533 4232(or)X
4534 2 f
4535 555 3384(committing\))N
4536 1 f
4537 942(,)X
4538 982(an)X
4539 1078(error)X
4540 1255(code,)X
4541 1447(and)X
4542 1583(a)X
4543 1639(semaphore)X
4544 2007(identi\256er.)X
4545 755 3507(At)N
4546 859(commit,)X
4547 1147(the)X
4548 3 f
4549 1269(Transaction)X
4550 1706(Manager)X
4551 1 f
4552 2042(calls)X
4553 2 f
4554 2213(log_commit)X
4555 1 f
4556 2615(to)X
4557 2700(record)X
4558 2929(the)X
4559 3050(end)X
4560 3189(of)X
4561 3279(transaction)X
4562 3654(and)X
4563 3793(to)X
4564 3878(\257ush)X
4565 4056(the)X
4566 4177(log.)X
4567 555 3597(Then)N
4568 743(it)X
4569 810(directs)X
4570 1047(the)X
4571 3 f
4572 1168(Lock)X
4573 1364(Manager)X
4574 1 f
4575 1699(to)X
4576 1784(release)X
4577 2031(all)X
4578 2134(locks)X
4579 2325(associated)X
4580 2677(with)X
4581 2841(the)X
4582 2961(given)X
4583 3161(transaction.)X
4584 3575(If)X
4585 3651(a)X
4586 3709(transaction)X
4587 4083(aborts,)X
4588 555 3687(the)N
4589 3 f
4590 680(Transaction)X
4591 1120(Manager)X
4592 1 f
4593 1459(calls)X
4594 1633(on)X
4595 2 f
4596 1739(log_unroll)X
4597 1 f
4598 2102(to)X
4599 2190(read)X
4600 2355(the)X
4601 2479(transaction's)X
4602 2915(log)X
4603 3043(records)X
4604 3306(and)X
4605 3448(undo)X
4606 3634(any)X
4607 3776(modi\256cations)X
4608 4237(to)X
4609 555 3777(the)N
4610 673(database.)X
4611 1010(As)X
4612 1119(in)X
4613 1201(the)X
4614 1319(commit)X
4615 1583(case,)X
4616 1762(it)X
4617 1826(then)X
4618 1984(calls)X
4619 2 f
4620 2151(lock_unlock_all)X
4621 1 f
4622 2683(to)X
4623 2765(release)X
4624 3009(the)X
4625 3127(transaction's)X
4626 3557(locks.)X
4627 3 f
4628 555 3963(3.2.6.)N
4629 775(The)X
4630 928(Record)X
4631 1198(Manager)X
4632 1 f
4633 755 4086(The)N
4634 3 f
4635 919(Record)X
4636 1208(Manager)X
4637 1 f
4638 1559(supports)X
4639 1869(the)X
4640 2006(abstraction)X
4641 2397(of)X
4642 2503(reading)X
4643 2783(and)X
4644 2938(writing)X
4645 3208(records)X
4646 3484(to)X
4647 3585(a)X
4648 3660(database.)X
4649 3996(We)X
4650 4147(have)X
4651 555 4176(modi\256ed)N
4652 861(the)X
4653 981(the)X
4654 1101(database)X
4655 1399(access)X
4656 1626(routines)X
4657 3 f
4658 1905(db)X
4659 1 f
4660 1993(\(3\))X
4661 2108([BSD91])X
4662 2418(to)X
4663 2501(call)X
4664 2638(the)X
4665 2757(log,)X
4666 2900(lock,)X
4667 3079(and)X
4668 3216(buffer)X
4669 3434(managers.)X
4670 3803(In)X
4671 3891(order)X
4672 4082(to)X
4673 4165(pro-)X
4674 555 4266(vide)N
4675 718(functionality)X
4676 1152(to)X
4677 1239(perform)X
4678 1523(undo)X
4679 1708(and)X
4680 1849(redo,)X
4681 2037(the)X
4682 3 f
4683 2160(Record)X
4684 2434(Manager)X
4685 1 f
4686 2770(de\256nes)X
4687 3021(a)X
4688 3081(collection)X
4689 3421(of)X
4690 3512(log)X
4691 3638(record)X
4692 3868(types)X
4693 4061(and)X
4694 4201(the)X
4695 555 4356(associated)N
4696 920(undo)X
4697 1115(and)X
4698 1266(redo)X
4699 1444(routines.)X
4700 1777(The)X
4701 3 f
4702 1937(Log)X
4703 2105(Manager)X
4704 1 f
4705 2452(performs)X
4706 2777(a)X
4707 2848(table)X
4708 3039(lookup)X
4709 3296(on)X
4710 3411(the)X
4711 3543(record)X
4712 3783(type)X
4713 3955(to)X
4714 4051(call)X
4715 4201(the)X
4716 555 4446(appropriate)N
4717 951(routines.)X
4718 1299(For)X
4719 1440(example,)X
4720 1762(the)X
4721 1890(B-tree)X
4722 2121(access)X
4723 2356(method)X
4724 2625(requires)X
4725 2913(two)X
4726 3062(log)X
4727 3193(record)X
4728 3428(types:)X
4729 3648(insert)X
4730 3855(and)X
4731 4000(delete.)X
4732 4241(A)X
4733 555 4536(replace)N
4734 808(operation)X
4735 1131(is)X
4736 1204(implemented)X
4737 1642(as)X
4738 1729(a)X
4739 1785(delete)X
4740 1997(followed)X
4741 2302(by)X
4742 2402(an)X
4743 2498(insert)X
4744 2696(and)X
4745 2832(is)X
4746 2905(logged)X
4747 3143(accordingly.)X
4748 3 f
4749 555 4722(3.3.)N
4750 715(Application)X
4751 1134(Architectures)X
4752 1 f
4753 755 4845(The)N
4754 907(structure)X
4755 1215(of)X
4756 1309(LIBTP)X
4757 1558(allows)X
4758 1794(application)X
4759 2177(designers)X
4760 2507(to)X
4761 2596(trade)X
4762 2784(off)X
4763 2905(performance)X
4764 3339(and)X
4765 3481(protection.)X
4766 3872(Since)X
4767 4076(a)X
4768 4138(large)X
4769 555 4935(portion)N
4770 810(of)X
4771 901(LIBTP's)X
4772 1205(functionality)X
4773 1638(is)X
4774 1715(provided)X
4775 2024(by)X
4776 2128(managing)X
4777 2468(structures)X
4778 2804(in)X
4779 2889(shared)X
4780 3122(memory,)X
4781 3432(its)X
4782 3530(structures)X
4783 3865(are)X
4784 3987(subject)X
4785 4237(to)X
4786 555 5025(corruption)N
4787 926(by)X
4788 1043(applications)X
4789 1467(when)X
4790 1678(the)X
4791 1813(library)X
4792 2064(is)X
4793 2154(linked)X
4794 2391(directly)X
4795 2673(with)X
4796 2852(the)X
4797 2987(application.)X
4798 3420(For)X
4799 3568(this)X
4800 3720(reason,)X
4801 3987(LIBTP)X
4802 4246(is)X
4803 555 5115(designed)N
4804 864(to)X
4805 950(allow)X
4806 1152(compilation)X
4807 1558(into)X
4808 1706(a)X
4809 1766(separate)X
4810 2053(server)X
4811 2273(process)X
4812 2537(which)X
4813 2756(may)X
4814 2917(be)X
4815 3016(accessed)X
4816 3321(via)X
4817 3442(a)X
4818 3501(socket)X
4819 3729(interface.)X
4820 4094(In)X
4821 4184(this)X
4822 555 5205(way)N
4823 712(LIBTP's)X
4824 1015(data)X
4825 1172(structures)X
4826 1507(are)X
4827 1629(protected)X
4828 1951(from)X
4829 2130(application)X
4830 2509(code,)X
4831 2704(but)X
4832 2829(communication)X
4833 3349(overhead)X
4834 3666(is)X
4835 3741(increased.)X
4836 4107(When)X
4837 555 5295(applications)N
4838 975(are)X
4839 1107(trusted,)X
4840 1377(LIBTP)X
4841 1631(may)X
4842 1801(be)X
4843 1909(compiled)X
4844 2239(directly)X
4845 2516(into)X
4846 2672(the)X
4847 2802(application)X
4848 3190(providing)X
4849 3533(improved)X
4850 3872(performance.)X
4851 555 5385(Figures)N
4852 815(two)X
4853 955(and)X
4854 1091(three)X
4855 1272(show)X
4856 1461(the)X
4857 1579(two)X
4858 1719(alternate)X
4859 2016(application)X
4860 2392(architectures.)X
4861 755 5508(There)N
4862 964(are)X
4863 1084(potentially)X
4864 1447(two)X
4865 1588(modes)X
4866 1818(in)X
4867 1901(which)X
4868 2118(one)X
4869 2255(might)X
4870 2462(use)X
4871 2590(LIBTP)X
4872 2833(in)X
4873 2916(a)X
4874 2972(server)X
4875 3189(based)X
4876 3392(architecture.)X
4877 3832(In)X
4878 3919(the)X
4879 4037(\256rst,)X
4880 4201(the)X
4881 555 5598(server)N
4882 778(would)X
4883 1004(provide)X
4884 1275(the)X
4885 1399(capability)X
4886 1741(to)X
4887 1829(respond)X
4888 2109(to)X
4889 2197(requests)X
4890 2486(to)X
4891 2574(each)X
4892 2747(of)X
4893 2839(the)X
4894 2962(low)X
4895 3107(level)X
4896 3288(modules)X
4897 3584(\(lock,)X
4898 3794(log,)X
4899 3941(buffer,)X
4900 4183(and)X
4901 555 5688(transaction)N
4902 944(managers\).)X
4903 1356(Unfortunately,)X
4904 1863(the)X
4905 1998(performance)X
4906 2442(of)X
4907 2546(such)X
4908 2730(a)X
4909 2803(system)X
4910 3062(is)X
4911 3152(likely)X
4912 3371(to)X
4913 3470(be)X
4914 3583(blindingly)X
4915 3947(slow)X
4916 4134(since)X
4918 7 p
4919 %%Page: 7 7
4920 10 s 10 xH 0 xS 1 f
4921 3 f
4922 1 f
4923 1 Dt
4924 1864 1125 MXY
4925 15 -26 Dl
4926 -15 10 Dl
4927 -14 -10 Dl
4928 14 26 Dl
4929 0 -266 Dl
4930 1315 1125 MXY
4931 15 -26 Dl
4932 -15 10 Dl
4933 -14 -10 Dl
4934 14 26 Dl
4935 0 -266 Dl
4936 3 Dt
4937 1133 1125 MXY
4938 0 798 Dl
4939 931 0 Dl
4940 0 -798 Dl
4941 -931 0 Dl
4942 1 Dt
4943 1266 1257 MXY
4944 0 133 Dl
4945 665 0 Dl
4946 0 -133 Dl
4947 -665 0 Dl
4948 3 f
4949 8 s
4950 1513 1351(driver)N
4951 1502 1617(LIBTP)N
4952 1266 1390 MXY
4953 0 400 Dl
4954 665 0 Dl
4955 0 -400 Dl
4956 -665 0 Dl
4957 3 Dt
4958 1133 726 MXY
4959 0 133 Dl
4960 931 0 Dl
4961 0 -133 Dl
4962 -931 0 Dl
4963 1 f
4964 1029 1098(txn_abort)N
4965 964 1015(txn_commit)N
4966 1018 932(txn_begin)N
4967 1910 1015(db_ops)N
4968 3 f
4969 1308 820(Application)N
4970 1645(Program)X
4971 1398 1218(Server)N
4972 1594(Process)X
4973 1 f
4974 1390 986(socket)N
4975 1569(interface)X
4976 1 Dt
4977 1848 967 MXY
4978 -23 -14 Dl
4979 8 14 Dl
4980 -8 15 Dl
4981 23 -15 Dl
4982 -50 0 Dl
4983 1324 MX
4984 23 15 Dl
4985 -9 -15 Dl
4986 9 -14 Dl
4987 -23 14 Dl
4988 50 0 Dl
4989 3 Dt
4990 2862 859 MXY
4991 0 1064 Dl
4992 932 0 Dl
4993 0 -1064 Dl
4994 -932 0 Dl
4995 1 Dt
4996 3178 1390 MXY
4997 24 -12 Dl
4998 -17 0 Dl
4999 -8 -15 Dl
5000 1 27 Dl
5001 150 -265 Dl
5002 3494 1390 MXY
5003 0 -27 Dl
5004 -8 15 Dl
5005 -16 1 Dl
5006 24 11 Dl
5007 -166 -265 Dl
5008 3 f
5009 3232 1617(LIBTP)N
5010 2995 1390 MXY
5011 0 400 Dl
5012 666 0 Dl
5013 0 -400 Dl
5014 -666 0 Dl
5015 992 MY
5016 0 133 Dl
5017 666 0 Dl
5018 0 -133 Dl
5019 -666 0 Dl
5020 3168 1086(Application)N
5021 1 f
5022 2939 1201(txn_begin)N
5023 2885 1284(txn_commit)N
5024 2950 1368(txn_abort)N
5025 3465 1284(db_ops)N
5026 3 f
5027 3155 766(Single)N
5028 3339(Process)X
5029 3 Dt
5030 -1 Ds
5031 811 2100(Figure)N
5032 1023(2:)X
5033 1107(Server)X
5034 1318(Architecture.)X
5035 1 f
5036 1727(In)X
5037 1811(this)X
5038 1934(con\256guration,)X
5039 811 2190(the)N
5040 916(library)X
5041 1113(is)X
5042 1183(loaded)X
5043 1380(into)X
5044 1507(a)X
5045 1562(server)X
5046 1744(process)X
5047 1962(which)X
5048 2145(is)X
5049 2214(ac-)X
5050 811 2280(cessed)N
5051 993(via)X
5052 1087(a)X
5053 1131(socket)X
5054 1310(interface.)X
5055 3 f
5056 2563 2100(Figure)N
5057 2803(3:)X
5058 2914(Single)X
5059 3140(Process)X
5060 3403(Architecture.)X
5061 1 f
5062 3839(In)X
5063 3950(this)X
5064 2563 2190(con\256guration,)N
5065 2948(the)X
5066 3053(library)X
5067 3250(routines)X
5068 3483(are)X
5069 3587(loaded)X
5070 3784(as)X
5071 3864(part)X
5072 3990(of)X
5073 2563 2280(the)N
5074 2657(application)X
5075 2957(and)X
5076 3065(accessed)X
5077 3303(via)X
5078 3397(a)X
5079 3441(subroutine)X
5080 3727(interface.)X
5081 10 s
5082 10 f
5083 555 2403(h)N
5084 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
5085 1 f
5086 555 2679(modifying)N
5087 909(a)X
5088 966(piece)X
5089 1157(of)X
5090 1245(data)X
5091 1400(would)X
5092 1621(require)X
5093 1870(three)X
5094 2051(or)X
5095 2138(possibly)X
5096 2424(four)X
5097 2578(separate)X
5098 2862(communications:)X
5099 3433(one)X
5100 3569(to)X
5101 3651(lock)X
5102 3809(the)X
5103 3927(data,)X
5104 4101(one)X
5105 4237(to)X
5106 555 2769(obtain)N
5107 781(the)X
5108 905(data,)X
5109 1085(one)X
5110 1227(to)X
5111 1315(log)X
5112 1443(the)X
5113 1567(modi\256cation,)X
5114 2017(and)X
5115 2159(possibly)X
5116 2451(one)X
5117 2593(to)X
5118 2681(transmit)X
5119 2969(the)X
5120 3093(modi\256ed)X
5121 3403(data.)X
5122 3583(Figure)X
5123 3817(four)X
5124 3976(shows)X
5125 4201(the)X
5126 555 2859(relative)N
5127 826(performance)X
5128 1263(for)X
5129 1387(retrieving)X
5130 1728(a)X
5131 1793(single)X
5132 2013(record)X
5133 2248(using)X
5134 2450(the)X
5135 2577(record)X
5136 2812(level)X
5137 2997(call)X
5138 3142(versus)X
5139 3376(using)X
5140 3578(the)X
5141 3705(lower)X
5142 3917(level)X
5143 4102(buffer)X
5144 555 2949(management)N
5145 987(and)X
5146 1125(locking)X
5147 1387(calls.)X
5148 1616(The)X
5149 1763(2:1)X
5150 1887(ratio)X
5151 2056(observed)X
5152 2367(in)X
5153 2450(the)X
5154 2569(single)X
5155 2781(process)X
5156 3043(case)X
5157 3203(re\257ects)X
5158 3456(the)X
5159 3575(additional)X
5160 3916(overhead)X
5161 4232(of)X
5162 555 3039(parsing)N
5163 819(eight)X
5164 1006(commands)X
5165 1380(rather)X
5166 1595(than)X
5167 1760(one)X
5168 1903(while)X
5169 2108(the)X
5170 2233(3:1)X
5171 2362(ratio)X
5172 2536(observed)X
5173 2853(in)X
5174 2942(the)X
5175 3067(client/server)X
5176 3491(architecture)X
5177 3898(re\257ects)X
5178 4157(both)X
5179 555 3129(the)N
5180 679(parsing)X
5181 941(and)X
5182 1083(the)X
5183 1207(communication)X
5184 1731(overheard.)X
5185 2118(Although)X
5186 2445(there)X
5187 2631(may)X
5188 2794(be)X
5189 2895(applications)X
5190 3307(which)X
5191 3528(could)X
5192 3731(tolerate)X
5193 3997(such)X
5194 4169(per-)X
5195 555 3219(formance,)N
5196 904(it)X
5197 973(seems)X
5198 1194(far)X
5199 1309(more)X
5200 1499(feasible)X
5201 1774(to)X
5202 1861(support)X
5203 2126(a)X
5204 2187(higher)X
5205 2417(level)X
5206 2597(interface,)X
5207 2923(such)X
5208 3094(as)X
5209 3185(that)X
5210 3329(provided)X
5211 3638(by)X
5212 3742(a)X
5213 3802(query)X
5214 4009(language)X
5215 555 3309(\()N
5216 2 f
5217 582(e.g.)X
5218 1 f
5219 718(SQL)X
5220 889([SQL86]\).)X
5221 755 3432(Although)N
5222 1081(LIBTP)X
5223 1327(does)X
5224 1498(not)X
5225 1624(have)X
5226 1800(an)X
5227 1900(SQL)X
5228 2075(parser,)X
5229 2316(we)X
5230 2433(have)X
5231 2608(built)X
5232 2777(a)X
5233 2836(server)X
5234 3056(application)X
5235 3435(using)X
5236 3631(the)X
5237 3752(toolkit)X
5238 3983(command)X
5239 555 3522(language)N
5240 882(\(TCL\))X
5241 1124([OUST90].)X
5242 1544(The)X
5243 1706(server)X
5244 1940(supports)X
5245 2248(a)X
5246 2321(command)X
5247 2674(line)X
5248 2831(interface)X
5249 3150(similar)X
5250 3409(to)X
5251 3508(the)X
5252 3643(subroutine)X
5253 4017(interface)X
5254 555 3612(de\256ned)N
5255 811(in)X
5256 3 f
5257 893(db)X
5258 1 f
5259 981(\(3\).)X
5260 1135(Since)X
5261 1333(it)X
5262 1397(is)X
5263 1470(based)X
5264 1673(on)X
5265 1773(TCL,)X
5266 1964(it)X
5267 2028(provides)X
5268 2324(control)X
5269 2571(structures)X
5270 2903(as)X
5271 2990(well.)X
5272 3 f
5273 555 3798(4.)N
5274 655(Implementation)X
5275 1 f
5276 3 f
5277 555 3984(4.1.)N
5278 715(Locking)X
5279 1014(and)X
5280 1162(Deadlock)X
5281 1502(Detection)X
5282 1 f
5283 755 4107(LIBTP)N
5284 1007(uses)X
5285 1175(two-phase)X
5286 1535(locking)X
5287 1805(for)X
5288 1929(user)X
5289 2093(data.)X
5290 2297(Strictly)X
5291 2562(speaking,)X
5292 2897(the)X
5293 3024(two)X
5294 3173(phases)X
5295 3416(in)X
5296 3507(two-phase)X
5297 3866(locking)X
5298 4135(are)X
5299 4263(a)X
5300 3 f
5301 555 4197(grow)N
5302 1 f
5303 756(phase,)X
5304 986(during)X
5305 1221(which)X
5306 1443(locks)X
5307 1638(are)X
5308 1763(acquired,)X
5309 2086(and)X
5310 2228(a)X
5311 3 f
5312 2290(shrink)X
5313 1 f
5314 2537(phase,)X
5315 2766(during)X
5316 3001(which)X
5317 3223(locks)X
5318 3418(are)X
5319 3543(released.)X
5320 3873(No)X
5321 3997(lock)X
5322 4161(may)X
5323 555 4287(ever)N
5324 720(be)X
5325 822(acquired)X
5326 1124(during)X
5327 1358(the)X
5328 1481(shrink)X
5329 1706(phase.)X
5330 1954(The)X
5331 2104(grow)X
5332 2294(phase)X
5333 2502(lasts)X
5334 2669(until)X
5335 2840(the)X
5336 2963(\256rst)X
5337 3112(release,)X
5338 3381(which)X
5339 3602(marks)X
5340 3823(the)X
5341 3946(start)X
5342 4109(of)X
5343 4201(the)X
5344 555 4377(shrink)N
5345 780(phase.)X
5346 1028(In)X
5347 1120(practice,)X
5348 1420(the)X
5349 1543(grow)X
5350 1733(phase)X
5351 1941(lasts)X
5352 2108(for)X
5353 2227(the)X
5354 2350(duration)X
5355 2642(of)X
5356 2734(a)X
5357 2795(transaction)X
5358 3172(in)X
5359 3259(LIBTP)X
5360 3506(and)X
5361 3647(in)X
5362 3734(commercial)X
5363 4138(data-)X
5364 555 4467(base)N
5365 721(systems.)X
5366 1037(The)X
5367 1184(shrink)X
5368 1406(phase)X
5369 1611(takes)X
5370 1798(place)X
5371 1990(during)X
5372 2221(transaction)X
5373 2595(commit)X
5374 2861(or)X
5375 2950(abort.)X
5376 3177(This)X
5377 3341(means)X
5378 3568(that)X
5379 3710(locks)X
5380 3901(are)X
5381 4022(acquired)X
5382 555 4557(on)N
5383 655(demand)X
5384 929(during)X
5385 1158(the)X
5386 1276(lifetime)X
5387 1545(of)X
5388 1632(a)X
5389 1688(transaction,)X
5390 2080(and)X
5391 2216(held)X
5392 2374(until)X
5393 2540(commit)X
5394 2804(time,)X
5395 2986(at)X
5396 3064(which)X
5397 3280(point)X
5398 3464(all)X
5399 3564(locks)X
5400 3753(are)X
5401 3872(released.)X
5402 755 4680(If)N
5403 832(multiple)X
5404 1121(transactions)X
5405 1527(are)X
5406 1649(active)X
5407 1864(concurrently,)X
5408 2313(deadlocks)X
5409 2657(can)X
5410 2792(occur)X
5411 2994(and)X
5412 3133(must)X
5413 3311(be)X
5414 3410(detected)X
5415 3701(and)X
5416 3840(resolved.)X
5417 4174(The)X
5418 555 4770(lock)N
5419 715(table)X
5420 893(can)X
5421 1027(be)X
5422 1125(thought)X
5423 1391(of)X
5424 1480(as)X
5425 1569(a)X
5426 1627(representation)X
5427 2104(of)X
5428 2193(a)X
5429 2251(directed)X
5430 2532(graph.)X
5431 2777(The)X
5432 2924(nodes)X
5433 3133(in)X
5434 3216(the)X
5435 3335(graph)X
5436 3539(are)X
5437 3659(transactions.)X
5438 4103(Edges)X
5439 555 4860(represent)N
5440 878(the)X
5441 3 f
5442 1004(waits-for)X
5443 1 f
5444 1340(relation)X
5445 1613(between)X
5446 1909(transactions;)X
5447 2342(if)X
5448 2419(transaction)X
5449 2 f
5450 2799(A)X
5451 1 f
5452 2876(is)X
5453 2957(waiting)X
5454 3225(for)X
5455 3347(a)X
5456 3411(lock)X
5457 3577(held)X
5458 3743(by)X
5459 3851(transaction)X
5460 2 f
5461 4230(B)X
5462 1 f
5463 4279(,)X
5464 555 4950(then)N
5465 716(a)X
5466 775(directed)X
5467 1057(edge)X
5468 1232(exists)X
5469 1437(from)X
5470 2 f
5471 1616(A)X
5472 1 f
5473 1687(to)X
5474 2 f
5475 1771(B)X
5476 1 f
5477 1842(in)X
5478 1926(the)X
5479 2046(graph.)X
5480 2291(A)X
5481 2371(deadlock)X
5482 2683(exists)X
5483 2887(if)X
5484 2958(a)X
5485 3016(cycle)X
5486 3208(appears)X
5487 3476(in)X
5488 3560(the)X
5489 3680(graph.)X
5490 3925(By)X
5491 4040(conven-)X
5492 555 5040(tion,)N
5493 719(no)X
5494 819(transaction)X
5495 1191(ever)X
5496 1350(waits)X
5497 1539(for)X
5498 1653(a)X
5499 1709(lock)X
5500 1867(it)X
5501 1931(already)X
5502 2188(holds,)X
5503 2401(so)X
5504 2492(re\257exive)X
5505 2793(edges)X
5506 2996(are)X
5507 3115(impossible.)X
5508 755 5163(A)N
5509 836(distinguished)X
5510 1285(process)X
5511 1549(monitors)X
5512 1856(the)X
5513 1977(lock)X
5514 2138(table,)X
5515 2337(searching)X
5516 2668(for)X
5517 2785(cycles.)X
5518 3048(The)X
5519 3195(frequency)X
5520 3539(with)X
5521 3703(which)X
5522 3921(this)X
5523 4058(process)X
5524 555 5253(runs)N
5525 716(is)X
5526 792(user-settable;)X
5527 1243(for)X
5528 1360(the)X
5529 1481(multi-user)X
5530 1833(tests)X
5531 1998(discussed)X
5532 2328(in)X
5533 2413(section)X
5534 2663(5.1.2,)X
5535 2866(it)X
5536 2933(has)X
5537 3063(been)X
5538 3238(set)X
5539 3350(to)X
5540 3435(wake)X
5541 3628(up)X
5542 3731(every)X
5543 3932(second,)X
5544 4197(but)X
5545 555 5343(more)N
5546 742(sophisticated)X
5547 1182(schedules)X
5548 1516(are)X
5549 1636(certainly)X
5550 1938(possible.)X
5551 2261(When)X
5552 2474(a)X
5553 2531(cycle)X
5554 2722(is)X
5555 2796(detected,)X
5556 3105(one)X
5557 3242(of)X
5558 3330(the)X
5559 3449(transactions)X
5560 3853(in)X
5561 3936(the)X
5562 4055(cycle)X
5563 4246(is)X
5564 555 5433(nominated)N
5565 917(and)X
5566 1057(aborted.)X
5567 1362(When)X
5568 1578(the)X
5569 1700(transaction)X
5570 2076(aborts,)X
5571 2315(it)X
5572 2382(rolls)X
5573 2547(back)X
5574 2722(its)X
5575 2820(changes)X
5576 3102(and)X
5577 3241(releases)X
5578 3519(its)X
5579 3617(locks,)X
5580 3829(thereby)X
5581 4093(break-)X
5582 555 5523(ing)N
5583 677(the)X
5584 795(cycle)X
5585 985(in)X
5586 1067(the)X
5587 1185(graph.)X
5589 8 p
5590 %%Page: 8 8
5591 10 s 10 xH 0 xS 1 f
5592 3 f
5593 1 f
5594 4 Ds
5595 1 Dt
5596 1866 865 MXY
5597 1338 0 Dl
5598 1866 1031 MXY
5599 1338 0 Dl
5600 1866 1199 MXY
5601 1338 0 Dl
5602 1866 1366 MXY
5603 1338 0 Dl
5604 1866 1533 MXY
5605 1338 0 Dl
5606 1866 1701 MXY
5607 1338 0 Dl
5608 -1 Ds
5609 5 Dt
5610 1866 1868 MXY
5611 1338 0 Dl
5612 1 Dt
5613 1 Di
5614 2981 MX
5615  2981 1868 lineto
5616  2981 1575 lineto
5617  3092 1575 lineto
5618  3092 1868 lineto
5619  2981 1868 lineto
5620 closepath 21 2981 1575 3092 1868 Dp
5621 2646 MX
5622  2646 1868 lineto
5623  2646 949 lineto
5624  2758 949 lineto
5625  2758 1868 lineto
5626  2646 1868 lineto
5627 closepath 14 2646 949 2758 1868 Dp
5628 2312 MX
5629  2312 1868 lineto
5630  2312 1701 lineto
5631  2423 1701 lineto
5632  2423 1868 lineto
5633  2312 1868 lineto
5634 closepath 3 2312 1701 2423 1868 Dp
5635 1977 MX
5636  1977 1868 lineto
5637  1977 1512 lineto
5638  2089 1512 lineto
5639  2089 1868 lineto
5640  1977 1868 lineto
5641 closepath 19 1977 1512 2089 1868 Dp
5642 3 f
5643 2640 2047(Client/Server)N
5644 1957(Single)X
5645 2185(Process)X
5646 7 s
5647 2957 1957(record)N
5648 2570(component)X
5649 2289(record)X
5650 1890(components)X
5651 1733 1724(.1)N
5652 1733 1556(.2)N
5653 1733 1389(.3)N
5654 1733 1222(.4)N
5655 1733 1055(.5)N
5656 1733 889(.6)N
5657 1590 726(Elapsed)N
5658 1794(Time)X
5659 1613 782(\(in)N
5660 1693(seconds\))X
5661 3 Dt
5662 -1 Ds
5663 8 s
5664 555 2255(Figure)N
5665 756(4:)X
5666 829(Comparison)X
5667 1187(of)X
5668 1260(High)X
5669 1416(and)X
5670 1540(Low)X
5671 1681(Level)X
5672 1850(Interfaces.)X
5673 1 f
5674 2174(Elapsed)X
5675 2395(time)X
5676 2528(in)X
5677 2597(seconds)X
5678 2818(to)X
5679 2887(perform)X
5680 3111(a)X
5681 3158(single)X
5682 3330(record)X
5683 3511(retrieval)X
5684 3742(from)X
5685 3885(a)X
5686 3932(command)X
5687 4203(line)X
5688 555 2345(\(rather)N
5689 751(than)X
5690 888(a)X
5691 943(procedural)X
5692 1241(interface\))X
5693 1510(is)X
5694 1579(shown)X
5695 1772(on)X
5696 1862(the)X
5697 1966(y)X
5698 2024(axis.)X
5699 2185(The)X
5700 2310(``component'')X
5701 2704(numbers)X
5702 2950(re\257ect)X
5703 3135(the)X
5704 3239(timings)X
5705 3458(when)X
5706 3622(the)X
5707 3726(record)X
5708 3914(is)X
5709 3983(retrieved)X
5710 4235(by)X
5711 555 2435(separate)N
5712 785(calls)X
5713 924(to)X
5714 996(the)X
5715 1096(lock)X
5716 1228(manager)X
5717 1469(and)X
5718 1583(buffer)X
5719 1760(manager)X
5720 2001(while)X
5721 2165(the)X
5722 2264(``record'')X
5723 2531(timings)X
5724 2745(were)X
5725 2889(obtained)X
5726 3130(by)X
5727 3215(using)X
5728 3375(a)X
5729 3424(single)X
5730 3598(call)X
5731 3711(to)X
5732 3782(the)X
5733 3881(record)X
5734 4064(manager.)X
5735 555 2525(The)N
5736 674(2:1)X
5737 776(ratio)X
5738 913(observed)X
5739 1163(for)X
5740 1257(the)X
5741 1355(single)X
5742 1528(process)X
5743 1739(case)X
5744 1868(is)X
5745 1930(a)X
5746 1977(re\257ection)X
5747 2237(of)X
5748 2309(the)X
5749 2406(parsing)X
5750 2613(overhead)X
5751 2865(for)X
5752 2958(executing)X
5753 3225(eight)X
5754 3372(separate)X
5755 3599(commands)X
5756 3895(rather)X
5757 4062(than)X
5758 4191(one.)X
5759 555 2615(The)N
5760 673(additional)X
5761 948(factor)X
5762 1115(of)X
5763 1187(one)X
5764 1298(re\257ected)X
5765 1536(in)X
5766 1605(the)X
5767 1702(3:1)X
5768 1803(ratio)X
5769 1939(for)X
5770 2031(the)X
5771 2127(client/server)X
5772 2460(architecture)X
5773 2794(is)X
5774 2855(due)X
5775 2965(to)X
5776 3033(the)X
5777 3129(communication)X
5778 3545(overhead.)X
5779 3828(The)X
5780 3945(true)X
5781 4062(ratios)X
5782 4222(are)X
5783 555 2705(actually)N
5784 775(worse)X
5785 945(since)X
5786 1094(the)X
5787 1190(component)X
5788 1492(timings)X
5789 1703(do)X
5790 1785(not)X
5791 1884(re\257ect)X
5792 2060(the)X
5793 2155(search)X
5794 2334(times)X
5795 2490(within)X
5796 2671(each)X
5797 2804(page)X
5798 2941(or)X
5799 3011(the)X
5800 3106(time)X
5801 3237(required)X
5802 3466(to)X
5803 3533(transmit)X
5804 3760(the)X
5805 3855(page)X
5806 3992(between)X
5807 4221(the)X
5808 555 2795(two)N
5809 667(processes.)X
5810 10 s
5811 10 f
5812 555 2885(h)N
5813 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
5814 3 f
5815 555 3161(4.2.)N
5816 715(Group)X
5817 961(Commit)X
5818 1 f
5819 755 3284(Since)N
5820 959(the)X
5821 1083(log)X
5822 1211(must)X
5823 1392(be)X
5824 1494(\257ushed)X
5825 1751(to)X
5826 1839(disk)X
5827 1997(at)X
5828 2080(commit)X
5829 2349(time,)X
5830 2536(disk)X
5831 2694(bandwidth)X
5832 3057(fundamentally)X
5833 3545(limits)X
5834 3751(the)X
5835 3874(rate)X
5836 4020(at)X
5837 4103(which)X
5838 555 3374(transactions)N
5839 959(complete.)X
5840 1314(Since)X
5841 1513(most)X
5842 1688(transactions)X
5843 2091(write)X
5844 2276(only)X
5845 2438(a)X
5846 2494(few)X
5847 2635(small)X
5848 2828(records)X
5849 3085(to)X
5850 3167(the)X
5851 3285(log,)X
5852 3427(the)X
5853 3545(last)X
5854 3676(page)X
5855 3848(of)X
5856 3935(the)X
5857 4053(log)X
5858 4175(will)X
5859 555 3464(be)N
5860 658(\257ushed)X
5861 916(once)X
5862 1095(by)X
5863 1202(every)X
5864 1408(transaction)X
5865 1787(which)X
5866 2010(writes)X
5867 2233(to)X
5868 2322(it.)X
5869 2433(In)X
5870 2527(the)X
5871 2652(naive)X
5872 2853(implementation,)X
5873 3402(these)X
5874 3593(\257ushes)X
5875 3841(would)X
5876 4067(happen)X
5877 555 3554(serially.)N
5878 755 3677(LIBTP)N
5879 1008(uses)X
5880 3 f
5881 1177(group)X
5882 1412(commit)X
5883 1 f
5884 1702([DEWI84])X
5885 2077(in)X
5886 2170(order)X
5887 2371(to)X
5888 2464(amortize)X
5889 2775(the)X
5890 2903(cost)X
5891 3062(of)X
5892 3159(one)X
5893 3305(synchronous)X
5894 3740(disk)X
5895 3903(write)X
5896 4098(across)X
5897 555 3767(multiple)N
5898 851(transactions.)X
5899 1304(Group)X
5900 1539(commit)X
5901 1812(provides)X
5902 2117(a)X
5903 2182(way)X
5904 2345(for)X
5905 2468(a)X
5906 2533(group)X
5907 2749(of)X
5908 2845(transactions)X
5909 3257(to)X
5910 3348(commit)X
5911 3621(simultaneously.)X
5912 4174(The)X
5913 555 3857(\256rst)N
5914 709(several)X
5915 967(transactions)X
5916 1380(to)X
5917 1472(commit)X
5918 1745(write)X
5919 1939(their)X
5920 2115(changes)X
5921 2403(to)X
5922 2494(the)X
5923 2621(in-memory)X
5924 3006(log)X
5925 3137(page,)X
5926 3338(then)X
5927 3505(sleep)X
5928 3699(on)X
5929 3808(a)X
5930 3873(distinguished)X
5931 555 3947(semaphore.)N
5932 966(Later,)X
5933 1179(a)X
5934 1238(committing)X
5935 1629(transaction)X
5936 2004(\257ushes)X
5937 2249(the)X
5938 2370(page)X
5939 2545(to)X
5940 2630(disk,)X
5941 2805(and)X
5942 2943(wakes)X
5943 3166(up)X
5944 3268(all)X
5945 3370(its)X
5946 3467(sleeping)X
5947 3756(peers.)X
5948 3988(The)X
5949 4135(point)X
5950 555 4037(at)N
5951 635(which)X
5952 853(changes)X
5953 1134(are)X
5954 1255(actually)X
5955 1531(written)X
5956 1780(is)X
5957 1855(determined)X
5958 2238(by)X
5959 2340(three)X
5960 2523(thresholds.)X
5961 2914(The)X
5962 3061(\256rst)X
5963 3207(is)X
5964 3281(the)X
5965 2 f
5966 3400(group)X
5967 3612(threshold)X
5968 1 f
5969 3935(and)X
5970 4072(de\256nes)X
5971 555 4127(the)N
5972 674(minimum)X
5973 1005(number)X
5974 1271(of)X
5975 1359(transactions)X
5976 1763(which)X
5977 1979(must)X
5978 2154(be)X
5979 2250(active)X
5980 2462(in)X
5981 2544(the)X
5982 2662(system)X
5983 2904(before)X
5984 3130(transactions)X
5985 3533(are)X
5986 3652(forced)X
5987 3878(to)X
5988 3960(participate)X
5989 555 4217(in)N
5990 646(a)X
5991 711(group)X
5992 927(commit.)X
5993 1240(The)X
5994 1394(second)X
5995 1646(is)X
5996 1728(the)X
5997 2 f
5998 1855(wait)X
5999 2021(threshold)X
6000 1 f
6001 2352(which)X
6002 2577(is)X
6003 2658(expressed)X
6004 3003(as)X
6005 3098(the)X
6006 3224(percentage)X
6007 3601(of)X
6008 3696(active)X
6009 3916(transactions)X
6010 555 4307(waiting)N
6011 826(to)X
6012 919(be)X
6013 1026(committed.)X
6014 1439(The)X
6015 1595(last)X
6016 1737(is)X
6017 1821(the)X
6018 2 f
6019 1950(logdelay)X
6020 2257(threshold)X
6021 1 f
6022 2590(which)X
6023 2816(indicates)X
6024 3131(how)X
6025 3299(much)X
6026 3507(un\257ushed)X
6027 3848(log)X
6028 3980(should)X
6029 4223(be)X
6030 555 4397(allowed)N
6031 829(to)X
6032 911(accumulate)X
6033 1297(before)X
6034 1523(a)X
6035 1579(waiting)X
6036 1839(transaction's)X
6037 2289(commit)X
6038 2553(record)X
6039 2779(is)X
6040 2852(\257ushed.)X
6041 755 4520(Group)N
6042 981(commit)X
6043 1246(can)X
6044 1379(substantially)X
6045 1803(improve)X
6046 2090(performance)X
6047 2517(for)X
6048 2631(high-concurrency)X
6049 3218(environments.)X
6050 3714(If)X
6051 3788(only)X
6052 3950(a)X
6053 4006(few)X
6054 4147(tran-)X
6055 555 4610(sactions)N
6056 836(are)X
6057 957(running,)X
6058 1248(it)X
6059 1314(is)X
6060 1389(unlikely)X
6061 1673(to)X
6062 1757(improve)X
6063 2046(things)X
6064 2263(at)X
6065 2343(all.)X
6066 2485(The)X
6067 2632(crossover)X
6068 2962(point)X
6069 3148(is)X
6070 3223(the)X
6071 3343(point)X
6072 3529(at)X
6073 3609(which)X
6074 3827(the)X
6075 3947(transaction)X
6076 555 4700(commit)N
6077 823(rate)X
6078 968(is)X
6079 1045(limited)X
6080 1295(by)X
6081 1399(the)X
6082 1521(bandwidth)X
6083 1883(of)X
6084 1974(the)X
6085 2096(device)X
6086 2330(on)X
6087 2434(which)X
6088 2654(the)X
6089 2776(log)X
6090 2902(resides.)X
6091 3189(If)X
6092 3267(processes)X
6093 3599(are)X
6094 3722(trying)X
6095 3937(to)X
6096 4023(\257ush)X
6097 4201(the)X
6098 555 4790(log)N
6099 677(faster)X
6100 876(than)X
6101 1034(the)X
6102 1152(log)X
6103 1274(disk)X
6104 1427(can)X
6105 1559(accept)X
6106 1785(data,)X
6107 1959(then)X
6108 2117(group)X
6109 2324(commit)X
6110 2588(will)X
6111 2732(increase)X
6112 3016(the)X
6113 3134(commit)X
6114 3398(rate.)X
6115 3 f
6116 555 4976(4.3.)N
6117 715(Kernel)X
6118 971(Intervention)X
6119 1418(for)X
6120 1541(Synchronization)X
6121 1 f
6122 755 5099(Since)N
6123 954(LIBTP)X
6124 1197(uses)X
6125 1356(data)X
6126 1511(in)X
6127 1594(shared)X
6128 1825(memory)X
6129 2113(\()X
6130 2 f
6131 2140(e.g.)X
6132 1 f
6133 2277(the)X
6134 2395(lock)X
6135 2553(table)X
6136 2729(and)X
6137 2865(buffer)X
6138 3082(pool\))X
6139 3271(it)X
6140 3335(must)X
6141 3510(be)X
6142 3606(possible)X
6143 3888(for)X
6144 4002(a)X
6145 4058(process)X
6146 555 5189(to)N
6147 640(acquire)X
6148 900(exclusive)X
6149 1226(access)X
6150 1454(to)X
6151 1538(shared)X
6152 1770(data)X
6153 1926(in)X
6154 2010(order)X
6155 2202(to)X
6156 2286(prevent)X
6157 2549(corruption.)X
6158 2945(In)X
6159 3034(addition,)X
6160 3338(the)X
6161 3458(process)X
6162 3721(manager)X
6163 4020(must)X
6164 4197(put)X
6165 555 5279(processes)N
6166 886(to)X
6167 971(sleep)X
6168 1159(when)X
6169 1356(the)X
6170 1477(lock)X
6171 1638(or)X
6172 1728(buffer)X
6173 1948(they)X
6174 2109(request)X
6175 2364(is)X
6176 2440(in)X
6177 2525(use)X
6178 2655(by)X
6179 2758(some)X
6180 2950(other)X
6181 3138(process.)X
6182 3441(In)X
6183 3530(the)X
6184 3650(LIBTP)X
6185 3894(implementa-)X
6186 555 5385(tion)N
6187 705(under)X
6188 914(Ultrix)X
6189 1131(4.0)X
6190 7 s
6191 5353(2)Y
6192 10 s
6193 5385(,)Y
6194 1305(we)X
6195 1424(use)X
6196 1556(System)X
6197 1816(V)X
6198 1899(semaphores)X
6199 2303(to)X
6200 2390(provide)X
6201 2660(this)X
6202 2800(synchronization.)X
6203 3377(Semaphores)X
6204 3794(implemented)X
6205 4237(in)X
6206 555 5475(this)N
6207 701(fashion)X
6208 968(turn)X
6209 1128(out)X
6210 1261(to)X
6211 1354(be)X
6212 1461(an)X
6213 1568(expensive)X
6214 1920(choice)X
6215 2161(for)X
6216 2285(synchronization,)X
6217 2847(because)X
6218 3132(each)X
6219 3310(access)X
6220 3546(traps)X
6221 3732(to)X
6222 3824(the)X
6223 3952(kernel)X
6224 4183(and)X
6225 8 s
6226 10 f
6227 555 5547(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
6228 5 s
6229 1 f
6230 727 5625(2)N
6231 8 s
6232 763 5650(Ultrix)N
6233 932(and)X
6234 1040(DEC)X
6235 1184(are)X
6236 1277(trademarks)X
6237 1576(of)X
6238 1645(Digital)X
6239 1839(Equipment)X
6240 2136(Corporation.)X
6242 9 p
6243 %%Page: 9 9
6244 8 s 8 xH 0 xS 1 f
6245 10 s
6246 3 f
6247 1 f
6248 555 630(executes)N
6249 852(atomically)X
6250 1210(there.)X
6251 755 753(On)N
6252 878(architectures)X
6253 1314(that)X
6254 1459(support)X
6255 1724(atomic)X
6256 1967(test-and-set,)X
6257 2382(a)X
6258 2443(much)X
6259 2646(better)X
6260 2854(choice)X
6261 3089(would)X
6262 3314(be)X
6263 3415(to)X
6264 3502(attempt)X
6265 3767(to)X
6266 3854(obtain)X
6267 4079(a)X
6268 4139(spin-)X
6269 555 843(lock)N
6270 714(with)X
6271 877(a)X
6272 934(test-and-set,)X
6273 1345(and)X
6274 1482(issue)X
6275 1663(a)X
6276 1720(system)X
6277 1963(call)X
6278 2100(only)X
6279 2263(if)X
6280 2333(the)X
6281 2452(spinlock)X
6282 2744(is)X
6283 2818(unavailable.)X
6284 3249(Since)X
6285 3447(virtually)X
6286 3738(all)X
6287 3838(semaphores)X
6288 4237(in)X
6289 555 933(LIBTP)N
6290 801(are)X
6291 924(uncontested)X
6292 1330(and)X
6293 1469(are)X
6294 1591(held)X
6295 1752(for)X
6296 1869(very)X
6297 2035(short)X
6298 2218(periods)X
6299 2477(of)X
6300 2567(time,)X
6301 2752(this)X
6302 2890(would)X
6303 3113(improve)X
6304 3403(performance.)X
6305 3873(For)X
6306 4007(example,)X
6307 555 1023(processes)N
6308 885(must)X
6309 1062(acquire)X
6310 1321(exclusive)X
6311 1646(access)X
6312 1874(to)X
6313 1958(buffer)X
6314 2177(pool)X
6315 2341(metadata)X
6316 2653(in)X
6317 2737(order)X
6318 2929(to)X
6319 3013(\256nd)X
6320 3159(and)X
6321 3297(pin)X
6322 3421(a)X
6323 3479(buffer)X
6324 3698(in)X
6325 3781(shared)X
6326 4012(memory.)X
6327 555 1113(This)N
6328 721(semaphore)X
6329 1093(is)X
6330 1170(requested)X
6331 1502(most)X
6332 1681(frequently)X
6333 2034(in)X
6334 2119(LIBTP.)X
6335 2404(However,)X
6336 2742(once)X
6337 2917(it)X
6338 2984(is)X
6339 3060(acquired,)X
6340 3380(only)X
6341 3545(a)X
6342 3604(few)X
6343 3748(instructions)X
6344 4144(must)X
6345 555 1203(be)N
6346 656(executed)X
6347 966(before)X
6348 1196(it)X
6349 1264(is)X
6350 1341(released.)X
6351 1669(On)X
6352 1791(one)X
6353 1931(architecture)X
6354 2335(for)X
6355 2453(which)X
6356 2673(we)X
6357 2791(were)X
6358 2972(able)X
6359 3130(to)X
6360 3216(gather)X
6361 3441(detailed)X
6362 3719(pro\256ling)X
6363 4018(informa-)X
6364 555 1293(tion,)N
6365 729(the)X
6366 857(cost)X
6367 1015(of)X
6368 1111(the)X
6369 1238(semaphore)X
6370 1615(calls)X
6371 1791(accounted)X
6372 2146(for)X
6373 2269(25%)X
6374 2445(of)X
6375 2541(the)X
6376 2668(total)X
6377 2839(time)X
6378 3010(spent)X
6379 3208(updating)X
6380 3517(the)X
6381 3644(metadata.)X
6382 4003(This)X
6383 4174(was)X
6384 555 1383(fairly)N
6385 749(consistent)X
6386 1089(across)X
6387 1310(most)X
6388 1485(of)X
6389 1572(the)X
6390 1690(critical)X
6391 1933(sections.)X
6392 755 1506(In)N
6393 848(an)X
6394 950(attempt)X
6395 1216(to)X
6396 1304(quantify)X
6397 1597(the)X
6398 1720(overhead)X
6399 2040(of)X
6400 2132(kernel)X
6401 2358(synchronization,)X
6402 2915(we)X
6403 3034(ran)X
6404 3162(tests)X
6405 3329(on)X
6406 3434(a)X
6407 3495(version)X
6408 3756(of)X
6409 3848(4.3BSD-Reno)X
6410 555 1596(which)N
6411 786(had)X
6412 937(been)X
6413 1123(modi\256ed)X
6414 1441(to)X
6415 1537(support)X
6416 1811(binary)X
6417 2050(semaphore)X
6418 2432(facilities)X
6419 2742(similar)X
6420 2998(to)X
6421 3094(those)X
6422 3297(described)X
6423 3639(in)X
6424 3735([POSIX91].)X
6425 4174(The)X
6426 555 1686(hardware)N
6427 880(platform)X
6428 1181(consisted)X
6429 1504(of)X
6430 1595(an)X
6431 1695(HP300)X
6432 1941(\(33MHz)X
6433 2237(MC68030\))X
6434 2612(workstation)X
6435 3014(with)X
6436 3180(16MBytes)X
6437 3537(of)X
6438 3628(main)X
6439 3812(memory,)X
6440 4123(and)X
6441 4263(a)X
6442 555 1776(600MByte)N
6443 920(HP7959)X
6444 1205(SCSI)X
6445 1396(disk)X
6446 1552(\(17)X
6447 1682(ms)X
6448 1798(average)X
6449 2072(seek)X
6450 2237(time\).)X
6451 2468(We)X
6452 2602(ran)X
6453 2727(three)X
6454 2910(sets)X
6455 3052(of)X
6456 3141(comparisons)X
6457 3568(which)X
6458 3786(are)X
6459 3907(summarized)X
6460 555 1866(in)N
6461 645(\256gure)X
6462 860(\256ve.)X
6463 1028(In)X
6464 1123(each)X
6465 1299(comparison)X
6466 1701(we)X
6467 1823(ran)X
6468 1954(two)X
6469 2102(tests,)X
6470 2292(one)X
6471 2436(using)X
6472 2637(hardware)X
6473 2965(spinlocks)X
6474 3295(and)X
6475 3438(the)X
6476 3563(other)X
6477 3755(using)X
6478 3955(kernel)X
6479 4183(call)X
6480 555 1956(synchronization.)N
6481 1135(Since)X
6482 1341(the)X
6483 1467(test)X
6484 1606(was)X
6485 1758(run)X
6486 1892(single-user,)X
6487 2291(none)X
6488 2474(of)X
6489 2568(the)X
6490 2693(the)X
6491 2818(locks)X
6492 3014(were)X
6493 3198(contested.)X
6494 3568(In)X
6495 3662(the)X
6496 3787(\256rst)X
6497 3938(two)X
6498 4085(sets)X
6499 4232(of)X
6500 555 2046(tests,)N
6501 743(we)X
6502 863(ran)X
6503 992(the)X
6504 1116(full)X
6505 1253(transaction)X
6506 1631(processing)X
6507 2000(benchmark)X
6508 2383(described)X
6509 2717(in)X
6510 2805(section)X
6511 3058(5.1.)X
6512 3223(In)X
6513 3315(one)X
6514 3456(case)X
6515 3620(we)X
6516 3739(ran)X
6517 3867(with)X
6518 4034(both)X
6519 4201(the)X
6520 555 2136(database)N
6521 854(and)X
6522 992(log)X
6523 1116(on)X
6524 1218(the)X
6525 1338(same)X
6526 1525(disk)X
6527 1680(\(1)X
6528 1769(Disk\))X
6529 1969(and)X
6530 2107(in)X
6531 2191(the)X
6532 2311(second,)X
6533 2576(we)X
6534 2692(ran)X
6535 2817(with)X
6536 2981(the)X
6537 3101(database)X
6538 3400(and)X
6539 3538(log)X
6540 3661(on)X
6541 3762(separate)X
6542 4047(disks)X
6543 4232(\(2)X
6544 555 2226(Disk\).)N
6545 800(In)X
6546 894(the)X
6547 1019(last)X
6548 1157(test,)X
6549 1315(we)X
6550 1436(wanted)X
6551 1695(to)X
6552 1784(create)X
6553 2004(a)X
6554 2067(CPU)X
6555 2249(bound)X
6556 2476(environment,)X
6557 2928(so)X
6558 3026(we)X
6559 3146(used)X
6560 3319(a)X
6561 3381(database)X
6562 3684(small)X
6563 3883(enough)X
6564 4145(to)X
6565 4233(\256t)X
6566 555 2316(completely)N
6567 941(in)X
6568 1033(the)X
6569 1161(cache)X
6570 1375(and)X
6571 1521(issued)X
6572 1751(read-only)X
6573 2089(transactions.)X
6574 2541(The)X
6575 2695(results)X
6576 2933(in)X
6577 3024(\256gure)X
6578 3240(\256ve)X
6579 3389(express)X
6580 3659(the)X
6581 3786(kernel)X
6582 4016(call)X
6583 4161(syn-)X
6584 555 2406(chronization)N
6585 980(performance)X
6586 1411(as)X
6587 1502(a)X
6588 1562(percentage)X
6589 1935(of)X
6590 2026(the)X
6591 2148(spinlock)X
6592 2443(performance.)X
6593 2914(For)X
6594 3049(example,)X
6595 3365(in)X
6596 3451(the)X
6597 3573(1)X
6598 3637(disk)X
6599 3794(case,)X
6600 3977(the)X
6601 4098(kernel)X
6602 555 2496(call)N
6603 697(implementation)X
6604 1225(achieved)X
6605 1537(4.4)X
6606 1662(TPS)X
6607 1824(\(transactions)X
6608 2259(per)X
6609 2387(second\))X
6610 2662(while)X
6611 2865(the)X
6612 2988(semaphore)X
6613 3361(implementation)X
6614 3888(achieved)X
6615 4199(4.6)X
6616 555 2586(TPS,)N
6617 735(and)X
6618 874(the)X
6619 995(relative)X
6620 1259(performance)X
6621 1689(of)X
6622 1779(the)X
6623 1900(kernel)X
6624 2123(synchronization)X
6625 2657(is)X
6626 2732(96%)X
6627 2901(that)X
6628 3043(of)X
6629 3132(the)X
6630 3252(spinlock)X
6631 3545(\(100)X
6632 3714(*)X
6633 3776(4.4)X
6634 3898(/)X
6635 3942(4.6\).)X
6636 4111(There)X
6637 555 2676(are)N
6638 674(two)X
6639 814(striking)X
6640 1078(observations)X
6641 1503(from)X
6642 1679(these)X
6643 1864(results:)X
6644 10 f
6645 635 2799(g)N
6646 1 f
6647 755(even)X
6648 927(when)X
6649 1121(the)X
6650 1239(system)X
6651 1481(is)X
6652 1554(disk)X
6653 1707(bound,)X
6654 1947(the)X
6655 2065(CPU)X
6656 2240(cost)X
6657 2389(of)X
6658 2476(synchronization)X
6659 3008(is)X
6660 3081(noticeable,)X
6661 3451(and)X
6662 10 f
6663 635 2922(g)N
6664 1 f
6665 755(when)X
6666 949(we)X
6667 1063(are)X
6668 1182(CPU)X
6669 1357(bound,)X
6670 1597(the)X
6671 1715(difference)X
6672 2062(is)X
6673 2135(dramatic)X
6674 2436(\(67%\).)X
6675 3 f
6676 555 3108(4.4.)N
6677 715(Transaction)X
6678 1148(Protected)X
6679 1499(Access)X
6680 1747(Methods)X
6681 1 f
6682 755 3231(The)N
6683 903(B-tree)X
6684 1127(and)X
6685 1266(\256xed)X
6686 1449(length)X
6687 1671(recno)X
6688 1872(\(record)X
6689 2127(number\))X
6690 2421(access)X
6691 2649(methods)X
6692 2942(have)X
6693 3116(been)X
6694 3290(modi\256ed)X
6695 3596(to)X
6696 3680(provide)X
6697 3947(transaction)X
6698 555 3321(protection.)N
6699 941(Whereas)X
6700 1244(the)X
6701 1363(previously)X
6702 1722(published)X
6703 2054(interface)X
6704 2357(to)X
6705 2440(the)X
6706 2559(access)X
6707 2786(routines)X
6708 3065(had)X
6709 3202(separate)X
6710 3487(open)X
6711 3664(calls)X
6712 3832(for)X
6713 3946(each)X
6714 4114(of)X
6715 4201(the)X
6716 10 f
6717 555 3507(h)N
6718 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
6719 1 Dt
6720 2978 5036 MXY
6721  2978 5036 lineto
6722  2978 4662 lineto
6723  3093 4662 lineto
6724  3093 5036 lineto
6725  2978 5036 lineto
6726 closepath 21 2978 4662 3093 5036 Dp
6727 2518 MX
6728  2518 5036 lineto
6729  2518 3960 lineto
6730  2633 3960 lineto
6731  2633 5036 lineto
6732  2518 5036 lineto
6733 closepath 3 2518 3960 2633 5036 Dp
6734 2059 MX
6735  2059 5036 lineto
6736  2059 3946 lineto
6737  2174 3946 lineto
6738  2174 5036 lineto
6739  2059 5036 lineto
6740 closepath 1 2059 3946 2174 5036 Dp
6741 3 f
6742 7 s
6743 2912 5141(Read-only)N
6744 1426 3767(of)N
6745 1487(Spinlock)X
6746 1710(Throughput)X
6747 1480 3710(Throughput)N
6748 1786(as)X
6749 1850(a)X
6750 1892(%)X
6751 11 s
6752 1670 4843(20)N
6753 1670 4614(40)N
6754 1670 4384(60)N
6755 1670 4155(80)N
6756 1648 3925(100)N
6757 7 s
6758 2041 5141(1)N
6759 2083(Disk)X
6760 2490(2)X
6761 2532(Disks)X
6762 5 Dt
6763 1829 5036 MXY
6764 1494 0 Dl
6765 4 Ds
6766 1 Dt
6767 1829 4806 MXY
6768 1494 0 Dl
6769 1829 4577 MXY
6770 1494 0 Dl
6771 1829 4347 MXY
6772 1494 0 Dl
6773 1829 4118 MXY
6774 1494 0 Dl
6775 1829 3888 MXY
6776 1494 0 Dl
6777 3 Dt
6778 -1 Ds
6779 8 s
6780 555 5360(Figure)N
6781 753(5:)X
6782 823(Kernel)X
6783 1028(Overhead)X
6784 1315(for)X
6785 1413(System)X
6786 1625(Call)X
6787 1756(Synchronization.)X
6788 1 f
6789 2254(The)X
6790 2370(performance)X
6791 2708(of)X
6792 2778(the)X
6793 2873(kernel)X
6794 3049(call)X
6795 3158(synchronization)X
6796 3583(is)X
6797 3643(expressed)X
6798 3911(as)X
6799 3980(a)X
6800 4024(percentage)X
6801 555 5450(of)N
6802 625(the)X
6803 720(spinlock)X
6804 954(synchronization)X
6805 1379(performance.)X
6806 1749(In)X
6807 1819(disk)X
6808 1943(bound)X
6809 2120(cases)X
6810 2271(\(1)X
6811 2341(Disk)X
6812 2479(and)X
6813 2588(2)X
6814 2637(Disks\),)X
6815 2837(we)X
6816 2928(see)X
6817 3026(that)X
6818 3139(4-6%)X
6819 3294(of)X
6820 3364(the)X
6821 3459(performance)X
6822 3797(is)X
6823 3857(lost)X
6824 3966(due)X
6825 4074(to)X
6826 4140(kernel)X
6827 555 5540(calls)N
6828 688(while)X
6829 846(in)X
6830 912(the)X
6831 1006(CPU)X
6832 1147(bound)X
6833 1323(case,)X
6834 1464(we)X
6835 1554(have)X
6836 1690(lost)X
6837 1799(67%)X
6838 1932(of)X
6839 2001(the)X
6840 2095(performance)X
6841 2432(due)X
6842 2540(to)X
6843 2606(kernel)X
6844 2781(calls.)X
6846 10 p
6847 %%Page: 10 10
6848 8 s 8 xH 0 xS 1 f
6849 10 s
6850 3 f
6851 1 f
6852 555 630(access)N
6853 781(methods,)X
6854 1092(we)X
6855 1206(now)X
6856 1364(have)X
6857 1536(an)X
6858 1632(integrated)X
6859 1973(open)X
6860 2149(call)X
6861 2285(with)X
6862 2447(the)X
6863 2565(following)X
6864 2896(calling)X
6865 3134(conventions:)X
6866 7 f
6867 715 753(DB)N
6868 859(*dbopen)X
6869 1243(\(const)X
6870 1579(char)X
6871 1819(*file,)X
6872 2155(int)X
6873 2347(flags,)X
6874 2683(int)X
6875 2875(mode,)X
6876 3163(DBTYPE)X
6877 3499(type,)X
6878 1291 843(int)N
6879 1483(dbflags,)X
6880 1915(const)X
6881 2203(void)X
6882 2443(*openinfo\))X
6883 1 f
6884 555 966(where)N
6885 2 f
6886 774(\256le)X
6887 1 f
6888 894(is)X
6889 969(the)X
6890 1089(name)X
6891 1285(of)X
6892 1374(the)X
6893 1494(\256le)X
6894 1618(being)X
6895 1818(opened,)X
6896 2 f
6897 2092(\257ags)X
6898 1 f
6899 2265(and)X
6900 2 f
6901 2402(mode)X
6902 1 f
6903 2597(are)X
6904 2717(the)X
6905 2836(standard)X
6906 3129(arguments)X
6907 3484(to)X
6908 3 f
6909 3567(open)X
6910 1 f
6911 3731(\(2\),)X
6912 2 f
6913 3866(type)X
6914 1 f
6915 4021(is)X
6916 4095(one)X
6917 4232(of)X
6918 555 1056(the)N
6919 680(access)X
6920 913(method)X
6921 1180(types,)X
6922 2 f
6923 1396(db\257ags)X
6924 1 f
6925 1654(indicates)X
6926 1966(the)X
6927 2091(mode)X
6928 2296(of)X
6929 2390(the)X
6930 2515(buffer)X
6931 2739(pool)X
6932 2907(and)X
6933 3049(transaction)X
6934 3427(protection,)X
6935 3798(and)X
6936 2 f
6937 3940(openinfo)X
6938 1 f
6939 4246(is)X
6940 555 1146(the)N
6941 681(access)X
6942 915(method)X
6943 1183(speci\256c)X
6944 1456(information.)X
6945 1902(Currently,)X
6946 2257(the)X
6947 2383(possible)X
6948 2673(values)X
6949 2906(for)X
6950 2 f
6951 3028(db\257ags)X
6952 1 f
6953 3287(are)X
6954 3414(DB_SHARED)X
6955 3912(and)X
6956 4055(DB_TP)X
6957 555 1236(indicating)N
6958 895(that)X
6959 1035(buffers)X
6960 1283(should)X
6961 1516(be)X
6962 1612(kept)X
6963 1770(in)X
6964 1852(a)X
6965 1908(shared)X
6966 2138(buffer)X
6967 2355(pool)X
6968 2517(and)X
6969 2653(that)X
6970 2793(the)X
6971 2911(\256le)X
6972 3033(should)X
6973 3266(be)X
6974 3362(transaction)X
6975 3734(protected.)X
6976 755 1359(The)N
6977 900(modi\256cations)X
6978 1355(required)X
6979 1643(to)X
6980 1725(add)X
6981 1861(transaction)X
6982 2233(protection)X
6983 2578(to)X
6984 2660(an)X
6985 2756(access)X
6986 2982(method)X
6987 3242(are)X
6988 3361(quite)X
6989 3541(simple)X
6990 3774(and)X
6991 3910(localized.)X
6992 715 1482(1.)N
6993 795(Replace)X
6994 1074(\256le)X
6995 2 f
6996 1196(open)X
6997 1 f
6998 1372(with)X
6999 2 f
7000 1534(buf_open)X
7001 1 f
7002 1832(.)X
7003 715 1572(2.)N
7004 795(Replace)X
7005 1074(\256le)X
7006 2 f
7007 1196(read)X
7008 1 f
7009 1363(and)X
7010 2 f
7011 1499(write)X
7012 1 f
7013 1683(calls)X
7014 1850(with)X
7015 2012(buffer)X
7016 2229(manager)X
7017 2526(calls)X
7018 2693(\()X
7019 2 f
7020 2720(buf_get)X
7021 1 f
7022 (,)S
7023 2 f
7024 3000(buf_unpin)X
7025 1 f
7026 3324(\).)X
7027 715 1662(3.)N
7028 795(Precede)X
7029 1070(buffer)X
7030 1287(manager)X
7031 1584(calls)X
7032 1751(with)X
7033 1913(an)X
7034 2009(appropriate)X
7035 2395(\(read)X
7036 2581(or)X
7037 2668(write\))X
7038 2880(lock)X
7039 3038(call.)X
7040 715 1752(4.)N
7041 795(Before)X
7042 1034(updates,)X
7043 1319(issue)X
7044 1499(a)X
7045 1555(logging)X
7046 1819(operation.)X
7047 715 1842(5.)N
7048 795(After)X
7049 985(data)X
7050 1139(have)X
7051 1311(been)X
7052 1483(accessed,)X
7053 1805(release)X
7054 2049(the)X
7055 2167(buffer)X
7056 2384(manager)X
7057 2681(pin.)X
7058 715 1932(6.)N
7059 795(Provide)X
7060 1064(undo/redo)X
7061 1409(code)X
7062 1581(for)X
7063 1695(each)X
7064 1863(type)X
7065 2021(of)X
7066 2108(log)X
7067 2230(record)X
7068 2456(de\256ned.)X
7069 555 2071(The)N
7070 702(following)X
7071 1035(code)X
7072 1209(fragments)X
7073 1552(show)X
7074 1743(how)X
7075 1903(to)X
7076 1987(transaction)X
7077 2361(protect)X
7078 2606(several)X
7079 2856(updates)X
7080 3123(to)X
7081 3206(a)X
7082 3263(B-tree.)X
7083 7 s
7084 3484 2039(3)N
7085 10 s
7086 3533 2071(In)N
7087 3621(the)X
7088 3740(unprotected)X
7089 4140(case,)X
7090 555 2161(an)N
7091 652(open)X
7092 829(call)X
7093 966(is)X
7094 1040(followed)X
7095 1346(by)X
7096 1447(a)X
7097 1504(read)X
7098 1664(call)X
7099 1801(to)X
7100 1884(obtain)X
7101 2105(the)X
7102 2224(meta-data)X
7103 2562(for)X
7104 2677(the)X
7105 2796(B-tree.)X
7106 3058(Instead,)X
7107 3331(we)X
7108 3446(issue)X
7109 3627(an)X
7110 3724(open)X
7111 3901(to)X
7112 3984(the)X
7113 4102(buffer)X
7114 555 2251(manager)N
7115 852(to)X
7116 934(obtain)X
7117 1154(a)X
7118 1210(\256le)X
7119 1332(id)X
7120 1414(and)X
7121 1550(a)X
7122 1606(buffer)X
7123 1823(request)X
7124 2075(to)X
7125 2157(obtain)X
7126 2377(the)X
7127 2495(meta-data)X
7128 2832(as)X
7129 2919(shown)X
7130 3148(below.)X
7131 7 f
7132 715 2374(char)N
7133 955(*path;)X
7134 715 2464(int)N
7135 907(fid,)X
7136 1147(flags,)X
7137 1483(len,)X
7138 1723(mode;)X
7139 715 2644(/*)N
7140 859(Obtain)X
7141 1195(a)X
7142 1291(file)X
7143 1531(id)X
7144 1675(with)X
7145 1915(which)X
7146 2203(to)X
7147 2347(access)X
7148 2683(the)X
7149 2875(buffer)X
7150 3211(pool)X
7151 3451(*/)X
7152 715 2734(fid)N
7153 907(=)X
7154 1003(buf_open\(path,)X
7155 1723(flags,)X
7156 2059(mode\);)X
7157 715 2914(/*)N
7158 859(Read)X
7159 1099(the)X
7160 1291(meta)X
7161 1531(data)X
7162 1771(\(page)X
7163 2059(0\))X
7164 2203(for)X
7165 2395(the)X
7166 2587(B-tree)X
7167 2923(*/)X
7168 715 3004(if)N
7169 859(\(tp_lock\(fid,)X
7170 1531(0,)X
7171 1675(READ_LOCK\)\))X
7172 1003 3094(return)N
7173 1339(error;)X
7174 715 3184(meta_data_ptr)N
7175 1387(=)X
7176 1483(buf_get\(fid,)X
7177 2107(0,)X
7178 2251(BF_PIN,)X
7179 2635(&len\);)X
7180 1 f
7181 555 3307(The)N
7182 714(BF_PIN)X
7183 1014(argument)X
7184 1350(to)X
7185 2 f
7186 1445(buf_get)X
7187 1 f
7188 1718(indicates)X
7189 2036(that)X
7190 2189(we)X
7191 2316(wish)X
7192 2500(to)X
7193 2595(leave)X
7194 2798(this)X
7195 2946(page)X
7196 3131(pinned)X
7197 3382(in)X
7198 3477(memory)X
7199 3777(so)X
7200 3881(that)X
7201 4034(it)X
7202 4111(is)X
7203 4197(not)X
7204 555 3397(swapped)N
7205 862(out)X
7206 990(while)X
7207 1194(we)X
7208 1314(are)X
7209 1439(accessing)X
7210 1772(it.)X
7211 1881(The)X
7212 2031(last)X
7213 2167(argument)X
7214 2495(to)X
7215 2 f
7216 2582(buf_get)X
7217 1 f
7218 2847(returns)X
7219 3095(the)X
7220 3218(number)X
7221 3488(of)X
7222 3580(bytes)X
7223 3774(on)X
7224 3879(the)X
7225 4002(page)X
7226 4179(that)X
7227 555 3487(were)N
7228 732(valid)X
7229 912(so)X
7230 1003(that)X
7231 1143(the)X
7232 1261(access)X
7233 1487(method)X
7234 1747(may)X
7235 1905(initialize)X
7236 2205(the)X
7237 2323(page)X
7238 2495(if)X
7239 2564(necessary.)X
7240 755 3610(Next,)N
7241 955(consider)X
7242 1251(inserting)X
7243 1555(a)X
7244 1615(record)X
7245 1845(on)X
7246 1949(a)X
7247 2009(particular)X
7248 2341(page)X
7249 2517(of)X
7250 2608(a)X
7251 2668(B-tree.)X
7252 2932(In)X
7253 3022(the)X
7254 3143(unprotected)X
7255 3545(case,)X
7256 3727(we)X
7257 3844(read)X
7258 4006(the)X
7259 4127(page,)X
7260 555 3700(call)N
7261 2 f
7262 693(_bt_insertat)X
7263 1 f
7264 1079(,)X
7265 1121(and)X
7266 1258(write)X
7267 1444(the)X
7268 1563(page.)X
7269 1776(Instead,)X
7270 2049(we)X
7271 2164(lock)X
7272 2323(the)X
7273 2442(page,)X
7274 2635(request)X
7275 2888(the)X
7276 3007(buffer,)X
7277 3245(log)X
7278 3368(the)X
7279 3487(change,)X
7280 3756(modify)X
7281 4008(the)X
7282 4127(page,)X
7283 555 3790(and)N
7284 691(release)X
7285 935(the)X
7286 1053(buffer.)X
7287 7 f
7288 715 3913(int)N
7289 907(fid,)X
7290 1147(len,)X
7291 1387(pageno;)X
7292 1867(/*)X
7293 2011(Identifies)X
7294 2539(the)X
7295 2731(buffer)X
7296 3067(*/)X
7297 715 4003(int)N
7298 907(index;)X
7299 1867(/*)X
7300 2011(Location)X
7301 2443(at)X
7302 2587(which)X
7303 2875(to)X
7304 3019(insert)X
7305 3355(the)X
7306 3547(new)X
7307 3739(pair)X
7308 3979(*/)X
7309 715 4093(DBT)N
7310 907(*keyp,)X
7311 1243(*datap;)X
7312 1867(/*)X
7313 2011(Key/Data)X
7314 2443(pair)X
7315 2683(to)X
7316 2827(be)X
7317 2971(inserted)X
7318 3403(*/)X
7319 715 4183(DATUM)N
7320 1003(*d;)X
7321 1867(/*)X
7322 2011(Key/data)X
7323 2443(structure)X
7324 2923(to)X
7325 3067(insert)X
7326 3403(*/)X
7327 715 4363(/*)N
7328 859(Lock)X
7329 1099(and)X
7330 1291(request)X
7331 1675(the)X
7332 1867(buffer)X
7333 2203(*/)X
7334 715 4453(if)N
7335 859(\(tp_lock\(fid,)X
7336 1531(pageno,)X
7337 1915(WRITE_LOCK\)\))X
7338 1003 4543(return)N
7339 1339(error;)X
7340 715 4633(buffer_ptr)N
7341 1243(=)X
7342 1339(buf_get\(fid,)X
7343 1963(pageno,)X
7344 2347(BF_PIN,)X
7345 2731(&len\);)X
7346 715 4813(/*)N
7347 859(Log)X
7348 1051(and)X
7349 1243(perform)X
7350 1627(the)X
7351 1819(update)X
7352 2155(*/)X
7353 715 4903(log_insdel\(BTREE_INSERT,)N
7354 1915(fid,)X
7355 2155(pageno,)X
7356 2539(keyp,)X
7357 2827(datap\);)X
7358 715 4993(_bt_insertat\(buffer_ptr,)N
7359 1915(d,)X
7360 2059(index\);)X
7361 715 5083(buf_unpin\(buffer_ptr\);)N
7362 1 f
7363 555 5206(Succinctly,)N
7364 942(the)X
7365 1068(algorithm)X
7366 1407(for)X
7367 1529(turning)X
7368 1788(unprotected)X
7369 2195(code)X
7370 2375(into)X
7371 2527(protected)X
7372 2854(code)X
7373 3034(is)X
7374 3115(to)X
7375 3205(replace)X
7376 3466(read)X
7377 3633(operations)X
7378 3995(with)X
7379 2 f
7380 4165(lock)X
7381 1 f
7382 555 5296(and)N
7383 2 f
7384 691(buf_get)X
7385 1 f
7386 951(operations)X
7387 1305(and)X
7388 1441(write)X
7389 1626(operations)X
7390 1980(with)X
7391 2 f
7392 2142(log)X
7393 1 f
7394 2264(and)X
7395 2 f
7396 2400(buf_unpin)X
7397 1 f
7398 2744(operations.)X
7399 8 s
7400 10 f
7401 555 5458(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
7402 5 s
7403 1 f
7404 727 5536(3)N
7405 8 s
7406 766 5561(The)N
7407 884(following)X
7408 1152(code)X
7409 1291(fragments)X
7410 1565(are)X
7411 1661(examples,)X
7412 1937(but)X
7413 2038(do)X
7414 2120(not)X
7415 2220(de\256ne)X
7416 2394(the)X
7417 2490(\256nal)X
7418 2622(interface.)X
7419 2894(The)X
7420 3011(\256nal)X
7421 3143(interface)X
7422 3383(will)X
7423 3501(be)X
7424 3579(determined)X
7425 3884(after)X
7426 4018(LIBTP)X
7427 4214(has)X
7428 555 5633(been)N
7429 691(fully)X
7430 828(integrated)X
7431 1099(with)X
7432 1229(the)X
7433 1323(most)X
7434 1464(recent)X
7435 3 f
7436 1635(db)X
7437 1 f
7438 1707(\(3\))X
7439 1797(release)X
7440 1989(from)X
7441 2129(the)X
7442 2223(Computer)X
7443 2495(Systems)X
7444 2725(Research)X
7445 2974(Group)X
7446 3153(at)X
7447 3215(University)X
7448 3501(of)X
7449 3570(California,)X
7450 3861(Berkeley.)X
7452 11 p
7453 %%Page: 11 11
7454 8 s 8 xH 0 xS 1 f
7455 10 s
7456 3 f
7457 555 630(5.)N
7458 655(Performance)X
7459 1 f
7460 755 753(In)N
7461 845(this)X
7462 983(section,)X
7463 1253(we)X
7464 1370(present)X
7465 1625(the)X
7466 1746(results)X
7467 1978(of)X
7468 2067(two)X
7469 2209(very)X
7470 2374(different)X
7471 2673(benchmarks.)X
7472 3103(The)X
7473 3250(\256rst)X
7474 3396(is)X
7475 3471(an)X
7476 3569(online)X
7477 3791(transaction)X
7478 4165(pro-)X
7479 555 843(cessing)N
7480 824(benchmark,)X
7481 1234(similar)X
7482 1489(to)X
7483 1584(the)X
7484 1715(standard)X
7485 2020(TPCB,)X
7486 2272(but)X
7487 2407(has)X
7488 2547(been)X
7489 2732(adapted)X
7490 3015(to)X
7491 3110(run)X
7492 3250(in)X
7493 3345(a)X
7494 3414(desktop)X
7495 3696(environment.)X
7496 4174(The)X
7497 555 933(second)N
7498 798(emulates)X
7499 1103(a)X
7500 1159(computer-aided)X
7501 1683(design)X
7502 1912(environment)X
7503 2337(and)X
7504 2473(provides)X
7505 2769(more)X
7506 2954(complex)X
7507 3250(query)X
7508 3453(processing.)X
7509 3 f
7510 555 1119(5.1.)N
7511 715(Transaction)X
7512 1148(Processing)X
7513 1533(Benchmark)X
7514 1 f
7515 755 1242(For)N
7516 887(this)X
7517 1023(section,)X
7518 1291(all)X
7519 1392(performance)X
7520 1820(numbers)X
7521 2117(shown)X
7522 2346(except)X
7523 2576(for)X
7524 2690(the)X
7525 2808(commercial)X
7526 3207(database)X
7527 3504(system)X
7528 3746(were)X
7529 3923(obtained)X
7530 4219(on)X
7531 555 1332(a)N
7532 614(DECstation)X
7533 1009(5000/200)X
7534 1333(with)X
7535 1497(32MBytes)X
7536 1852(of)X
7537 1941(memory)X
7538 2230(running)X
7539 2501(Ultrix)X
7540 2714(V4.0,)X
7541 2914(accessing)X
7542 3244(a)X
7543 3302(DEC)X
7544 3484(RZ57)X
7545 3688(1GByte)X
7546 3959(disk)X
7547 4114(drive.)X
7548 555 1422(The)N
7549 720(commercial)X
7550 1139(relational)X
7551 1482(database)X
7552 1799(system)X
7553 2061(tests)X
7554 2242(were)X
7555 2438(run)X
7556 2584(on)X
7557 2703(a)X
7558 2778(comparable)X
7559 3192(machine,)X
7560 3523(a)X
7561 3598(Sparcstation)X
7562 4033(1+)X
7563 4157(with)X
7564 555 1512(32MBytes)N
7565 915(memory)X
7566 1209(and)X
7567 1352(a)X
7568 1415(1GByte)X
7569 1691(external)X
7570 1976(disk)X
7571 2135(drive.)X
7572 2366(The)X
7573 2517(database,)X
7574 2840(binaries)X
7575 3120(and)X
7576 3262(log)X
7577 3390(resided)X
7578 3648(on)X
7579 3754(the)X
7580 3878(same)X
7581 4069(device.)X
7582 555 1602(Reported)N
7583 869(times)X
7584 1062(are)X
7585 1181(the)X
7586 1299(means)X
7587 1524(of)X
7588 1611(\256ve)X
7589 1751(tests)X
7590 1913(and)X
7591 2049(have)X
7592 2221(standard)X
7593 2513(deviations)X
7594 2862(within)X
7595 3086(two)X
7596 3226(percent)X
7597 3483(of)X
7598 3570(the)X
7599 3688(mean.)X
7600 755 1725(The)N
7601 905(test)X
7602 1041(database)X
7603 1343(was)X
7604 1493(con\256gured)X
7605 1861(according)X
7606 2203(to)X
7607 2290(the)X
7608 2413(TPCB)X
7609 2637(scaling)X
7610 2889(rules)X
7611 3070(for)X
7612 3189(a)X
7613 3250(10)X
7614 3355(transaction)X
7615 3732(per)X
7616 3860(second)X
7617 4108(\(TPS\))X
7618 555 1815(system)N
7619 817(with)X
7620 999(1,000,000)X
7621 1359(account)X
7622 1649(records,)X
7623 1946(100)X
7624 2106(teller)X
7625 2311(records,)X
7626 2607(and)X
7627 2762(10)X
7628 2881(branch)X
7629 3139(records.)X
7630 3455(Where)X
7631 3709(TPS)X
7632 3885(numbers)X
7633 4200(are)X
7634 555 1905(reported,)N
7635 865(we)X
7636 981(are)X
7637 1102(running)X
7638 1373(a)X
7639 1431(modi\256ed)X
7640 1737(version)X
7641 1995(of)X
7642 2084(the)X
7643 2203(industry)X
7644 2486(standard)X
7645 2779(transaction)X
7646 3152(processing)X
7647 3516(benchmark,)X
7648 3914(TPCB.)X
7649 4174(The)X
7650 555 1995(TPCB)N
7651 780(benchmark)X
7652 1163(simulates)X
7653 1491(a)X
7654 1553(withdrawal)X
7655 1940(performed)X
7656 2301(by)X
7657 2407(a)X
7658 2469(hypothetical)X
7659 2891(teller)X
7660 3082(at)X
7661 3166(a)X
7662 3228(hypothetical)X
7663 3650(bank.)X
7664 3872(The)X
7665 4022(database)X
7666 555 2085(consists)N
7667 831(of)X
7668 921(relations)X
7669 1220(\(\256les\))X
7670 1430(for)X
7671 1547(accounts,)X
7672 1871(branches,)X
7673 2200(tellers,)X
7674 2439(and)X
7675 2578(history.)X
7676 2863(For)X
7677 2997(each)X
7678 3168(transaction,)X
7679 3563(the)X
7680 3684(account,)X
7681 3976(teller,)X
7682 4183(and)X
7683 555 2175(branch)N
7684 795(balances)X
7685 1093(must)X
7686 1269(be)X
7687 1366(updated)X
7688 1641(to)X
7689 1724(re\257ect)X
7690 1946(the)X
7691 2065(withdrawal)X
7692 2447(and)X
7693 2584(a)X
7694 2640(history)X
7695 2882(record)X
7696 3108(is)X
7697 3181(written)X
7698 3428(which)X
7699 3644(contains)X
7700 3931(the)X
7701 4049(account)X
7702 555 2265(id,)N
7703 657(branch)X
7704 896(id,)X
7705 998(teller)X
7706 1183(id,)X
7707 1285(and)X
7708 1421(the)X
7709 1539(amount)X
7710 1799(of)X
7711 1886(the)X
7712 2004(withdrawal)X
7713 2385([TPCB90].)X
7714 755 2388(Our)N
7715 914(implementation)X
7716 1450(of)X
7717 1551(the)X
7718 1683(benchmark)X
7719 2074(differs)X
7720 2317(from)X
7721 2506(the)X
7722 2637(speci\256cation)X
7723 3075(in)X
7724 3170(several)X
7725 3431(aspects.)X
7726 3736(The)X
7727 3894(speci\256cation)X
7728 555 2478(requires)N
7729 840(that)X
7730 985(the)X
7731 1108(database)X
7732 1410(keep)X
7733 1587(redundant)X
7734 1933(logs)X
7735 2091(on)X
7736 2196(different)X
7737 2498(devices,)X
7738 2784(but)X
7739 2911(we)X
7740 3030(use)X
7741 3162(a)X
7742 3223(single)X
7743 3439(log.)X
7744 3606(Furthermore,)X
7745 4052(all)X
7746 4157(tests)X
7747 555 2568(were)N
7748 734(run)X
7749 863(on)X
7750 965(a)X
7751 1023(single,)X
7752 1256(centralized)X
7753 1631(system)X
7754 1875(so)X
7755 1968(there)X
7756 2151(is)X
7757 2226(no)X
7758 2328(notion)X
7759 2553(of)X
7760 2641(remote)X
7761 2885(accesses.)X
7762 3219(Finally,)X
7763 3486(we)X
7764 3601(calculated)X
7765 3948(throughput)X
7766 555 2658(by)N
7767 662(dividing)X
7768 955(the)X
7769 1080(total)X
7770 1249(elapsed)X
7771 1517(time)X
7772 1686(by)X
7773 1793(the)X
7774 1918(number)X
7775 2190(of)X
7776 2284(transactions)X
7777 2694(processed)X
7778 3038(rather)X
7779 3253(than)X
7780 3418(by)X
7781 3525(computing)X
7782 3894(the)X
7783 4018(response)X
7784 555 2748(time)N
7785 717(for)X
7786 831(each)X
7787 999(transaction.)X
7788 755 2871(The)N
7789 912(performance)X
7790 1351(comparisons)X
7791 1788(focus)X
7792 1993(on)X
7793 2104(traditional)X
7794 2464(Unix)X
7795 2655(techniques)X
7796 3029(\(unprotected,)X
7797 3486(using)X
7798 3 f
7799 3690(\257ock)X
7800 1 f
7801 3854(\(2\))X
7802 3979(and)X
7803 4126(using)X
7804 3 f
7805 555 2961(fsync)N
7806 1 f
7807 733(\(2\)\))X
7808 884(and)X
7809 1030(a)X
7810 1096(commercial)X
7811 1504(relational)X
7812 1836(database)X
7813 2142(system.)X
7814 2433(Well-behaved)X
7815 2913(applications)X
7816 3329(using)X
7817 3 f
7818 3531(\257ock)X
7819 1 f
7820 3695(\(2\))X
7821 3818(are)X
7822 3946(guaranteed)X
7823 555 3051(that)N
7824 704(concurrent)X
7825 1077(processes')X
7826 1441(updates)X
7827 1715(do)X
7828 1824(not)X
7829 1955(interact)X
7830 2225(with)X
7831 2396(one)X
7832 2541(another,)X
7833 2831(but)X
7834 2962(no)X
7835 3070(guarantees)X
7836 3442(about)X
7837 3648(atomicity)X
7838 3978(are)X
7839 4105(made.)X
7840 555 3141(That)N
7841 731(is,)X
7842 833(if)X
7843 911(the)X
7844 1038(system)X
7845 1289(crashes)X
7846 1555(in)X
7847 1646(mid-transaction,)X
7848 2198(only)X
7849 2369(parts)X
7850 2554(of)X
7851 2649(that)X
7852 2797(transaction)X
7853 3177(will)X
7854 3329(be)X
7855 3433(re\257ected)X
7856 3738(in)X
7857 3828(the)X
7858 3954 0.3125(after-crash)AX
7859 555 3231(state)N
7860 725(of)X
7861 815(the)X
7862 936(database.)X
7863 1276(The)X
7864 1424(use)X
7865 1554(of)X
7866 3 f
7867 1643(fsync)X
7868 1 f
7869 1821(\(2\))X
7870 1937(at)X
7871 2017(transaction)X
7872 2391(commit)X
7873 2657(time)X
7874 2821(provides)X
7875 3119(guarantees)X
7876 3485(of)X
7877 3574(durability)X
7878 3907(after)X
7879 4077(system)X
7880 555 3321(failure.)N
7881 825(However,)X
7882 1160(there)X
7883 1341(is)X
7884 1414(no)X
7885 1514(mechanism)X
7886 1899(to)X
7887 1981(perform)X
7888 2260(transaction)X
7889 2632(abort.)X
7890 3 f
7891 555 3507(5.1.1.)N
7892 775(Single-User)X
7893 1191(Tests)X
7894 1 f
7895 755 3630(These)N
7896 978(tests)X
7897 1151(compare)X
7898 1459(LIBTP)X
7899 1712(in)X
7900 1804(a)X
7901 1870(variety)X
7902 2123(of)X
7903 2220(con\256gurations)X
7904 2708(to)X
7905 2800(traditional)X
7906 3159(UNIX)X
7907 3390(solutions)X
7908 3708(and)X
7909 3854(a)X
7910 3920(commercial)X
7911 555 3720(relational)N
7912 884(database)X
7913 1187(system)X
7914 1435(\(RDBMS\).)X
7915 1814(To)X
7916 1929(demonstrate)X
7917 2347(the)X
7918 2471(server)X
7919 2694(architecture)X
7920 3100(we)X
7921 3220(built)X
7922 3392(a)X
7923 3454(front)X
7924 3636(end)X
7925 3777(test)X
7926 3913(process)X
7927 4179(that)X
7928 555 3810(uses)N
7929 732(TCL)X
7930 922([OUST90])X
7931 1304(to)X
7932 1405(parse)X
7933 1614(database)X
7934 1930(access)X
7935 2175(commands)X
7936 2561(and)X
7937 2716(call)X
7938 2870(the)X
7939 3006(database)X
7940 3321(access)X
7941 3565(routines.)X
7942 3901(In)X
7943 4006(one)X
7944 4160(case)X
7945 555 3900(\(SERVER\),)N
7946 956(frontend)X
7947 1249(and)X
7948 1386(backend)X
7949 1675(processes)X
7950 2004(were)X
7951 2181(created)X
7952 2434(which)X
7953 2650(communicated)X
7954 3142(via)X
7955 3260(an)X
7956 3356(IP)X
7957 3447(socket.)X
7958 3712(In)X
7959 3799(the)X
7960 3917(second)X
7961 4160(case)X
7962 555 3990(\(TCL\),)N
7963 802(a)X
7964 860(single)X
7965 1073(process)X
7966 1336(read)X
7967 1497(queries)X
7968 1751(from)X
7969 1929(standard)X
7970 2223(input,)X
7971 2429(parsed)X
7972 2660(them,)X
7973 2861(and)X
7974 2998(called)X
7975 3211(the)X
7976 3330(database)X
7977 3628(access)X
7978 3855(routines.)X
7979 4174(The)X
7980 555 4080(performance)N
7981 987(difference)X
7982 1338(between)X
7983 1630(the)X
7984 1752(TCL)X
7985 1927(and)X
7986 2067(SERVER)X
7987 2397(tests)X
7988 2563(quanti\256es)X
7989 2898(the)X
7990 3020(communication)X
7991 3542(overhead)X
7992 3861(of)X
7993 3952(the)X
7994 4074(socket.)X
7995 555 4170(The)N
7996 732(RDBMS)X
7997 1063(implementation)X
7998 1617(used)X
7999 1816(embedded)X
8000 2198(SQL)X
8001 2401(in)X
8002 2515(C)X
8003 2620(with)X
8004 2814(stored)X
8005 3062(database)X
8006 3391(procedures.)X
8007 3835(Therefore,)X
8008 4224(its)X
8009 555 4260(con\256guration)N
8010 1003(is)X
8011 1076(a)X
8012 1132(hybrid)X
8013 1361(of)X
8014 1448(the)X
8015 1566(single)X
8016 1777(process)X
8017 2038(architecture)X
8018 2438(and)X
8019 2574(the)X
8020 2692(server)X
8021 2909(architecture.)X
8022 3349(The)X
8023 3494(graph)X
8024 3697(in)X
8025 3779(\256gure)X
8026 3986(six)X
8027 4099(shows)X
8028 555 4350(a)N
8029 611(comparison)X
8030 1005(of)X
8031 1092(the)X
8032 1210(following)X
8033 1541(six)X
8034 1654(con\256gurations:)X
8035 1126 4506(LIBTP)N
8036 1552(Uses)X
8037 1728(the)X
8038 1846(LIBTP)X
8039 2088(library)X
8040 2322(in)X
8041 2404(a)X
8042 2460(single)X
8043 2671(application.)X
8044 1126 4596(TCL)N
8045 1552(Uses)X
8046 1728(the)X
8047 1846(LIBTP)X
8048 2088(library)X
8049 2322(in)X
8050 2404(a)X
8051 2460(single)X
8052 2671(application,)X
8053 3067(requires)X
8054 3346(query)X
8055 3549(parsing.)X
8056 1126 4686(SERVER)N
8057 1552(Uses)X
8058 1728(the)X
8059 1846(LIBTP)X
8060 2088(library)X
8061 2322(in)X
8062 2404(a)X
8063 2460(server)X
8064 2677(con\256guration,)X
8065 3144(requires)X
8066 3423(query)X
8067 3626(parsing.)X
8068 1126 4776(NOTP)N
8069 1552(Uses)X
8070 1728(no)X
8071 1828(locking,)X
8072 2108(logging,)X
8073 2392(or)X
8074 2479(concurrency)X
8075 2897(control.)X
8076 1126 4866(FLOCK)N
8077 1552(Uses)X
8078 3 f
8079 1728(\257ock)X
8080 1 f
8081 1892(\(2\))X
8082 2006(for)X
8083 2120(concurrency)X
8084 2538(control)X
8085 2785(and)X
8086 2921(nothing)X
8087 3185(for)X
8088 3299(durability.)X
8089 1126 4956(FSYNC)N
8090 1552(Uses)X
8091 3 f
8092 1728(fsync)X
8093 1 f
8094 1906(\(2\))X
8095 2020(for)X
8096 2134(durability)X
8097 2465(and)X
8098 2601(nothing)X
8099 2865(for)X
8100 2979(concurrency)X
8101 3397(control.)X
8102 1126 5046(RDBMS)N
8103 1552(Uses)X
8104 1728(a)X
8105 1784(commercial)X
8106 2183(relational)X
8107 2506(database)X
8108 2803(system.)X
8109 755 5235(The)N
8110 902(results)X
8111 1133(show)X
8112 1324(that)X
8113 1466(LIBTP,)X
8114 1730(both)X
8115 1894(in)X
8116 1978(the)X
8117 2098(procedural)X
8118 2464(and)X
8119 2602(parsed)X
8120 2834(environments,)X
8121 3312(is)X
8122 3387(competitive)X
8123 3787(with)X
8124 3951(a)X
8125 4009(commer-)X
8126 555 5325(cial)N
8127 692(system)X
8128 935(\(comparing)X
8129 1326(LIBTP,)X
8130 1589(TCL,)X
8131 1781(and)X
8132 1917(RDBMS\).)X
8133 2263(Compared)X
8134 2617(to)X
8135 2699(existing)X
8136 2972(UNIX)X
8137 3193(solutions,)X
8138 3521(LIBTP)X
8139 3763(is)X
8140 3836(approximately)X
8141 555 5415(15%)N
8142 738(slower)X
8143 988(than)X
8144 1162(using)X
8145 3 f
8146 1371(\257ock)X
8147 1 f
8148 1535(\(2\))X
8149 1665(or)X
8150 1768(no)X
8151 1884(protection)X
8152 2245(but)X
8153 2383(over)X
8154 2562(80%)X
8155 2745(better)X
8156 2964(than)X
8157 3137(using)X
8158 3 f
8159 3345(fsync)X
8160 1 f
8161 3523(\(2\))X
8162 3652(\(comparing)X
8163 4057(LIBTP,)X
8164 555 5505(FLOCK,)N
8165 857(NOTP,)X
8166 1106(and)X
8167 1242(FSYNC\).)X
8169 12 p
8170 %%Page: 12 12
8171 10 s 10 xH 0 xS 1 f
8172 3 f
8173 8 s
8174 3500 2184(RDBMS)N
8175 1 Dt
8176 3553 2085 MXY
8177  3553 2085 lineto
8178  3676 2085 lineto
8179  3676 1351 lineto
8180  3553 1351 lineto
8181  3553 2085 lineto
8182 closepath 16 3553 1351 3676 2085 Dp
8183 2018 2184(SERVER)N
8184 1720 1168 MXY
8185 0 917 Dl
8186 122 0 Dl
8187 0 -917 Dl
8188 -122 0 Dl
8189 1715 2184(TCL)N
8190 2087 1534 MXY
8191  2087 1534 lineto
8192  2209 1534 lineto
8193  2209 2085 lineto
8194  2087 2085 lineto
8195  2087 1534 lineto
8196 closepath 12 2087 1534 2209 2085 Dp
8197 3187 MX
8198  3187 1534 lineto
8199  3309 1534 lineto
8200  3309 2085 lineto
8201  3187 2085 lineto
8202  3187 1534 lineto
8203 closepath 19 3187 1534 3309 2085 Dp
8204 3142 2184(FSYNC)N
8205 2425(NOTP)X
8206 2453 955 MXY
8207  2453 955 lineto
8208  2576 955 lineto
8209  2576 2085 lineto
8210  2453 2085 lineto
8211  2453 955 lineto
8212 closepath 21 2453 955 2576 2085 Dp
8213 2820 1000 MXY
8214  2820 1000 lineto
8215  2942 1000 lineto
8216  2942 2085 lineto
8217  2820 2085 lineto
8218  2820 1000 lineto
8219 closepath 14 2820 1000 2942 2085 Dp
8220 5 Dt
8221 1231 2085 MXY
8222 2567 0 Dl
8223 4 Ds
8224 1 Dt
8225 1231 1840 MXY
8226 2567 0 Dl
8227 1231 1596 MXY
8228 2567 0 Dl
8229 1231 1351 MXY
8230 2567 0 Dl
8231 1231 1108 MXY
8232 2567 0 Dl
8233 1231 863 MXY
8234 2567 0 Dl
8235 11 s
8236 1087 1877(2)N
8237 1087 1633(4)N
8238 1087 1388(6)N
8239 1087 1145(8)N
8240 1065 900(10)N
8241 1028 763(TPS)N
8242 -1 Ds
8243 1353 2085 MXY
8244  1353 2085 lineto
8245  1353 1151 lineto
8246  1476 1151 lineto
8247  1476 2085 lineto
8248  1353 2085 lineto
8249 closepath 3 1353 1151 1476 2085 Dp
8250 8 s
8251 1318 2184(LIBTP)N
8252 2767(FLOCK)X
8253 3 Dt
8254 -1 Ds
8255 10 s
8256 1597 2399(Figure)N
8257 1844(6:)X
8258 1931(Single-User)X
8259 2347(Performance)X
8260 2814(Comparison.)X
8261 1 f
8262 10 f
8263 555 2579(h)N
8264 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
8265 3 f
8266 555 2855(5.1.2.)N
8267 775(Multi-User)X
8268 1174(Tests)X
8269 1 f
8270 755 2978(While)N
8271 975(the)X
8272 1097(single-user)X
8273 1473(tests)X
8274 1639(form)X
8275 1819(a)X
8276 1878(basis)X
8277 2061(for)X
8278 2178(comparing)X
8279 2544(LIBTP)X
8280 2789(to)X
8281 2874(other)X
8282 3062(systems,)X
8283 3358(our)X
8284 3488(goal)X
8285 3649(in)X
8286 3734(multi-user)X
8287 4086(testing)X
8288 555 3068(was)N
8289 714(to)X
8290 810(analyze)X
8291 1089(its)X
8292 1197(scalability.)X
8293 1579(To)X
8294 1701(this)X
8295 1849(end,)X
8296 2018(we)X
8297 2145(have)X
8298 2330(run)X
8299 2470(the)X
8300 2601(benchmark)X
8301 2991(in)X
8302 3086(three)X
8303 3280(modes,)X
8304 3542(the)X
8305 3673(normal)X
8306 3933(disk)X
8307 4099(bound)X
8308 555 3158(con\256guration)N
8309 1010(\(\256gure)X
8310 1252(seven\),)X
8311 1510(a)X
8312 1573(CPU)X
8313 1755(bound)X
8314 1982(con\256guration)X
8315 2436(\(\256gure)X
8316 2677(eight,)X
8317 2884(READ-ONLY\),)X
8318 3426(and)X
8319 3569(lock)X
8320 3734(contention)X
8321 4099(bound)X
8322 555 3248(\(\256gure)N
8323 796(eight,)X
8324 1003(NO_FSYNC\).)X
8325 1510(Since)X
8326 1715(the)X
8327 1840(normal)X
8328 2094(con\256guration)X
8329 2548(is)X
8330 2628(completely)X
8331 3011(disk)X
8332 3171(bound)X
8333 3398(\(each)X
8334 3600(transaction)X
8335 3978(requires)X
8336 4263(a)X
8337 555 3354(random)N
8338 823(read,)X
8339 1005(a)X
8340 1064(random)X
8341 1332(write,)X
8342 1540(and)X
8343 1679(a)X
8344 1738(sequential)X
8345 2086(write)X
8346 7 s
8347 2251 3322(4)N
8348 10 s
8349 3354(\))Y
8350 2329(we)X
8351 2446(expect)X
8352 2679(to)X
8353 2764(see)X
8354 2890(little)X
8355 3059(performance)X
8356 3489(improvement)X
8357 3939(as)X
8358 4028(the)X
8359 4148(mul-)X
8360 555 3444(tiprogramming)N
8361 1064(level)X
8362 1249(increases.)X
8363 1613(In)X
8364 1709(fact,)X
8365 1879(\256gure)X
8366 2095(seven)X
8367 2307(reveals)X
8368 2564(that)X
8369 2713(we)X
8370 2836(are)X
8371 2964(able)X
8372 3127(to)X
8373 3218(overlap)X
8374 3487(CPU)X
8375 3670(and)X
8376 3814(disk)X
8377 3975(utilization)X
8378 555 3534(slightly)N
8379 825(producing)X
8380 1181(approximately)X
8381 1674(a)X
8382 1740(10%)X
8383 1917(performance)X
8384 2354(improvement)X
8385 2811(with)X
8386 2983(two)X
8387 3133(processes.)X
8388 3511(After)X
8389 3711(that)X
8390 3861(point,)X
8391 4075(perfor-)X
8392 555 3624(mance)N
8393 785(drops)X
8394 983(off,)X
8395 1117(and)X
8396 1253(at)X
8397 1331(a)X
8398 1387(multi-programming)X
8399 2038(level)X
8400 2214(of)X
8401 2301(4,)X
8402 2381(we)X
8403 2495(are)X
8404 2614(performing)X
8405 2995(worse)X
8406 3207(than)X
8407 3365(in)X
8408 3447(the)X
8409 3565(single)X
8410 3776(process)X
8411 4037(case.)X
8412 755 3747(Similar)N
8413 1021(behavior)X
8414 1333(was)X
8415 1489(reported)X
8416 1787(on)X
8417 1897(the)X
8418 2025(commercial)X
8419 2434(relational)X
8420 2767(database)X
8421 3074(system)X
8422 3326(using)X
8423 3529(the)X
8424 3657(same)X
8425 3852(con\256guration.)X
8426 555 3837(The)N
8427 707(important)X
8428 1045(conclusion)X
8429 1419(to)X
8430 1508(draw)X
8431 1696(from)X
8432 1879(this)X
8433 2021(is)X
8434 2101(that)X
8435 2248(you)X
8436 2395(cannot)X
8437 2636(attain)X
8438 2841(good)X
8439 3028(multi-user)X
8440 3384(scaling)X
8441 3638(on)X
8442 3745(a)X
8443 3808(badly)X
8444 4013(balanced)X
8445 555 3927(system.)N
8446 839(If)X
8447 915(multi-user)X
8448 1266(performance)X
8449 1695(on)X
8450 1797(applications)X
8451 2205(of)X
8452 2293(this)X
8453 2429(sort)X
8454 2570(is)X
8455 2644(important,)X
8456 2996(one)X
8457 3133(must)X
8458 3309(have)X
8459 3482(a)X
8460 3539(separate)X
8461 3824(logging)X
8462 4089(device)X
8463 555 4017(and)N
8464 697(horizontally)X
8465 1110(partition)X
8466 1407(the)X
8467 1531(database)X
8468 1834(to)X
8469 1921(allow)X
8470 2124(a)X
8471 2185(suf\256ciently)X
8472 2570(high)X
8473 2737(degree)X
8474 2977(of)X
8475 3069(multiprogramming)X
8476 3698(that)X
8477 3843(group)X
8478 4055(commit)X
8479 555 4107(can)N
8480 687(amortize)X
8481 988(the)X
8482 1106(cost)X
8483 1255(of)X
8484 1342(log)X
8485 1464(\257ushing.)X
8486 755 4230(By)N
8487 871(using)X
8488 1067(a)X
8489 1126(very)X
8490 1292(small)X
8491 1488(database)X
8492 1788(\(one)X
8493 1954(that)X
8494 2097(can)X
8495 2232(be)X
8496 2331(entirely)X
8497 2599(cached)X
8498 2846(in)X
8499 2930(main)X
8500 3112(memory\))X
8501 3428(and)X
8502 3566(read-only)X
8503 3896(transactions,)X
8504 555 4320(we)N
8505 670(generated)X
8506 1004(a)X
8507 1061(CPU)X
8508 1236(bound)X
8509 1456(environment.)X
8510 1921(By)X
8511 2034(using)X
8512 2227(the)X
8513 2345(same)X
8514 2530(small)X
8515 2723(database,)X
8516 3040(the)X
8517 3158(complete)X
8518 3472(TPCB)X
8519 3691(transaction,)X
8520 4083(and)X
8521 4219(no)X
8522 3 f
8523 555 4410(fsync)N
8524 1 f
8525 733(\(2\))X
8526 862(on)X
8527 977(the)X
8528 1110(log)X
8529 1247(at)X
8530 1340(commit,)X
8531 1639(we)X
8532 1768(created)X
8533 2036(a)X
8534 2107(lock)X
8535 2280(contention)X
8536 2652(bound)X
8537 2886(environment.)X
8538 3365(The)X
8539 3524(small)X
8540 3731(database)X
8541 4042(used)X
8542 4223(an)X
8543 555 4500(account)N
8544 828(\256le)X
8545 953(containing)X
8546 1314(only)X
8547 1479(1000)X
8548 1662(records)X
8549 1922(rather)X
8550 2133(than)X
8551 2294(the)X
8552 2415(full)X
8553 2549(1,000,000)X
8554 2891(records)X
8555 3150(and)X
8556 3288(ran)X
8557 3413(enough)X
8558 3671(transactions)X
8559 4076(to)X
8560 4160(read)X
8561 555 4590(the)N
8562 677(entire)X
8563 883(database)X
8564 1183(into)X
8565 1330(the)X
8566 1451(buffer)X
8567 1671(pool)X
8568 1836(\(2000\))X
8569 2073(before)X
8570 2302(beginning)X
8571 2645(measurements.)X
8572 3147(The)X
8573 3295(read-only)X
8574 3626(transaction)X
8575 4001(consisted)X
8576 555 4680(of)N
8577 646(three)X
8578 831(database)X
8579 1132(reads)X
8580 1326(\(from)X
8581 1533(the)X
8582 1655(1000)X
8583 1839(record)X
8584 2069(account)X
8585 2343(\256le,)X
8586 2489(the)X
8587 2611(100)X
8588 2754(record)X
8589 2983(teller)X
8590 3171(\256le,)X
8591 3316(and)X
8592 3455(the)X
8593 3576(10)X
8594 3679(record)X
8595 3908(branch)X
8596 4150(\256le\).)X
8597 555 4770(Since)N
8598 759(no)X
8599 865(data)X
8600 1025(were)X
8601 1208(modi\256ed)X
8602 1518(and)X
8603 1660(no)X
8604 1766(history)X
8605 2014(records)X
8606 2277(were)X
8607 2460(written,)X
8608 2733(no)X
8609 2839(log)X
8610 2966(records)X
8611 3228(were)X
8612 3410(written.)X
8613 3702(For)X
8614 3838(the)X
8615 3961(contention)X
8616 555 4860(bound)N
8617 780(con\256guration,)X
8618 1252(we)X
8619 1371(used)X
8620 1543(the)X
8621 1666(normal)X
8622 1918(TPCB)X
8623 2142(transaction)X
8624 2519(\(against)X
8625 2798(the)X
8626 2920(small)X
8627 3117(database\))X
8628 3445(and)X
8629 3585(disabled)X
8630 3876(the)X
8631 3998(log)X
8632 4124(\257ush.)X
8633 555 4950(Figure)N
8634 784(eight)X
8635 964(shows)X
8636 1184(both)X
8637 1346(of)X
8638 1433(these)X
8639 1618(results.)X
8640 755 5073(The)N
8641 902(read-only)X
8642 1231(test)X
8643 1363(indicates)X
8644 1669(that)X
8645 1810(we)X
8646 1925(barely)X
8647 2147(scale)X
8648 2329(at)X
8649 2408(all)X
8650 2509(in)X
8651 2592(the)X
8652 2711(CPU)X
8653 2887(bound)X
8654 3108(case.)X
8655 3308(The)X
8656 3454(explanation)X
8657 3849(for)X
8658 3964(that)X
8659 4105(is)X
8660 4179(that)X
8661 555 5163(even)N
8662 735(with)X
8663 905(a)X
8664 969(single)X
8665 1188(process,)X
8666 1477(we)X
8667 1599(are)X
8668 1726(able)X
8669 1888(to)X
8670 1978(drive)X
8671 2171(the)X
8672 2297(CPU)X
8673 2480(utilization)X
8674 2832(to)X
8675 2922(96%.)X
8676 3137(As)X
8677 3254(a)X
8678 3317(result,)X
8679 3542(that)X
8680 3689(gives)X
8681 3885(us)X
8682 3983(very)X
8683 4153(little)X
8684 555 5253(room)N
8685 753(for)X
8686 876(improvement,)X
8687 1352(and)X
8688 1497(it)X
8689 1570(takes)X
8690 1764(a)X
8691 1829(multiprogramming)X
8692 2462(level)X
8693 2647(of)X
8694 2743(four)X
8695 2906(to)X
8696 2997(approach)X
8697 3321(100%)X
8698 3537(CPU)X
8699 3721(saturation.)X
8700 4106(In)X
8701 4201(the)X
8702 555 5343(case)N
8703 718(where)X
8704 939(we)X
8705 1057(do)X
8706 1161(perform)X
8707 1444(writes,)X
8708 1684(we)X
8709 1802(are)X
8710 1925(interested)X
8711 2261(in)X
8712 2347(detecting)X
8713 2665(when)X
8714 2863(lock)X
8715 3025(contention)X
8716 3387(becomes)X
8717 3691(a)X
8718 3750(dominant)X
8719 4075(perfor-)X
8720 555 5433(mance)N
8721 787(factor.)X
8722 1037(Contention)X
8723 1414(will)X
8724 1560(cause)X
8725 1761(two)X
8726 1903(phenomena;)X
8727 2317(we)X
8728 2433(will)X
8729 2579(see)X
8730 2704(transactions)X
8731 3109(queueing)X
8732 3425(behind)X
8733 3665(frequently)X
8734 4017(accessed)X
8735 555 5523(data,)N
8736 731(and)X
8737 869(we)X
8738 985(will)X
8739 1131(see)X
8740 1256(transaction)X
8741 1629(abort)X
8742 1815(rates)X
8743 1988(increasing)X
8744 2339(due)X
8745 2476(to)X
8746 2559(deadlock.)X
8747 2910(Given)X
8748 3127(that)X
8749 3268(the)X
8750 3387(branch)X
8751 3627(\256le)X
8752 3750(contains)X
8753 4038(only)X
8754 4201(ten)X
8755 8 s
8756 10 f
8757 555 5595(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
8758 5 s
8759 1 f
8760 727 5673(4)N
8761 8 s
8762 763 5698(Although)N
8763 1021(the)X
8764 1115(log)X
8765 1213(is)X
8766 1272(written)X
8767 1469(sequentially,)X
8768 1810(we)X
8769 1900(do)X
8770 1980(not)X
8771 2078(get)X
8772 2172(the)X
8773 2266(bene\256t)X
8774 2456(of)X
8775 2525(sequentiality)X
8776 2868(since)X
8777 3015(the)X
8778 3109(log)X
8779 3207(and)X
8780 3315(database)X
8781 3550(reside)X
8782 3718(on)X
8783 3798(the)X
8784 3892(same)X
8785 4039(disk.)X
8787 13 p
8788 %%Page: 13 13
8789 8 s 8 xH 0 xS 1 f
8790 10 s
8791 3 f
8792 1 f
8793 3187 2051 MXY
8794 0 18 Dl
8795 0 -9 Dl
8796 9 0 Dl
8797 -18 0 Dl
8798 3286 2028 MXY
8799 0 17 Dl
8800 0 -9 Dl
8801 9 0 Dl
8802 -18 0 Dl
8803 3384 1926 MXY
8804 0 18 Dl
8805 0 -9 Dl
8806 9 0 Dl
8807 -18 0 Dl
8808 3483 1910 MXY
8809 0 18 Dl
8810 0 -9 Dl
8811 9 0 Dl
8812 -18 0 Dl
8813 3581 1910 MXY
8814 0 18 Dl
8815 0 -9 Dl
8816 9 0 Dl
8817 -18 0 Dl
8818 3680 1832 MXY
8819 0 18 Dl
8820 0 -9 Dl
8821 9 0 Dl
8822 -18 0 Dl
8823 3778 1909 MXY
8824 0 18 Dl
8825 0 -9 Dl
8826 9 0 Dl
8827 -18 0 Dl
8828 3877 1883 MXY
8829 0 18 Dl
8830 0 -9 Dl
8831 9 0 Dl
8832 -18 0 Dl
8833 3975 1679 MXY
8834 0 17 Dl
8835 0 -8 Dl
8836 9 0 Dl
8837 -18 0 Dl
8838 4074 1487 MXY
8839 0 17 Dl
8840 0 -8 Dl
8841 9 0 Dl
8842 -18 0 Dl
8843 5 Dt
8844 3187 2060 MXY
8845 99 -24 Dl
8846 98 -101 Dl
8847 99 -16 Dl
8848 98 0 Dl
8849 99 -78 Dl
8850 98 77 Dl
8851 99 -26 Dl
8852 98 -204 Dl
8853 99 -192 Dl
8854 3 f
8855 6 s
8856 4088 1516(SMALL)N
8857 3 Dt
8858 3187 2051 MXY
8859 0 18 Dl
8860 0 -9 Dl
8861 9 0 Dl
8862 -18 0 Dl
8863 3286 2051 MXY
8864 0 18 Dl
8865 0 -9 Dl
8866 9 0 Dl
8867 -18 0 Dl
8868 3384 2041 MXY
8869 0 18 Dl
8870 0 -9 Dl
8871 9 0 Dl
8872 -18 0 Dl
8873 3483 1990 MXY
8874 0 18 Dl
8875 0 -9 Dl
8876 9 0 Dl
8877 -18 0 Dl
8878 3581 1843 MXY
8879 0 17 Dl
8880 0 -8 Dl
8881 9 0 Dl
8882 -18 0 Dl
8883 3680 1578 MXY
8884 0 18 Dl
8885 0 -9 Dl
8886 9 0 Dl
8887 -18 0 Dl
8888 3778 1496 MXY
8889 0 18 Dl
8890 0 -9 Dl
8891 9 0 Dl
8892 -18 0 Dl
8893 3877 1430 MXY
8894 0 18 Dl
8895 0 -9 Dl
8896 9 0 Dl
8897 -18 0 Dl
8898 3975 1269 MXY
8899 0 18 Dl
8900 0 -9 Dl
8901 9 0 Dl
8902 -18 0 Dl
8903 4074 1070 MXY
8904 0 18 Dl
8905 0 -9 Dl
8906 9 0 Dl
8907 -18 0 Dl
8908 1 Dt
8909 3187 2060 MXY
8910 99 0 Dl
8911 98 -10 Dl
8912 99 -51 Dl
8913 98 -147 Dl
8914 99 -265 Dl
8915 98 -82 Dl
8916 99 -66 Dl
8917 98 -161 Dl
8918 99 -199 Dl
8919 4088 1099(LARGE)N
8920 5 Dt
8921 3089 2060 MXY
8922 985 0 Dl
8923 3089 MX
8924 0 -1174 Dl
8925 4 Ds
8926 1 Dt
8927 3581 2060 MXY
8928 0 -1174 Dl
8929 4074 2060 MXY
8930 0 -1174 Dl
8931 3089 1825 MXY
8932 985 0 Dl
8933 9 s
8934 2993 1855(25)N
8935 3089 1591 MXY
8936 985 0 Dl
8937 2993 1621(50)N
8938 3089 1356 MXY
8939 985 0 Dl
8940 2993 1386(75)N
8941 3089 1121 MXY
8942 985 0 Dl
8943 2957 1151(100)N
8944 3089 886 MXY
8945 985 0 Dl
8946 2957 916(125)N
8947 3281 2199(Multiprogramming)N
8948 3071 2152(0)N
8949 3569(5)X
8950 4038(10)X
8951 2859 787(Aborts)N
8952 3089(per)X
8953 3211(500)X
8954 2901 847(transactions)N
8955 -1 Ds
8956 3 Dt
8957 2037 1342 MXY
8958 0 18 Dl
8959 0 -9 Dl
8960 9 0 Dl
8961 -18 0 Dl
8962 2125 1358 MXY
8963 0 18 Dl
8964 0 -9 Dl
8965 9 0 Dl
8966 -18 0 Dl
8967 2213 1341 MXY
8968 0 18 Dl
8969 0 -9 Dl
8970 9 0 Dl
8971 -18 0 Dl
8972 2301 1191 MXY
8973 0 18 Dl
8974 0 -9 Dl
8975 9 0 Dl
8976 -18 0 Dl
8977 2388 1124 MXY
8978 0 18 Dl
8979 0 -9 Dl
8980 9 0 Dl
8981 -17 0 Dl
8982 2476 1157 MXY
8983 0 18 Dl
8984 0 -9 Dl
8985 9 0 Dl
8986 -18 0 Dl
8987 2564 1157 MXY
8988 0 18 Dl
8989 0 -9 Dl
8990 9 0 Dl
8991 -18 0 Dl
8992 2652 1161 MXY
8993 0 18 Dl
8994 0 -9 Dl
8995 9 0 Dl
8996 -18 0 Dl
8997 2740 1153 MXY
8998 0 18 Dl
8999 0 -9 Dl
9000 9 0 Dl
9001 -18 0 Dl
9002 2828 1150 MXY
9003 0 18 Dl
9004 0 -9 Dl
9005 8 0 Dl
9006 -17 0 Dl
9007 5 Dt
9008 2037 1351 MXY
9009 88 16 Dl
9010 88 -17 Dl
9011 88 -150 Dl
9012 87 -67 Dl
9013 88 33 Dl
9014 88 0 Dl
9015 88 4 Dl
9016 88 -8 Dl
9017 88 -3 Dl
9018 6 s
9019 2685 1234(READ-ONLY)N
9020 3 Dt
9021 2037 1464 MXY
9022 0 18 Dl
9023 0 -9 Dl
9024 9 0 Dl
9025 -18 0 Dl
9026 2125 1640 MXY
9027 0 18 Dl
9028 0 -9 Dl
9029 9 0 Dl
9030 -18 0 Dl
9031 2213 1854 MXY
9032 0 18 Dl
9033 0 -9 Dl
9034 9 0 Dl
9035 -18 0 Dl
9036 2301 1872 MXY
9037 0 18 Dl
9038 0 -9 Dl
9039 9 0 Dl
9040 -18 0 Dl
9041 2388 1871 MXY
9042 0 17 Dl
9043 0 -9 Dl
9044 9 0 Dl
9045 -17 0 Dl
9046 2476 1933 MXY
9047 0 18 Dl
9048 0 -9 Dl
9049 9 0 Dl
9050 -18 0 Dl
9051 2564 1914 MXY
9052 0 18 Dl
9053 0 -9 Dl
9054 9 0 Dl
9055 -18 0 Dl
9056 2652 1903 MXY
9057 0 18 Dl
9058 0 -9 Dl
9059 9 0 Dl
9060 -18 0 Dl
9061 2740 1980 MXY
9062 0 18 Dl
9063 0 -9 Dl
9064 9 0 Dl
9065 -18 0 Dl
9066 2828 2004 MXY
9067 0 18 Dl
9068 0 -9 Dl
9069 8 0 Dl
9070 -17 0 Dl
9071 1 Dt
9072 2037 1473 MXY
9073 88 176 Dl
9074 88 214 Dl
9075 88 18 Dl
9076 87 -2 Dl
9077 88 63 Dl
9078 88 -19 Dl
9079 88 -11 Dl
9080 88 77 Dl
9081 88 24 Dl
9082 2759 1997(NO-FSYNC)N
9083 5 Dt
9084 1949 2060 MXY
9085 879 0 Dl
9086 1949 MX
9087 0 -1174 Dl
9088 4 Ds
9089 1 Dt
9090 2388 2060 MXY
9091 0 -1174 Dl
9092 2828 2060 MXY
9093 0 -1174 Dl
9094 1949 1825 MXY
9095 879 0 Dl
9096 9 s
9097 1842 1855(40)N
9098 1949 1591 MXY
9099 879 0 Dl
9100 1842 1621(80)N
9101 1949 1356 MXY
9102 879 0 Dl
9103 1806 1386(120)N
9104 1949 1121 MXY
9105 879 0 Dl
9106 1806 1151(160)N
9107 1949 886 MXY
9108 879 0 Dl
9109 1806 916(200)N
9110 2088 2199(Multiprogramming)N
9111 1844 863(in)N
9112 1922(TPS)X
9113 1761 792(Throughput)N
9114 1931 2121(0)N
9115 2370 2133(5)N
9116 2792(10)X
9117 6 s
9118 1679 1833(LIBTP)N
9119 -1 Ds
9120 3 Dt
9121 837 1019 MXY
9122 0 17 Dl
9123 0 -9 Dl
9124 9 0 Dl
9125 -18 0 Dl
9126 929 878 MXY
9127 0 17 Dl
9128 0 -9 Dl
9129 9 0 Dl
9130 -18 0 Dl
9131 1021 939 MXY
9132 0 18 Dl
9133 0 -9 Dl
9134 9 0 Dl
9135 -18 0 Dl
9136 1113 1043 MXY
9137 0 18 Dl
9138 0 -9 Dl
9139 9 0 Dl
9140 -18 0 Dl
9141 1205 1314 MXY
9142 0 18 Dl
9143 0 -9 Dl
9144 9 0 Dl
9145 -18 0 Dl
9146 1297 1567 MXY
9147 0 18 Dl
9148 0 -9 Dl
9149 9 0 Dl
9150 -18 0 Dl
9151 1389 1665 MXY
9152 0 18 Dl
9153 0 -9 Dl
9154 9 0 Dl
9155 -18 0 Dl
9156 1481 1699 MXY
9157 0 18 Dl
9158 0 -9 Dl
9159 9 0 Dl
9160 -18 0 Dl
9161 1573 1828 MXY
9162 0 18 Dl
9163 0 -9 Dl
9164 9 0 Dl
9165 -18 0 Dl
9166 1665 1804 MXY
9167 0 18 Dl
9168 0 -9 Dl
9169 8 0 Dl
9170 -17 0 Dl
9171 5 Dt
9172 837 1027 MXY
9173 92 -141 Dl
9174 92 62 Dl
9175 92 104 Dl
9176 92 271 Dl
9177 92 253 Dl
9178 92 98 Dl
9179 92 34 Dl
9180 92 129 Dl
9181 92 -24 Dl
9182 745 2060 MXY
9183 920 0 Dl
9184 745 MX
9185 0 -1174 Dl
9186 4 Ds
9187 1 Dt
9188 1205 2060 MXY
9189 0 -1174 Dl
9190 1665 2060 MXY
9191 0 -1174 Dl
9192 745 1766 MXY
9193 920 0 Dl
9194 9 s
9195 673 1796(3)N
9196 745 1473 MXY
9197 920 0 Dl
9198 673 1503(5)N
9199 745 1180 MXY
9200 920 0 Dl
9201 673 1210(8)N
9202 745 886 MXY
9203 920 0 Dl
9204 637 916(10)N
9205 905 2199(Multiprogramming)N
9206 622 851(in)N
9207 700(TPS)X
9208 575 792(Throughput)N
9209 733 2152(0)N
9210 1196(5)X
9211 1629(10)X
9212 3 Dt
9213 -1 Ds
9214 8 s
9215 655 2441(Figure)N
9216 872(7:)X
9217 960(Multi-user)X
9218 1286(Performance.)X
9219 1 f
9220 655 2531(Since)N
9221 825(the)X
9222 931(con\256guration)X
9223 1300(is)X
9224 1371(completely)X
9225 655 2621(disk)N
9226 790(bound,)X
9227 994(we)X
9228 1096(see)X
9229 1204(only)X
9230 1345(a)X
9231 1400(small)X
9232 1566(im-)X
9233 655 2711(provement)N
9234 964(by)X
9235 1064(adding)X
9236 1274(a)X
9237 1337(second)X
9238 1549(pro-)X
9239 655 2801(cess.)N
9240 849(Adding)X
9241 1081(any)X
9242 1213(more)X
9243 1383(concurrent)X
9244 655 2891(processes)N
9245 935(causes)X
9246 1137(performance)X
9247 1493(degra-)X
9248 655 2981(dation.)N
9249 3 f
9250 1927 2441(Figure)N
9251 2149(8:)X
9252 2243(Multi-user)X
9253 2574(Performance)X
9254 1927 2531(on)N
9255 2021(a)X
9256 2079(small)X
9257 2251(database.)X
9258 1 f
9259 2551(With)X
9260 2704(one)X
9261 2821(pro-)X
9262 1927 2621(cess,)N
9263 2075(we)X
9264 2174(are)X
9265 2276(driving)X
9266 2486(the)X
9267 2589(CPU)X
9268 2739(at)X
9269 2810(96%)X
9270 1927 2711(utilization)N
9271 2215(leaving)X
9272 2430(little)X
9273 2575(room)X
9274 2737(for)X
9275 2838(im-)X
9276 1927 2801(provement)N
9277 2238(as)X
9278 2328(the)X
9279 2443(multiprogramming)X
9280 1927 2891(level)N
9281 2091(increases.)X
9282 2396(In)X
9283 2489(the)X
9284 2607(NO-FSYNC)X
9285 1927 2981(case,)N
9286 2076(lock)X
9287 2209(contention)X
9288 2502(degrades)X
9289 2751(perfor-)X
9290 1927 3071(mance)N
9291 2117(as)X
9292 2194(soon)X
9293 2339(as)X
9294 2416(a)X
9295 2468(second)X
9296 2669(process)X
9297 2884(is)X
9298 1927 3161(added.)N
9299 3 f
9300 3199 2441(Figure)N
9301 3405(9:)X
9302 3482(Abort)X
9303 3669(rates)X
9304 3827(on)X
9305 3919(the)X
9306 4028(TPCB)X
9307 3199 2531(Benchmark.)N
9308 1 f
9309 3589(The)X
9310 3726(abort)X
9311 3895(rate)X
9312 4028(climbs)X
9313 3199 2621(more)N
9314 3366(quickly)X
9315 3594(for)X
9316 3704(the)X
9317 3818(large)X
9318 3980(database)X
9319 3199 2711(test)N
9320 3324(since)X
9321 3491(processes)X
9322 3771(are)X
9323 3884(descheduled)X
9324 3199 2801(more)N
9325 3409(frequently,)X
9326 3766(allowing)X
9327 4068(more)X
9328 3199 2891(processes)N
9329 3459(to)X
9330 3525(vie)X
9331 3619(for)X
9332 3709(the)X
9333 3803(same)X
9334 3950(locks.)X
9335 10 s
9336 10 f
9337 555 3284(h)N
9338 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
9339 1 f
9340 555 3560(records,)N
9341 835(we)X
9342 952(expect)X
9343 1185(contention)X
9344 1546(to)X
9345 1631(become)X
9346 1904(a)X
9347 1963(factor)X
9348 2174(quickly)X
9349 2437(and)X
9350 2576(the)X
9351 2697(NO-FSYNC)X
9352 3120(line)X
9353 3263(in)X
9354 3348(\256gure)X
9355 3557(eight)X
9356 3739(demonstrates)X
9357 4184(this)X
9358 555 3650(dramatically.)N
9359 1022(Each)X
9360 1209(additional)X
9361 1555(process)X
9362 1822(causes)X
9363 2058(both)X
9364 2226(more)X
9365 2417(waiting)X
9366 2682(and)X
9367 2823(more)X
9368 3013(deadlocking.)X
9369 3470(Figure)X
9370 3704(nine)X
9371 3867(shows)X
9372 4092(that)X
9373 4237(in)X
9374 555 3740(the)N
9375 681(small)X
9376 882(database)X
9377 1187(case)X
9378 1353(\(SMALL\),)X
9379 1725(waiting)X
9380 1992(is)X
9381 2072(the)X
9382 2197(dominant)X
9383 2526(cause)X
9384 2732(of)X
9385 2826(declining)X
9386 3151(performance)X
9387 3585(\(the)X
9388 3737(number)X
9389 4009(of)X
9390 4103(aborts)X
9391 555 3830(increases)N
9392 878(less)X
9393 1026(steeply)X
9394 1281(than)X
9395 1447(the)X
9396 1573(performance)X
9397 2008(drops)X
9398 2214(off)X
9399 2336(in)X
9400 2426(\256gure)X
9401 2641(eight\),)X
9402 2876(while)X
9403 3082(in)X
9404 3172(the)X
9405 3298(large)X
9406 3487(database)X
9407 3792(case)X
9408 3958(\(LARGE\),)X
9409 555 3920(deadlocking)N
9410 967(contributes)X
9411 1343(more)X
9412 1528(to)X
9413 1610(the)X
9414 1728(declining)X
9415 2046(performance.)X
9416 755 4043(Deadlocks)N
9417 1116(are)X
9418 1237(more)X
9419 1424(likely)X
9420 1628(to)X
9421 1712(occur)X
9422 1913(in)X
9423 1997(the)X
9424 2116(LARGE)X
9425 2404(test)X
9426 2536(than)X
9427 2695(in)X
9428 2778(the)X
9429 2897(SMALL)X
9430 3189(test)X
9431 3321(because)X
9432 3597(there)X
9433 3779(are)X
9434 3899(more)X
9435 4085(oppor-)X
9436 555 4133(tunities)N
9437 814(to)X
9438 900(wait.)X
9439 1082(In)X
9440 1173(the)X
9441 1295(SMALL)X
9442 1590(case,)X
9443 1773(processes)X
9444 2105(never)X
9445 2307(do)X
9446 2410(I/O)X
9447 2540(and)X
9448 2679(are)X
9449 2801(less)X
9450 2944(likely)X
9451 3149(to)X
9452 3234(be)X
9453 3333(descheduled)X
9454 3753(during)X
9455 3985(a)X
9456 4044(transac-)X
9457 555 4223(tion.)N
9458 740(In)X
9459 828(the)X
9460 947(LARGE)X
9461 1235(case,)X
9462 1415(processes)X
9463 1744(will)X
9464 1889(frequently)X
9465 2240(be)X
9466 2337(descheduled)X
9467 2755(since)X
9468 2941(they)X
9469 3100(have)X
9470 3273(to)X
9471 3356(perform)X
9472 3636(I/O.)X
9473 3804(This)X
9474 3967(provides)X
9475 4263(a)X
9476 555 4313(window)N
9477 837(where)X
9478 1058(a)X
9479 1118(second)X
9480 1365(process)X
9481 1630(can)X
9482 1766(request)X
9483 2022(locks)X
9484 2215(on)X
9485 2318(already)X
9486 2578(locked)X
9487 2815(pages,)X
9488 3041(thus)X
9489 3197(increasing)X
9490 3550(the)X
9491 3671(likelihood)X
9492 4018(of)X
9493 4108(build-)X
9494 555 4403(ing)N
9495 677(up)X
9496 777(long)X
9497 939(chains)X
9498 1164(of)X
9499 1251(waiting)X
9500 1511(processes.)X
9501 1879(Eventually,)X
9502 2266(this)X
9503 2401(leads)X
9504 2586(to)X
9505 2668(deadlock.)X
9506 3 f
9507 555 4589(5.2.)N
9508 715(The)X
9509 868(OO1)X
9510 1052(Benchmark)X
9511 1 f
9512 755 4712(The)N
9513 903(TPCB)X
9514 1125(benchmark)X
9515 1505(described)X
9516 1836(in)X
9517 1921(the)X
9518 2042(previous)X
9519 2341(section)X
9520 2591(measures)X
9521 2913(performance)X
9522 3343(under)X
9523 3549(a)X
9524 3608(conventional)X
9525 4044(transac-)X
9526 555 4802(tion)N
9527 706(processing)X
9528 1076(workload.)X
9529 1446(Other)X
9530 1656(application)X
9531 2039(domains,)X
9532 2357(such)X
9533 2531(as)X
9534 2625(computer-aided)X
9535 3156(design,)X
9536 3412(have)X
9537 3591(substantially)X
9538 4022(different)X
9539 555 4892(access)N
9540 786(patterns.)X
9541 1105(In)X
9542 1197(order)X
9543 1392(to)X
9544 1479(measure)X
9545 1772(the)X
9546 1895(performance)X
9547 2327(of)X
9548 2418(LIBTP)X
9549 2664(under)X
9550 2871(workloads)X
9551 3229(of)X
9552 3320(this)X
9553 3459(type,)X
9554 3641(we)X
9555 3759(implemented)X
9556 4201(the)X
9557 555 4982(OO1)N
9558 731(benchmark)X
9559 1108(described)X
9560 1436(in)X
9561 1518([CATT91].)X
9562 755 5105(The)N
9563 908(database)X
9564 1213(models)X
9565 1472(a)X
9566 1535(set)X
9567 1651(of)X
9568 1745(electronics)X
9569 2120(components)X
9570 2534(with)X
9571 2703(connections)X
9572 3113(among)X
9573 3358(them.)X
9574 3585(One)X
9575 3746(table)X
9576 3929(stores)X
9577 4143(parts)X
9578 555 5195(and)N
9579 696(another)X
9580 962(stores)X
9581 1174(connections.)X
9582 1622(There)X
9583 1835(are)X
9584 1959(three)X
9585 2145(connections)X
9586 2552(originating)X
9587 2927(at)X
9588 3009(any)X
9589 3149(given)X
9590 3351(part.)X
9591 3540(Ninety)X
9592 3782(percent)X
9593 4043(of)X
9594 4134(these)X
9595 555 5285(connections)N
9596 960(are)X
9597 1081(to)X
9598 1165(nearby)X
9599 1406(parts)X
9600 1584(\(those)X
9601 1802(with)X
9602 1966(nearby)X
9603 2 f
9604 2207(ids)X
9605 1 f
9606 2300(\))X
9607 2348(to)X
9608 2431(model)X
9609 2652(the)X
9610 2771(spatial)X
9611 3001(locality)X
9612 3262(often)X
9613 3448(exhibited)X
9614 3767(in)X
9615 3850(CAD)X
9616 4040(applica-)X
9617 555 5375(tions.)N
9618 779(Ten)X
9619 933(percent)X
9620 1198(of)X
9621 1293(the)X
9622 1419(connections)X
9623 1830(are)X
9624 1957(randomly)X
9625 2292(distributed)X
9626 2662(among)X
9627 2908(all)X
9628 3016(other)X
9629 3209(parts)X
9630 3393(in)X
9631 3483(the)X
9632 3609(database.)X
9633 3954(Every)X
9634 4174(part)X
9635 555 5465(appears)N
9636 829(exactly)X
9637 1089(three)X
9638 1278(times)X
9639 1479(in)X
9640 1569(the)X
9641 2 f
9642 1695(from)X
9643 1 f
9644 1874(\256eld)X
9645 2043(of)X
9646 2137(a)X
9647 2200(connection)X
9648 2579(record,)X
9649 2832(and)X
9650 2975(zero)X
9651 3141(or)X
9652 3235(more)X
9653 3427(times)X
9654 3627(in)X
9655 3716(the)X
9656 2 f
9657 3841(to)X
9658 1 f
9659 3930(\256eld.)X
9660 4139(Parts)X
9661 555 5555(have)N
9662 2 f
9663 727(x)X
9664 1 f
9665 783(and)X
9666 2 f
9667 919(y)X
9668 1 f
9669 975(locations)X
9670 1284(set)X
9671 1393(randomly)X
9672 1720(in)X
9673 1802(an)X
9674 1898(appropriate)X
9675 2284(range.)X
9677 14 p
9678 %%Page: 14 14
9679 10 s 10 xH 0 xS 1 f
9680 3 f
9681 1 f
9682 755 630(The)N
9683 900(intent)X
9684 1102(of)X
9685 1189(OO1)X
9686 1365(is)X
9687 1438(to)X
9688 1520(measure)X
9689 1808(the)X
9690 1926(overall)X
9691 2169(cost)X
9692 2318(of)X
9693 2405(a)X
9694 2461(query)X
9695 2664(mix)X
9696 2808(characteristic)X
9697 3257(of)X
9698 3344(engineering)X
9699 3743(database)X
9700 4040(applica-)X
9701 555 720(tions.)N
9702 770(There)X
9703 978(are)X
9704 1097(three)X
9705 1278(tests:)X
9706 10 f
9707 635 843(g)N
9708 2 f
9709 755(Lookup)X
9710 1 f
9711 1022(generates)X
9712 1353(1,000)X
9713 1560(random)X
9714 1832(part)X
9715 2 f
9716 1984(ids)X
9717 1 f
9718 2077(,)X
9719 2124(fetches)X
9720 2378(the)X
9721 2502(corresponding)X
9722 2987(parts)X
9723 3169(from)X
9724 3351(the)X
9725 3475(database,)X
9726 3798(and)X
9727 3940(calls)X
9728 4113(a)X
9729 4175(null)X
9730 755 933(procedure)N
9731 1097(in)X
9732 1179(the)X
9733 1297(host)X
9734 1450(programming)X
9735 1906(language)X
9736 2216(with)X
9737 2378(the)X
9738 2496(parts')X
9739 2 f
9740 2699(x)X
9741 1 f
9742 2755(and)X
9743 2 f
9744 2891(y)X
9745 1 f
9746 2947(positions.)X
9747 10 f
9748 635 1056(g)N
9749 2 f
9750 755(Traverse)X
9751 1 f
9752 1067(retrieves)X
9753 1371(a)X
9754 1434(random)X
9755 1706(part)X
9756 1858(from)X
9757 2041(the)X
9758 2166(database)X
9759 2470(and)X
9760 2613(follows)X
9761 2880(connections)X
9762 3290(from)X
9763 3473(it)X
9764 3544(to)X
9765 3632(other)X
9766 3823(parts.)X
9767 4045(Each)X
9768 4232(of)X
9769 755 1146(those)N
9770 947(parts)X
9771 1126(is)X
9772 1202(retrieved,)X
9773 1531(and)X
9774 1670(all)X
9775 1773(connections)X
9776 2179(from)X
9777 2358(it)X
9778 2424(followed.)X
9779 2771(This)X
9780 2935(procedure)X
9781 3279(is)X
9782 3354(repeated)X
9783 3649(depth-\256rst)X
9784 4000(for)X
9785 4116(seven)X
9786 755 1236(hops)N
9787 930(from)X
9788 1110(the)X
9789 1232(original)X
9790 1505(part,)X
9791 1674(for)X
9792 1792(a)X
9793 1852(total)X
9794 2018(of)X
9795 2109(3280)X
9796 2293(parts.)X
9797 2513(Backward)X
9798 2862(traversal)X
9799 3162(also)X
9800 3314(exists,)X
9801 3539(and)X
9802 3678(follows)X
9803 3941(all)X
9804 4044(connec-)X
9805 755 1326(tions)N
9806 930(into)X
9807 1074(a)X
9808 1130(given)X
9809 1328(part)X
9810 1473(to)X
9811 1555(their)X
9812 1722(origin.)X
9813 10 f
9814 635 1449(g)N
9815 2 f
9816 755(Insert)X
9817 1 f
9818 962(adds)X
9819 1129(100)X
9820 1269(new)X
9821 1423(parts)X
9822 1599(and)X
9823 1735(their)X
9824 1902(connections.)X
9825 755 1572(The)N
9826 913(benchmark)X
9827 1303(is)X
9828 1389(single-user,)X
9829 1794(but)X
9830 1929(multi-user)X
9831 2291(access)X
9832 2530(controls)X
9833 2821(\(locking)X
9834 3120(and)X
9835 3268(transaction)X
9836 3652(protection\))X
9837 4036(must)X
9838 4223(be)X
9839 555 1662(enforced.)N
9840 898(It)X
9841 968(is)X
9842 1042(designed)X
9843 1348(to)X
9844 1431(be)X
9845 1528(run)X
9846 1656(on)X
9847 1757(a)X
9848 1814(database)X
9849 2112(with)X
9850 2275(20,000)X
9851 2516(parts,)X
9852 2713(and)X
9853 2850(on)X
9854 2951(one)X
9855 3087(with)X
9856 3249(200,000)X
9857 3529(parts.)X
9858 3745(Because)X
9859 4033(we)X
9860 4147(have)X
9861 555 1752(insuf\256cient)N
9862 935(disk)X
9863 1088(space)X
9864 1287(for)X
9865 1401(the)X
9866 1519(larger)X
9867 1727(database,)X
9868 2044(we)X
9869 2158(report)X
9870 2370(results)X
9871 2599(only)X
9872 2761(for)X
9873 2875(the)X
9874 2993(20,000)X
9875 3233(part)X
9876 3378(database.)X
9877 3 f
9878 555 1938(5.2.1.)N
9879 775(Implementation)X
9880 1 f
9881 755 2061(The)N
9882 920(LIBTP)X
9883 1182(implementation)X
9884 1724(of)X
9885 1831(OO1)X
9886 2027(uses)X
9887 2205(the)X
9888 2342(TCL)X
9889 2532([OUST90])X
9890 2914(interface)X
9891 3235(described)X
9892 3582(earlier.)X
9893 3867(The)X
9894 4031(backend)X
9895 555 2151(accepts)N
9896 813(commands)X
9897 1181(over)X
9898 1345(an)X
9899 1442(IP)X
9900 1534(socket)X
9901 1760(and)X
9902 1897(performs)X
9903 2208(the)X
9904 2327(requested)X
9905 2656(database)X
9906 2954(actions.)X
9907 3242(The)X
9908 3387(frontend)X
9909 3679(opens)X
9910 3886(and)X
9911 4022(executes)X
9912 555 2241(a)N
9913 618(TCL)X
9914 796(script.)X
9915 1041(This)X
9916 1210(script)X
9917 1415(contains)X
9918 1709(database)X
9919 2013(accesses)X
9920 2313(interleaved)X
9921 2697(with)X
9922 2866(ordinary)X
9923 3165(program)X
9924 3463(control)X
9925 3716(statements.)X
9926 4120(Data-)X
9927 555 2331(base)N
9928 718(commands)X
9929 1085(are)X
9930 1204(submitted)X
9931 1539(to)X
9932 1621(the)X
9933 1739(backend)X
9934 2027(and)X
9935 2163(results)X
9936 2392(are)X
9937 2511(bound)X
9938 2731(to)X
9939 2813(program)X
9940 3105(variables.)X
9941 755 2454(The)N
9942 903(parts)X
9943 1082(table)X
9944 1261(was)X
9945 1409(stored)X
9946 1628(as)X
9947 1718(a)X
9948 1776(B-tree)X
9949 1999(indexed)X
9950 2275(by)X
9951 2 f
9952 2377(id)X
9953 1 f
9954 2439(.)X
9955 2501(The)X
9956 2648(connection)X
9957 3022(table)X
9958 3200(was)X
9959 3347(stored)X
9960 3565(as)X
9961 3654(a)X
9962 3712(set)X
9963 3823(of)X
9964 3912(\256xed-length)X
9965 555 2544(records)N
9966 824(using)X
9967 1029(the)X
9968 1159(4.4BSD)X
9969 1446(recno)X
9970 1657(access)X
9971 1895(method.)X
9972 2207(In)X
9973 2306(addition,)X
9974 2620(two)X
9975 2771(B-tree)X
9976 3003(indices)X
9977 3261(were)X
9978 3449(maintained)X
9979 3836(on)X
9980 3947(connection)X
9981 555 2634(table)N
9982 732(entries.)X
9983 1007(One)X
9984 1162(index)X
9985 1360(mapped)X
9986 1634(the)X
9987 2 f
9988 1752(from)X
9989 1 f
9990 1923(\256eld)X
9991 2085(to)X
9992 2167(a)X
9993 2223(connection)X
9994 2595(record)X
9995 2821(number,)X
9996 3106(and)X
9997 3242(the)X
9998 3360(other)X
9999 3545(mapped)X
10000 3819(the)X
10001 2 f
10002 3937(to)X
10003 1 f
10004 4019(\256eld)X
10005 4181(to)X
10006 4263(a)X
10007 555 2724(connection)N
10008 932(record)X
10009 1163(number.)X
10010 1473(These)X
10011 1690(indices)X
10012 1941(support)X
10013 2205(fast)X
10014 2345(lookups)X
10015 2622(on)X
10016 2726(connections)X
10017 3133(in)X
10018 3219(both)X
10019 3385(directions.)X
10020 3765(For)X
10021 3900(the)X
10022 4022(traversal)X
10023 555 2814(tests,)N
10024 743(the)X
10025 867(frontend)X
10026 1165(does)X
10027 1338(an)X
10028 1439(index)X
10029 1642(lookup)X
10030 1889(to)X
10031 1976(discover)X
10032 2273(the)X
10033 2396(connected)X
10034 2747(part's)X
10035 2 f
10036 2955(id)X
10037 1 f
10038 3017(,)X
10039 3062(and)X
10040 3203(then)X
10041 3366(does)X
10042 3538(another)X
10043 3804(lookup)X
10044 4051(to)X
10045 4138(fetch)X
10046 555 2904(the)N
10047 673(part)X
10048 818(itself.)X
10049 3 f
10050 555 3090(5.2.2.)N
10051 775(Performance)X
10052 1242(Measurements)X
10053 1766(for)X
10054 1889(OO1)X
10055 1 f
10056 755 3213(We)N
10057 888(compare)X
10058 1186(LIBTP's)X
10059 1487(OO1)X
10060 1664(performance)X
10061 2092(to)X
10062 2174(that)X
10063 2314(reported)X
10064 2602(in)X
10065 2684([CATT91].)X
10066 3087(Those)X
10067 3303(results)X
10068 3532(were)X
10069 3709(collected)X
10070 4019(on)X
10071 4119(a)X
10072 4175(Sun)X
10073 555 3303(3/280)N
10074 759(\(25)X
10075 888(MHz)X
10076 1075(MC68020\))X
10077 1448(with)X
10078 1612(16)X
10079 1714(MBytes)X
10080 1989(of)X
10081 2078(memory)X
10082 2367(and)X
10083 2505(two)X
10084 2647(Hitachi)X
10085 2904(892MByte)X
10086 3267(disks)X
10087 3452(\(15)X
10088 3580(ms)X
10089 3694(average)X
10090 3966(seek)X
10091 4130(time\))X
10092 555 3393(behind)N
10093 793(an)X
10094 889(SMD-4)X
10095 1149(controller.)X
10096 1521(Frontends)X
10097 1861(ran)X
10098 1984(on)X
10099 2084(an)X
10100 2180(8MByte)X
10101 2462(Sun)X
10102 2606(3/260.)X
10103 755 3516(In)N
10104 844(order)X
10105 1036(to)X
10106 1120(measure)X
10107 1410(performance)X
10108 1839(on)X
10109 1941(a)X
10110 1999(machine)X
10111 2293(of)X
10112 2382(roughly)X
10113 2653(equivalent)X
10114 3009(processor)X
10115 3339(power,)X
10116 3582(we)X
10117 3698(ran)X
10118 3822(one)X
10119 3959(set)X
10120 4069(of)X
10121 4157(tests)X
10122 555 3606(on)N
10123 666(a)X
10124 733(standalone)X
10125 1107(MC68030-based)X
10126 1671(HP300)X
10127 1923(\(33MHz)X
10128 2225(MC68030\).)X
10129 2646(The)X
10130 2801(database)X
10131 3108(was)X
10132 3263(stored)X
10133 3489(on)X
10134 3599(a)X
10135 3665(300MByte)X
10136 4037(HP7959)X
10137 555 3696(SCSI)N
10138 744(disk)X
10139 898(\(17)X
10140 1026(ms)X
10141 1139(average)X
10142 1410(seek)X
10143 1573(time\).)X
10144 1802(Since)X
10145 2000(this)X
10146 2135(machine)X
10147 2427(is)X
10148 2500(not)X
10149 2622(connected)X
10150 2968(to)X
10151 3050(a)X
10152 3106(network,)X
10153 3409(we)X
10154 3523(ran)X
10155 3646(local)X
10156 3822(tests)X
10157 3984(where)X
10158 4201(the)X
10159 555 3786(frontend)N
10160 855(and)X
10161 999(backend)X
10162 1295(run)X
10163 1430(on)X
10164 1538(the)X
10165 1664(same)X
10166 1856(machine.)X
10167 2195(We)X
10168 2334(compare)X
10169 2638(these)X
10170 2830(measurements)X
10171 3316(with)X
10172 3485(Cattell's)X
10173 3783(local)X
10174 3966(Sun)X
10175 4117(3/280)X
10176 555 3876(numbers.)N
10177 755 3999(Because)N
10178 1051(the)X
10179 1177(benchmark)X
10180 1562(requires)X
10181 1849(remote)X
10182 2100(access,)X
10183 2354(we)X
10184 2476(ran)X
10185 2607(another)X
10186 2876(set)X
10187 2993(of)X
10188 3088(tests)X
10189 3258(on)X
10190 3365(a)X
10191 3428(DECstation)X
10192 3828(5000/200)X
10193 4157(with)X
10194 555 4089(32M)N
10195 732(of)X
10196 825(memory)X
10197 1118(running)X
10198 1393(Ultrix)X
10199 1610(V4.0)X
10200 1794(and)X
10201 1936(a)X
10202 1998(DEC)X
10203 2184(1GByte)X
10204 2459(RZ57)X
10205 2666(SCSI)X
10206 2859(disk.)X
10207 3057(We)X
10208 3194(compare)X
10209 3496(the)X
10210 3619(local)X
10211 3800(performance)X
10212 4232(of)X
10213 555 4179(OO1)N
10214 734(on)X
10215 837(the)X
10216 958(DECstation)X
10217 1354(to)X
10218 1439(its)X
10219 1536(remote)X
10220 1781(performance.)X
10221 2250(For)X
10222 2383(the)X
10223 2503(remote)X
10224 2748(case,)X
10225 2929(we)X
10226 3045(ran)X
10227 3170(the)X
10228 3290(frontend)X
10229 3584(on)X
10230 3686(a)X
10231 3744(DECstation)X
10232 4139(3100)X
10233 555 4269(with)N
10234 717(16)X
10235 817(MBytes)X
10236 1090(of)X
10237 1177(main)X
10238 1357(memory.)X
10239 755 4392(The)N
10240 900(databases)X
10241 1228(tested)X
10242 1435(in)X
10243 1517([CATT91])X
10244 1880(are)X
10245 10 f
10246 635 4515(g)N
10247 1 f
10248 755(INDEX,)X
10249 1045(a)X
10250 1101(highly-optimized)X
10251 1672(access)X
10252 1898(method)X
10253 2158(package)X
10254 2442(developed)X
10255 2792(at)X
10256 2870(Sun)X
10257 3014(Microsystems.)X
10258 10 f
10259 635 4638(g)N
10260 1 f
10261 755(OODBMS,)X
10262 1137(a)X
10263 1193(beta)X
10264 1347(release)X
10265 1591(of)X
10266 1678(a)X
10267 1734(commercial)X
10268 2133(object-oriented)X
10269 2639(database)X
10270 2936(management)X
10271 3366(system.)X
10272 10 f
10273 635 4761(g)N
10274 1 f
10275 755(RDBMS,)X
10276 1076(a)X
10277 1133(UNIX-based)X
10278 1565(commercial)X
10279 1965(relational)X
10280 2289(data)X
10281 2444(manager)X
10282 2742(at)X
10283 2821(production)X
10284 3189(release.)X
10285 3474(The)X
10286 3620(OO1)X
10287 3797(implementation)X
10288 755 4851(used)N
10289 922(embedded)X
10290 1272(SQL)X
10291 1443(in)X
10292 1525(C.)X
10293 1638(Stored)X
10294 1867(procedures)X
10295 2240(were)X
10296 2417(de\256ned)X
10297 2673(to)X
10298 2755(reduce)X
10299 2990(client-server)X
10300 3412(traf\256c.)X
10301 755 4974(Table)N
10302 974(two)X
10303 1130(shows)X
10304 1366(the)X
10305 1500(measurements)X
10306 1995(from)X
10307 2187([CATT91])X
10308 2566(and)X
10309 2718(LIBTP)X
10310 2976(for)X
10311 3106(a)X
10312 3178(local)X
10313 3370(test)X
10314 3517(on)X
10315 3632(the)X
10316 3765(MC680x0-based)X
10317 555 5064(hardware.)N
10318 915(All)X
10319 1037(caches)X
10320 1272(are)X
10321 1391(cleared)X
10322 1644(before)X
10323 1870(each)X
10324 2038(test.)X
10325 2209(All)X
10326 2331(times)X
10327 2524(are)X
10328 2643(in)X
10329 2725(seconds.)X
10330 755 5187(Table)N
10331 960(two)X
10332 1102(shows)X
10333 1324(that)X
10334 1466(LIBTP)X
10335 1710(outperforms)X
10336 2123(the)X
10337 2242(commercial)X
10338 2642(relational)X
10339 2966(system,)X
10340 3229(but)X
10341 3352(is)X
10342 3426(slower)X
10343 3661(than)X
10344 3820(OODBMS)X
10345 4183(and)X
10346 555 5277(INDEX.)N
10347 872(Since)X
10348 1077(the)X
10349 1202(caches)X
10350 1444(were)X
10351 1628(cleared)X
10352 1888(at)X
10353 1973(the)X
10354 2098(start)X
10355 2263(of)X
10356 2356(each)X
10357 2530(test,)X
10358 2687(disk)X
10359 2846(throughput)X
10360 3223(is)X
10361 3302(critical)X
10362 3551(in)X
10363 3639(this)X
10364 3780(test.)X
10365 3957(The)X
10366 4108(single)X
10367 555 5367(SCSI)N
10368 749(HP)X
10369 877(drive)X
10370 1068(used)X
10371 1241(by)X
10372 1347(LIBTP)X
10373 1595(is)X
10374 1674(approximately)X
10375 2163(13%)X
10376 2336(slower)X
10377 2576(than)X
10378 2739(the)X
10379 2862(disks)X
10380 3051(used)X
10381 3223(in)X
10382 3310([CATT91])X
10383 3678(which)X
10384 3899(accounts)X
10385 4205(for)X
10386 555 5457(part)N
10387 700(of)X
10388 787(the)X
10389 905(difference.)X
10390 755 5580(OODBMS)N
10391 1118(and)X
10392 1255(INDEX)X
10393 1525(outperform)X
10394 1906(LIBTP)X
10395 2148(most)X
10396 2323(dramatically)X
10397 2744(on)X
10398 2844(traversal.)X
10399 3181(This)X
10400 3343(is)X
10401 3416(because)X
10402 3691(we)X
10403 3805(use)X
10404 3932(index)X
10405 4130(look-)X
10406 555 5670(ups)N
10407 689(to)X
10408 774(\256nd)X
10409 921(connections,)X
10410 1347(whereas)X
10411 1634(the)X
10412 1755(other)X
10413 1942(two)X
10414 2084(systems)X
10415 2359(use)X
10416 2488(a)X
10417 2546(link)X
10418 2692(access)X
10419 2920(method.)X
10420 3222(The)X
10421 3369(index)X
10422 3569(requires)X
10423 3850(us)X
10424 3943(to)X
10425 4027(examine)X
10427 15 p
10428 %%Page: 15 15
10429 10 s 10 xH 0 xS 1 f
10430 3 f
10431 1 f
10432 10 f
10433 555 679(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
10434 2 f
10435 606 769(Measure)N
10436 1 f
10437 1019(INDEX)X
10438 1389(OODBMS)X
10439 1851(RDBMS)X
10440 2250(LIBTP)X
10441 10 f
10442 555 771(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
10443 555 787(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
10444 1 f
10445 595 869(Lookup)N
10446 1114(5.4)X
10447 1490(12.9)X
10448 1950(27)X
10449 2291(27.2)X
10450 595 959(Traversal)N
10451 1074(13)X
10452 1530(9.8)X
10453 1950(90)X
10454 2291(47.3)X
10455 595 1049(Insert)N
10456 1114(7.4)X
10457 1530(1.5)X
10458 1950(22)X
10459 2331(9.7)X
10460 10 f
10461 555 1059(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
10462 555(c)X
10463 999(c)Y
10464 919(c)Y
10465 839(c)Y
10466 759(c)Y
10467 959 1059(c)N
10468 999(c)Y
10469 919(c)Y
10470 839(c)Y
10471 759(c)Y
10472 1329 1059(c)N
10473 999(c)Y
10474 919(c)Y
10475 839(c)Y
10476 759(c)Y
10477 1791 1059(c)N
10478 999(c)Y
10479 919(c)Y
10480 839(c)Y
10481 759(c)Y
10482 2190 1059(c)N
10483 999(c)Y
10484 919(c)Y
10485 839(c)Y
10486 759(c)Y
10487 2512 1059(c)N
10488 999(c)Y
10489 919(c)Y
10490 839(c)Y
10491 759(c)Y
10492 2618 679(i)N
10493 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10494 2 f
10495 2829 769(Measure)N
10496 3401(Cache)X
10497 3726(Local)X
10498 4028(Remote)X
10499 1 f
10500 10 f
10501 2618 771(i)N
10502 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10503 2618 787(i)N
10504 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10505 1 f
10506 2658 869(Lookup)N
10507 3401(cold)X
10508 3747(15.7)X
10509 4078(20.6)X
10510 3401 959(warm)N
10511 3787(7.8)X
10512 4078(12.4)X
10513 10 f
10514 2618 969(i)N
10515 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10516 1 f
10517 2658 1059(Forward)N
10518 2950(traversal)X
10519 3401(cold)X
10520 3747(28.4)X
10521 4078(52.6)X
10522 3401 1149(warm)N
10523 3747(23.5)X
10524 4078(47.4)X
10525 10 f
10526 2618 1159(i)N
10527 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10528 1 f
10529 2658 1249(Backward)N
10530 3004(traversal)X
10531 3401(cold)X
10532 3747(24.2)X
10533 4078(47.4)X
10534 3401 1339(warm)N
10535 3747(24.3)X
10536 4078(47.6)X
10537 10 f
10538 2618 1349(i)N
10539 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10540 1 f
10541 2658 1439(Insert)N
10542 3401(cold)X
10543 3787(7.5)X
10544 4078(10.3)X
10545 3401 1529(warm)N
10546 3787(6.7)X
10547 4078(10.9)X
10548 10 f
10549 2618 1539(i)N
10550 2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
10551 2618(c)X
10552 1479(c)Y
10553 1399(c)Y
10554 1319(c)Y
10555 1239(c)Y
10556 1159(c)Y
10557 1079(c)Y
10558 999(c)Y
10559 919(c)Y
10560 839(c)Y
10561 759(c)Y
10562 3341 1539(c)N
10563 1479(c)Y
10564 1399(c)Y
10565 1319(c)Y
10566 1239(c)Y
10567 1159(c)Y
10568 1079(c)Y
10569 999(c)Y
10570 919(c)Y
10571 839(c)Y
10572 759(c)Y
10573 3666 1539(c)N
10574 1479(c)Y
10575 1399(c)Y
10576 1319(c)Y
10577 1239(c)Y
10578 1159(c)Y
10579 1079(c)Y
10580 999(c)Y
10581 919(c)Y
10582 839(c)Y
10583 759(c)Y
10584 3968 1539(c)N
10585 1479(c)Y
10586 1399(c)Y
10587 1319(c)Y
10588 1239(c)Y
10589 1159(c)Y
10590 1079(c)Y
10591 999(c)Y
10592 919(c)Y
10593 839(c)Y
10594 759(c)Y
10595 4309 1539(c)N
10596 1479(c)Y
10597 1399(c)Y
10598 1319(c)Y
10599 1239(c)Y
10600 1159(c)Y
10601 1079(c)Y
10602 999(c)Y
10603 919(c)Y
10604 839(c)Y
10605 759(c)Y
10606 3 f
10607 587 1785(Table)N
10608 823(2:)X
10609 931(Local)X
10610 1163(MC680x0)X
10611 1538(Performance)X
10612 2026(of)X
10613 2133(Several)X
10614 587 1875(Systems)N
10615 883(on)X
10616 987(OO1.)X
10617 2667 1785(Table)N
10618 2909(3:)X
10619 3023(Local)X
10620 3260(vs.)X
10621 3397(Remote)X
10622 3707(Performance)X
10623 4200(of)X
10624 2667 1875(LIBTP)N
10625 2926(on)X
10626 3030(OO1.)X
10627 1 f
10628 10 f
10629 555 1998(h)N
10630 579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
10631 1 f
10632 555 2274(two)N
10633 696(disk)X
10634 850(pages,)X
10635 1074(but)X
10636 1197(the)X
10637 1316(links)X
10638 1492(require)X
10639 1741(only)X
10640 1904(one,)X
10641 2061(regardless)X
10642 2408(of)X
10643 2496(database)X
10644 2794(size.)X
10645 2980(Cattell)X
10646 3214(reports)X
10647 3458(that)X
10648 3599(lookups)X
10649 3873(using)X
10650 4067(B-trees)X
10651 555 2364(instead)N
10652 808(of)X
10653 901(links)X
10654 1082(makes)X
10655 1313(traversal)X
10656 1616(take)X
10657 1776(twice)X
10658 1976(as)X
10659 2069(long)X
10660 2237(in)X
10661 2325(INDEX.)X
10662 2641(Adding)X
10663 2907(a)X
10664 2969(link)X
10665 3119(access)X
10666 3351(method)X
10667 3617(to)X
10668 3 f
10669 3704(db)X
10670 1 f
10671 3792(\(3\))X
10672 3911(or)X
10673 4003(using)X
10674 4201(the)X
10675 555 2454(existing)N
10676 828(hash)X
10677 995(method)X
10678 1255(would)X
10679 1475(apparently)X
10680 1834(be)X
10681 1930(a)X
10682 1986(good)X
10683 2166(idea.)X
10684 755 2577(Both)N
10685 936(OODBMS)X
10686 1304(and)X
10687 1446(INDEX)X
10688 1722(issue)X
10689 1908 0.1944(coarser-granularity)AX
10690 2545(locks)X
10691 2739(than)X
10692 2902(LIBTP.)X
10693 3189(This)X
10694 3356(limits)X
10695 3562(concurrency)X
10696 3985(for)X
10697 4104(multi-)X
10698 555 2667(user)N
10699 711(applications,)X
10700 1140(but)X
10701 1264(helps)X
10702 1455(single-user)X
10703 1829(applications.)X
10704 2278(In)X
10705 2367(addition,)X
10706 2671(the)X
10707 2791(fact)X
10708 2934(that)X
10709 3076(LIBTP)X
10710 3319(releases)X
10711 3595(B-tree)X
10712 3817(locks)X
10713 4007(early)X
10714 4189(is)X
10715 4263(a)X
10716 555 2757(drawback)N
10717 896(in)X
10718 986(OO1.)X
10719 1210(Since)X
10720 1416(there)X
10721 1605(is)X
10722 1686(no)X
10723 1793(concurrency)X
10724 2218(in)X
10725 2307(the)X
10726 2432(benchmark,)X
10727 2836(high-concurrency)X
10728 3430(strategies)X
10729 3760(only)X
10730 3929(show)X
10731 4125(up)X
10732 4232(as)X
10733 555 2847(increased)N
10734 882(locking)X
10735 1145(overhead.)X
10736 1503(Finally,)X
10737 1772(the)X
10738 1892(architecture)X
10739 2294(of)X
10740 2383(the)X
10741 2503(LIBTP)X
10742 2747(implementation)X
10743 3271(was)X
10744 3418(substantially)X
10745 3844(different)X
10746 4143(from)X
10747 555 2937(that)N
10748 702(of)X
10749 796(either)X
10750 1006(OODBMS)X
10751 1375(or)X
10752 1469(INDEX.)X
10753 1786(Both)X
10754 1968(of)X
10755 2062(those)X
10756 2258(systems)X
10757 2538(do)X
10758 2645(the)X
10759 2770(searches)X
10760 3070(in)X
10761 3159(the)X
10762 3284(user's)X
10763 3503(address)X
10764 3771(space,)X
10765 3997(and)X
10766 4139(issue)X
10767 555 3027(requests)N
10768 844(for)X
10769 964(pages)X
10770 1173(to)X
10771 1260(the)X
10772 1383(server)X
10773 1605(process.)X
10774 1911(Pages)X
10775 2123(are)X
10776 2247(cached)X
10777 2496(in)X
10778 2583(the)X
10779 2706(client,)X
10780 2929(and)X
10781 3070(many)X
10782 3273(queries)X
10783 3530(can)X
10784 3667(be)X
10785 3768(satis\256ed)X
10786 4055(without)X
10787 555 3117(contacting)N
10788 910(the)X
10789 1029(server)X
10790 1247(at)X
10791 1326(all.)X
10792 1467(LIBTP)X
10793 1710(submits)X
10794 1979(all)X
10795 2080(the)X
10796 2199(queries)X
10797 2452(to)X
10798 2535(the)X
10799 2653(server)X
10800 2870(process,)X
10801 3151(and)X
10802 3287(receives)X
10803 3571(database)X
10804 3868(records)X
10805 4125(back;)X
10806 555 3207(it)N
10807 619(does)X
10808 786(no)X
10809 886(client)X
10810 1084(caching.)X
10811 755 3330(The)N
10812 911(RDBMS)X
10813 1221(architecture)X
10814 1632(is)X
10815 1716(much)X
10816 1925(closer)X
10817 2148(to)X
10818 2241(that)X
10819 2392(of)X
10820 2490(LIBTP.)X
10821 2783(A)X
10822 2872(server)X
10823 3100(process)X
10824 3372(receives)X
10825 3667(queries)X
10826 3930(and)X
10827 4076(returns)X
10828 555 3420(results)N
10829 786(to)X
10830 870(a)X
10831 928(client.)X
10832 1168(The)X
10833 1315(timing)X
10834 1545(results)X
10835 1776(in)X
10836 1860(table)X
10837 2038(two)X
10838 2180(clearly)X
10839 2421(show)X
10840 2612(that)X
10841 2754(the)X
10842 2874(conventional)X
10843 3309(database)X
10844 3607(client/server)X
10845 4025(model)X
10846 4246(is)X
10847 555 3510(expensive.)N
10848 941(LIBTP)X
10849 1188(outperforms)X
10850 1605(the)X
10851 1728(RDBMS)X
10852 2032(on)X
10853 2136(traversal)X
10854 2437(and)X
10855 2577(insertion.)X
10856 2921(We)X
10857 3057(speculate)X
10858 3380(that)X
10859 3524(this)X
10860 3663(is)X
10861 3740(due)X
10862 3880(in)X
10863 3966(part)X
10864 4115(to)X
10865 4201(the)X
10866 555 3600(overhead)N
10867 870(of)X
10868 957(query)X
10869 1160(parsing,)X
10870 1436(optimization,)X
10871 1880(and)X
10872 2016(repeated)X
10873 2309(interpretation)X
10874 2761(of)X
10875 2848(the)X
10876 2966(plan)X
10877 3124(tree)X
10878 3265(in)X
10879 3347(the)X
10880 3465(RDBMS')X
10881 3791(query)X
10882 3994(executor.)X
10883 755 3723(Table)N
10884 962(three)X
10885 1147(shows)X
10886 1371(the)X
10887 1492(differences)X
10888 1873(between)X
10889 2164(local)X
10890 2343(and)X
10891 2482(remote)X
10892 2728(execution)X
10893 3063(of)X
10894 3153(LIBTP's)X
10895 3456(OO1)X
10896 3635(implementation)X
10897 4160(on)X
10898 4263(a)X
10899 555 3813(DECstation.)N
10900 989(We)X
10901 1122(measured)X
10902 1451(performance)X
10903 1879(with)X
10904 2042(a)X
10905 2099(populated)X
10906 2436(\(warm\))X
10907 2694(cache)X
10908 2899(and)X
10909 3036(an)X
10910 3133(empty)X
10911 3354(\(cold\))X
10912 3567(cache.)X
10913 3812(Reported)X
10914 4126(times)X
10915 555 3903(are)N
10916 681(the)X
10917 806(means)X
10918 1037(of)X
10919 1130(twenty)X
10920 1374(tests,)X
10921 1562(and)X
10922 1704(are)X
10923 1829(in)X
10924 1917(seconds.)X
10925 2237(Standard)X
10926 2548(deviations)X
10927 2903(were)X
10928 3086(within)X
10929 3316(seven)X
10930 3525(percent)X
10931 3788(of)X
10932 3881(the)X
10933 4005(mean)X
10934 4205(for)X
10935 555 3993(remote,)N
10936 818(and)X
10937 954(two)X
10938 1094(percent)X
10939 1351(of)X
10940 1438(the)X
10941 1556(mean)X
10942 1750(for)X
10943 1864(local.)X
10944 755 4116(The)N
10945 914(20ms)X
10946 1121(overhead)X
10947 1450(of)X
10948 1551(TCP/IP)X
10949 1824(on)X
10950 1938(an)X
10951 2048(Ethernet)X
10952 2354(entirely)X
10953 2633(accounts)X
10954 2948(for)X
10955 3076(the)X
10956 3207(difference)X
10957 3567(in)X
10958 3662(speed.)X
10959 3918(The)X
10960 4076(remote)X
10961 555 4206(traversal)N
10962 857(times)X
10963 1055(are)X
10964 1179(nearly)X
10965 1405(double)X
10966 1648(the)X
10967 1771(local)X
10968 1952(times)X
10969 2150(because)X
10970 2430(we)X
10971 2549(do)X
10972 2653(index)X
10973 2855(lookups)X
10974 3132(and)X
10975 3272(part)X
10976 3421(fetches)X
10977 3673(in)X
10978 3759(separate)X
10979 4047(queries.)X
10980 555 4296(It)N
10981 629(would)X
10982 854(make)X
10983 1053(sense)X
10984 1252(to)X
10985 1339(do)X
10986 1444(indexed)X
10987 1723(searches)X
10988 2021(on)X
10989 2126(the)X
10990 2248(server,)X
10991 2489(but)X
10992 2615(we)X
10993 2733(were)X
10994 2914(unwilling)X
10995 3244(to)X
10996 3330(hard-code)X
10997 3676(knowledge)X
10998 4052(of)X
10999 4143(OO1)X
11000 555 4386(indices)N
11001 803(into)X
11002 948(our)X
11003 1075(LIBTP)X
11004 1317(TCL)X
11005 1488(server.)X
11006 1745(Cold)X
11007 1920(and)X
11008 2056(warm)X
11009 2259(insertion)X
11010 2559(times)X
11011 2752(are)X
11012 2871(identical)X
11013 3167(since)X
11014 3352(insertions)X
11015 3683(do)X
11016 3783(not)X
11017 3905(bene\256t)X
11018 4143(from)X
11019 555 4476(caching.)N
11020 755 4599(One)N
11021 915(interesting)X
11022 1279(difference)X
11023 1632(shown)X
11024 1867(by)X
11025 1973(table)X
11026 2155(three)X
11027 2342(is)X
11028 2421(the)X
11029 2545(cost)X
11030 2700(of)X
11031 2793(forward)X
11032 3074(versus)X
11033 3305(backward)X
11034 3644(traversal.)X
11035 3987(When)X
11036 4205(we)X
11037 555 4689(built)N
11038 725(the)X
11039 847(database,)X
11040 1168(we)X
11041 1285(inserted)X
11042 1562(parts)X
11043 1741(in)X
11044 1826(part)X
11045 2 f
11046 1974(id)X
11047 1 f
11048 2059(order.)X
11049 2292(We)X
11050 2427(built)X
11051 2596(the)X
11052 2717(indices)X
11053 2967(at)X
11054 3048(the)X
11055 3169(same)X
11056 3357(time.)X
11057 3562(Therefore,)X
11058 3923(the)X
11059 4044(forward)X
11060 555 4779(index)N
11061 757(had)X
11062 897(keys)X
11063 1068(inserted)X
11064 1346(in)X
11065 1432(order,)X
11066 1646(while)X
11067 1848(the)X
11068 1970(backward)X
11069 2307(index)X
11070 2509(had)X
11071 2649(keys)X
11072 2820(inserted)X
11073 3098(more)X
11074 3286(randomly.)X
11075 3656(In-order)X
11076 3943(insertion)X
11077 4246(is)X
11078 555 4885(pessimal)N
11079 858(for)X
11080 975(B-tree)X
11081 1199(indices,)X
11082 1469(so)X
11083 1563(the)X
11084 1684(forward)X
11085 1962(index)X
11086 2163(is)X
11087 2239(much)X
11088 2440(larger)X
11089 2651(than)X
11090 2812(the)X
11091 2933(backward)X
11092 3269(one)X
11093 7 s
11094 3385 4853(5)N
11095 10 s
11096 4885(.)Y
11097 3476(This)X
11098 3640(larger)X
11099 3850(size)X
11100 3997(shows)X
11101 4219(up)X
11102 555 4975(as)N
11103 642(extra)X
11104 823(disk)X
11105 976(reads)X
11106 1166(in)X
11107 1248(the)X
11108 1366(cold)X
11109 1524(benchmark.)X
11110 3 f
11111 555 5161(6.)N
11112 655(Conclusions)X
11113 1 f
11114 755 5284(LIBTP)N
11115 1006(provides)X
11116 1311(the)X
11117 1438(basic)X
11118 1632(building)X
11119 1927(blocks)X
11120 2165(to)X
11121 2256(support)X
11122 2525(transaction)X
11123 2906(protection.)X
11124 3300(In)X
11125 3396(comparison)X
11126 3799(with)X
11127 3970(traditional)X
11128 555 5374(Unix)N
11129 746(libraries)X
11130 1040(and)X
11131 1187(commercial)X
11132 1597(systems,)X
11133 1900(it)X
11134 1974(offers)X
11135 2192(a)X
11136 2258(variety)X
11137 2511(of)X
11138 2608(tradeoffs.)X
11139 2964(Using)X
11140 3185(complete)X
11141 3509(transaction)X
11142 3891(protection)X
11143 4246(is)X
11144 555 5464(more)N
11145 747(complicated)X
11146 1166(than)X
11147 1331(simply)X
11148 1575(adding)X
11149 3 f
11150 1820(fsync)X
11151 1 f
11152 1998(\(2\))X
11153 2119(and)X
11154 3 f
11155 2262(\257ock)X
11156 1 f
11157 2426(\(2\))X
11158 2547(calls)X
11159 2721(to)X
11160 2810(code,)X
11161 3008(but)X
11162 3136(it)X
11163 3206(is)X
11164 3285(faster)X
11165 3490(in)X
11166 3578(some)X
11167 3773(cases)X
11168 3969(and)X
11169 4111(offers)X
11170 8 s
11171 10 f
11172 555 5536(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
11173 5 s
11174 1 f
11175 727 5614(5)N
11176 8 s
11177 763 5639(The)N
11178 878(next)X
11179 1004(release)X
11180 1196(of)X
11181 1265(the)X
11182 1359(4.4BSD)X
11183 1580(access)X
11184 1758(method)X
11185 1966(will)X
11186 2082(automatically)X
11187 2446(detect)X
11188 2614(and)X
11189 2722(compensate)X
11190 3039(for)X
11191 3129(in-order)X
11192 3350(insertion,)X
11193 3606(eliminating)X
11194 3914(this)X
11195 4023(problem.)X
11197 16 p
11198 %%Page: 16 16
11199 8 s 8 xH 0 xS 1 f
11200 10 s
11201 3 f
11202 1 f
11203 555 630(stricter)N
11204 801(guarantees)X
11205 1168(\(atomicity,)X
11206 1540(consistency,)X
11207 1957(isolation,)X
11208 2275(and)X
11209 2414(durability\).)X
11210 2815(If)X
11211 2892(the)X
11212 3013(data)X
11213 3170(to)X
11214 3255(be)X
11215 3354(protected)X
11216 3676(are)X
11217 3798(already)X
11218 4058(format-)X
11219 555 720(ted)N
11220 675(\()X
11221 2 f
11222 702(i.e.)X
11223 1 f
11224 821(use)X
11225 949(one)X
11226 1086(of)X
11227 1174(the)X
11228 1293(database)X
11229 1591(access)X
11230 1818(methods\),)X
11231 2157(then)X
11232 2316(adding)X
11233 2555(transaction)X
11234 2928(protection)X
11235 3274(requires)X
11236 3554(no)X
11237 3655(additional)X
11238 3996(complex-)X
11239 555 810(ity,)N
11240 679(but)X
11241 801(incurs)X
11242 1017(a)X
11243 1073(performance)X
11244 1500(penalty)X
11245 1756(of)X
11246 1843(approximately)X
11247 2326(15%.)X
11248 755 933(In)N
11249 844(comparison)X
11250 1240(with)X
11251 1404(commercial)X
11252 1805(database)X
11253 2104(systems,)X
11254 2399(the)X
11255 2519(tradeoffs)X
11256 2827(are)X
11257 2948(more)X
11258 3135(complex.)X
11259 3473(LIBTP)X
11260 3717(does)X
11261 3886(not)X
11262 4009(currently)X
11263 555 1023(support)N
11264 825(a)X
11265 891(standard)X
11266 1193(query)X
11267 1406(language.)X
11268 1766(The)X
11269 1921(TCL-based)X
11270 2312(server)X
11271 2539(process)X
11272 2810(allows)X
11273 3049(a)X
11274 3115(certain)X
11275 3364(ease)X
11276 3533(of)X
11277 3630(use)X
11278 3767(which)X
11279 3993(would)X
11280 4223(be)X
11281 555 1113(enhanced)N
11282 882(with)X
11283 1047(a)X
11284 1106(more)X
11285 1294(user-friendly)X
11286 1732(interface)X
11287 2037(\()X
11288 2 f
11289 2064(e.g.)X
11290 1 f
11291 2203(a)X
11292 2261(windows)X
11293 2572(based)X
11294 2777(query-by-form)X
11295 3272(application\),)X
11296 3697(for)X
11297 3813(which)X
11298 4031(we)X
11299 4147(have)X
11300 555 1203(a)N
11301 620(working)X
11302 916(prototype.)X
11303 1292(When)X
11304 1513(accesses)X
11305 1815(do)X
11306 1924(not)X
11307 2055(require)X
11308 2312(sophisticated)X
11309 2758(query)X
11310 2969(processing,)X
11311 3360(the)X
11312 3486(TCL)X
11313 3665(interface)X
11314 3975(is)X
11315 4056(an)X
11316 4160(ade-)X
11317 555 1293(quate)N
11318 756(solution.)X
11319 1080(What)X
11320 1281(LIBTP)X
11321 1529(fails)X
11322 1693(to)X
11323 1781(provide)X
11324 2052(in)X
11325 2140(functionality,)X
11326 2595(it)X
11327 2665(makes)X
11328 2896(up)X
11329 3002(for)X
11330 3122(in)X
11331 3210(performance)X
11332 3643(and)X
11333 3785(\257exibility.)X
11334 4161(Any)X
11335 555 1383(application)N
11336 931(may)X
11337 1089(make)X
11338 1283(use)X
11339 1410(of)X
11340 1497(its)X
11341 1592(record)X
11342 1818(interface)X
11343 2120(or)X
11344 2207(the)X
11345 2325(more)X
11346 2510(primitive)X
11347 2823(log,)X
11348 2965(lock,)X
11349 3143(and)X
11350 3279(buffer)X
11351 3496(calls.)X
11352 755 1506(Future)N
11353 987(work)X
11354 1175(will)X
11355 1322(focus)X
11356 1519(on)X
11357 1621(overcoming)X
11358 2026(some)X
11359 2217(of)X
11360 2306(the)X
11361 2426(areas)X
11362 2614(in)X
11363 2698(which)X
11364 2916(LIBTP)X
11365 3160(is)X
11366 3235(currently)X
11367 3547(de\256cient)X
11368 3845(and)X
11369 3983(extending)X
11370 555 1596(its)N
11371 652(transaction)X
11372 1026(model.)X
11373 1288(The)X
11374 1435(addition)X
11375 1719(of)X
11376 1808(an)X
11377 1905(SQL)X
11378 2077(parser)X
11379 2295(and)X
11380 2432(forms)X
11381 2640(front)X
11382 2817(end)X
11383 2954(will)X
11384 3099(improve)X
11385 3387(the)X
11386 3506(system's)X
11387 3807(ease)X
11388 3967(of)X
11389 4055(use)X
11390 4183(and)X
11391 555 1686(make)N
11392 750(it)X
11393 815(more)X
11394 1001(competitive)X
11395 1400(with)X
11396 1563(commercial)X
11397 1963(systems.)X
11398 2277(In)X
11399 2365(the)X
11400 2484(long)X
11401 2647(term,)X
11402 2835(we)X
11403 2950(would)X
11404 3170(like)X
11405 3310(to)X
11406 3392(add)X
11407 3528(generalized)X
11408 3919(hierarchical)X
11409 555 1776(locking,)N
11410 836(nested)X
11411 1062(transactions,)X
11412 1486(parallel)X
11413 1748(transactions,)X
11414 2171(passing)X
11415 2431(of)X
11416 2518(transactions)X
11417 2921(between)X
11418 3209(processes,)X
11419 3557(and)X
11420 3693(distributed)X
11421 4055(commit)X
11422 555 1866(handling.)N
11423 900(In)X
11424 992(the)X
11425 1115(short)X
11426 1300(term,)X
11427 1492(the)X
11428 1614(next)X
11429 1776(step)X
11430 1929(is)X
11431 2006(to)X
11432 2092(integrate)X
11433 2397(LIBTP)X
11434 2643(with)X
11435 2809(the)X
11436 2931(most)X
11437 3110(recent)X
11438 3331(release)X
11439 3579(of)X
11440 3670(the)X
11441 3792(database)X
11442 4093(access)X
11443 555 1956(routines)N
11444 833(and)X
11445 969(make)X
11446 1163(it)X
11447 1227(freely)X
11448 1435(available)X
11449 1745(via)X
11450 1863(anonymous)X
11451 2252(ftp.)X
11452 3 f
11453 555 2142(7.)N
11454 655(Acknowledgements)X
11455 1 f
11456 755 2265(We)N
11457 888(would)X
11458 1109(like)X
11459 1250(to)X
11460 1332(thank)X
11461 1530(John)X
11462 1701(Wilkes)X
11463 1948(and)X
11464 2084(Carl)X
11465 2242(Staelin)X
11466 2484(of)X
11467 2571(Hewlett-Packard)X
11468 3131(Laboratories)X
11469 3557(and)X
11470 3693(Jon)X
11471 3824(Krueger.)X
11472 4148(John)X
11473 555 2355(and)N
11474 694(Carl)X
11475 855(provided)X
11476 1162(us)X
11477 1255(with)X
11478 1419(an)X
11479 1517(extra)X
11480 1700(disk)X
11481 1855(for)X
11482 1971(the)X
11483 2091(HP)X
11484 2215(testbed)X
11485 2464(less)X
11486 2606(than)X
11487 2766(24)X
11488 2868(hours)X
11489 3068(after)X
11490 3238(we)X
11491 3354(requested)X
11492 3684(it.)X
11493 3770(Jon)X
11494 3903(spent)X
11495 4094(count-)X
11496 555 2445(less)N
11497 699(hours)X
11498 901(helping)X
11499 1164(us)X
11500 1258(understand)X
11501 1633(the)X
11502 1754(intricacies)X
11503 2107(of)X
11504 2197(commercial)X
11505 2599(database)X
11506 2899(products)X
11507 3198(and)X
11508 3337(their)X
11509 3507(behavior)X
11510 3811(under)X
11511 4017(a)X
11512 4076(variety)X
11513 555 2535(of)N
11514 642(system)X
11515 884(con\256gurations.)X
11516 3 f
11517 555 2721(8.)N
11518 655(References)X
11519 1 f
11520 555 2901([ANDR89])N
11521 942(Andrade,)X
11522 1265(J.,)X
11523 1361(Carges,)X
11524 1629(M.,)X
11525 1765(Kovach,)X
11526 2060(K.,)X
11527 2183(``Building)X
11528 2541(an)X
11529 2642(On-Line)X
11530 2939(Transaction)X
11531 3343(Processing)X
11532 3715(System)X
11533 3975(On)X
11534 4098(UNIX)X
11535 727 2991(System)N
11536 982(V'',)X
11537 2 f
11538 1134(CommUNIXations)X
11539 1 f
11540 1725(,)X
11541 1765 0.2188(November/December)AX
11542 2477(1989.)X
11543 555 3171([BAY77])N
11544 878(Bayer,)X
11545 1110(R.,)X
11546 1223(Schkolnick,)X
11547 1623(M.,)X
11548 1754(``Concurrency)X
11549 2243(of)X
11550 2330(Operations)X
11551 2702(on)X
11552 2802(B-Trees'',)X
11553 2 f
11554 3155(Acta)X
11555 3322(Informatica)X
11556 1 f
11557 3700(,)X
11558 3740(1977.)X
11559 555 3351([BERN80])N
11560 936(Bernstein,)X
11561 1297(P.,)X
11562 1415(Goodman,)X
11563 1785(N.,)X
11564 1917(``Timestamp)X
11565 2365(Based)X
11566 2595(Algorithms)X
11567 2992(for)X
11568 3119(Concurrency)X
11569 3567(Control)X
11570 3844(in)X
11571 3939(Distributed)X
11572 727 3441(Database)N
11573 1042(Systems'',)X
11574 2 f
11575 1402(Proceedings)X
11576 1823(6th)X
11577 1945(International)X
11578 2387(Conference)X
11579 2777(on)X
11580 2877(Very)X
11581 3049(Large)X
11582 3260(Data)X
11583 3440(Bases)X
11584 1 f
11585 3627(,)X
11586 3667(October)X
11587 3946(1980.)X
11588 555 3621([BSD91])N
11589 864(DB\(3\),)X
11590 2 f
11591 1109(4.4BSD)X
11592 1376(Unix)X
11593 1552(Programmer's)X
11594 2044(Manual)X
11595 2313(Reference)X
11596 2655(Guide)X
11597 1 f
11598 2851(,)X
11599 2891(University)X
11600 3249(of)X
11601 3336(California,)X
11602 3701(Berkeley,)X
11603 4031(1991.)X
11604 555 3801([CATT91])N
11605 923(Cattell,)X
11606 1181(R.G.G.,)X
11607 1455(``An)X
11608 1632(Engineering)X
11609 2049(Database)X
11610 2369(Benchmark'',)X
11611 2 f
11612 2838(The)X
11613 2983(Benchmark)X
11614 3373(Handbook)X
11615 3731(for)X
11616 3848(Database)X
11617 4179(and)X
11618 727 3891(Transaction)N
11619 1133(Processing)X
11620 1509(Systems)X
11621 1 f
11622 1763(,)X
11623 1803(J.)X
11624 1874(Gray,)X
11625 2075(editor,)X
11626 2302(Morgan)X
11627 2576(Kaufman)X
11628 2895(1991.)X
11629 555 4071([CHEN91])N
11630 929(Cheng,)X
11631 1180(E.,)X
11632 1291(Chang,)X
11633 1542(E.,)X
11634 1653(Klein,)X
11635 1872(J.,)X
11636 1964(Lee,)X
11637 2126(D.,)X
11638 2245(Lu,)X
11639 2375(E.,)X
11640 2485(Lutgardo,)X
11641 2820(A.,)X
11642 2939(Obermarck,)X
11643 3342(R.,)X
11644 3456(``An)X
11645 3629(Open)X
11646 3824(and)X
11647 3961(Extensible)X
11648 727 4161(Event-Based)N
11649 1157(Transaction)X
11650 1556(Manager'',)X
11651 2 f
11652 1936(Proceedings)X
11653 2357(1991)X
11654 2537(Summer)X
11655 2820(Usenix)X
11656 1 f
11657 3043(,)X
11658 3083(Nashville,)X
11659 3430(TN,)X
11660 3577(June)X
11661 3744(1991.)X
11662 555 4341([CHOU85])N
11663 943(Chou,)X
11664 1163(H.,)X
11665 1288(DeWitt,)X
11666 1570(D.,)X
11667 1694(``An)X
11668 1872(Evaluation)X
11669 2245(of)X
11670 2338(Buffer)X
11671 2574(Management)X
11672 3019(Strategies)X
11673 3361(for)X
11674 3481(Relational)X
11675 3836(Database)X
11676 4157(Sys-)X
11677 727 4431(tems'',)N
11678 2 f
11679 972(Proceedings)X
11680 1393(of)X
11681 1475(the)X
11682 1593(11th)X
11683 1755(International)X
11684 2197(Conference)X
11685 2587(on)X
11686 2687(Very)X
11687 2859(Large)X
11688 3070(Databases)X
11689 1 f
11690 3408(,)X
11691 3448(1985.)X
11692 555 4611([DEWI84])N
11693 925(DeWitt,)X
11694 1207(D.,)X
11695 1331(Katz,)X
11696 1529(R.,)X
11697 1648(Olken,)X
11698 1890(F.,)X
11699 2000(Shapiro,)X
11700 2295(L.,)X
11701 2410(Stonebraker,)X
11702 2843(M.,)X
11703 2979(Wood,)X
11704 3220(D.,)X
11705 3343(``Implementation)X
11706 3929(Techniques)X
11707 727 4701(for)N
11708 841(Main)X
11709 1030(Memory)X
11710 1326(Database)X
11711 1641(Systems'',)X
11712 2 f
11713 2001(Proceedings)X
11714 2422(of)X
11715 2504(SIGMOD)X
11716 1 f
11717 2812(,)X
11718 2852(pp.)X
11719 2972(1-8,)X
11720 3119(June)X
11721 3286(1984.)X
11722 555 4881([GRAY76])N
11723 944(Gray,)X
11724 1153(J.,)X
11725 1252(Lorie,)X
11726 1474(R.,)X
11727 1595(Putzolu,)X
11728 1887(F.,)X
11729 1999(and)X
11730 2143(Traiger,)X
11731 2428(I.,)X
11732 2522(``Granularity)X
11733 2973(of)X
11734 3067(locks)X
11735 3263(and)X
11736 3406(degrees)X
11737 3679(of)X
11738 3773(consistency)X
11739 4174(in)X
11740 4263(a)X
11741 727 4971(large)N
11742 909(shared)X
11743 1140(data)X
11744 1295(base'',)X
11745 2 f
11746 1533(Modeling)X
11747 1861(in)X
11748 1944(Data)X
11749 2125(Base)X
11750 2301(Management)X
11751 2740(Systems)X
11752 1 f
11753 2994(,)X
11754 3034(Elsevier)X
11755 3317(North)X
11756 3524(Holland,)X
11757 3822(New)X
11758 3994(York,)X
11759 4199(pp.)X
11760 727 5061(365-394.)N
11761 555 5241([HAER83])N
11762 931(Haerder,)X
11763 1235(T.)X
11764 1348(Reuter,)X
11765 1606(A.)X
11766 1728(``Principles)X
11767 2126(of)X
11768 2217(Transaction-Oriented)X
11769 2928(Database)X
11770 3246(Recovery'',)X
11771 2 f
11772 3651(Computing)X
11773 4029(Surveys)X
11774 1 f
11775 4279(,)X
11776 727 5331(15\(4\);)N
11777 943(237-318,)X
11778 1250(1983.)X
11779 555 5511([KUNG81])N
11780 943(Kung,)X
11781 1162(H.)X
11782 1261(T.,)X
11783 1371(Richardson,)X
11784 1777(J.,)X
11785 1869(``On)X
11786 2042(Optimistic)X
11787 2400(Methods)X
11788 2701(for)X
11789 2816(Concurrency)X
11790 3252(Control'',)X
11791 2 f
11792 3591(ACM)X
11793 3781(Transactions)X
11794 4219(on)X
11795 727 5601(Database)N
11796 1054(Systems)X
11797 1 f
11798 1328(6\(2\);)X
11799 1504(213-226,)X
11800 1811(1981.)X
11802 17 p
11803 %%Page: 17 17
11804 10 s 10 xH 0 xS 1 f
11805 3 f
11806 1 f
11807 555 630([LEHM81])N
11808 939(Lehman,)X
11809 1245(P.,)X
11810 1352(Yao,)X
11811 1529(S.,)X
11812 1636(``Ef\256cient)X
11813 1989(Locking)X
11814 2279(for)X
11815 2396(Concurrent)X
11816 2780(Operations)X
11817 3155(on)X
11818 3258(B-trees'',)X
11819 2 f
11820 3587(ACM)X
11821 3779(Transactions)X
11822 4219(on)X
11823 727 720(Database)N
11824 1054(Systems)X
11825 1 f
11826 1308(,)X
11827 1348(6\(4\),)X
11828 1522(December)X
11829 1873(1981.)X
11830 555 900([MOHA91])N
11831 964(Mohan,)X
11832 1241(C.,)X
11833 1364(Pirahesh,)X
11834 1690(H.,)X
11835 1818(``ARIES-RRH:)X
11836 2366(Restricted)X
11837 2721(Repeating)X
11838 3076(of)X
11839 3173(History)X
11840 3442(in)X
11841 3533(the)X
11842 3660(ARIES)X
11843 3920(Transaction)X
11844 727 990(Recovery)N
11845 1055(Method'',)X
11846 2 f
11847 1398(Proceedings)X
11848 1819(7th)X
11849 1941(International)X
11850 2383(Conference)X
11851 2773(on)X
11852 2873(Data)X
11853 3053(Engineering)X
11854 1 f
11855 3449(,)X
11856 3489(Kobe,)X
11857 3703(Japan,)X
11858 3926(April)X
11859 4115(1991.)X
11860 555 1170([NODI90])N
11861 914(Nodine,)X
11862 1194(M.,)X
11863 1328(Zdonik,)X
11864 1602(S.,)X
11865 1709(``Cooperative)X
11866 2178(Transaction)X
11867 2580(Hierarchies:)X
11868 2996(A)X
11869 3077(Transaction)X
11870 3479(Model)X
11871 3711(to)X
11872 3796(Support)X
11873 4072(Design)X
11874 727 1260(Applications'',)N
11875 2 f
11876 1242(Proceedings)X
11877 1675(16th)X
11878 1849(International)X
11879 2303(Conference)X
11880 2704(on)X
11881 2815(Very)X
11882 2998(Large)X
11883 3220(Data)X
11884 3411(Bases)X
11885 1 f
11886 3598(,)X
11887 3649(Brisbane,)X
11888 3985(Australia,)X
11889 727 1350(August)N
11890 978(1990.)X
11891 555 1530([OUST90])N
11892 923(Ousterhout,)X
11893 1324(J.,)X
11894 1420(``Tcl:)X
11895 1648(An)X
11896 1771(Embeddable)X
11897 2197(Command)X
11898 2555(Language'',)X
11899 2 f
11900 2971(Proceedings)X
11901 3396(1990)X
11902 3580(Winter)X
11903 3822(Usenix)X
11904 1 f
11905 4045(,)X
11906 4089(Wash-)X
11907 727 1620(ington,)N
11908 971(D.C.,)X
11909 1162(January)X
11910 1432(1990.)X
11911 555 1800([POSIX91])N
11912 955(``Unapproved)X
11913 1441(Draft)X
11914 1645(for)X
11915 1773(Realtime)X
11916 2096(Extension)X
11917 2450(for)X
11918 2578(Portable)X
11919 2879(Operating)X
11920 3234(Systems'',)X
11921 3608(Draft)X
11922 3812(11,)X
11923 3946(October)X
11924 4239(7,)X
11925 727 1890(1991,)N
11926 927(IEEE)X
11927 1121(Computer)X
11928 1461(Society.)X
11929 555 2070([ROSE91])N
11930 925(Rosenblum,)X
11931 1341(M.,)X
11932 1484(Ousterhout,)X
11933 1892(J.,)X
11934 1995(``The)X
11935 2206(Design)X
11936 2464(and)X
11937 2611(Implementation)X
11938 3149(of)X
11939 3247(a)X
11940 3314(Log-Structured)X
11941 3835(File)X
11942 3990(System'',)X
11943 2 f
11944 727 2160(Proceedings)N
11945 1148(of)X
11946 1230(the)X
11947 1348(13th)X
11948 1510(Symposium)X
11949 1895(on)X
11950 1995(Operating)X
11951 2344(Systems)X
11952 2618(Principles)X
11953 1 f
11954 2947(,)X
11955 2987(1991.)X
11956 555 2340([SELT91])N
11957 904(Seltzer,)X
11958 1171(M.,)X
11959 1306(Stonebraker,)X
11960 1738(M.,)X
11961 1873(``Read)X
11962 2116(Optimized)X
11963 2478(File)X
11964 2626(Systems:)X
11965 2938(A)X
11966 3020(Performance)X
11967 3454(Evaluation'',)X
11968 2 f
11969 3898(Proceedings)X
11970 727 2430(7th)N
11971 849(Annual)X
11972 1100(International)X
11973 1542(Conference)X
11974 1932(on)X
11975 2032(Data)X
11976 2212(Engineering)X
11977 1 f
11978 2608(,)X
11979 2648(Kobe,)X
11980 2862(Japan,)X
11981 3085(April)X
11982 3274(1991.)X
11983 555 2610([SPEC88])N
11984 907(Spector,)X
11985 1200(Rausch,)X
11986 1484(Bruell,)X
11987 1732(``Camelot:)X
11988 2107(A)X
11989 2192(Flexible,)X
11990 2501(Distributed)X
11991 2888(Transaction)X
11992 3294(Processing)X
11993 3668(System'',)X
11994 2 f
11995 4004(Proceed-)X
11996 727 2700(ings)N
11997 880(of)X
11998 962(Spring)X
11999 1195(COMPCON)X
12000 1606(1988)X
12001 1 f
12002 (,)S
12003 1806(February)X
12004 2116(1988.)X
12005 555 2880([SQL86])N
12006 862(American)X
12007 1201(National)X
12008 1499(Standards)X
12009 1836(Institute,)X
12010 2139(``Database)X
12011 2509(Language)X
12012 2847(SQL'',)X
12013 3093(ANSI)X
12014 3301(X3.135-1986)X
12015 3747(\(ISO)X
12016 3924(9075\),)X
12017 4152(May)X
12018 727 2970(1986.)N
12019 555 3150([STON81])N
12020 919(Stonebraker,)X
12021 1348(M.,)X
12022 1480(``Operating)X
12023 1876(System)X
12024 2132(Support)X
12025 2406(for)X
12026 2520(Database)X
12027 2835(Management'',)X
12028 2 f
12029 3348(Communications)X
12030 3910(of)X
12031 3992(the)X
12032 4110(ACM)X
12033 1 f
12034 4279(,)X
12035 727 3240(1981.)N
12036 555 3420([SULL92])N
12037 925(Sullivan,)X
12038 1247(M.,)X
12039 1394(Olson,)X
12040 1641(M.,)X
12041 1788(``An)X
12042 1976(Index)X
12043 2195(Implementation)X
12044 2737(Supporting)X
12045 3127(Fast)X
12046 3295(Recovery)X
12047 3638(for)X
12048 3767(the)X
12049 3900(POSTGRES)X
12050 727 3510(Storage)N
12051 1014(System'',)X
12052 1365(to)X
12053 1469(appear)X
12054 1726(in)X
12055 2 f
12056 1830(Proceedings)X
12057 2272(8th)X
12058 2415(Annual)X
12059 2687(International)X
12060 3150(Conference)X
12061 3561(on)X
12062 3682(Data)X
12063 3883(Engineering)X
12064 1 f
12065 4279(,)X
12066 727 3600(Tempe,)N
12067 990(Arizona,)X
12068 1289(February)X
12069 1599(1992.)X
12070 555 3780([TPCB90])N
12071 914(Transaction)X
12072 1319(Processing)X
12073 1692(Performance)X
12074 2129(Council,)X
12075 2428(``TPC)X
12076 2653(Benchmark)X
12077 3048(B'',)X
12078 3200(Standard)X
12079 3510(Speci\256cation,)X
12080 3973(Waterside)X
12081 727 3870(Associates,)N
12082 1110(Fremont,)X
12083 1421(CA.,)X
12084 1592(1990.)X
12085 555 4050([YOUN91])N
12086 947(Young,)X
12087 1211(M.)X
12088 1328(W.,)X
12089 1470(Thompson,)X
12090 1858(D.)X
12091 1962(S.,)X
12092 2072(Jaffe,)X
12093 2274(E.,)X
12094 2388(``A)X
12095 2525(Modular)X
12096 2826(Architecture)X
12097 3253(for)X
12098 3372(Distributed)X
12099 3757(Transaction)X
12100 4161(Pro-)X
12101 727 4140(cessing'',)N
12102 2 f
12103 1057(Proceedings)X
12104 1478(1991)X
12105 1658(Winter)X
12106 1896(Usenix)X
12107 1 f
12108 2119(,)X
12109 2159(Dallas,)X
12110 2404(TX,)X
12111 2551(January)X
12112 2821(1991.)X
12113 3 f
12114 755 4263(Margo)N
12115 1008(I.)X
12116 1080(Seltzer)X
12117 1 f
12118 1338(is)X
12119 1411(a)X
12120 1467(Ph.D.)X
12121 1669(student)X
12122 1920(in)X
12123 2002(the)X
12124 2120(Department)X
12125 2519(of)X
12126 2606(Electrical)X
12127 2934(Engineering)X
12128 3346(and)X
12129 3482(Computer)X
12130 3822(Sciences)X
12131 4123(at)X
12132 4201(the)X
12133 555 4353(University)N
12134 919(of)X
12135 1012(California,)X
12136 1383(Berkeley.)X
12137 1739(Her)X
12138 1886(research)X
12139 2181(interests)X
12140 2474(include)X
12141 2735(\256le)X
12142 2862(systems,)X
12143 3160(databases,)X
12144 3513(and)X
12145 3654(transaction)X
12146 4031(process-)X
12147 555 4443(ing)N
12148 686(systems.)X
12149 1008(She)X
12150 1157(spent)X
12151 1355(several)X
12152 1612(years)X
12153 1811(working)X
12154 2107(at)X
12155 2194(startup)X
12156 2441(companies)X
12157 2813(designing)X
12158 3153(and)X
12159 3298(implementing)X
12160 3771(\256le)X
12161 3902(systems)X
12162 4183(and)X
12163 555 4533(transaction)N
12164 929(processing)X
12165 1294(software)X
12166 1592(and)X
12167 1729(designing)X
12168 2061(microprocessors.)X
12169 2648(Ms.)X
12170 2791(Seltzer)X
12171 3035(received)X
12172 3329(her)X
12173 3453(AB)X
12174 3585(in)X
12175 3668(Applied)X
12176 3947(Mathemat-)X
12177 555 4623(ics)N
12178 664(from)X
12179 840 0.1953(Harvard/Radcliffe)AX
12180 1445(College)X
12181 1714(in)X
12182 1796(1983.)X
12183 755 4746(In)N
12184 845(her)X
12185 971(spare)X
12186 1163(time,)X
12187 1347(Margo)X
12188 1583(can)X
12189 1717(usually)X
12190 1970(be)X
12191 2068(found)X
12192 2277(preparing)X
12193 2607(massive)X
12194 2887(quantities)X
12195 3220(of)X
12196 3309(food)X
12197 3478(for)X
12198 3594(hungry)X
12199 3843(hordes,)X
12200 4099(study-)X
12201 555 4836(ing)N
12202 677(Japanese,)X
12203 1003(or)X
12204 1090(playing)X
12205 1350(soccer)X
12206 1576(with)X
12207 1738(an)X
12208 1834(exciting)X
12209 2112(Bay)X
12210 2261(Area)X
12211 2438(Women's)X
12212 2770(Soccer)X
12213 3009(team,)X
12214 3205(the)X
12215 3323(Berkeley)X
12216 3633(Bruisers.)X
12217 3 f
12218 755 5049(Michael)N
12219 1056(A.)X
12220 1159(Olson)X
12221 1 f
12222 1383(is)X
12223 1461(a)X
12224 1522(Master's)X
12225 1828(student)X
12226 2084(in)X
12227 2170(the)X
12228 2292(Department)X
12229 2695(of)X
12230 2786(Electrical)X
12231 3118(Engineering)X
12232 3534(and)X
12233 3674(Computer)X
12234 4018(Sciences)X
12235 555 5139(at)N
12236 645(the)X
12237 774(University)X
12238 1143(of)X
12239 1241(California,)X
12240 1617(Berkeley.)X
12241 1978(His)X
12242 2120(primary)X
12243 2405(interests)X
12244 2703(are)X
12245 2833(database)X
12246 3141(systems)X
12247 3425(and)X
12248 3572(mass)X
12249 3763(storage)X
12250 4026(systems.)X
12251 555 5229(Mike)N
12252 759(spent)X
12253 963(two)X
12254 1118(years)X
12255 1323(working)X
12256 1625(for)X
12257 1754(a)X
12258 1825(commercial)X
12259 2239(database)X
12260 2551(system)X
12261 2808(vendor)X
12262 3066(before)X
12263 3307(joining)X
12264 3567(the)X
12265 3699(Postgres)X
12266 4004(Research)X
12267 555 5319(Group)N
12268 780(at)X
12269 858(Berkeley)X
12270 1168(in)X
12271 1250(1988.)X
12272 1470(He)X
12273 1584(received)X
12274 1877(his)X
12275 1990(B.A.)X
12276 2161(in)X
12277 2243(Computer)X
12278 2583(Science)X
12279 2853(from)X
12280 3029(Berkeley)X
12281 3339(in)X
12282 3421(May)X
12283 3588(1991.)X
12284 755 5442(Mike)N
12285 945(only)X
12286 1108(recently)X
12287 1388(transferred)X
12288 1758(into)X
12289 1903(Sin)X
12290 2030(City,)X
12291 2208(but)X
12292 2330(is)X
12293 2403(rapidly)X
12294 2650(adopting)X
12295 2950(local)X
12296 3126(customs)X
12297 3408(and)X
12298 3544(coloration.)X
12299 3929(In)X
12300 4016(his)X
12301 4129(spare)X
12302 555 5532(time,)N
12303 742(he)X
12304 843(organizes)X
12305 1176(informal)X
12306 1477(Friday)X
12307 1711(afternoon)X
12308 2043(study)X
12309 2240(groups)X
12310 2482(to)X
12311 2568(discuss)X
12312 2823(recent)X
12313 3044(technical)X
12314 3358(and)X
12315 3498(economic)X
12316 3834(developments.)X
12317 555 5622(Among)N
12318 815(his)X
12319 928(hobbies)X
12320 1197(are)X
12321 1316(Charles)X
12322 1581(Dickens,)X
12323 1884(Red)X
12324 2033(Rock,)X
12325 2242(and)X
12326 2378(speaking)X
12327 2683(Dutch)X
12328 2899(to)X
12329 2981(anyone)X
12330 3233(who)X
12331 3391(will)X
12332 3535(permit)X
12333 3764(it.)X
12335 17 p
12336 %%Trailer