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