source: vendor/FreeBSD-libc/current/db/docs/libtp.usenix.ps

Last change on this file was 961, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 164.3 KB
Line 
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
12% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
13% 17 Feb, 87.
14
15/$DITroff 140 dict def $DITroff begin
16/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
17/xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
18 /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
19 /pagesave save def}def
20/PB{save /psv exch def currentpoint translate
21 resolution 72 div dup neg scale 0 0 moveto}def
22/PE{psv restore}def
23/arctoobig 90 def /arctoosmall .05 def
24/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
25/tan{dup sin exch cos div}def
26/point{resolution 72 div mul}def
27/dround {transform round exch round exch itransform}def
28/xT{/devname exch def}def
29/xr{/mh exch def /my exch def /resolution exch def}def
30/xp{}def
31/xs{docsave restore end}def
32/xt{}def
33/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
34 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
35/xH{/fontheight exch def F}def
36/xS{/fontslant exch def F}def
37/s{/fontsize exch def /fontheight fontsize def F}def
38/f{/fontnum exch def F}def
39/F{fontheight 0 le{/fontheight fontsize def}if
40 fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
41 fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
42 makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
43/X{exch currentpoint exch pop moveto show}def
44/N{3 1 roll moveto show}def
45/Y{exch currentpoint pop exch moveto show}def
46/S{show}def
47/ditpush{}def/ditpop{}def
48/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
49/AN{4 2 roll moveto 0 exch ashow}def
50/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
51/AS{0 exch ashow}def
52/MX{currentpoint exch pop moveto}def
53/MY{currentpoint pop exch moveto}def
54/MXY{moveto}def
55/cb{pop}def % action on unknown char -- nothing for now
56/n{}def/w{}def
57/p{pop showpage pagesave restore /pagesave save def}def
58/Dt{/Dlinewidth exch def}def 1 Dt
59/Ds{/Ddash exch def}def -1 Ds
60/Di{/Dstipple exch def}def 1 Di
61/Dsetlinewidth{2 Dlinewidth mul setlinewidth}def
62/Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]}
63 {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def
64/Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore
65 currentpoint newpath moveto}def
66/Dl{rlineto Dstroke}def
67/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
68 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
69 currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
70/Dc{dup arcellipse Dstroke}def
71/De{arcellipse Dstroke}def
72/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
73 /cradius centerv centerv mul centerh centerh mul add sqrt def
74 /eradius endv endv mul endh endh mul add sqrt def
75 /endang endv endh atan def
76 /startang centerv neg centerh neg atan def
77 /sweep startang endang sub dup 0 lt{360 add}if def
78 sweep arctoobig gt
79 {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
80 /midh midang cos midrad mul def /midv midang sin midrad mul def
81 midh neg midv neg endh endv centerh centerv midh midv Da
82 Da}
83 {sweep arctoosmall ge
84 {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
85 centerv neg controldelt mul centerh controldelt mul
86 endv neg controldelt mul centerh add endh add
87 endh controldelt mul centerv add endv add
88 centerh endh add centerv endv add rcurveto Dstroke}
89 {centerh endh add centerv endv add rlineto Dstroke}
90 ifelse}
91 ifelse}def
92/Dpatterns[
93[%cf[widthbits]
94[8<0000000000000010>]
95[8<0411040040114000>]
96[8<0204081020408001>]
97[8<0000103810000000>]
98[8<6699996666999966>]
99[8<0000800100001008>]
100[8<81c36666c3810000>]
101[8<0f0e0c0800000000>]
102[8<0000000000000010>]
103[8<0411040040114000>]
104[8<0204081020408001>]
105[8<0000001038100000>]
106[8<6699996666999966>]
107[8<0000800100001008>]
108[8<81c36666c3810000>]
109[8<0f0e0c0800000000>]
110[8<0042660000246600>]
111[8<0000990000990000>]
112[8<0804020180402010>]
113[8<2418814242811824>]
114[8<6699996666999966>]
115[8<8000000008000000>]
116[8<00001c3e363e1c00>]
117[8<0000000000000000>]
118[32<00000040000000c00000004000000040000000e0000000000000000000000000>]
119[32<00000000000060000000900000002000000040000000f0000000000000000000>]
120[32<000000000000000000e0000000100000006000000010000000e0000000000000>]
121[32<00000000000000002000000060000000a0000000f00000002000000000000000>]
122[32<0000000e0000000000000000000000000000000f000000080000000e00000001>]
123[32<0000090000000600000000000000000000000000000007000000080000000e00>]
124[32<00010000000200000004000000040000000000000000000000000000000f0000>]
125[32<0900000006000000090000000600000000000000000000000000000006000000>]]
126[%ug
127[8<0000020000000000>]
128[8<0000020000002000>]
129[8<0004020000002000>]
130[8<0004020000402000>]
131[8<0004060000402000>]
132[8<0004060000406000>]
133[8<0006060000406000>]
134[8<0006060000606000>]
135[8<00060e0000606000>]
136[8<00060e000060e000>]
137[8<00070e000060e000>]
138[8<00070e000070e000>]
139[8<00070e020070e000>]
140[8<00070e020070e020>]
141[8<04070e020070e020>]
142[8<04070e024070e020>]
143[8<04070e064070e020>]
144[8<04070e064070e060>]
145[8<06070e064070e060>]
146[8<06070e066070e060>]
147[8<06070f066070e060>]
148[8<06070f066070f060>]
149[8<060f0f066070f060>]
150[8<060f0f0660f0f060>]
151[8<060f0f0760f0f060>]
152[8<060f0f0760f0f070>]
153[8<0e0f0f0760f0f070>]
154[8<0e0f0f07e0f0f070>]
155[8<0e0f0f0fe0f0f070>]
156[8<0e0f0f0fe0f0f0f0>]
157[8<0f0f0f0fe0f0f0f0>]
158[8<0f0f0f0ff0f0f0f0>]
159[8<1f0f0f0ff0f0f0f0>]
160[8<1f0f0f0ff1f0f0f0>]
161[8<1f0f0f8ff1f0f0f0>]
162[8<1f0f0f8ff1f0f0f8>]
163[8<9f0f0f8ff1f0f0f8>]
164[8<9f0f0f8ff9f0f0f8>]
165[8<9f0f0f9ff9f0f0f8>]
166[8<9f0f0f9ff9f0f0f9>]
167[8<9f8f0f9ff9f0f0f9>]
168[8<9f8f0f9ff9f8f0f9>]
169[8<9f8f1f9ff9f8f0f9>]
170[8<9f8f1f9ff9f8f1f9>]
171[8<bf8f1f9ff9f8f1f9>]
172[8<bf8f1f9ffbf8f1f9>]
173[8<bf8f1fdffbf8f1f9>]
174[8<bf8f1fdffbf8f1fd>]
175[8<ff8f1fdffbf8f1fd>]
176[8<ff8f1fdffff8f1fd>]
177[8<ff8f1ffffff8f1fd>]
178[8<ff8f1ffffff8f1ff>]
179[8<ff9f1ffffff8f1ff>]
180[8<ff9f1ffffff9f1ff>]
181[8<ff9f9ffffff9f1ff>]
182[8<ff9f9ffffff9f9ff>]
183[8<ffbf9ffffff9f9ff>]
184[8<ffbf9ffffffbf9ff>]
185[8<ffbfdffffffbf9ff>]
186[8<ffbfdffffffbfdff>]
187[8<ffffdffffffbfdff>]
188[8<ffffdffffffffdff>]
189[8<fffffffffffffdff>]
190[8<ffffffffffffffff>]]
191[%mg
192[8<8000000000000000>]
193[8<0822080080228000>]
194[8<0204081020408001>]
195[8<40e0400000000000>]
196[8<66999966>]
197[8<8001000010080000>]
198[8<81c36666c3810000>]
199[8<f0e0c08000000000>]
200[16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>]
201[16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>]
202[8<c3c300000000c3c3>]
203[16<0040008001000200040008001000200040008000000100020004000800100020>]
204[16<0040002000100008000400020001800040002000100008000400020001000080>]
205[16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>]
206[8<80>]
207[8<8040201000000000>]
208[8<84cc000048cc0000>]
209[8<9900009900000000>]
210[8<08040201804020100800020180002010>]
211[8<2418814242811824>]
212[8<66999966>]
213[8<8000000008000000>]
214[8<70f8d8f870000000>]
215[8<0814224180402010>]
216[8<aa00440a11a04400>]
217[8<018245aa45820100>]
218[8<221c224180808041>]
219[8<88000000>]
220[8<0855800080550800>]
221[8<2844004482440044>]
222[8<0810204080412214>]
223[8<00>]]]def
224/Dfill{
225 transform /maxy exch def /maxx exch def
226 transform /miny exch def /minx exch def
227 minx maxx gt{/minx maxx /maxx minx def def}if
228 miny maxy gt{/miny maxy /maxy miny def def}if
229 Dpatterns Dstipple 1 sub get exch 1 sub get
230 aload pop /stip exch def /stipw exch def /stiph 128 def
231 /imatrix[stipw 0 0 stiph 0 0]def
232 /tmatrix[stipw 0 0 stiph 0 0]def
233 /minx minx cvi stiph idiv stiph mul def
234 /miny miny cvi stipw idiv stipw mul def
235 gsave eoclip 0 setgray
236 miny stiph maxy{
237 tmatrix exch 5 exch put
238 minx stipw maxx{
239 tmatrix exch 4 exch put tmatrix setmatrix
240 stipw stiph true imatrix {stip} imagemask
241 }for
242 }for
243 grestore
244}def
245/Dp{Dfill Dstroke}def
246/DP{Dfill currentpoint newpath moveto}def
247end
248
249/ditstart{$DITroff begin
250 /nfonts 60 def % NFONTS makedev/ditroff dependent!
251 /fonts[nfonts{0}repeat]def
252 /fontnames[nfonts{()}repeat]def
253/docsave save def
254}def
255
256% character outcalls
257/oc{
258 /pswid exch def /cc exch def /name exch def
259 /ditwid pswid fontsize mul resolution mul 72000 div def
260 /ditsiz fontsize resolution mul 72 div def
261 ocprocs name known{ocprocs name get exec}{name cb}ifelse
262}def
263/fractm [.65 0 0 .6 0 0] def
264/fraction{
265 /fden exch def /fnum exch def gsave /cf currentfont def
266 cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
267 fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
268 grestore ditwid 0 rmoveto
269}def
270/oce{grestore ditwid 0 rmoveto}def
271/dm{ditsiz mul}def
272/ocprocs 50 dict def ocprocs begin
273(14){(1)(4)fraction}def
274(12){(1)(2)fraction}def
275(34){(3)(4)fraction}def
276(13){(1)(3)fraction}def
277(23){(2)(3)fraction}def
278(18){(1)(8)fraction}def
279(38){(3)(8)fraction}def
280(58){(5)(8)fraction}def
281(78){(7)(8)fraction}def
282(sr){gsave 0 .06 dm rmoveto(\326)show oce}def
283(is){gsave 0 .15 dm rmoveto(\362)show oce}def
284(->){gsave 0 .02 dm rmoveto(\256)show oce}def
285(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
286(==){gsave 0 .05 dm rmoveto(\272)show oce}def
287(uc){gsave currentpoint 400 .009 dm mul add translate
288 8 -8 scale ucseal oce}def
289end
290
291% an attempt at a PostScript FONT to implement ditroff special chars
292% this will enable us to
293% cache the little buggers
294% generate faster, more compact PS out of psdit
295% confuse everyone (including myself)!
29650 dict dup begin
297/FontType 3 def
298/FontName /DIThacks def
299/FontMatrix [.001 0 0 .001 0 0] def
300/FontBBox [-260 -260 900 900] def% a lie but ...
301/Encoding 256 array def
3020 1 255{Encoding exch /.notdef put}for
303Encoding
304 dup 8#040/space put %space
305 dup 8#110/rc put %right ceil
306 dup 8#111/lt put %left top curl
307 dup 8#112/bv put %bold vert
308 dup 8#113/lk put %left mid curl
309 dup 8#114/lb put %left bot curl
310 dup 8#115/rt put %right top curl
311 dup 8#116/rk put %right mid curl
312 dup 8#117/rb put %right bot curl
313 dup 8#120/rf put %right floor
314 dup 8#121/lf put %left floor
315 dup 8#122/lc put %left ceil
316 dup 8#140/sq put %square
317 dup 8#141/bx put %box
318 dup 8#142/ci put %circle
319 dup 8#143/br put %box rule
320 dup 8#144/rn put %root extender
321 dup 8#145/vr put %vertical rule
322 dup 8#146/ob put %outline bullet
323 dup 8#147/bu put %bullet
324 dup 8#150/ru put %rule
325 dup 8#151/ul put %underline
326 pop
327/DITfd 100 dict def
328/BuildChar{0 begin
329 /cc exch def /fd exch def
330 /charname fd /Encoding get cc get def
331 /charwid fd /Metrics get charname get def
332 /charproc fd /CharProcs get charname get def
333 charwid 0 fd /FontBBox get aload pop setcachedevice
334 2 setlinejoin 40 setlinewidth
335 newpath 0 0 moveto gsave charproc grestore
336 end}def
337/BuildChar load 0 DITfd put
338/CharProcs 50 dict def
339CharProcs begin
340/space{}def
341/.notdef{}def
342/ru{500 0 rls}def
343/rn{0 840 moveto 500 0 rls}def
344/vr{0 800 moveto 0 -770 rls}def
345/bv{0 800 moveto 0 -1000 rls}def
346/br{0 840 moveto 0 -1000 rls}def
347/ul{0 -140 moveto 500 0 rls}def
348/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
349/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
350/sq{80 0 rmoveto currentpoint dround newpath moveto
351 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
352/bx{80 0 rmoveto currentpoint dround newpath moveto
353 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
354/ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
355 50 setlinewidth stroke}def
356
357/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
358/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
359/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
360/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
361/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
362 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
363/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
364 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
365/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
366/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
367/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
368/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
369end
370
371/Metrics 50 dict def Metrics begin
372/.notdef 0 def
373/space 500 def
374/ru 500 def
375/br 0 def
376/lt 416 def
377/lb 416 def
378/rt 416 def
379/rb 416 def
380/lk 416 def
381/rk 416 def
382/rc 416 def
383/lc 416 def
384/rf 416 def
385/lf 416 def
386/bv 416 def
387/ob 350 def
388/bu 350 def
389/ci 750 def
390/bx 750 def
391/sq 750 def
392/rn 500 def
393/ul 500 def
394/vr 0 def
395end
396
397DITfd begin
398/s2 500 def /s4 250 def /s3 333 def
399/a4p{arcto pop pop pop pop}def
400/2cx{2 copy exch}def
401/rls{rlineto stroke}def
402/currx{currentpoint pop}def
403/dround{transform round exch round exch itransform} def
404end
405end
406/DIThacks exch definefont pop
407ditstart
408(psc)xT
409576 1 1 xr
4101(Times-Roman)xf 1 f
4112(Times-Italic)xf 2 f
4123(Times-Bold)xf 3 f
4134(Times-BoldItalic)xf 4 f
4145(Helvetica)xf 5 f
4156(Helvetica-Bold)xf 6 f
4167(Courier)xf 7 f
4178(Courier-Bold)xf 8 f
4189(Symbol)xf 9 f
41910(DIThacks)xf 10 f
42010 s
4211 f
422xi
423%%EndProlog
424
425%%Page: 1 1
42610 s 10 xH 0 xS 1 f
4273 f
42814 s
4291205 1206(LIBTP:)N
4301633(Portable,)X
4312100(M)X
4322206(odular)X
4332551(Transactions)X
4343202(for)X
4353374(UNIX)X
4361 f
43711 s
4383661 1162(1)N
4392 f
44012 s
4412182 1398(Margo)N
4422467(Seltzer)X
4432171 1494(Michael)N
4442511(Olson)X
4451800 1590(University)N
4462225(of)X
4472324(California,)X
4482773(Berkeley)X
4493 f
4502277 1878(Abstract)N
4511 f
45210 s
453755 2001(Transactions)N
4541198(provide)X
4551475(a)X
4561543(useful)X
4571771(programming)X
4582239(paradigm)X
4592574(for)X
4602700(maintaining)X
4613114(logical)X
4623364(consistency,)X
4633790(arbitrating)X
4644156(con-)X
465555 2091(current)N
466808(access,)X
4671059(and)X
4681200(managing)X
4691540(recovery.)X
4701886(In)X
4711977(traditional)X
4722330(UNIX)X
4732555(systems,)X
4742852(the)X
4752974(only)X
4763140(easy)X
4773307(way)X
4783465(of)X
4793556(using)X
4803753(transactions)X
4814160(is)X
4824237(to)X
483555 2181(purchase)N
484876(a)X
485947(database)X
4861258(system.)X
4871554(Such)X
4881748(systems)X
4892035(are)X
4902168(often)X
4912367(slow,)X
4922572(costly,)X
4932817(and)X
4942967(may)X
4953139(not)X
4963275(provide)X
4973554(the)X
4983686(exact)X
4993890(functionality)X
500555 2271(desired.)N
501848(This)X
5021011(paper)X
5031210(presents)X
5041493(the)X
5051611(design,)X
5061860(implementation,)X
5072402(and)X
5082538(performance)X
5092965(of)X
5103052(LIBTP,)X
5113314(a)X
5123370(simple,)X
5133623(non-proprietary)X
5144147(tran-)X
515555 2361(saction)N
516809(library)X
5171050(using)X
5181249(the)X
5191373(4.4BSD)X
5201654(database)X
5211957(access)X
5222189(routines)X
5232473(\()X
5243 f
5252500(db)X
5261 f
5272588(\(3\)\).)X
5282775(On)X
5292899(a)X
5302961(conventional)X
5313401(transaction)X
5323779(processing)X
5334148(style)X
534555 2451(benchmark,)N
535959(its)X
5361061(performance)X
5371495(is)X
5381575(approximately)X
5392065(85%)X
5402239(that)X
5412386(of)X
5422480(the)X
5432604(database)X
5442907(access)X
5453139(routines)X
5463423(without)X
5473693(transaction)X
5484071(protec-)X
549555 2541(tion,)N
550725(200%)X
551938(that)X
5521084(of)X
5531177(using)X
5543 f
5551376(fsync)X
5561 f
5571554(\(2\))X
5581674(to)X
5591761(commit)X
5602030(modi\256cations)X
5612490(to)X
5622577(disk,)X
5632755(and)X
5642896(125%)X
5653108(that)X
5663253(of)X
5673345(a)X
5683406(commercial)X
5693810(relational)X
5704138(data-)X
571555 2631(base)N
572718(system.)X
5733 f
574555 2817(1.)N
575655(Introduction)X
5761 f
577755 2940(Transactions)N
5781186(are)X
5791306(used)X
5801474(in)X
5811557(database)X
5821855(systems)X
5832129(to)X
5842212(enable)X
5852443(concurrent)X
5862807(users)X
5872992(to)X
5883074(apply)X
5893272(multi-operation)X
5903790(updates)X
5914055(without)X
592555 3030(violating)N
593863(the)X
594985(integrity)X
5951280(of)X
5961371(the)X
5971493(database.)X
5981814(They)X
5992003(provide)X
6002271(the)X
6012392(properties)X
6022736(of)X
6032826(atomicity,)X
6043171(consistency,)X
6053588(isolation,)X
6063906(and)X
6074045(durabil-)X
608555 3120(ity.)N
609701(By)X
610816(atomicity,)X
6111160(we)X
6121276(mean)X
6131472(that)X
6141614(the)X
6151734(set)X
6161845(of)X
6171934(updates)X
6182200(comprising)X
6192581(a)X
6202638(transaction)X
6213011(must)X
6223187(be)X
6233284(applied)X
6243541(as)X
6253629(a)X
6263686(single)X
6273898(unit;)X
6284085(that)X
6294226(is,)X
630555 3210(they)N
631714(must)X
632890(either)X
6331094(all)X
6341195(be)X
6351292(applied)X
6361549(to)X
6371632(the)X
6381751(database)X
6392049(or)X
6402137(all)X
6412238(be)X
6422335(absent.)X
6432601(Consistency)X
6443013(requires)X
6453293(that)X
6463434(a)X
6473491(transaction)X
6483864(take)X
6494019(the)X
6504138(data-)X
651555 3300(base)N
652725(from)X
653908(one)X
6541051(logically)X
6551358(consistent)X
6561704(state)X
6571877(to)X
6581965(another.)X
6592272(The)X
6602423(property)X
6612721(of)X
6622814(isolation)X
6633115(requires)X
6643400(that)X
6653546(concurrent)X
6663916(transactions)X
667555 3390(yield)N
668750(results)X
669994(which)X
6701225(are)X
6711358(indistinguishable)X
6721938(from)X
6732128(the)X
6742260(results)X
6752503(which)X
6762733(would)X
6772967(be)X
6783077(obtained)X
6793387(by)X
6803501(running)X
6813784(the)X
6823916(transactions)X
683555 3480(sequentially.)N
6841002(Finally,)X
6851268(durability)X
6861599(requires)X
6871878(that)X
6882018(once)X
6892190(transactions)X
6902593(have)X
6912765(been)X
6922937(committed,)X
6933319(their)X
6943486(results)X
6953715(must)X
6963890(be)X
6973986(preserved)X
698555 3570(across)N
699776(system)X
7001018(failures)X
7011279([TPCB90].)X
702755 3693(Although)N
7031080(these)X
7041268(properties)X
7051612(are)X
7061734(most)X
7071912(frequently)X
7082265(discussed)X
7092595(in)X
7102680(the)X
7112801(context)X
7123060(of)X
7133150(databases,)X
7143501(they)X
7153661(are)X
7163782(useful)X
7174000(program-)X
718555 3783(ming)N
719750(paradigms)X
7201114(for)X
7211238(more)X
7221433(general)X
7231700(purpose)X
7241984(applications.)X
7252441(There)X
7262659(are)X
7272788(several)X
7283046(different)X
7293353(situations)X
7303689(where)X
7313916(transactions)X
732555 3873(can)N
733687(be)X
734783(used)X
735950(to)X
7361032(replace)X
7371285(current)X
7381533(ad-hoc)X
7391772(mechanisms.)X
740755 3996(One)N
741910(situation)X
7421206(is)X
7431280(when)X
7441475(multiple)X
7451762(\256les)X
7461916(or)X
7472004(parts)X
7482181(of)X
7492269(\256les)X
7502422(need)X
7512594(to)X
7522676(be)X
7532772(updated)X
7543046(in)X
7553128(an)X
7563224(atomic)X
7573462(fashion.)X
7583758(For)X
7593889(example,)X
7604201(the)X
761555 4086(traditional)N
762907(UNIX)X
7631131(\256le)X
7641256(system)X
7651501(uses)X
7661661(ordering)X
7671955(constraints)X
7682324(to)X
7692408(achieve)X
7702676(recoverability)X
7713144(in)X
7723228(the)X
7733348(face)X
7743505(of)X
7753594(crashes.)X
7763893(When)X
7774107(a)X
7784165(new)X
779555 4176(\256le)N
780678(is)X
781752(created,)X
7821026(its)X
7831122(inode)X
7841321(is)X
7851395(written)X
7861642(to)X
7871724(disk)X
7881877(before)X
7892103(the)X
7902221(new)X
7912375(\256le)X
7922497(is)X
7932570(added)X
7942782(to)X
7952864(the)X
7962982(directory)X
7973292(structure.)X
7983633(This)X
7993795(guarantees)X
8004159(that,)X
801555 4266(if)N
802627(the)X
803748(system)X
804993(crashes)X
8051253(between)X
8061544(the)X
8071665(two)X
8081808(I/O's,)X
8092016(the)X
8102137(directory)X
8112450(does)X
8122620(not)X
8132744(contain)X
8143002(a)X
8153060 0.4531(reference)AX
8163383(to)X
8173467(an)X
8183565(invalid)X
8193809(inode.)X
8204049(In)X
8214138(actu-)X
822555 4356(ality,)N
823741(the)X
824863(desired)X
8251119(effect)X
8261326(is)X
8271402(that)X
8281545(these)X
8291733(two)X
8301876(updates)X
8312144(have)X
8322319(the)X
8332440(transactional)X
8342873(property)X
8353168(of)X
8363258(atomicity)X
8373583(\(either)X
8383816(both)X
8393981(writes)X
8404200(are)X
841555 4446(visible)N
842790(or)X
843879(neither)X
8441124(is\).)X
8451266(Rather)X
8461501(than)X
8471660(building)X
8481947(special)X
8492191(purpose)X
8502466(recovery)X
8512769(mechanisms)X
8523186(into)X
8533331(the)X
8543450(\256le)X
8553573(system)X
8563816(or)X
8573904(related)X
8584144(tools)X
859555 4536(\()N
8602 f
861582(e.g.)X
8623 f
863726(fsck)X
8641 f
865864(\(8\)\),)X
8661033(one)X
8671177(could)X
8681383(use)X
8691518(general)X
8701783(purpose)X
8712064(transaction)X
8722443(recovery)X
8732752(protocols)X
8743077(after)X
8753252(system)X
8763501(failure.)X
8773778(Any)X
8783943(application)X
879555 4626(that)N
880705(needs)X
881918(to)X
8821010(keep)X
8831192(multiple,)X
8841508(related)X
8851757(\256les)X
8861920(\(or)X
8872044(directories\))X
8882440(consistent)X
8892790(should)X
8903032(do)X
8913141(so)X
8923241(using)X
8933443(transactions.)X
8943895(Source)X
8954147(code)X
896555 4716(control)N
897805(systems,)X
8981101(such)X
8991271(as)X
9001361(RCS)X
9011534(and)X
9021673(SCCS,)X
9031910(should)X
9042146(use)X
9052276(transaction)X
9062651(semantics)X
9072990(to)X
9083075(allow)X
9093276(the)X
9103397(``checking)X
9113764(in'')X
9123903(of)X
9133992(groups)X
9144232(of)X
915555 4806(related)N
916801(\256les.)X
9171001(In)X
9181095(this)X
9191237(way,)X
9201418(if)X
9211493(the)X
9221617 0.2841(``check-in'')AX
9232028(fails,)X
9242212(the)X
9252336(transaction)X
9262714(may)X
9272878(be)X
9282980(aborted,)X
9293267(backing)X
9303547(out)X
9313675(the)X
9323799(partial)X
9334030(``check-)X
934555 4896(in'')N
935691(leaving)X
936947(the)X
9371065(source)X
9381295(repository)X
9391640(in)X
9401722(a)X
9411778(consistent)X
9422118(state.)X
943755 5019(A)N
944842(second)X
9451094(situation)X
9461398(where)X
9471624(transactions)X
9482036(can)X
9492177(be)X
9502282(used)X
9512458(to)X
9522549(replace)X
9532811(current)X
9543068(ad-hoc)X
9553316(mechanisms)X
9563741(is)X
9573822(in)X
9583912(applications)X
959555 5109(where)N
960776(concurrent)X
9611144(updates)X
9621413(to)X
9631499(a)X
9641559(shared)X
9651793(\256le)X
9661919(are)X
9672042(desired,)X
9682318(but)X
9692444(there)X
9702629(is)X
9712706(logical)X
9722948(consistency)X
9733345(of)X
9743435(the)X
9753556(data)X
9763713(which)X
9773932(needs)X
9784138(to)X
9794223(be)X
980555 5199(preserved.)N
981928(For)X
9821059(example,)X
9831371(when)X
9841565(the)X
9851683(password)X
9862006(\256le)X
9872128(is)X
9882201(updated,)X
9892495(\256le)X
9902617(locking)X
9912877(is)X
9922950(used)X
9933117(to)X
9943199(disallow)X
9953490(concurrent)X
9963854(access.)X
9974120(Tran-)X
998555 5289(saction)N
999804(semantics)X
10001142(on)X
10011244(the)X
10021364(password)X
10031689(\256les)X
10041844(would)X
10052066(allow)X
10062266(concurrent)X
10072632(updates,)X
10082919(while)X
10093119(preserving)X
10103479(the)X
10113598(logical)X
10123837(consistency)X
10134232(of)X
1014555 5379(the)N
1015681(password)X
10161012(database.)X
10171357(Similarly,)X
10181702(UNIX)X
10191930(utilities)X
10202196(which)X
10212419(rewrite)X
10222674(\256les)X
10232834(face)X
10242996(a)X
10253059(potential)X
10263366(race)X
10273528(condition)X
10283857(between)X
10294152(their)X
1030555 5469(rewriting)N
1031871(a)X
1032929(\256le)X
10331053(and)X
10341191(another)X
10351453(process)X
10361715(reading)X
10371977(the)X
10382096(\256le.)X
10392259(For)X
10402391(example,)X
10412704(the)X
10422823(compiler)X
10433129(\(more)X
10443342(precisely,)X
10453673(the)X
10463792(assembler\))X
10474161(may)X
10488 s
104910 f
1050555 5541(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
10515 s
10521 f
1053727 5619(1)N
10548 s
1055763 5644(To)N
1056850(appear)X
10571035(in)X
10581101(the)X
10592 f
10601195(Proceedings)X
10611530(of)X
10621596(the)X
10631690(1992)X
10641834(Winter)X
10652024(Usenix)X
10661 f
10672201(,)X
10682233(San)X
10692345(Francisco,)X
10702625(CA,)X
10712746(January)X
10722960(1992.)X
1073
10742 p
1075%%Page: 2 2
10768 s 8 xH 0 xS 1 f
107710 s
10783 f
10791 f
1080555 630(have)N
1081737(to)X
1082829(rewrite)X
10831087(a)X
10841152(\256le)X
10851283(to)X
10861374(which)X
10871599(it)X
10881672(has)X
10891808(write)X
10902002(permission)X
10912382(in)X
10922473(a)X
10932538(directory)X
10942857(to)X
10952948(which)X
10963173(it)X
10973246(does)X
10983422(not)X
10993553(have)X
11003734(write)X
11013928(permission.)X
1102555 720(While)N
1103779(the)X
1104904(``.o'')X
11051099(\256le)X
11061228(is)X
11071308(being)X
11081513(written,)X
11091787(another)X
11102055(utility)X
11112272(such)X
11122446(as)X
11133 f
11142540(nm)X
11151 f
11162651(\(1\))X
11172772(or)X
11183 f
11192866(ar)X
11201 f
11212942(\(1\))X
11223063(may)X
11233228(read)X
11243394(the)X
11253519(\256le)X
11263648(and)X
11273791(produce)X
11284077(invalid)X
1129555 810(results)N
1130790(since)X
1131981(the)X
11321105(\256le)X
11331233(has)X
11341366(not)X
11351494(been)X
11361672(completely)X
11372054(written.)X
11382347(Currently,)X
11392700(some)X
11402895(utilities)X
11413160(use)X
11423293(special)X
11433542(purpose)X
11443821(code)X
11453998(to)X
11464085(handle)X
1147555 900(such)N
1148722(cases)X
1149912(while)X
11501110(others)X
11511326(ignore)X
11521551(the)X
11531669(problem)X
11541956(and)X
11552092(force)X
11562278(users)X
11572463(to)X
11582545(live)X
11592685(with)X
11602847(the)X
11612965(consequences.)X
1162755 1023(In)N
1163845(this)X
1164983(paper,)X
11651205(we)X
11661322(present)X
11671577(a)X
11681635(simple)X
11691870(library)X
11702106(which)X
11712324(provides)X
11722622(transaction)X
11732996(semantics)X
11743334(\(atomicity,)X
11753705(consistency,)X
11764121(isola-)X
1177555 1113(tion,)N
1178720(and)X
1179857(durability\).)X
11801236(The)X
11811382(4.4BSD)X
11821658(database)X
11831956(access)X
11842182(methods)X
11852473(have)X
11862645(been)X
11872817(modi\256ed)X
11883121(to)X
11893203(use)X
11903330(this)X
11913465(library,)X
11923719(optionally)X
11934063(provid-)X
1194555 1203(ing)N
1195682(shared)X
1196917(buffer)X
11971139(management)X
11981574(between)X
11991867(applications,)X
12002298(locking,)X
12012582(and)X
12022722(transaction)X
12033098(semantics.)X
12043478(Any)X
12053640(UNIX)X
12063865(program)X
12074161(may)X
1208555 1293(transaction)N
1209930(protect)X
12101176(its)X
12111274(data)X
12121430(by)X
12131532(requesting)X
12141888(transaction)X
12152262(protection)X
12162609(with)X
12172773(the)X
12183 f
12192893(db)X
12201 f
12212981(\(3\))X
12223097(library)X
12233333(or)X
12243422(by)X
12253524(adding)X
12263764(appropriate)X
12274152(calls)X
1228555 1383(to)N
1229646(the)X
1230773(transaction)X
12311154(manager,)X
12321480(buffer)X
12331706(manager,)X
12342032(lock)X
12352199(manager,)X
12362525(and)X
12372670(log)X
12382801(manager.)X
12393147(The)X
12403301(library)X
12413543(routines)X
12423829(may)X
12433995(be)X
12444099(linked)X
1245555 1473(into)N
1246708(the)X
1247834(host)X
1248995(application)X
12491379(and)X
12501523(called)X
12511743(by)X
12521851(subroutine)X
12532217(interface,)X
12542547(or)X
12552642(they)X
12562808(may)X
12572974(reside)X
12583194(in)X
12593284(a)X
12603348(separate)X
12613640(server)X
12623865(process.)X
12634174(The)X
1264555 1563(server)N
1265772(architecture)X
12661172(provides)X
12671468(for)X
12681582(network)X
12691865(access)X
12702091(and)X
12712227(better)X
12722430(protection)X
12732775(mechanisms.)X
12743 f
1275555 1749(2.)N
1276655(Related)X
1277938(Work)X
12781 f
1279755 1872(There)N
12801000(has)X
12811164(been)X
12821373(much)X
12831608(discussion)X
12841998(in)X
12852117(recent)X
12862371(years)X
12872597(about)X
12882831(new)X
12893021(transaction)X
12903429(models)X
12913716(and)X
12923888(architectures)X
1293555 1962 0.1172([SPEC88][NODI90][CHEN91][MOHA91].)AN
12942009(Much)X
12952220(of)X
12962310(this)X
12972448(work)X
12982636(focuses)X
12992900(on)X
13003003(new)X
13013160(ways)X
13023348(to)X
13033433(model)X
13043656(transactions)X
13054062(and)X
13064201(the)X
1307555 2052(interactions)N
1308953(between)X
13091245(them,)X
13101449(while)X
13111651(the)X
13121772(work)X
13131960(presented)X
13142291(here)X
13152453(focuses)X
13162717(on)X
13172820(the)X
13182941(implementation)X
13193466(and)X
13203605(performance)X
13214035(of)X
13224125(tradi-)X
1323555 2142(tional)N
1324757(transaction)X
13251129(techniques)X
13261492(\(write-ahead)X
13271919(logging)X
13282183(and)X
13292319(two-phase)X
13302669(locking\))X
13312956(on)X
13323056(a)X
13333112(standard)X
13343404(operating)X
13353727(system)X
13363969(\(UNIX\).)X
1337755 2265(Such)N
1338947(traditional)X
13391308(operating)X
13401643(systems)X
13411928(are)X
13422059(often)X
13432256(criticized)X
13442587(for)X
13452713(their)X
13462892(inability)X
13473190(to)X
13483283(perform)X
13493573(transaction)X
13503956(processing)X
1351555 2355(adequately.)N
1352971([STON81])X
13531342(cites)X
13541517(three)X
13551706(main)X
13561894(areas)X
13572088(of)X
13582183(inadequate)X
13592559(support:)X
13602849(buffer)X
13613074(management,)X
13623532(the)X
13633658(\256le)X
13643788(system,)X
13654058(and)X
13664201(the)X
1367555 2445(process)N
1368823(structure.)X
13691191(These)X
13701410(arguments)X
13711771(are)X
13721897(summarized)X
13732316(in)X
13742405(table)X
13752587(one.)X
13762769(Fortunately,)X
13773184(much)X
13783388(has)X
13793521(changed)X
13803815(since)X
13814006(1981.)X
13824232(In)X
1383555 2535(the)N
1384683(area)X
1385848(of)X
1386945(buffer)X
13871172(management,)X
13881632(most)X
13891817(UNIX)X
13902048(systems)X
13912331(provide)X
13922606(the)X
13932734(ability)X
13942968(to)X
13953060(memory)X
13963357(map)X
13973525(\256les,)X
13983708(thus)X
13993870(obviating)X
14004201(the)X
1401555 2625(need)N
1402734(for)X
1403855(a)X
1404918(copy)X
14051101(between)X
14061396(kernel)X
14071624(and)X
14081766(user)X
14091926(space.)X
14102171(If)X
14112251(a)X
14122313(database)X
14132616(system)X
14142864(is)X
14152943(going)X
14163151(to)X
14173239(use)X
14183372(the)X
14193496(\256le)X
14203624(system)X
14213872(buffer)X
14224095(cache,)X
1423555 2715(then)N
1424719(a)X
1425781(system)X
14261029(call)X
14271171(is)X
14281250(required.)X
14291584(However,)X
14301924(if)X
14311998(buffering)X
14322322(is)X
14332400(provided)X
14342710(at)X
14352793(user)X
14362952(level)X
14373133(using)X
14383331(shared)X
14393566(memory,)X
14403878(as)X
14413970(in)X
14424057(LIBTP,)X
1443555 2805(buffer)N
1444776(management)X
14451210(is)X
14461287(only)X
14471452(as)X
14481542(slow)X
14491716(as)X
14501806(access)X
14512035(to)X
14522120(shared)X
14532353(memory)X
14542643(and)X
14552782(any)X
14562921(replacement)X
14573337(algorithm)X
14583671(may)X
14593832(be)X
14603931(used.)X
14614121(Since)X
1462555 2895(multiple)N
1463849(processes)X
14641185(can)X
14651325(access)X
14661559(the)X
14671685(shared)X
14681923(data,)X
14692105(prefetching)X
14702499(may)X
14712665(be)X
14722769(accomplished)X
14733238(by)X
14743346(separate)X
14753638(processes)X
14763973(or)X
14774067(threads)X
1478555 2985(whose)N
1479782(sole)X
1480932(purpose)X
14811207(is)X
14821281(to)X
14831364(prefetch)X
14841649(pages)X
14851853(and)X
14861990(wait)X
14872149(on)X
14882250(them.)X
14892471(There)X
14902680(is)X
14912754(still)X
14922894(no)X
14932995(way)X
14943150(to)X
14953233(enforce)X
14963496(write)X
14973682(ordering)X
14983975(other)X
14994161(than)X
1500555 3075(keeping)N
1501829(pages)X
15021032(in)X
15031114(user)X
15041268(memory)X
15051555(and)X
15061691(using)X
15071884(the)X
15083 f
15092002(fsync)X
15101 f
15112180(\(3\))X
15122294(system)X
15132536(call)X
15142672(to)X
15152754(perform)X
15163033(synchronous)X
15173458(writes.)X
1518755 3198(In)N
1519845(the)X
1520966(area)X
15211124(of)X
15221214(\256le)X
15231339(systems,)X
15241635(the)X
15251756(fast)X
15261895(\256le)X
15272020(system)X
15282265(\(FFS\))X
15292474([MCKU84])X
15302871(allows)X
15313103(allocation)X
15323442(in)X
15333527(units)X
15343704(up)X
15353806(to)X
15363890(64KBytes)X
15374232(as)X
1538555 3288(opposed)N
1539846(to)X
1540932(the)X
15411054(4KByte)X
15421327(and)X
15431466(8KByte)X
15441738(\256gures)X
15451979(quoted)X
15462220(in)X
15472305([STON81].)X
15482711(The)X
15492859(measurements)X
15503341(in)X
15513426(this)X
15523564(paper)X
15533766(were)X
15543946(taken)X
15554143(from)X
1556555 3378(an)N
1557655(8KByte)X
1558928(FFS,)X
15591104(but)X
15601230(as)X
15611320(LIBTP)X
15621565(runs)X
15631726(exclusively)X
15642114(in)X
15652199(user)X
15662356(space,)X
15672578(there)X
15682762(is)X
15692838(nothing)X
15703105(to)X
15713190(prevent)X
15723454(it)X
15733521(from)X
15743700(being)X
15753901(run)X
15764031(on)X
15774134(other)X
1578555 3468(UNIX)N
1579776(compatible)X
15801152(\256le)X
15811274(systems)X
15821547(\(e.g.)X
15831710(log-structured)X
15842180([ROSE91],)X
15852558(extent-based,)X
15863004(or)X
15873091(multi-block)X
15883484([SELT91]\).)X
1589755 3591(Finally,)N
15901029(with)X
15911199(regard)X
15921433(to)X
15931523(the)X
15941648(process)X
15951916(structure,)X
15962244(neither)X
15972494(context)X
15982757(switch)X
15992993(time)X
16003162(nor)X
16013296(scheduling)X
16023670(around)X
16033920(semaphores)X
1604555 3681(seems)N
1605785(to)X
1606881(affect)X
16071099(the)X
16081231(system)X
16091487(performance.)X
16101968(However,)X
16112317(the)X
16122449(implementation)X
16132984(of)X
16143084(semaphores)X
16153496(can)X
16163641(impact)X
16173892(performance)X
1618555 3771(tremendously.)N
16191051(This)X
16201213(is)X
16211286(discussed)X
16221613(in)X
16231695(more)X
16241880(detail)X
16252078(in)X
16262160(section)X
16272407(4.3.)X
1628755 3894(The)N
1629908(Tuxedo)X
16301181(system)X
16311431(from)X
16321615(AT&T)X
16331861(is)X
16341941(a)X
16352004(transaction)X
16362383(manager)X
16372687(which)X
16382910(coordinates)X
16393307(distributed)X
16403676(transaction)X
16414055(commit)X
1642555 3984(from)N
1643738(a)X
1644801(variety)X
16451051(of)X
16461145(different)X
16471449(local)X
16481632(transaction)X
16492011(managers.)X
16502386(At)X
16512493(this)X
16522634(time,)X
16532822(LIBTP)X
16543070(does)X
16553243(not)X
16563371(have)X
16573549(its)X
16583650(own)X
16593814(mechanism)X
16604205(for)X
1661555 4074(distributed)N
1662942(commit)X
16631231(processing,)X
16641639(but)X
16651786(could)X
16662009(be)X
16672130(used)X
16682322(as)X
16692434(a)X
16702515(local)X
16712716(transaction)X
16723113(agent)X
16733331(by)X
16743455(systems)X
16753752(such)X
16763943(as)X
16774054(Tuxedo)X
1678555 4164([ANDR89].)N
167910 f
1680863 4393(i)N
1681870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
16821 f
1683903 4483(Buffer)N
16841133(Management)X
168510 f
16861672(g)X
16871 f
16881720(Data)X
16891892(must)X
16902067(be)X
16912163(copied)X
16922397(between)X
16932685(kernel)X
16942906(space)X
16953105(and)X
16963241(user)X
16973395(space.)X
169810 f
16991672 4573(g)N
17001 f
17011720(Buffer)X
17021950(pool)X
17032112(access)X
17042338(is)X
17052411(too)X
17062533(slow.)X
170710 f
17081672 4663(g)N
17091 f
17101720(There)X
17111928(is)X
17122001(no)X
17132101(way)X
17142255(to)X
17152337(request)X
17162589(prefetch.)X
171710 f
17181672 4753(g)N
17191 f
17201720(Replacement)X
17212159(is)X
17222232(usually)X
17232483(LRU)X
17242663(which)X
17252879(may)X
17263037(be)X
17273133(suboptimal)X
17283508(for)X
17293622(databases.)X
173010 f
17311672 4843(g)N
17321 f
17331720(There)X
17341928(is)X
17352001(no)X
17362101(way)X
17372255(to)X
17382337(guarantee)X
17392670(write)X
17402855(ordering.)X
174110 f
1742863 4853(i)N
1743870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
17441 f
1745903 4943(File)N
17461047(System)X
174710 f
17481672(g)X
17491 f
17501720(Allocation)X
17512078(is)X
17522151(done)X
17532327(in)X
17542409(small)X
17552602(blocks)X
17562831(\(usually)X
17573109(4K)X
17583227(or)X
17593314(8K\).)X
176010 f
17611672 5033(g)N
17621 f
17631720(Logical)X
17641985(organization)X
17652406(of)X
17662493(\256les)X
17672646(is)X
17682719(redundantly)X
17693122(expressed.)X
177010 f
1771863 5043(i)N
1772870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
17731 f
1774903 5133(Process)N
17751168(Structure)X
177610 f
17771672(g)X
17781 f
17791720(Context)X
17801993(switching)X
17812324(and)X
17822460(message)X
17832752(passing)X
17843012(are)X
17853131(too)X
17863253(slow.)X
178710 f
17881672 5223(g)N
17891 f
17901720(A)X
17911798(process)X
17922059(may)X
17932217(be)X
17942313(descheduled)X
17952730(while)X
17962928(holding)X
17973192(a)X
17983248(semaphore.)X
179910 f
1800863 5233(i)N
1801870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
1802863(c)X
18035193(c)Y
18045113(c)Y
18055033(c)Y
18064953(c)Y
18074873(c)Y
18084793(c)Y
18094713(c)Y
18104633(c)Y
18114553(c)Y
18124473(c)Y
18133990 5233(c)N
18145193(c)Y
18155113(c)Y
18165033(c)Y
18174953(c)Y
18184873(c)Y
18194793(c)Y
18204713(c)Y
18214633(c)Y
18224553(c)Y
18234473(c)Y
18243 f
18251156 5446(Table)N
18261371(One:)X
18271560(Shortcomings)X
18282051(of)X
18292138(UNIX)X
18302363(transaction)X
18312770(support)X
18323056(cited)X
18333241(in)X
18343327([STON81].)X
1835
18363 p
1837%%Page: 3 3
183810 s 10 xH 0 xS 3 f
18391 f
1840755 630(The)N
1841901(transaction)X
18421274(architecture)X
18431675(presented)X
18442004(in)X
18452087([YOUN91])X
18462474(is)X
18472548(very)X
18482712(similar)X
18492955(to)X
18503038(that)X
18513179(implemented)X
18523618(in)X
18533701(the)X
18543820(LIBTP.)X
18554103(While)X
1856555 720([YOUN91])N
1857947(presents)X
18581236(a)X
18591298(model)X
18601524(for)X
18611644(providing)X
18621981(transaction)X
18632359(services,)X
18642663(this)X
18652803(paper)X
18663007(focuses)X
18673273(on)X
18683378(the)X
18693501(implementation)X
18704028(and)X
18714169(per-)X
1872555 810(formance)N
1873881(of)X
1874970(a)X
18751028(particular)X
18761358(system.)X
18771642(In)X
18781731(addition,)X
18792034(we)X
18802149(provide)X
18812415(detailed)X
18822690(comparisons)X
18833116(with)X
18843279(alternative)X
18853639(solutions:)X
18863970(traditional)X
1887555 900(UNIX)N
1888776(services)X
18891055(and)X
18901191(commercial)X
18911590(database)X
18921887(management)X
18932317(systems.)X
18943 f
1895555 1086(3.)N
1896655(Architecture)X
18971 f
1898755 1209(The)N
1899906(library)X
19001146(is)X
19011224(designed)X
19021534(to)X
19031621(provide)X
19041891(well)X
19052054(de\256ned)X
19062315(interfaces)X
19072653(to)X
19082740(the)X
19092863(services)X
19103147(required)X
19113440(for)X
19123559(transaction)X
19133936(processing.)X
1914555 1299(These)N
1915777(services)X
19161066(are)X
19171195(recovery,)X
19181527(concurrency)X
19191955(control,)X
19202232(and)X
19212378(the)X
19222506(management)X
19232946(of)X
19243043(shared)X
19253283(data.)X
19263487(First)X
19273663(we)X
19283787(will)X
19293941(discuss)X
19304201(the)X
1931555 1389(design)N
1932795(tradeoffs)X
19331112(in)X
19341205(the)X
19351334(selection)X
19361650(of)X
19371748(recovery,)X
19382081(concurrency)X
19392510(control,)X
19402787(and)X
19412933(buffer)X
19423160(management)X
19433600(implementations,)X
19444183(and)X
1945555 1479(then)N
1946713(we)X
1947827(will)X
1948971(present)X
19491223(the)X
19501341(overall)X
19511584(library)X
19521818(architecture)X
19532218(and)X
19542354(module)X
19552614(descriptions.)X
19563 f
1957555 1665(3.1.)N
1958715(Design)X
1959966(Tradeoffs)X
19601 f
19613 f
1962555 1851(3.1.1.)N
1963775(Crash)X
19641004(Recovery)X
19651 f
1966755 1974(The)N
1967909(recovery)X
19681220(protocol)X
19691516(is)X
19701598(responsible)X
19711992(for)X
19722115(providing)X
19732455(the)X
19742582(transaction)X
19752963(semantics)X
19763308(discussed)X
19773644(earlier.)X
19783919(There)X
19794136(are)X
19804263(a)X
1981555 2064(wide)N
1982739(range)X
1983946(of)X
19841041(recovery)X
19851351(protocols)X
19861677(available)X
19871995([HAER83],)X
19882395(but)X
19892525(we)X
19902647(can)X
19912786(crudely)X
19923054(divide)X
19933281(them)X
19943468(into)X
19953619(two)X
19963766(main)X
19973953(categories.)X
1998555 2154(The)N
1999706(\256rst)X
2000856(category)X
20011159(records)X
20021422(all)X
20031528(modi\256cations)X
20041989(to)X
20052077(the)X
20062201(database)X
20072504(in)X
20082592(a)X
20092653(separate)X
20102942(\256le,)X
20113089(and)X
20123230(uses)X
20133393(this)X
20143533(\256le)X
20153660(\(log\))X
20163841(to)X
20173928(back)X
20184105(out)X
20194232(or)X
2020555 2244(reapply)N
2021825(these)X
20221019(modi\256cations)X
20231483(if)X
20241561(a)X
20251626(transaction)X
20262007(aborts)X
20272232(or)X
20282328(the)X
20292455(system)X
20302706(crashes.)X
20313012(We)X
20323153(call)X
20333298(this)X
20343442(set)X
20353560(the)X
20363 f
20373687(logging)X
20383963(protocols)X
20391 f
20404279(.)X
2041555 2334(The)N
2042703(second)X
2043949(category)X
20441249(avoids)X
20451481(the)X
20461602(use)X
20471732(of)X
20481822(a)X
20491881(log)X
20502006(by)X
20512109(carefully)X
20522418(controlling)X
20532792(when)X
20542989(data)X
20553146(are)X
20563268(written)X
20573518(to)X
20583603(disk.)X
20593799(We)X
20603934(call)X
20614073(this)X
20624210(set)X
2063555 2424(the)N
20643 f
2065673(non-logging)X
20661096(protocols)X
20671 f
20681412(.)X
2069755 2547(Non-logging)N
20701185(protocols)X
20711504(hold)X
20721666(dirty)X
20731837(buffers)X
20742085(in)X
20752167(main)X
20762347(memory)X
20772634(or)X
20782721(temporary)X
20793071(\256les)X
20803224(until)X
20813390(commit)X
20823654(and)X
20833790(then)X
20843948(force)X
20854134(these)X
2086555 2637(pages)N
2087769(to)X
2088862(disk)X
20891026(at)X
20901115(transaction)X
20911498(commit.)X
20921813(While)X
20932040(we)X
20942165(can)X
20952308(use)X
20962446(temporary)X
20972807(\256les)X
20982971(to)X
20993064(hold)X
21003237(dirty)X
21013418(pages)X
21023631(that)X
21033781(may)X
21043949(need)X
21054131(to)X
21064223(be)X
2107555 2727(evicted)N
2108810(from)X
2109988(memory)X
21101277(during)X
21111508(a)X
21121566(long-running)X
21132006(transaction,)X
21142400(the)X
21152520(only)X
21162684(user-level)X
21173023(mechanism)X
21183410(to)X
21193494(force)X
21203682(pages)X
21213887(to)X
21223971(disk)X
21234126(is)X
21244201(the)X
21253 f
2126555 2817(fsync)N
21271 f
2128733(\(2\))X
2129850(system)X
21301095(call.)X
21311274(Unfortunately,)X
21323 f
21331767(fsync)X
21341 f
21351945(\(2\))X
21362062(is)X
21372138(an)X
21382237(expensive)X
21392581(system)X
21402826(call)X
21412965(in)X
21423050(that)X
21433193(it)X
21443260(forces)X
21453480(all)X
21463583(pages)X
21473789(of)X
21483879(a)X
21493938(\256le)X
21504062(to)X
21514146(disk,)X
2152555 2907(and)N
2153691(transactions)X
21541094(that)X
21551234(manage)X
21561504(more)X
21571689(than)X
21581847(one)X
21591983(\256le)X
21602105(must)X
21612280(issue)X
21622460(one)X
21632596(call)X
21642732(per)X
21652855(\256le.)X
2166755 3030(In)N
2167853(addition,)X
21683 f
21691166(fsync)X
21701 f
21711344(\(2\))X
21721469(provides)X
21731776(no)X
21741887(way)X
21752051(to)X
21762143(control)X
21772400(the)X
21782528(order)X
21792728(in)X
21802820(which)X
21813046(dirty)X
21823227(pages)X
21833440(are)X
21843569(written)X
21853826(to)X
21863918(disk.)X
21874121(Since)X
2188555 3120(non-logging)N
2189976(protocols)X
21901304(must)X
21911489(sometimes)X
21921861(order)X
21932061(writes)X
21942287(carefully)X
21952603([SULL92],)X
21962987(they)X
21973155(are)X
21983284(dif\256cult)X
21993567(to)X
22003659(implement)X
22014030(on)X
22024139(Unix)X
2203555 3210(systems.)N
2204868(As)X
2205977(a)X
22061033(result,)X
22071251(we)X
22081365(have)X
22091537(chosen)X
22101780(to)X
22111862(implement)X
22122224(a)X
22132280(logging)X
22142544(protocol.)X
2215755 3333(Logging)N
22161050(protocols)X
22171372(may)X
22181534(be)X
22191634(categorized)X
22202029(based)X
22212236(on)X
22222340(how)X
22232502(information)X
22242904(is)X
22252981(logged)X
22263223(\(physically)X
22273602(or)X
22283692(logically\))X
22294022(and)X
22304161(how)X
2231555 3423(much)N
2232767(is)X
2233854(logged)X
22341106(\(before)X
22351373(images,)X
22361654(after)X
22371836(images)X
22382097(or)X
22392198(both\).)X
22402441(In)X
22413 f
22422542(physical)X
22432855(logging)X
22441 f
22453103(,)X
22463157(images)X
22473417(of)X
22483517(complete)X
22493844(physical)X
22504144(units)X
2251555 3513(\(pages)N
2252786(or)X
2253874(buffers\))X
22541150(are)X
22551270(recorded,)X
22561593(while)X
22571792(in)X
22583 f
22591875(logical)X
22602118(logging)X
22611 f
22622387(a)X
22632444(description)X
22642820(of)X
22652907(the)X
22663025(operation)X
22673348(is)X
22683421(recorded.)X
22693763(Therefore,)X
22704121(while)X
2271555 3603(we)N
2272675(may)X
2273839(record)X
22741071(entire)X
22751280(pages)X
22761489(in)X
22771577(a)X
22781639(physical)X
22791932(log,)X
22802080(we)X
22812200(need)X
22822378(only)X
22832546(record)X
22842777(the)X
22852900(records)X
22863162(being)X
22873365(modi\256ed)X
22883674(in)X
22893761(a)X
22903822(logical)X
22914065(log.)X
22924232(In)X
2293555 3693(fact,)N
2294718(physical)X
22951006(logging)X
22961271(can)X
22971404(be)X
22981501(thought)X
22991766(of)X
23001854(as)X
23011942(a)X
23021999(special)X
23032243(case)X
23042403(of)X
23052491(logical)X
23062730(logging,)X
23073015(since)X
23083201(the)X
23093320 0.3125(``records'')AX
23103686(that)X
23113827(we)X
23123942(log)X
23134065(in)X
23144148(logi-)X
2315555 3783(cal)N
2316673(logging)X
2317941(might)X
23181151(be)X
23191251(physical)X
23201542(pages.)X
23211789(Since)X
23221991(logical)X
23232233(logging)X
23242501(is)X
23252578(both)X
23262743(more)X
23272931(space-ef\256cient)X
23283423(and)X
23293562(more)X
23303750(general,)X
23314030(we)X
23324147(have)X
2333555 3873(chosen)N
2334798(it)X
2335862(for)X
2336976(our)X
23371103(logging)X
23381367(protocol.)X
2339755 3996(In)N
23403 f
2341843(before-image)X
23421315(logging)X
23431 f
23441563(,)X
23451604(we)X
23461719(log)X
23471842(a)X
23481899(copy)X
23492076(of)X
23502164(the)X
23512283(data)X
23522438(before)X
23532665(the)X
23542784(update,)X
23553039(while)X
23563238(in)X
23573 f
23583321(after-image)X
23593739(logging)X
23601 f
23613987(,)X
23624027(we)X
23634141(log)X
23644263(a)X
2365555 4086(copy)N
2366740(of)X
2367836(the)X
2368963(data)X
23691126(after)X
23701303(the)X
23711429(update.)X
23721711(If)X
23731793(we)X
23741915(log)X
23752045(only)X
23762215(before-images,)X
23772723(then)X
23782889(there)X
23793078(is)X
23803159(suf\256cient)X
23813485(information)X
23823891(in)X
23833981(the)X
23844107(log)X
23854237(to)X
2386555 4176(allow)N
2387761(us)X
2388860(to)X
23893 f
2390950(undo)X
23911 f
23921150(the)X
23931276(transaction)X
23941656(\(go)X
23951791(back)X
23961971(to)X
23972061(the)X
23982187(state)X
23992361(represented)X
24002759(by)X
24012866(the)X
24022991(before-image\).)X
24033514(However,)X
24043876(if)X
24053952(the)X
24064077(system)X
2407555 4266(crashes)N
2408814(and)X
2409952(a)X
24101010(committed)X
24111374(transaction's)X
24121806(changes)X
24132087(have)X
24142261(not)X
24152385(reached)X
24162658(the)X
24172778(disk,)X
24182953(we)X
24193068(have)X
24203241(no)X
24213342(means)X
24223568(to)X
24233 f
24243651(redo)X
24251 f
24263828(the)X
24273947(transaction)X
2428555 4356(\(reapply)N
2429849(the)X
2430973(updates\).)X
24311311(Therefore,)X
24321675(logging)X
24331945(only)X
24342113(before-images)X
24352599(necessitates)X
24363004(forcing)X
24373262(dirty)X
24383439(pages)X
24393648(at)X
24403732(commit)X
24414002(time.)X
24424210(As)X
2443555 4446(mentioned)N
2444913(above,)X
24451145(forcing)X
24461397(pages)X
24471600(at)X
24481678(commit)X
24491942(is)X
24502015(considered)X
24512383(too)X
24522505(costly.)X
2453755 4569(If)N
2454834(we)X
2455953(log)X
24561080(only)X
24571247(after-images,)X
24581694(then)X
24591857(there)X
24602043(is)X
24612121(suf\256cient)X
24622444(information)X
24632847(in)X
24642934(the)X
24653057(log)X
24663184(to)X
24673271(allow)X
24683474(us)X
24693570(to)X
24703657(redo)X
24713825(the)X
24723947(transaction)X
2473555 4659(\(go)N
2474687(forward)X
2475967(to)X
24761054(the)X
24771177(state)X
24781348(represented)X
24791743(by)X
24801847(the)X
24811969(after-image\),)X
24822411(but)X
24832537(we)X
24842655(do)X
24852759(not)X
24862885(have)X
24873061(the)X
24883183(information)X
24893585(required)X
24903877(to)X
24913963(undo)X
24924147(tran-)X
2493555 4749(sactions)N
2494845(which)X
24951073(aborted)X
24961346(after)X
24971526(dirty)X
24981709(pages)X
24991924(were)X
25002113(written)X
25012372(to)X
25022466(disk.)X
25032670(Therefore,)X
25043039(logging)X
25053314(only)X
25063487(after-images)X
25073920(necessitates)X
2508555 4839(holding)N
2509819(all)X
2510919(dirty)X
25111090(buffers)X
25121338(in)X
25131420(main)X
25141600(memory)X
25151887(until)X
25162053(commit)X
25172317(or)X
25182404(writing)X
25192655(them)X
25202835(to)X
25212917(a)X
25222973(temporary)X
25233323(\256le.)X
2524755 4962(Since)N
2525956(neither)X
25261202(constraint)X
25271541(\(forcing)X
25281823(pages)X
25292029(on)X
25302132(commit)X
25312399(or)X
25322489(buffering)X
25332811(pages)X
25343016(until)X
25353184(commit\))X
25363477(was)X
25373624(feasible,)X
25383916(we)X
25394032(chose)X
25404237(to)X
2541555 5052(log)N
2542683(both)X
2543851(before)X
25441083(and)X
25451225(after)X
25461399(images.)X
25471672(The)X
25481823(only)X
25491991(remaining)X
25502342(consideration)X
25512800(is)X
25522879(when)X
25533079(changes)X
25543363(get)X
25553486(written)X
25563738(to)X
25573825(disk.)X
25584023(Changes)X
2559555 5142(affect)N
2560764(both)X
2561931(data)X
25621090(pages)X
25631298(and)X
25641438(the)X
25651560(log.)X
25661726(If)X
25671804(the)X
25681926(changed)X
25692218(data)X
25702376(page)X
25712552(is)X
25722629(written)X
25732880(before)X
25743110(the)X
25753232(log)X
25763358(page,)X
25773554(and)X
25783694(the)X
25793816(system)X
25804062(crashes)X
2581555 5232(before)N
2582787(the)X
2583911(log)X
25841039(page)X
25851217(is)X
25861296(written,)X
25871569(the)X
25881693(log)X
25891820(will)X
25901969(contain)X
25912230(insuf\256cient)X
25922615(information)X
25933018(to)X
25943105(undo)X
25953290(the)X
25963413(change.)X
25973706(This)X
25983873(violates)X
25994147(tran-)X
2600555 5322(saction)N
2601803(semantics,)X
26021160(since)X
26031346(some)X
26041536(changed)X
26051825(data)X
26061980(pages)X
26072184(may)X
26082343(not)X
26092466(have)X
26102638(been)X
26112810(written,)X
26123077(and)X
26133213(the)X
26143331(database)X
26153628(cannot)X
26163862(be)X
26173958(restored)X
26184237(to)X
2619555 5412(its)N
2620650(pre-transaction)X
26211152(state.)X
2622755 5535(The)N
2623914(log)X
26241050(record)X
26251290(describing)X
26261658(an)X
26271768(update)X
26282016(must)X
26292205(be)X
26302315(written)X
26312576(to)X
26322672(stable)X
26332893(storage)X
26343159(before)X
26353398(the)X
26363529(modi\256ed)X
26373846(page.)X
26384071(This)X
26394246(is)X
26403 f
2641555 5625(write-ahead)N
2642992(logging)X
26431 f
26441240(.)X
26451307(If)X
26461388(log)X
26471517(records)X
26481781(are)X
26491907(safely)X
26502126(written)X
26512380(to)X
26522469(disk,)X
26532649(data)X
26542810(pages)X
26553020(may)X
26563185(be)X
26573288(written)X
26583542(at)X
26593627(any)X
26603770(time)X
26613939(afterwards.)X
2662555 5715(This)N
2663721(means)X
2664950(that)X
26651094(the)X
26661216(only)X
26671382(\256le)X
26681508(that)X
26691652(ever)X
26701815(needs)X
26712022(to)X
26722108(be)X
26732208(forced)X
26742438(to)X
26752524(disk)X
26762681(is)X
26772758(the)X
26782880(log.)X
26793046(Since)X
26803248(the)X
26813370(log)X
26823495(is)X
26833571(append-only,)X
26844015(modi\256ed)X
2685
26864 p
2687%%Page: 4 4
268810 s 10 xH 0 xS 1 f
26893 f
26901 f
2691555 630(pages)N
2692760(always)X
26931005(appear)X
26941242(at)X
26951322(the)X
26961442(end)X
26971580(and)X
26981718(may)X
26991878(be)X
27001976(written)X
27012224(to)X
27022307(disk)X
27032461(ef\256ciently)X
27042807(in)X
27052890(any)X
27063027(\256le)X
27073150(system)X
27083393(that)X
27093534(favors)X
27103756(sequential)X
27114102(order-)X
2712555 720(ing)N
2713677(\()X
27142 f
2715704(e.g.)X
27161 f
2717820(,)X
2718860(FFS,)X
27191032(log-structured)X
27201502(\256le)X
27211624(system,)X
27221886(or)X
27231973(an)X
27242069(extent-based)X
27252495(system\).)X
27263 f
2727555 906(3.1.2.)N
2728775(Concurrency)X
27291245(Control)X
27301 f
2731755 1029(The)N
2732918(concurrency)X
27331354(control)X
27341619(protocol)X
27351923(is)X
27362013(responsible)X
27372415(for)X
27382546(maintaining)X
27392965(consistency)X
27403376(in)X
27413475(the)X
27423610(presence)X
27433929(of)X
27444033(multiple)X
2745555 1119(accesses.)N
2746897(There)X
27471114(are)X
27481242(several)X
27491499(alternative)X
27501867(solutions)X
27512183(such)X
27522358(as)X
27532453(locking,)X
27542741(optimistic)X
27553088(concurrency)X
27563514(control)X
27573769([KUNG81],)X
27584183(and)X
2759555 1209(timestamp)N
2760912(ordering)X
27611208([BERN80].)X
27621619(Since)X
27631821(optimistic)X
27642164(methods)X
27652459(and)X
27662599(timestamp)X
27672956(ordering)X
27683252(are)X
27693374(generally)X
27703696(more)X
27713884(complex)X
27724183(and)X
2773555 1299(restrict)N
2774804(concurrency)X
27751228(without)X
27761498(eliminating)X
27771888(starvation)X
27782230(or)X
27792323(deadlocks,)X
27802690(we)X
27812810(chose)X
27823018(two-phase)X
27833373(locking)X
27843638(\(2PL\).)X
27853890(Strict)X
27864088(2PL)X
27874246(is)X
2788555 1389(suboptimal)N
2789935(for)X
27901054(certain)X
27911297(data)X
27921455(structures)X
27931791(such)X
27941962(as)X
27952053(B-trees)X
27962309(because)X
27972588(it)X
27982656(can)X
27992792(limit)X
28002966(concurrency,)X
28013408(so)X
28023503(we)X
28033621(use)X
28043752(a)X
28053812(special)X
28064059(locking)X
2807555 1479(protocol)N
2808842(based)X
28091045(on)X
28101145(one)X
28111281(described)X
28121609(in)X
28131691([LEHM81].)X
2814755 1602(The)N
2815901(B-tree)X
28161123(locking)X
28171384(protocol)X
28181672(we)X
28191787(implemented)X
28202226(releases)X
28212502(locks)X
28222691(at)X
28232769(internal)X
28243034(nodes)X
28253241(in)X
28263323(the)X
28273441(tree)X
28283582(as)X
28293669(it)X
28303733(descends.)X
28314083(A)X
28324161(lock)X
2833555 1692(on)N
2834658(an)X
2835757(internal)X
28361025(page)X
28371200(is)X
28381276(always)X
28391522(released)X
28401808(before)X
28412036(a)X
28422094(lock)X
28432254(on)X
28442356(its)X
28452453(child)X
28462635(is)X
28472710(obtained)X
28483008(\(that)X
28493177(is,)X
28503272(locks)X
28513463(are)X
28523584(not)X
28533 f
28543708(coupled)X
28551 f
28563996([BAY77])X
2857555 1782(during)N
2858786(descent\).)X
28591116(When)X
28601330(a)X
28611388(leaf)X
28621531(\(or)X
28631647(internal\))X
28641941(page)X
28652115(is)X
28662190(split,)X
28672369(a)X
28682427(write)X
28692614(lock)X
28702774(is)X
28712849(acquired)X
28723148(on)X
28733250(the)X
28743370(parent)X
28753593(before)X
28763821(the)X
28773941(lock)X
28784100(on)X
28794201(the)X
2880555 1872(just-split)N
2881855(page)X
28821028(is)X
28831102(released)X
28841387(\(locks)X
28851604(are)X
28863 f
28871724(coupled)X
28881 f
28892011(during)X
28902241(ascent\).)X
28912530(Write)X
28922734(locks)X
28932924(on)X
28943025(internal)X
28953291(pages)X
28963495(are)X
28973615(released)X
28983899(immediately)X
2899555 1962(after)N
2900723(the)X
2901841(page)X
29021013(is)X
29031086(updated,)X
29041380(but)X
29051502(locks)X
29061691(on)X
29071791(leaf)X
29081932(pages)X
29092135(are)X
29102254(held)X
29112412(until)X
29122578(the)X
29132696(end)X
29142832(of)X
29152919(the)X
29163037(transaction.)X
2917755 2085(Since)N
2918964(locks)X
29191164(are)X
29201294(released)X
29211589(during)X
29221828(descent,)X
29232119(the)X
29242247(structure)X
29252558(of)X
29262655(the)X
29272783(tree)X
29282934(may)X
29293102(change)X
29303360(above)X
29313582(a)X
29323648(node)X
29333834(being)X
29344042(used)X
29354219(by)X
2936555 2175(some)N
2937752(process.)X
29381061(If)X
29391143(that)X
29401291(process)X
29411560(must)X
29421743(later)X
29431914(ascend)X
29442161(the)X
29452287(tree)X
29462435(because)X
29472717(of)X
29482811(a)X
29492874(page)X
29503053(split,)X
29513237(any)X
29523380(such)X
29533554(change)X
29543809(must)X
29553991(not)X
29564120(cause)X
2957555 2265(confusion.)N
2958938(We)X
29591077(use)X
29601211(the)X
29611336(technique)X
29621675(described)X
29632010(in)X
29642099([LEHM81])X
29652487(which)X
29662710(exploits)X
29672989(the)X
29683113(ordering)X
29693411(of)X
29703504(data)X
29713664(on)X
29723770(a)X
29733832(B-tree)X
29744059(page)X
29754237(to)X
2976555 2355(guarantee)N
2977888(that)X
29781028(no)X
29791128(process)X
29801389(ever)X
29811548(gets)X
29821697(lost)X
29831832(as)X
29841919(a)X
29851975(result)X
29862173(of)X
29872260(internal)X
29882525(page)X
29892697(updates)X
29902962(made)X
29913156(by)X
29923256(other)X
29933441(processes.)X
2994755 2478(If)N
2995836(a)X
2996899(transaction)X
29971278(that)X
29981425(updates)X
29991697(a)X
30001760(B-tree)X
30011988(aborts,)X
30022231(the)X
30032356(user-visible)X
30042757(changes)X
30053043(to)X
30063131(the)X
30073255(tree)X
30083402(must)X
30093583(be)X
30103685(rolled)X
30113898(back.)X
30124116(How-)X
3013555 2568(ever,)N
3014735(changes)X
30151015(to)X
30161097(the)X
30171215(internal)X
30181480(nodes)X
30191687(of)X
30201774(the)X
30211892(tree)X
30222033(need)X
30232205(not)X
30242327(be)X
30252423(rolled)X
30262630(back,)X
30272822(since)X
30283007(these)X
30293192(pages)X
30303395(contain)X
30313651(no)X
30323751(user-visible)X
30334145(data.)X
3034555 2658(When)N
3035771(rolling)X
30361008(back)X
30371184(a)X
30381244(transaction,)X
30391640(we)X
30401758(roll)X
30411893(back)X
30422069(all)X
30432173(leaf)X
30442318(page)X
30452494(updates,)X
30462783(but)X
30472909(no)X
30483013(internal)X
30493281(insertions)X
30503615(or)X
30513705(page)X
30523880(splits.)X
30534111(In)X
30544201(the)X
3055555 2748(worst)N
3056759(case,)X
3057944(this)X
30581085(will)X
30591235(leave)X
30601431(a)X
30611493(leaf)X
30621640(page)X
30631818(less)X
30641964(than)X
30652128(half)X
30662279(full.)X
30672456(This)X
30682624(may)X
30692788(cause)X
30702993(poor)X
30713166(space)X
30723371(utilization,)X
30733741(but)X
30743869(does)X
30754042(not)X
30764170(lose)X
3077555 2838(user)N
3078709(data.)X
3079755 2961(Holding)N
30801038(locks)X
30811228(on)X
30821329(leaf)X
30831471(pages)X
30841675(until)X
30851842(transaction)X
30862215(commit)X
30872480(guarantees)X
30882845(that)X
30892986(no)X
30903087(other)X
30913273(process)X
30923535(can)X
30933668(insert)X
30943866(or)X
30953953(delete)X
30964165(data)X
3097555 3051(that)N
3098711(has)X
3099854(been)X
31001042(touched)X
31011332(by)X
31021448(this)X
31031598(process.)X
31041914(Rolling)X
31052188(back)X
31062375(insertions)X
31072721(and)X
31082872(deletions)X
31093196(on)X
31103311(leaf)X
31113467(pages)X
31123685(guarantees)X
31134064(that)X
31144219(no)X
3115555 3141(aborted)N
3116819(updates)X
31171087(are)X
31181209(ever)X
31191371(visible)X
31201607(to)X
31211692(other)X
31221880(transactions.)X
31232326(Leaving)X
31242612(page)X
31252787(splits)X
31262978(intact)X
31273179(permits)X
31283442(us)X
31293536(to)X
31303621(release)X
31313867(internal)X
31324134(write)X
3133555 3231(locks)N
3134744(early.)X
3135965(Thus)X
31361145(transaction)X
31371517(semantics)X
31381853(are)X
31391972(preserved,)X
31402325(and)X
31412461(locks)X
31422650(are)X
31432769(held)X
31442927(for)X
31453041(shorter)X
31463284(periods.)X
3147755 3354(The)N
3148901(extra)X
31491083(complexity)X
31501464(introduced)X
31511828(by)X
31521929(this)X
31532065(locking)X
31542326(protocol)X
31552614(appears)X
31562881(substantial,)X
31573264(but)X
31583387(it)X
31593452(is)X
31603525(important)X
31613856(for)X
31623970(multi-user)X
3163555 3444(execution.)N
3164950(The)X
31651118(bene\256ts)X
31661410(of)X
31671520(non-two-phase)X
31682040(locking)X
31692323(on)X
31702446(B-trees)X
31712721(are)X
31722863(well)X
31733044(established)X
31743443(in)X
31753548(the)X
31763689(database)X
31774009(literature)X
3178555 3534([BAY77],)N
3179899([LEHM81].)X
31801320(If)X
31811394(a)X
31821450(process)X
31831711(held)X
31841869(locks)X
31852058(until)X
31862224(it)X
31872288(committed,)X
31882670(then)X
31892828(a)X
31902884(long-running)X
31913322(update)X
31923556(could)X
31933754(lock)X
31943912(out)X
31954034(all)X
31964134(other)X
3197555 3624(transactions)N
3198967(by)X
31991076(preventing)X
32001448(any)X
32011593(other)X
32021787(process)X
32032057(from)X
32042241(locking)X
32052509(the)X
32062635(root)X
32072792(page)X
32082972(of)X
32093067(the)X
32103193(tree.)X
32113382(The)X
32123535(B-tree)X
32133764(locking)X
32144032(protocol)X
3215555 3714(described)N
3216884(above)X
32171096(guarantees)X
32181460(that)X
32191600(locks)X
32201789(on)X
32211889(internal)X
32222154(pages)X
32232357(are)X
32242476(held)X
32252634(for)X
32262748(extremely)X
32273089(short)X
32283269(periods,)X
32293545(thereby)X
32303806(increasing)X
32314156(con-)X
3232555 3804(currency.)N
32333 f
3234555 3990(3.1.3.)N
3235775(Management)X
32361245(of)X
32371332(Shared)X
32381596(Data)X
32391 f
3240755 4113(Database)N
32411075(systems)X
32421353(permit)X
32431587(many)X
32441790(users)X
32451980(to)X
32462067(examine)X
32472364(and)X
32482505(update)X
32492744(the)X
32502866(same)X
32513055(data)X
32523213(concurrently.)X
32533683(In)X
32543774(order)X
32553968(to)X
32564054(provide)X
3257555 4203(this)N
3258702(concurrent)X
32591078(access)X
32601316(and)X
32611464(enforce)X
32621738(the)X
32631868(write-ahead)X
32642280(logging)X
32652556(protocol)X
32662855(described)X
32673195(in)X
32683289(section)X
32693548(3.1.1,)X
32703759(we)X
32713884(use)X
32724022(a)X
32734089(shared)X
3274555 4293(memory)N
3275848(buffer)X
32761071(manager.)X
32771414(Not)X
32781559(only)X
32791726(does)X
32801898(this)X
32812038(provide)X
32822308(the)X
32832431(guarantees)X
32842800(we)X
32852919(require,)X
32863192(but)X
32873319(a)X
32883380(user-level)X
32893722(buffer)X
32903944(manager)X
32914246(is)X
3292555 4383(frequently)N
3293916(faster)X
32941126(than)X
32951295(using)X
32961498(the)X
32971626(\256le)X
32981758(system)X
32992010(buffer)X
33002237(cache.)X
33012491(Reads)X
33022717(or)X
33032814(writes)X
33043040(involving)X
33053376(the)X
33063504(\256le)X
33073636(system)X
33083888(buffer)X
33094115(cache)X
3310555 4473(often)N
3311746(require)X
33121000(copying)X
33131284(data)X
33141444(between)X
33151738(user)X
33161898(and)X
33172040(kernel)X
33182266(space)X
33192470(while)X
33202673(a)X
33212734(user-level)X
33223076(buffer)X
33233298(manager)X
33243600(can)X
33253737(return)X
33263954(pointers)X
33274237(to)X
3328555 4563(data)N
3329709(pages)X
3330912(directly.)X
33311217(Additionally,)X
33321661(if)X
33331730(more)X
33341915(than)X
33352073(one)X
33362209(process)X
33372470(uses)X
33382628(the)X
33392746(same)X
33402931(page,)X
33413123(then)X
33423281(fewer)X
33433485(copies)X
33443710(may)X
33453868(be)X
33463964(required.)X
33473 f
3348555 4749(3.2.)N
3349715(Module)X
3350997(Architecture)X
33511 f
3352755 4872(The)N
3353913(preceding)X
33541262(sections)X
33551552(described)X
33561892(modules)X
33572195(for)X
33582321(managing)X
33592669(the)X
33602799(transaction)X
33613183(log,)X
33623337(locks,)X
33633558(and)X
33643706(a)X
33653774(cache)X
33663990(of)X
33674089(shared)X
3368555 4962(buffers.)N
3369847(In)X
3370938(addition,)X
33711244(we)X
33721362(need)X
33731538(to)X
33741624(provide)X
33751893(functionality)X
33762326(for)X
33772444(transaction)X
33782 f
33792819(begin)X
33801 f
33812997(,)X
33822 f
33833040(commit)X
33841 f
33853276(,)X
33863319(and)X
33872 f
33883458(abort)X
33891 f
33903654(processing,)X
33914040(necessi-)X
3392555 5052(tating)N
3393769(a)X
3394837(transaction)X
33951221(manager.)X
33961570(In)X
33971669(order)X
33981871(to)X
33991965(arbitrate)X
34002265(concurrent)X
34012641(access)X
34022879(to)X
34032973(locks)X
34043173(and)X
34053320(buffers,)X
34063599(we)X
34073724(include)X
34083991(a)X
34094058(process)X
3410555 5142(management)N
3411995(module)X
34121264(which)X
34131489(manages)X
34141799(a)X
34151864(collection)X
34162209(of)X
34172305(semaphores)X
34182713(used)X
34192889(to)X
34202980(block)X
34213187(and)X
34223332(release)X
34233585(processes.)X
34243962(Finally,)X
34254237(in)X
3426555 5232(order)N
3427752(to)X
3428841(provide)X
34291113(a)X
34301176(simple,)X
34311436(standard)X
34321735(interface)X
34332044(we)X
34342165(have)X
34352344(modi\256ed)X
34362655(the)X
34372780(database)X
34383084(access)X
34393317(routines)X
34403602(\()X
34413 f
34423629(db)X
34431 f
34443717(\(3\)\).)X
34453904(For)X
34464041(the)X
34474165(pur-)X
3448555 5322(poses)N
3449758(of)X
3450850(this)X
3451990(paper)X
34521194(we)X
34531313(call)X
34541453(the)X
34551575(modi\256ed)X
34561883(package)X
34572171(the)X
34583 f
34592293(Record)X
34602567(Manager)X
34611 f
34622879(.)X
34632943(Figure)X
34643176(one)X
34653316(shows)X
34663540(the)X
34673662(main)X
34683846(interfaces)X
34694183(and)X
3470555 5412(architecture)N
3471955(of)X
34721042(LIBTP.)X
3473
34745 p
3475%%Page: 5 5
347610 s 10 xH 0 xS 1 f
34773 f
34781 f
347911 s
34801851 1520(log_commit)N
34812764 2077(buf_unpin)N
34822764 1987(buf_get)N
34833633 1408(buf_unpin)N
34843633 1319(buf_pin)N
34853633 1230(buf_get)N
34863 f
348717 s
34881163 960(Txn)N
34891430(M)X
34901559(anager)X
34912582(Record)X
34923040(M)X
34933169(anager)X
34941 Dt
34952363 726 MXY
34960 355 Dl
34971426 0 Dl
34980 -355 Dl
3499-1426 0 Dl
35003255 1616 MXY
35010 535 Dl
3502534 0 Dl
35030 -535 Dl
3504-534 0 Dl
35052185 MX
35060 535 Dl
3507535 0 Dl
35080 -535 Dl
3509-535 0 Dl
35101116 MX
35110 535 Dl
3512534 0 Dl
35130 -535 Dl
3514-534 0 Dl
3515726 MY
35160 355 Dl
3517891 0 Dl
35180 -355 Dl
3519-891 0 Dl
35201 f
352111 s
35222207 1297(lock)N
35232564 1386(log)N
3524865(unlock_all)X
35251851 1609(log_unroll)N
35261650 2508 MXY
35270 178 Dl
35281605 0 Dl
35290 -178 Dl
3530-1605 0 Dl
35311294 1616 MXY
353219 -30 Dl
3533-19 11 Dl
3534-20 -11 Dl
353520 30 Dl
35360 -535 Dl
35372319 2508 MXY
3538-22 -30 Dl
35394 23 Dl
3540-18 14 Dl
354136 -7 Dl
3542-936 -357 Dl
35433277 2455(sleep_on)N
35441405 1616 MXY
354536 4 Dl
3546-18 -13 Dl
35471 -22 Dl
3548-19 31 Dl
35491070 -535 Dl
35502631 2508 MXY
355136 6 Dl
3552-18 -14 Dl
35533 -22 Dl
3554-21 30 Dl
3555891 -357 Dl
35561426 2455(sleep_on)N
35573255 1884 MXY
3558-31 -20 Dl
355911 20 Dl
3560-11 19 Dl
356131 -19 Dl
3562-535 0 Dl
35631554 2366(wake)N
35643277(wake)X
35652185 1884 MXY
3566-31 -20 Dl
356712 20 Dl
3568-12 19 Dl
356931 -19 Dl
3570-356 0 Dl
35710 -803 Dl
35723 f
357317 s
35741236 1851(Lock)N
35751118 2030(M)N
35761247(anager)X
35772339 1851(Log)N
35782187 2030(M)N
35792316(anager)X
35803333 1851(Buffer)N
35813257 2030(M)N
35823386(anager)X
35833522 1616 MXY
358420 -30 Dl
3585-20 11 Dl
3586-20 -11 Dl
358720 30 Dl
35880 -535 Dl
35891950 2654(Process)N
35902424(M)X
35912553(anager)X
35922542 1616 MXY
359319 -30 Dl
3594-19 11 Dl
3595-20 -11 Dl
359620 30 Dl
35970 -535 Dl
35981 f
359911 s
36002207 1364(unlock)N
36012452 2508 MXY
360220 -31 Dl
3603-20 11 Dl
3604-19 -11 Dl
360519 31 Dl
36060 -357 Dl
36072497 2322(sleep_on)N
36082497 2233(wake)N
36093 Dt
3610-1 Ds
36113 f
361210 s
36131790 2830(Figure)N
36142037(1:)X
36152144(Library)X
36162435(module)X
36172708(interfaces.)X
36181 f
361910 f
3620555 3010(h)N
3621579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
36223 f
3623555 3286(3.2.1.)N
3624775(The)X
3625928(Log)X
36261081(Manager)X
36271 f
3628755 3409(The)N
36293 f
3630907(Log)X
36311067(Manager)X
36321 f
36331406(enforces)X
36341706(the)X
36351831(write-ahead)X
36362238(logging)X
36372509(protocol.)X
36382843(Its)X
36392949(primitive)X
36403268(operations)X
36413628(are)X
36422 f
36433753(log)X
36441 f
36453855(,)X
36462 f
36473901(log_commit)X
36481 f
36494279(,)X
36502 f
3651555 3499(log_read)N
36521 f
3653844(,)X
36542 f
3655889(log_roll)X
36561 f
36571171(and)X
36582 f
36591312(log_unroll)X
36601 f
36611649(.)X
36621714(The)X
36632 f
36641864(log)X
36651 f
36661991(call)X
36672132(performs)X
36682447(a)X
36692508(buffered)X
36702806(write)X
36712996(of)X
36723088(the)X
36733211(speci\256ed)X
36743520(log)X
36753646(record)X
36763876(and)X
36774016(returns)X
36784263(a)X
3679555 3589(unique)N
3680809(log)X
3681947(sequence)X
36821278(number)X
36831559(\(LSN\).)X
36841840(This)X
36852017(LSN)X
36862203(may)X
36872376(then)X
36882549(be)X
36892660(used)X
36902842(to)X
36912939(retrieve)X
36923220(a)X
36933291(record)X
36943532(from)X
36953723(the)X
36963856(log)X
36973993(using)X
36984201(the)X
36992 f
3700555 3679(log_read)N
37011 f
3702865(call.)X
37031042(The)X
37042 f
37051188(log)X
37061 f
37071311(interface)X
37081614(knows)X
37091844(very)X
37102008(little)X
37112175(about)X
37122374(the)X
37132493(internal)X
37142759(format)X
37152993(of)X
37163080(the)X
37173198(log)X
37183320(records)X
37193577(it)X
37203641(receives.)X
37213965(Rather,)X
37224219(all)X
3723555 3769(log)N
3724681(records)X
3725942(are)X
37261065 0.4028(referenced)AX
37271430(by)X
37281534(a)X
37291594(header)X
37301833(structure,)X
37312158(a)X
37322218(log)X
37332344(record)X
37342574(type,)X
37352756(and)X
37362896(a)X
37372956(character)X
37383276(buffer)X
37393497(containing)X
37403859(the)X
37413981(data)X
37424138(to)X
37434223(be)X
3744555 3859(logged.)N
3745834(The)X
3746980(log)X
37471103(record)X
37481330(type)X
37491489(is)X
37501563(used)X
37511731(to)X
37521814(call)X
37531951(the)X
37542070(appropriate)X
37552457(redo)X
37562621(and)X
37572758(undo)X
37582939(routines)X
37593217(during)X
37602 f
37613446(abort)X
37621 f
37633639(and)X
37642 f
37653775(commit)X
37661 f
37674031(process-)X
3768555 3949(ing.)N
3769721(While)X
3770941(we)X
37711059(have)X
37721235(used)X
37731406(the)X
37743 f
37751528(Log)X
37761684(Manager)X
37771 f
37782019(to)X
37792104(provide)X
37802372(before)X
37812601(and)X
37822740(after)X
37832911(image)X
37843130(logging,)X
37853417(it)X
37863484(may)X
37873645(also)X
37883797(be)X
37893896(used)X
37904066(for)X
37914183(any)X
3792555 4039(of)N
3793642(the)X
3794760(logging)X
37951024(algorithms)X
37961386(discussed.)X
3797755 4162(The)N
37982 f
3799905(log_commit)X
38001 f
38011308(operation)X
38021636(behaves)X
38031920(exactly)X
38042177(like)X
38052322(the)X
38062 f
38072445(log)X
38081 f
38092572(operation)X
38102900(but)X
38113026(guarantees)X
38123394(that)X
38133538(the)X
38143660(log)X
38153786(has)X
38163917(been)X
38174093(forced)X
3818555 4252(to)N
3819643(disk)X
3820802(before)X
38211034(returning.)X
38221394(A)X
38231478(discussion)X
38241837(of)X
38251930(our)X
38262063(commit)X
38272333(strategy)X
38282613(appears)X
38292884(in)X
38302971(the)X
38313094(implementation)X
38323621(section)X
38333873(\(section)X
38344152(4.2\).)X
38352 f
3836555 4342(Log_unroll)N
38371 f
3838935(reads)X
38391126(log)X
38401249(records)X
38411507(from)X
38421684(the)X
38431803(log,)X
38441946(following)X
38452278(backward)X
38462611(transaction)X
38472983(pointers)X
38483261(and)X
38493397(calling)X
38503635(the)X
38513753(appropriate)X
38524139(undo)X
3853555 4432(routines)N
3854839(to)X
3855927(implement)X
38561295(transaction)X
38571673(abort.)X
38581904(In)X
38591997(a)X
38602059(similar)X
38612307(manner,)X
38622 f
38632594(log_roll)X
38641 f
38652877(reads)X
38663073(log)X
38673201(records)X
38683464(sequentially)X
38693877(forward,)X
38704178(cal-)X
3871555 4522(ling)N
3872699(the)X
3873817(appropriate)X
38741203(redo)X
38751366(routines)X
38761644(to)X
38771726(recover)X
38781988(committed)X
38792350(transactions)X
38802753(after)X
38812921(a)X
38822977(system)X
38833219(crash.)X
38843 f
3885555 4708(3.2.2.)N
3886775(The)X
3887928(Buffer)X
38881171(Manager)X
38891 f
3890755 4831(The)N
38913 f
3892912(Buffer)X
38931167(Manager)X
38941 f
38951511(uses)X
38961681(a)X
38971749(pool)X
38981923(of)X
38992022(shared)X
39002264(memory)X
39012563(to)X
39022657(provide)X
39032934(a)X
39043002(least-recently-used)X
39053641(\(LRU\))X
39063886(block)X
39074095(cache.)X
3908555 4921(Although)N
3909886(the)X
39101013(current)X
39111270(library)X
39121513(provides)X
39131818(an)X
39141923(LRU)X
39152112(cache,)X
39162345(it)X
39172418(would)X
39182647(be)X
39192752(simple)X
39202994(to)X
39213085(add)X
39223229(alternate)X
39233534(replacement)X
39243955(policies)X
39254232(as)X
3926555 5011(suggested)N
3927903(by)X
39281015([CHOU85])X
39291408(or)X
39301507(to)X
39311601(provide)X
39321878(multiple)X
39332176(buffer)X
39342405(pools)X
39352610(with)X
39362784(different)X
39373092(policies.)X
39383412(Transactions)X
39393853(request)X
39404116(pages)X
3941555 5101(from)N
3942736(the)X
3943859(buffer)X
39441081(manager)X
39451383(and)X
39461524(keep)X
39471701(them)X
39483 f
39491886(pinned)X
39501 f
39512145(to)X
39522232(ensure)X
39532466(that)X
39542610(they)X
39552772(are)X
39562895(not)X
39573021(written)X
39583272(to)X
39593358(disk)X
39603515(while)X
39613717(they)X
39623879(are)X
39634002(in)X
39644088(a)X
39654148(logi-)X
3966555 5191(cally)N
3967732(inconsistent)X
39681135(state.)X
39691343(When)X
39701556(page)X
39711729(replacement)X
39722143(is)X
39732217(necessary,)X
39742571(the)X
39753 f
39762689(Buffer)X
39772932(Manager)X
39781 f
39793264(\256nds)X
39803439(an)X
39813535(unpinned)X
39823853(page)X
39834025(and)X
39844161(then)X
3985555 5281(checks)N
3986794(with)X
3987956(the)X
39883 f
39891074(Log)X
39901227(Manager)X
39911 f
39921559(to)X
39931641(ensure)X
39941871(that)X
39952011(the)X
39962129(write-ahead)X
39972529(protocol)X
39982816(is)X
39992889(enforced.)X
40003 f
4001555 5467(3.2.3.)N
4002775(The)X
4003928(Lock)X
40041121(Manager)X
40051 f
4006755 5590(The)N
40073 f
4008901(Lock)X
40091095(Manager)X
40101 f
40111428(supports)X
40121720(general)X
40131978(purpose)X
40142253(locking)X
40152514(\(single)X
40162753(writer,)X
40172986(multiple)X
40183273(readers\))X
40193553(which)X
40203769(is)X
40213842(currently)X
40224152(used)X
4023555 5680(to)N
4024638(provide)X
4025904(two-phase)X
40261254(locking)X
40271514(and)X
40281650(high)X
40291812(concurrency)X
40302230(B-tree)X
40312451(locking.)X
40322751(However,)X
40333086(the)X
40343204(general)X
40353461(purpose)X
40363735(nature)X
40373956(of)X
40384043(the)X
40394161(lock)X
4040
40416 p
4042%%Page: 6 6
404310 s 10 xH 0 xS 1 f
40443 f
40451 f
4046555 630(manager)N
4047857(provides)X
40481158(the)X
40491281(ability)X
40501510(to)X
40511597(support)X
40521862(a)X
40531923(variety)X
40542171(of)X
40552263(locking)X
40562528(protocols.)X
40572890(Currently,)X
40583241(all)X
40593345(locks)X
40603538(are)X
40613661(issued)X
40623885(at)X
40633967(the)X
40644089(granu-)X
4065555 720(larity)N
4066747(of)X
4067837(a)X
4068896(page)X
40691071(\(the)X
40701219(size)X
40711367(of)X
40721457(a)X
40731516(buffer)X
40741736(in)X
40751821(the)X
40761942(buffer)X
40772161(pool\))X
40782352(which)X
40792570(is)X
40802645(identi\256ed)X
40812969(by)X
40823071(two)X
40833213(4-byte)X
40843440(integers)X
40853716(\(a)X
40863801(\256le)X
40873925(id)X
40884009(and)X
40894147(page)X
4090555 810(number\).)N
4091898(This)X
40921071(provides)X
40931378(the)X
40941507(necessary)X
40951851(information)X
40962259(to)X
40972351(extend)X
40982595(the)X
40993 f
41002723(Lock)X
41012926(Manager)X
41021 f
41033268(to)X
41043360(perform)X
41053649(hierarchical)X
41064059(locking)X
4107555 900([GRAY76].)N
4108982(The)X
41091133(current)X
41101387(implementation)X
41111915(does)X
41122088(not)X
41132216(support)X
41142482(locks)X
41152677(at)X
41162760(other)X
41172950(granularities)X
41183376(and)X
41193517(does)X
41203689(not)X
41213816(promote)X
41224108(locks;)X
4123555 990(these)N
4124740(are)X
4125859(obvious)X
41261132(future)X
41271344(additions)X
41281657(to)X
41291739(the)X
41301857(system.)X
4131755 1113(If)N
4132831(an)X
4133929(incoming)X
41341253(lock)X
41351413(request)X
41361667(cannot)X
41371903(be)X
41382001(granted,)X
41392284(the)X
41402404(requesting)X
41412760(process)X
41423023(is)X
41433098(queued)X
41443352(for)X
41453467(the)X
41463586(lock)X
41473745(and)X
41483882(descheduled.)X
4149555 1203(When)N
4150769(a)X
4151827(lock)X
4152987(is)X
41531062(released,)X
41541368(the)X
41551488(wait)X
41561647(queue)X
41571860(is)X
41581934(traversed)X
41592250(and)X
41602387(any)X
41612524(newly)X
41622741(compatible)X
41633118(locks)X
41643308(are)X
41653428(granted.)X
41663730(Locks)X
41673947(are)X
41684067(located)X
4169555 1293(via)N
4170680(a)X
4171743(\256le)X
4172872(and)X
41731015(page)X
41741194(hash)X
41751368(table)X
41761551(and)X
41771694(are)X
41781820(chained)X
41792097(both)X
41802266(by)X
41812373(object)X
41822595(and)X
41832737(by)X
41842843(transaction,)X
41853241(facilitating)X
41863614(rapid)X
41873805(traversal)X
41884108(of)X
41894201(the)X
4190555 1383(lock)N
4191713(table)X
4192889(during)X
41931118(transaction)X
41941490(commit)X
41951754(and)X
41961890(abort.)X
4197755 1506(The)N
4198907(primary)X
41991188(interfaces)X
42001528(to)X
42011617(the)X
42021742(lock)X
42031907(manager)X
42042211(are)X
42052 f
42062337(lock)X
42071 f
42082471(,)X
42092 f
42102518(unlock)X
42111 f
42122732(,)X
42132779(and)X
42142 f
42152922(lock_unlock_all)X
42161 f
42173434(.)X
42182 f
42193500(Lock)X
42201 f
42213682(obtains)X
42223939(a)X
42234001(new)X
42244161(lock)X
4225555 1596(for)N
4226680(a)X
4227747(speci\256c)X
42281023(object.)X
42291290(There)X
42301509(are)X
42311638(also)X
42321797(two)X
42331947(variants)X
42342231(of)X
42352328(the)X
42362 f
42372456(lock)X
42381 f
42392620(request,)X
42402 f
42412902(lock_upgrade)X
42421 f
42433373(and)X
42442 f
42453519(lock_downgrade)X
42461 f
42474053(,)X
42484103(which)X
4249555 1686(allow)N
4250755(the)X
4251875(caller)X
42521076(to)X
42531160(atomically)X
42541519(trade)X
42551701(a)X
42561758(lock)X
42571917(of)X
42582005(one)X
42592142(type)X
42602301(for)X
42612416(a)X
42622473(lock)X
42632632(of)X
42642720(another.)X
42652 f
42663022(Unlock)X
42671 f
42683275(releases)X
42693551(a)X
42703608(speci\256c)X
42713874(mode)X
42724073(of)X
42734161(lock)X
4274555 1776(on)N
4275655(a)X
4276711(speci\256c)X
4277976(object.)X
42782 f
42791232(Lock_unlock_all)X
42801 f
42811786(releases)X
42822061(all)X
42832161(the)X
42842279(locks)X
42852468(associated)X
42862818(with)X
42872980(a)X
42883036(speci\256c)X
42893301(transaction.)X
42903 f
4291555 1962(3.2.4.)N
4292775(The)X
4293928(Process)X
42941207(Manager)X
42951 f
4296755 2085(The)N
42973 f
4298900(Process)X
42991179(Manager)X
43001 f
43011511(acts)X
43021656(as)X
43031743(a)X
43041799(user-level)X
43052136(scheduler)X
43062464(to)X
43072546(make)X
43082740(processes)X
43093068(wait)X
43103226(on)X
43113326(unavailable)X
43123716(locks)X
43133905(and)X
43144041(pending)X
4315555 2175(buffer)N
4316778(cache)X
4317988(I/O.)X
43181161(For)X
43191297(each)X
43201470(process,)X
43211756(a)X
43221817(semaphore)X
43232190(is)X
43242268(maintained)X
43252649(upon)X
43262834(which)X
43273055(that)X
43283200(process)X
43293466(waits)X
43303660(when)X
43313859(it)X
43323928(needs)X
43334136(to)X
43344223(be)X
4335555 2265(descheduled.)N
43361014(When)X
43371228(a)X
43381286(process)X
43391549(needs)X
43401754(to)X
43411838(be)X
43421936(run,)X
43432084(its)X
43442180(semaphore)X
43452549(is)X
43462623(cleared,)X
43472897(and)X
43483034(the)X
43493153(operating)X
43503477(system)X
43513720(reschedules)X
43524116(it.)X
43534201(No)X
4354555 2355(sophisticated)N
43551002(scheduling)X
43561378(algorithm)X
43571718(is)X
43581799(applied;)X
43592085(if)X
43602162(the)X
43612288(lock)X
43622454(for)X
43632576(which)X
43642800(a)X
43652864(process)X
43663133(was)X
43673286(waiting)X
43683554(becomes)X
43693863(available,)X
43704201(the)X
4371555 2445(process)N
4372824(is)X
4373905(made)X
43741107(runnable.)X
43751456(It)X
43761533(would)X
43771761(have)X
43781941(been)X
43792121(possible)X
43802411(to)X
43812501(change)X
43822757(the)X
43832883(kernel's)X
43843170(process)X
43853439(scheduler)X
43863775(to)X
43873865(interact)X
43884134(more)X
4389555 2535(ef\256ciently)N
4390900(with)X
43911062(the)X
43921180(lock)X
43931338(manager,)X
43941655(but)X
43951777(doing)X
43961979(so)X
43972070(would)X
43982290(have)X
43992462(compromised)X
44002918(our)X
44013045(commitment)X
44023469(to)X
44033551(a)X
44043607(user-level)X
44053944(package.)X
44063 f
4407555 2721(3.2.5.)N
4408775(The)X
4409928(Transaction)X
44101361(Manager)X
44111 f
4412755 2844(The)N
44133 f
4414901(Transaction)X
44151335(Manager)X
44161 f
44171668(provides)X
44181965(the)X
44192084(standard)X
44202377(interface)X
44212680(of)X
44222 f
44232768(txn_begin)X
44241 f
44253084(,)X
44262 f
44273125(txn_commit)X
44281 f
44293499(,)X
44303540(and)X
44312 f
44323676(txn_abort)X
44331 f
44343987(.)X
44354047(It)X
44364116(keeps)X
4437555 2934(track)N
4438742(of)X
4439835(all)X
4440941(active)X
44411159(transactions,)X
44421588(assigns)X
44431845(unique)X
44442089(transaction)X
44452467(identi\256ers,)X
44462833(and)X
44472974(directs)X
44483213(the)X
44493336(abort)X
44503526(and)X
44513667(commit)X
44523936(processing.)X
4453555 3024(When)N
4454772(a)X
44552 f
4456833(txn_begin)X
44571 f
44581174(is)X
44591252(issued,)X
44601497(the)X
44613 f
44621620(Transaction)X
44632058(Manager)X
44641 f
44652395(assigns)X
44662651(the)X
44672773(next)X
44682935(available)X
44693249(transaction)X
44703625(identi\256er,)X
44713958(allocates)X
44724263(a)X
4473555 3114(per-process)N
4474948(transaction)X
44751322(structure)X
44761625(in)X
44771709(shared)X
44781941(memory,)X
44792249(increments)X
44802622(the)X
44812741(count)X
44822940(of)X
44833028(active)X
44843241(transactions,)X
44853665(and)X
44863802(returns)X
44874046(the)X
44884165(new)X
4489555 3204(transaction)N
4490937(identi\256er)X
44911256(to)X
44921348(the)X
44931476(calling)X
44941724(process.)X
44952034(The)X
44962188(in-memory)X
44972573(transaction)X
44982954(structure)X
44993264(contains)X
45003560(a)X
45013625(pointer)X
45023881(into)X
45034034(the)X
45044161(lock)X
4505555 3294(table)N
4506734(for)X
4507851(locks)X
45081043(held)X
45091204(by)X
45101307(this)X
45111445(transaction,)X
45121840(the)X
45131961(last)X
45142095(log)X
45152220(sequence)X
45162538(number,)X
45172826(a)X
45182885(transaction)X
45193260(state)X
45203430(\()X
45212 f
45223457(idle)X
45231 f
4524(,)S
45252 f
45263620(running)X
45271 f
45283873(,)X
45292 f
45303915(aborting)X
45311 f
45324190(,)X
45334232(or)X
45342 f
4535555 3384(committing\))N
45361 f
4537942(,)X
4538982(an)X
45391078(error)X
45401255(code,)X
45411447(and)X
45421583(a)X
45431639(semaphore)X
45442007(identi\256er.)X
4545755 3507(At)N
4546859(commit,)X
45471147(the)X
45483 f
45491269(Transaction)X
45501706(Manager)X
45511 f
45522042(calls)X
45532 f
45542213(log_commit)X
45551 f
45562615(to)X
45572700(record)X
45582929(the)X
45593050(end)X
45603189(of)X
45613279(transaction)X
45623654(and)X
45633793(to)X
45643878(\257ush)X
45654056(the)X
45664177(log.)X
4567555 3597(Then)N
4568743(it)X
4569810(directs)X
45701047(the)X
45713 f
45721168(Lock)X
45731364(Manager)X
45741 f
45751699(to)X
45761784(release)X
45772031(all)X
45782134(locks)X
45792325(associated)X
45802677(with)X
45812841(the)X
45822961(given)X
45833161(transaction.)X
45843575(If)X
45853651(a)X
45863709(transaction)X
45874083(aborts,)X
4588555 3687(the)N
45893 f
4590680(Transaction)X
45911120(Manager)X
45921 f
45931459(calls)X
45941633(on)X
45952 f
45961739(log_unroll)X
45971 f
45982102(to)X
45992190(read)X
46002355(the)X
46012479(transaction's)X
46022915(log)X
46033043(records)X
46043306(and)X
46053448(undo)X
46063634(any)X
46073776(modi\256cations)X
46084237(to)X
4609555 3777(the)N
4610673(database.)X
46111010(As)X
46121119(in)X
46131201(the)X
46141319(commit)X
46151583(case,)X
46161762(it)X
46171826(then)X
46181984(calls)X
46192 f
46202151(lock_unlock_all)X
46211 f
46222683(to)X
46232765(release)X
46243009(the)X
46253127(transaction's)X
46263557(locks.)X
46273 f
4628555 3963(3.2.6.)N
4629775(The)X
4630928(Record)X
46311198(Manager)X
46321 f
4633755 4086(The)N
46343 f
4635919(Record)X
46361208(Manager)X
46371 f
46381559(supports)X
46391869(the)X
46402006(abstraction)X
46412397(of)X
46422503(reading)X
46432783(and)X
46442938(writing)X
46453208(records)X
46463484(to)X
46473585(a)X
46483660(database.)X
46493996(We)X
46504147(have)X
4651555 4176(modi\256ed)N
4652861(the)X
4653981(the)X
46541101(database)X
46551399(access)X
46561626(routines)X
46573 f
46581905(db)X
46591 f
46601993(\(3\))X
46612108([BSD91])X
46622418(to)X
46632501(call)X
46642638(the)X
46652757(log,)X
46662900(lock,)X
46673079(and)X
46683216(buffer)X
46693434(managers.)X
46703803(In)X
46713891(order)X
46724082(to)X
46734165(pro-)X
4674555 4266(vide)N
4675718(functionality)X
46761152(to)X
46771239(perform)X
46781523(undo)X
46791708(and)X
46801849(redo,)X
46812037(the)X
46823 f
46832160(Record)X
46842434(Manager)X
46851 f
46862770(de\256nes)X
46873021(a)X
46883081(collection)X
46893421(of)X
46903512(log)X
46913638(record)X
46923868(types)X
46934061(and)X
46944201(the)X
4695555 4356(associated)N
4696920(undo)X
46971115(and)X
46981266(redo)X
46991444(routines.)X
47001777(The)X
47013 f
47021937(Log)X
47032105(Manager)X
47041 f
47052452(performs)X
47062777(a)X
47072848(table)X
47083039(lookup)X
47093296(on)X
47103411(the)X
47113543(record)X
47123783(type)X
47133955(to)X
47144051(call)X
47154201(the)X
4716555 4446(appropriate)N
4717951(routines.)X
47181299(For)X
47191440(example,)X
47201762(the)X
47211890(B-tree)X
47222121(access)X
47232356(method)X
47242625(requires)X
47252913(two)X
47263062(log)X
47273193(record)X
47283428(types:)X
47293648(insert)X
47303855(and)X
47314000(delete.)X
47324241(A)X
4733555 4536(replace)N
4734808(operation)X
47351131(is)X
47361204(implemented)X
47371642(as)X
47381729(a)X
47391785(delete)X
47401997(followed)X
47412302(by)X
47422402(an)X
47432498(insert)X
47442696(and)X
47452832(is)X
47462905(logged)X
47473143(accordingly.)X
47483 f
4749555 4722(3.3.)N
4750715(Application)X
47511134(Architectures)X
47521 f
4753755 4845(The)N
4754907(structure)X
47551215(of)X
47561309(LIBTP)X
47571558(allows)X
47581794(application)X
47592177(designers)X
47602507(to)X
47612596(trade)X
47622784(off)X
47632905(performance)X
47643339(and)X
47653481(protection.)X
47663872(Since)X
47674076(a)X
47684138(large)X
4769555 4935(portion)N
4770810(of)X
4771901(LIBTP's)X
47721205(functionality)X
47731638(is)X
47741715(provided)X
47752024(by)X
47762128(managing)X
47772468(structures)X
47782804(in)X
47792889(shared)X
47803122(memory,)X
47813432(its)X
47823530(structures)X
47833865(are)X
47843987(subject)X
47854237(to)X
4786555 5025(corruption)N
4787926(by)X
47881043(applications)X
47891467(when)X
47901678(the)X
47911813(library)X
47922064(is)X
47932154(linked)X
47942391(directly)X
47952673(with)X
47962852(the)X
47972987(application.)X
47983420(For)X
47993568(this)X
48003720(reason,)X
48013987(LIBTP)X
48024246(is)X
4803555 5115(designed)N
4804864(to)X
4805950(allow)X
48061152(compilation)X
48071558(into)X
48081706(a)X
48091766(separate)X
48102053(server)X
48112273(process)X
48122537(which)X
48132756(may)X
48142917(be)X
48153016(accessed)X
48163321(via)X
48173442(a)X
48183501(socket)X
48193729(interface.)X
48204094(In)X
48214184(this)X
4822555 5205(way)N
4823712(LIBTP's)X
48241015(data)X
48251172(structures)X
48261507(are)X
48271629(protected)X
48281951(from)X
48292130(application)X
48302509(code,)X
48312704(but)X
48322829(communication)X
48333349(overhead)X
48343666(is)X
48353741(increased.)X
48364107(When)X
4837555 5295(applications)N
4838975(are)X
48391107(trusted,)X
48401377(LIBTP)X
48411631(may)X
48421801(be)X
48431909(compiled)X
48442239(directly)X
48452516(into)X
48462672(the)X
48472802(application)X
48483190(providing)X
48493533(improved)X
48503872(performance.)X
4851555 5385(Figures)N
4852815(two)X
4853955(and)X
48541091(three)X
48551272(show)X
48561461(the)X
48571579(two)X
48581719(alternate)X
48592016(application)X
48602392(architectures.)X
4861755 5508(There)N
4862964(are)X
48631084(potentially)X
48641447(two)X
48651588(modes)X
48661818(in)X
48671901(which)X
48682118(one)X
48692255(might)X
48702462(use)X
48712590(LIBTP)X
48722833(in)X
48732916(a)X
48742972(server)X
48753189(based)X
48763392(architecture.)X
48773832(In)X
48783919(the)X
48794037(\256rst,)X
48804201(the)X
4881555 5598(server)N
4882778(would)X
48831004(provide)X
48841275(the)X
48851399(capability)X
48861741(to)X
48871829(respond)X
48882109(to)X
48892197(requests)X
48902486(to)X
48912574(each)X
48922747(of)X
48932839(the)X
48942962(low)X
48953107(level)X
48963288(modules)X
48973584(\(lock,)X
48983794(log,)X
48993941(buffer,)X
49004183(and)X
4901555 5688(transaction)N
4902944(managers\).)X
49031356(Unfortunately,)X
49041863(the)X
49051998(performance)X
49062442(of)X
49072546(such)X
49082730(a)X
49092803(system)X
49103062(is)X
49113152(likely)X
49123371(to)X
49133470(be)X
49143583(blindingly)X
49153947(slow)X
49164134(since)X
4917
49187 p
4919%%Page: 7 7
492010 s 10 xH 0 xS 1 f
49213 f
49221 f
49231 Dt
49241864 1125 MXY
492515 -26 Dl
4926-15 10 Dl
4927-14 -10 Dl
492814 26 Dl
49290 -266 Dl
49301315 1125 MXY
493115 -26 Dl
4932-15 10 Dl
4933-14 -10 Dl
493414 26 Dl
49350 -266 Dl
49363 Dt
49371133 1125 MXY
49380 798 Dl
4939931 0 Dl
49400 -798 Dl
4941-931 0 Dl
49421 Dt
49431266 1257 MXY
49440 133 Dl
4945665 0 Dl
49460 -133 Dl
4947-665 0 Dl
49483 f
49498 s
49501513 1351(driver)N
49511502 1617(LIBTP)N
49521266 1390 MXY
49530 400 Dl
4954665 0 Dl
49550 -400 Dl
4956-665 0 Dl
49573 Dt
49581133 726 MXY
49590 133 Dl
4960931 0 Dl
49610 -133 Dl
4962-931 0 Dl
49631 f
49641029 1098(txn_abort)N
4965964 1015(txn_commit)N
49661018 932(txn_begin)N
49671910 1015(db_ops)N
49683 f
49691308 820(Application)N
49701645(Program)X
49711398 1218(Server)N
49721594(Process)X
49731 f
49741390 986(socket)N
49751569(interface)X
49761 Dt
49771848 967 MXY
4978-23 -14 Dl
49798 14 Dl
4980-8 15 Dl
498123 -15 Dl
4982-50 0 Dl
49831324 MX
498423 15 Dl
4985-9 -15 Dl
49869 -14 Dl
4987-23 14 Dl
498850 0 Dl
49893 Dt
49902862 859 MXY
49910 1064 Dl
4992932 0 Dl
49930 -1064 Dl
4994-932 0 Dl
49951 Dt
49963178 1390 MXY
499724 -12 Dl
4998-17 0 Dl
4999-8 -15 Dl
50001 27 Dl
5001150 -265 Dl
50023494 1390 MXY
50030 -27 Dl
5004-8 15 Dl
5005-16 1 Dl
500624 11 Dl
5007-166 -265 Dl
50083 f
50093232 1617(LIBTP)N
50102995 1390 MXY
50110 400 Dl
5012666 0 Dl
50130 -400 Dl
5014-666 0 Dl
5015992 MY
50160 133 Dl
5017666 0 Dl
50180 -133 Dl
5019-666 0 Dl
50203168 1086(Application)N
50211 f
50222939 1201(txn_begin)N
50232885 1284(txn_commit)N
50242950 1368(txn_abort)N
50253465 1284(db_ops)N
50263 f
50273155 766(Single)N
50283339(Process)X
50293 Dt
5030-1 Ds
5031811 2100(Figure)N
50321023(2:)X
50331107(Server)X
50341318(Architecture.)X
50351 f
50361727(In)X
50371811(this)X
50381934(con\256guration,)X
5039811 2190(the)N
5040916(library)X
50411113(is)X
50421183(loaded)X
50431380(into)X
50441507(a)X
50451562(server)X
50461744(process)X
50471962(which)X
50482145(is)X
50492214(ac-)X
5050811 2280(cessed)N
5051993(via)X
50521087(a)X
50531131(socket)X
50541310(interface.)X
50553 f
50562563 2100(Figure)N
50572803(3:)X
50582914(Single)X
50593140(Process)X
50603403(Architecture.)X
50611 f
50623839(In)X
50633950(this)X
50642563 2190(con\256guration,)N
50652948(the)X
50663053(library)X
50673250(routines)X
50683483(are)X
50693587(loaded)X
50703784(as)X
50713864(part)X
50723990(of)X
50732563 2280(the)N
50742657(application)X
50752957(and)X
50763065(accessed)X
50773303(via)X
50783397(a)X
50793441(subroutine)X
50803727(interface.)X
508110 s
508210 f
5083555 2403(h)N
5084579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
50851 f
5086555 2679(modifying)N
5087909(a)X
5088966(piece)X
50891157(of)X
50901245(data)X
50911400(would)X
50921621(require)X
50931870(three)X
50942051(or)X
50952138(possibly)X
50962424(four)X
50972578(separate)X
50982862(communications:)X
50993433(one)X
51003569(to)X
51013651(lock)X
51023809(the)X
51033927(data,)X
51044101(one)X
51054237(to)X
5106555 2769(obtain)N
5107781(the)X
5108905(data,)X
51091085(one)X
51101227(to)X
51111315(log)X
51121443(the)X
51131567(modi\256cation,)X
51142017(and)X
51152159(possibly)X
51162451(one)X
51172593(to)X
51182681(transmit)X
51192969(the)X
51203093(modi\256ed)X
51213403(data.)X
51223583(Figure)X
51233817(four)X
51243976(shows)X
51254201(the)X
5126555 2859(relative)N
5127826(performance)X
51281263(for)X
51291387(retrieving)X
51301728(a)X
51311793(single)X
51322013(record)X
51332248(using)X
51342450(the)X
51352577(record)X
51362812(level)X
51372997(call)X
51383142(versus)X
51393376(using)X
51403578(the)X
51413705(lower)X
51423917(level)X
51434102(buffer)X
5144555 2949(management)N
5145987(and)X
51461125(locking)X
51471387(calls.)X
51481616(The)X
51491763(2:1)X
51501887(ratio)X
51512056(observed)X
51522367(in)X
51532450(the)X
51542569(single)X
51552781(process)X
51563043(case)X
51573203(re\257ects)X
51583456(the)X
51593575(additional)X
51603916(overhead)X
51614232(of)X
5162555 3039(parsing)N
5163819(eight)X
51641006(commands)X
51651380(rather)X
51661595(than)X
51671760(one)X
51681903(while)X
51692108(the)X
51702233(3:1)X
51712362(ratio)X
51722536(observed)X
51732853(in)X
51742942(the)X
51753067(client/server)X
51763491(architecture)X
51773898(re\257ects)X
51784157(both)X
5179555 3129(the)N
5180679(parsing)X
5181941(and)X
51821083(the)X
51831207(communication)X
51841731(overheard.)X
51852118(Although)X
51862445(there)X
51872631(may)X
51882794(be)X
51892895(applications)X
51903307(which)X
51913528(could)X
51923731(tolerate)X
51933997(such)X
51944169(per-)X
5195555 3219(formance,)N
5196904(it)X
5197973(seems)X
51981194(far)X
51991309(more)X
52001499(feasible)X
52011774(to)X
52021861(support)X
52032126(a)X
52042187(higher)X
52052417(level)X
52062597(interface,)X
52072923(such)X
52083094(as)X
52093185(that)X
52103329(provided)X
52113638(by)X
52123742(a)X
52133802(query)X
52144009(language)X
5215555 3309(\()N
52162 f
5217582(e.g.)X
52181 f
5219718(SQL)X
5220889([SQL86]\).)X
5221755 3432(Although)N
52221081(LIBTP)X
52231327(does)X
52241498(not)X
52251624(have)X
52261800(an)X
52271900(SQL)X
52282075(parser,)X
52292316(we)X
52302433(have)X
52312608(built)X
52322777(a)X
52332836(server)X
52343056(application)X
52353435(using)X
52363631(the)X
52373752(toolkit)X
52383983(command)X
5239555 3522(language)N
5240882(\(TCL\))X
52411124([OUST90].)X
52421544(The)X
52431706(server)X
52441940(supports)X
52452248(a)X
52462321(command)X
52472674(line)X
52482831(interface)X
52493150(similar)X
52503409(to)X
52513508(the)X
52523643(subroutine)X
52534017(interface)X
5254555 3612(de\256ned)N
5255811(in)X
52563 f
5257893(db)X
52581 f
5259981(\(3\).)X
52601135(Since)X
52611333(it)X
52621397(is)X
52631470(based)X
52641673(on)X
52651773(TCL,)X
52661964(it)X
52672028(provides)X
52682324(control)X
52692571(structures)X
52702903(as)X
52712990(well.)X
52723 f
5273555 3798(4.)N
5274655(Implementation)X
52751 f
52763 f
5277555 3984(4.1.)N
5278715(Locking)X
52791014(and)X
52801162(Deadlock)X
52811502(Detection)X
52821 f
5283755 4107(LIBTP)N
52841007(uses)X
52851175(two-phase)X
52861535(locking)X
52871805(for)X
52881929(user)X
52892093(data.)X
52902297(Strictly)X
52912562(speaking,)X
52922897(the)X
52933024(two)X
52943173(phases)X
52953416(in)X
52963507(two-phase)X
52973866(locking)X
52984135(are)X
52994263(a)X
53003 f
5301555 4197(grow)N
53021 f
5303756(phase,)X
5304986(during)X
53051221(which)X
53061443(locks)X
53071638(are)X
53081763(acquired,)X
53092086(and)X
53102228(a)X
53113 f
53122290(shrink)X
53131 f
53142537(phase,)X
53152766(during)X
53163001(which)X
53173223(locks)X
53183418(are)X
53193543(released.)X
53203873(No)X
53213997(lock)X
53224161(may)X
5323555 4287(ever)N
5324720(be)X
5325822(acquired)X
53261124(during)X
53271358(the)X
53281481(shrink)X
53291706(phase.)X
53301954(The)X
53312104(grow)X
53322294(phase)X
53332502(lasts)X
53342669(until)X
53352840(the)X
53362963(\256rst)X
53373112(release,)X
53383381(which)X
53393602(marks)X
53403823(the)X
53413946(start)X
53424109(of)X
53434201(the)X
5344555 4377(shrink)N
5345780(phase.)X
53461028(In)X
53471120(practice,)X
53481420(the)X
53491543(grow)X
53501733(phase)X
53511941(lasts)X
53522108(for)X
53532227(the)X
53542350(duration)X
53552642(of)X
53562734(a)X
53572795(transaction)X
53583172(in)X
53593259(LIBTP)X
53603506(and)X
53613647(in)X
53623734(commercial)X
53634138(data-)X
5364555 4467(base)N
5365721(systems.)X
53661037(The)X
53671184(shrink)X
53681406(phase)X
53691611(takes)X
53701798(place)X
53711990(during)X
53722221(transaction)X
53732595(commit)X
53742861(or)X
53752950(abort.)X
53763177(This)X
53773341(means)X
53783568(that)X
53793710(locks)X
53803901(are)X
53814022(acquired)X
5382555 4557(on)N
5383655(demand)X
5384929(during)X
53851158(the)X
53861276(lifetime)X
53871545(of)X
53881632(a)X
53891688(transaction,)X
53902080(and)X
53912216(held)X
53922374(until)X
53932540(commit)X
53942804(time,)X
53952986(at)X
53963064(which)X
53973280(point)X
53983464(all)X
53993564(locks)X
54003753(are)X
54013872(released.)X
5402755 4680(If)N
5403832(multiple)X
54041121(transactions)X
54051527(are)X
54061649(active)X
54071864(concurrently,)X
54082313(deadlocks)X
54092657(can)X
54102792(occur)X
54112994(and)X
54123133(must)X
54133311(be)X
54143410(detected)X
54153701(and)X
54163840(resolved.)X
54174174(The)X
5418555 4770(lock)N
5419715(table)X
5420893(can)X
54211027(be)X
54221125(thought)X
54231391(of)X
54241480(as)X
54251569(a)X
54261627(representation)X
54272104(of)X
54282193(a)X
54292251(directed)X
54302532(graph.)X
54312777(The)X
54322924(nodes)X
54333133(in)X
54343216(the)X
54353335(graph)X
54363539(are)X
54373659(transactions.)X
54384103(Edges)X
5439555 4860(represent)N
5440878(the)X
54413 f
54421004(waits-for)X
54431 f
54441340(relation)X
54451613(between)X
54461909(transactions;)X
54472342(if)X
54482419(transaction)X
54492 f
54502799(A)X
54511 f
54522876(is)X
54532957(waiting)X
54543225(for)X
54553347(a)X
54563411(lock)X
54573577(held)X
54583743(by)X
54593851(transaction)X
54602 f
54614230(B)X
54621 f
54634279(,)X
5464555 4950(then)N
5465716(a)X
5466775(directed)X
54671057(edge)X
54681232(exists)X
54691437(from)X
54702 f
54711616(A)X
54721 f
54731687(to)X
54742 f
54751771(B)X
54761 f
54771842(in)X
54781926(the)X
54792046(graph.)X
54802291(A)X
54812371(deadlock)X
54822683(exists)X
54832887(if)X
54842958(a)X
54853016(cycle)X
54863208(appears)X
54873476(in)X
54883560(the)X
54893680(graph.)X
54903925(By)X
54914040(conven-)X
5492555 5040(tion,)N
5493719(no)X
5494819(transaction)X
54951191(ever)X
54961350(waits)X
54971539(for)X
54981653(a)X
54991709(lock)X
55001867(it)X
55011931(already)X
55022188(holds,)X
55032401(so)X
55042492(re\257exive)X
55052793(edges)X
55062996(are)X
55073115(impossible.)X
5508755 5163(A)N
5509836(distinguished)X
55101285(process)X
55111549(monitors)X
55121856(the)X
55131977(lock)X
55142138(table,)X
55152337(searching)X
55162668(for)X
55172785(cycles.)X
55183048(The)X
55193195(frequency)X
55203539(with)X
55213703(which)X
55223921(this)X
55234058(process)X
5524555 5253(runs)N
5525716(is)X
5526792(user-settable;)X
55271243(for)X
55281360(the)X
55291481(multi-user)X
55301833(tests)X
55311998(discussed)X
55322328(in)X
55332413(section)X
55342663(5.1.2,)X
55352866(it)X
55362933(has)X
55373063(been)X
55383238(set)X
55393350(to)X
55403435(wake)X
55413628(up)X
55423731(every)X
55433932(second,)X
55444197(but)X
5545555 5343(more)N
5546742(sophisticated)X
55471182(schedules)X
55481516(are)X
55491636(certainly)X
55501938(possible.)X
55512261(When)X
55522474(a)X
55532531(cycle)X
55542722(is)X
55552796(detected,)X
55563105(one)X
55573242(of)X
55583330(the)X
55593449(transactions)X
55603853(in)X
55613936(the)X
55624055(cycle)X
55634246(is)X
5564555 5433(nominated)N
5565917(and)X
55661057(aborted.)X
55671362(When)X
55681578(the)X
55691700(transaction)X
55702076(aborts,)X
55712315(it)X
55722382(rolls)X
55732547(back)X
55742722(its)X
55752820(changes)X
55763102(and)X
55773241(releases)X
55783519(its)X
55793617(locks,)X
55803829(thereby)X
55814093(break-)X
5582555 5523(ing)N
5583677(the)X
5584795(cycle)X
5585985(in)X
55861067(the)X
55871185(graph.)X
5588
55898 p
5590%%Page: 8 8
559110 s 10 xH 0 xS 1 f
55923 f
55931 f
55944 Ds
55951 Dt
55961866 865 MXY
55971338 0 Dl
55981866 1031 MXY
55991338 0 Dl
56001866 1199 MXY
56011338 0 Dl
56021866 1366 MXY
56031338 0 Dl
56041866 1533 MXY
56051338 0 Dl
56061866 1701 MXY
56071338 0 Dl
5608-1 Ds
56095 Dt
56101866 1868 MXY
56111338 0 Dl
56121 Dt
56131 Di
56142981 MX
5615 2981 1868 lineto
5616 2981 1575 lineto
5617 3092 1575 lineto
5618 3092 1868 lineto
5619 2981 1868 lineto
5620closepath 21 2981 1575 3092 1868 Dp
56212646 MX
5622 2646 1868 lineto
5623 2646 949 lineto
5624 2758 949 lineto
5625 2758 1868 lineto
5626 2646 1868 lineto
5627closepath 14 2646 949 2758 1868 Dp
56282312 MX
5629 2312 1868 lineto
5630 2312 1701 lineto
5631 2423 1701 lineto
5632 2423 1868 lineto
5633 2312 1868 lineto
5634closepath 3 2312 1701 2423 1868 Dp
56351977 MX
5636 1977 1868 lineto
5637 1977 1512 lineto
5638 2089 1512 lineto
5639 2089 1868 lineto
5640 1977 1868 lineto
5641closepath 19 1977 1512 2089 1868 Dp
56423 f
56432640 2047(Client/Server)N
56441957(Single)X
56452185(Process)X
56467 s
56472957 1957(record)N
56482570(component)X
56492289(record)X
56501890(components)X
56511733 1724(.1)N
56521733 1556(.2)N
56531733 1389(.3)N
56541733 1222(.4)N
56551733 1055(.5)N
56561733 889(.6)N
56571590 726(Elapsed)N
56581794(Time)X
56591613 782(\(in)N
56601693(seconds\))X
56613 Dt
5662-1 Ds
56638 s
5664555 2255(Figure)N
5665756(4:)X
5666829(Comparison)X
56671187(of)X
56681260(High)X
56691416(and)X
56701540(Low)X
56711681(Level)X
56721850(Interfaces.)X
56731 f
56742174(Elapsed)X
56752395(time)X
56762528(in)X
56772597(seconds)X
56782818(to)X
56792887(perform)X
56803111(a)X
56813158(single)X
56823330(record)X
56833511(retrieval)X
56843742(from)X
56853885(a)X
56863932(command)X
56874203(line)X
5688555 2345(\(rather)N
5689751(than)X
5690888(a)X
5691943(procedural)X
56921241(interface\))X
56931510(is)X
56941579(shown)X
56951772(on)X
56961862(the)X
56971966(y)X
56982024(axis.)X
56992185(The)X
57002310(``component'')X
57012704(numbers)X
57022950(re\257ect)X
57033135(the)X
57043239(timings)X
57053458(when)X
57063622(the)X
57073726(record)X
57083914(is)X
57093983(retrieved)X
57104235(by)X
5711555 2435(separate)N
5712785(calls)X
5713924(to)X
5714996(the)X
57151096(lock)X
57161228(manager)X
57171469(and)X
57181583(buffer)X
57191760(manager)X
57202001(while)X
57212165(the)X
57222264(``record'')X
57232531(timings)X
57242745(were)X
57252889(obtained)X
57263130(by)X
57273215(using)X
57283375(a)X
57293424(single)X
57303598(call)X
57313711(to)X
57323782(the)X
57333881(record)X
57344064(manager.)X
5735555 2525(The)N
5736674(2:1)X
5737776(ratio)X
5738913(observed)X
57391163(for)X
57401257(the)X
57411355(single)X
57421528(process)X
57431739(case)X
57441868(is)X
57451930(a)X
57461977(re\257ection)X
57472237(of)X
57482309(the)X
57492406(parsing)X
57502613(overhead)X
57512865(for)X
57522958(executing)X
57533225(eight)X
57543372(separate)X
57553599(commands)X
57563895(rather)X
57574062(than)X
57584191(one.)X
5759555 2615(The)N
5760673(additional)X
5761948(factor)X
57621115(of)X
57631187(one)X
57641298(re\257ected)X
57651536(in)X
57661605(the)X
57671702(3:1)X
57681803(ratio)X
57691939(for)X
57702031(the)X
57712127(client/server)X
57722460(architecture)X
57732794(is)X
57742855(due)X
57752965(to)X
57763033(the)X
57773129(communication)X
57783545(overhead.)X
57793828(The)X
57803945(true)X
57814062(ratios)X
57824222(are)X
5783555 2705(actually)N
5784775(worse)X
5785945(since)X
57861094(the)X
57871190(component)X
57881492(timings)X
57891703(do)X
57901785(not)X
57911884(re\257ect)X
57922060(the)X
57932155(search)X
57942334(times)X
57952490(within)X
57962671(each)X
57972804(page)X
57982941(or)X
57993011(the)X
58003106(time)X
58013237(required)X
58023466(to)X
58033533(transmit)X
58043760(the)X
58053855(page)X
58063992(between)X
58074221(the)X
5808555 2795(two)N
5809667(processes.)X
581010 s
581110 f
5812555 2885(h)N
5813579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
58143 f
5815555 3161(4.2.)N
5816715(Group)X
5817961(Commit)X
58181 f
5819755 3284(Since)N
5820959(the)X
58211083(log)X
58221211(must)X
58231392(be)X
58241494(\257ushed)X
58251751(to)X
58261839(disk)X
58271997(at)X
58282080(commit)X
58292349(time,)X
58302536(disk)X
58312694(bandwidth)X
58323057(fundamentally)X
58333545(limits)X
58343751(the)X
58353874(rate)X
58364020(at)X
58374103(which)X
5838555 3374(transactions)N
5839959(complete.)X
58401314(Since)X
58411513(most)X
58421688(transactions)X
58432091(write)X
58442276(only)X
58452438(a)X
58462494(few)X
58472635(small)X
58482828(records)X
58493085(to)X
58503167(the)X
58513285(log,)X
58523427(the)X
58533545(last)X
58543676(page)X
58553848(of)X
58563935(the)X
58574053(log)X
58584175(will)X
5859555 3464(be)N
5860658(\257ushed)X
5861916(once)X
58621095(by)X
58631202(every)X
58641408(transaction)X
58651787(which)X
58662010(writes)X
58672233(to)X
58682322(it.)X
58692433(In)X
58702527(the)X
58712652(naive)X
58722853(implementation,)X
58733402(these)X
58743593(\257ushes)X
58753841(would)X
58764067(happen)X
5877555 3554(serially.)N
5878755 3677(LIBTP)N
58791008(uses)X
58803 f
58811177(group)X
58821412(commit)X
58831 f
58841702([DEWI84])X
58852077(in)X
58862170(order)X
58872371(to)X
58882464(amortize)X
58892775(the)X
58902903(cost)X
58913062(of)X
58923159(one)X
58933305(synchronous)X
58943740(disk)X
58953903(write)X
58964098(across)X
5897555 3767(multiple)N
5898851(transactions.)X
58991304(Group)X
59001539(commit)X
59011812(provides)X
59022117(a)X
59032182(way)X
59042345(for)X
59052468(a)X
59062533(group)X
59072749(of)X
59082845(transactions)X
59093257(to)X
59103348(commit)X
59113621(simultaneously.)X
59124174(The)X
5913555 3857(\256rst)N
5914709(several)X
5915967(transactions)X
59161380(to)X
59171472(commit)X
59181745(write)X
59191939(their)X
59202115(changes)X
59212403(to)X
59222494(the)X
59232621(in-memory)X
59243006(log)X
59253137(page,)X
59263338(then)X
59273505(sleep)X
59283699(on)X
59293808(a)X
59303873(distinguished)X
5931555 3947(semaphore.)N
5932966(Later,)X
59331179(a)X
59341238(committing)X
59351629(transaction)X
59362004(\257ushes)X
59372249(the)X
59382370(page)X
59392545(to)X
59402630(disk,)X
59412805(and)X
59422943(wakes)X
59433166(up)X
59443268(all)X
59453370(its)X
59463467(sleeping)X
59473756(peers.)X
59483988(The)X
59494135(point)X
5950555 4037(at)N
5951635(which)X
5952853(changes)X
59531134(are)X
59541255(actually)X
59551531(written)X
59561780(is)X
59571855(determined)X
59582238(by)X
59592340(three)X
59602523(thresholds.)X
59612914(The)X
59623061(\256rst)X
59633207(is)X
59643281(the)X
59652 f
59663400(group)X
59673612(threshold)X
59681 f
59693935(and)X
59704072(de\256nes)X
5971555 4127(the)N
5972674(minimum)X
59731005(number)X
59741271(of)X
59751359(transactions)X
59761763(which)X
59771979(must)X
59782154(be)X
59792250(active)X
59802462(in)X
59812544(the)X
59822662(system)X
59832904(before)X
59843130(transactions)X
59853533(are)X
59863652(forced)X
59873878(to)X
59883960(participate)X
5989555 4217(in)N
5990646(a)X
5991711(group)X
5992927(commit.)X
59931240(The)X
59941394(second)X
59951646(is)X
59961728(the)X
59972 f
59981855(wait)X
59992021(threshold)X
60001 f
60012352(which)X
60022577(is)X
60032658(expressed)X
60043003(as)X
60053098(the)X
60063224(percentage)X
60073601(of)X
60083696(active)X
60093916(transactions)X
6010555 4307(waiting)N
6011826(to)X
6012919(be)X
60131026(committed.)X
60141439(The)X
60151595(last)X
60161737(is)X
60171821(the)X
60182 f
60191950(logdelay)X
60202257(threshold)X
60211 f
60222590(which)X
60232816(indicates)X
60243131(how)X
60253299(much)X
60263507(un\257ushed)X
60273848(log)X
60283980(should)X
60294223(be)X
6030555 4397(allowed)N
6031829(to)X
6032911(accumulate)X
60331297(before)X
60341523(a)X
60351579(waiting)X
60361839(transaction's)X
60372289(commit)X
60382553(record)X
60392779(is)X
60402852(\257ushed.)X
6041755 4520(Group)N
6042981(commit)X
60431246(can)X
60441379(substantially)X
60451803(improve)X
60462090(performance)X
60472517(for)X
60482631(high-concurrency)X
60493218(environments.)X
60503714(If)X
60513788(only)X
60523950(a)X
60534006(few)X
60544147(tran-)X
6055555 4610(sactions)N
6056836(are)X
6057957(running,)X
60581248(it)X
60591314(is)X
60601389(unlikely)X
60611673(to)X
60621757(improve)X
60632046(things)X
60642263(at)X
60652343(all.)X
60662485(The)X
60672632(crossover)X
60682962(point)X
60693148(is)X
60703223(the)X
60713343(point)X
60723529(at)X
60733609(which)X
60743827(the)X
60753947(transaction)X
6076555 4700(commit)N
6077823(rate)X
6078968(is)X
60791045(limited)X
60801295(by)X
60811399(the)X
60821521(bandwidth)X
60831883(of)X
60841974(the)X
60852096(device)X
60862330(on)X
60872434(which)X
60882654(the)X
60892776(log)X
60902902(resides.)X
60913189(If)X
60923267(processes)X
60933599(are)X
60943722(trying)X
60953937(to)X
60964023(\257ush)X
60974201(the)X
6098555 4790(log)N
6099677(faster)X
6100876(than)X
61011034(the)X
61021152(log)X
61031274(disk)X
61041427(can)X
61051559(accept)X
61061785(data,)X
61071959(then)X
61082117(group)X
61092324(commit)X
61102588(will)X
61112732(increase)X
61123016(the)X
61133134(commit)X
61143398(rate.)X
61153 f
6116555 4976(4.3.)N
6117715(Kernel)X
6118971(Intervention)X
61191418(for)X
61201541(Synchronization)X
61211 f
6122755 5099(Since)N
6123954(LIBTP)X
61241197(uses)X
61251356(data)X
61261511(in)X
61271594(shared)X
61281825(memory)X
61292113(\()X
61302 f
61312140(e.g.)X
61321 f
61332277(the)X
61342395(lock)X
61352553(table)X
61362729(and)X
61372865(buffer)X
61383082(pool\))X
61393271(it)X
61403335(must)X
61413510(be)X
61423606(possible)X
61433888(for)X
61444002(a)X
61454058(process)X
6146555 5189(to)N
6147640(acquire)X
6148900(exclusive)X
61491226(access)X
61501454(to)X
61511538(shared)X
61521770(data)X
61531926(in)X
61542010(order)X
61552202(to)X
61562286(prevent)X
61572549(corruption.)X
61582945(In)X
61593034(addition,)X
61603338(the)X
61613458(process)X
61623721(manager)X
61634020(must)X
61644197(put)X
6165555 5279(processes)N
6166886(to)X
6167971(sleep)X
61681159(when)X
61691356(the)X
61701477(lock)X
61711638(or)X
61721728(buffer)X
61731948(they)X
61742109(request)X
61752364(is)X
61762440(in)X
61772525(use)X
61782655(by)X
61792758(some)X
61802950(other)X
61813138(process.)X
61823441(In)X
61833530(the)X
61843650(LIBTP)X
61853894(implementa-)X
6186555 5385(tion)N
6187705(under)X
6188914(Ultrix)X
61891131(4.0)X
61907 s
61915353(2)Y
619210 s
61935385(,)Y
61941305(we)X
61951424(use)X
61961556(System)X
61971816(V)X
61981899(semaphores)X
61992303(to)X
62002390(provide)X
62012660(this)X
62022800(synchronization.)X
62033377(Semaphores)X
62043794(implemented)X
62054237(in)X
6206555 5475(this)N
6207701(fashion)X
6208968(turn)X
62091128(out)X
62101261(to)X
62111354(be)X
62121461(an)X
62131568(expensive)X
62141920(choice)X
62152161(for)X
62162285(synchronization,)X
62172847(because)X
62183132(each)X
62193310(access)X
62203546(traps)X
62213732(to)X
62223824(the)X
62233952(kernel)X
62244183(and)X
62258 s
622610 f
6227555 5547(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
62285 s
62291 f
6230727 5625(2)N
62318 s
6232763 5650(Ultrix)N
6233932(and)X
62341040(DEC)X
62351184(are)X
62361277(trademarks)X
62371576(of)X
62381645(Digital)X
62391839(Equipment)X
62402136(Corporation.)X
6241
62429 p
6243%%Page: 9 9
62448 s 8 xH 0 xS 1 f
624510 s
62463 f
62471 f
6248555 630(executes)N
6249852(atomically)X
62501210(there.)X
6251755 753(On)N
6252878(architectures)X
62531314(that)X
62541459(support)X
62551724(atomic)X
62561967(test-and-set,)X
62572382(a)X
62582443(much)X
62592646(better)X
62602854(choice)X
62613089(would)X
62623314(be)X
62633415(to)X
62643502(attempt)X
62653767(to)X
62663854(obtain)X
62674079(a)X
62684139(spin-)X
6269555 843(lock)N
6270714(with)X
6271877(a)X
6272934(test-and-set,)X
62731345(and)X
62741482(issue)X
62751663(a)X
62761720(system)X
62771963(call)X
62782100(only)X
62792263(if)X
62802333(the)X
62812452(spinlock)X
62822744(is)X
62832818(unavailable.)X
62843249(Since)X
62853447(virtually)X
62863738(all)X
62873838(semaphores)X
62884237(in)X
6289555 933(LIBTP)N
6290801(are)X
6291924(uncontested)X
62921330(and)X
62931469(are)X
62941591(held)X
62951752(for)X
62961869(very)X
62972035(short)X
62982218(periods)X
62992477(of)X
63002567(time,)X
63012752(this)X
63022890(would)X
63033113(improve)X
63043403(performance.)X
63053873(For)X
63064007(example,)X
6307555 1023(processes)N
6308885(must)X
63091062(acquire)X
63101321(exclusive)X
63111646(access)X
63121874(to)X
63131958(buffer)X
63142177(pool)X
63152341(metadata)X
63162653(in)X
63172737(order)X
63182929(to)X
63193013(\256nd)X
63203159(and)X
63213297(pin)X
63223421(a)X
63233479(buffer)X
63243698(in)X
63253781(shared)X
63264012(memory.)X
6327555 1113(This)N
6328721(semaphore)X
63291093(is)X
63301170(requested)X
63311502(most)X
63321681(frequently)X
63332034(in)X
63342119(LIBTP.)X
63352404(However,)X
63362742(once)X
63372917(it)X
63382984(is)X
63393060(acquired,)X
63403380(only)X
63413545(a)X
63423604(few)X
63433748(instructions)X
63444144(must)X
6345555 1203(be)N
6346656(executed)X
6347966(before)X
63481196(it)X
63491264(is)X
63501341(released.)X
63511669(On)X
63521791(one)X
63531931(architecture)X
63542335(for)X
63552453(which)X
63562673(we)X
63572791(were)X
63582972(able)X
63593130(to)X
63603216(gather)X
63613441(detailed)X
63623719(pro\256ling)X
63634018(informa-)X
6364555 1293(tion,)N
6365729(the)X
6366857(cost)X
63671015(of)X
63681111(the)X
63691238(semaphore)X
63701615(calls)X
63711791(accounted)X
63722146(for)X
63732269(25%)X
63742445(of)X
63752541(the)X
63762668(total)X
63772839(time)X
63783010(spent)X
63793208(updating)X
63803517(the)X
63813644(metadata.)X
63824003(This)X
63834174(was)X
6384555 1383(fairly)N
6385749(consistent)X
63861089(across)X
63871310(most)X
63881485(of)X
63891572(the)X
63901690(critical)X
63911933(sections.)X
6392755 1506(In)N
6393848(an)X
6394950(attempt)X
63951216(to)X
63961304(quantify)X
63971597(the)X
63981720(overhead)X
63992040(of)X
64002132(kernel)X
64012358(synchronization,)X
64022915(we)X
64033034(ran)X
64043162(tests)X
64053329(on)X
64063434(a)X
64073495(version)X
64083756(of)X
64093848(4.3BSD-Reno)X
6410555 1596(which)N
6411786(had)X
6412937(been)X
64131123(modi\256ed)X
64141441(to)X
64151537(support)X
64161811(binary)X
64172050(semaphore)X
64182432(facilities)X
64192742(similar)X
64202998(to)X
64213094(those)X
64223297(described)X
64233639(in)X
64243735([POSIX91].)X
64254174(The)X
6426555 1686(hardware)N
6427880(platform)X
64281181(consisted)X
64291504(of)X
64301595(an)X
64311695(HP300)X
64321941(\(33MHz)X
64332237(MC68030\))X
64342612(workstation)X
64353014(with)X
64363180(16MBytes)X
64373537(of)X
64383628(main)X
64393812(memory,)X
64404123(and)X
64414263(a)X
6442555 1776(600MByte)N
6443920(HP7959)X
64441205(SCSI)X
64451396(disk)X
64461552(\(17)X
64471682(ms)X
64481798(average)X
64492072(seek)X
64502237(time\).)X
64512468(We)X
64522602(ran)X
64532727(three)X
64542910(sets)X
64553052(of)X
64563141(comparisons)X
64573568(which)X
64583786(are)X
64593907(summarized)X
6460555 1866(in)N
6461645(\256gure)X
6462860(\256ve.)X
64631028(In)X
64641123(each)X
64651299(comparison)X
64661701(we)X
64671823(ran)X
64681954(two)X
64692102(tests,)X
64702292(one)X
64712436(using)X
64722637(hardware)X
64732965(spinlocks)X
64743295(and)X
64753438(the)X
64763563(other)X
64773755(using)X
64783955(kernel)X
64794183(call)X
6480555 1956(synchronization.)N
64811135(Since)X
64821341(the)X
64831467(test)X
64841606(was)X
64851758(run)X
64861892(single-user,)X
64872291(none)X
64882474(of)X
64892568(the)X
64902693(the)X
64912818(locks)X
64923014(were)X
64933198(contested.)X
64943568(In)X
64953662(the)X
64963787(\256rst)X
64973938(two)X
64984085(sets)X
64994232(of)X
6500555 2046(tests,)N
6501743(we)X
6502863(ran)X
6503992(the)X
65041116(full)X
65051253(transaction)X
65061631(processing)X
65072000(benchmark)X
65082383(described)X
65092717(in)X
65102805(section)X
65113058(5.1.)X
65123223(In)X
65133315(one)X
65143456(case)X
65153620(we)X
65163739(ran)X
65173867(with)X
65184034(both)X
65194201(the)X
6520555 2136(database)N
6521854(and)X
6522992(log)X
65231116(on)X
65241218(the)X
65251338(same)X
65261525(disk)X
65271680(\(1)X
65281769(Disk\))X
65291969(and)X
65302107(in)X
65312191(the)X
65322311(second,)X
65332576(we)X
65342692(ran)X
65352817(with)X
65362981(the)X
65373101(database)X
65383400(and)X
65393538(log)X
65403661(on)X
65413762(separate)X
65424047(disks)X
65434232(\(2)X
6544555 2226(Disk\).)N
6545800(In)X
6546894(the)X
65471019(last)X
65481157(test,)X
65491315(we)X
65501436(wanted)X
65511695(to)X
65521784(create)X
65532004(a)X
65542067(CPU)X
65552249(bound)X
65562476(environment,)X
65572928(so)X
65583026(we)X
65593146(used)X
65603319(a)X
65613381(database)X
65623684(small)X
65633883(enough)X
65644145(to)X
65654233(\256t)X
6566555 2316(completely)N
6567941(in)X
65681033(the)X
65691161(cache)X
65701375(and)X
65711521(issued)X
65721751(read-only)X
65732089(transactions.)X
65742541(The)X
65752695(results)X
65762933(in)X
65773024(\256gure)X
65783240(\256ve)X
65793389(express)X
65803659(the)X
65813786(kernel)X
65824016(call)X
65834161(syn-)X
6584555 2406(chronization)N
6585980(performance)X
65861411(as)X
65871502(a)X
65881562(percentage)X
65891935(of)X
65902026(the)X
65912148(spinlock)X
65922443(performance.)X
65932914(For)X
65943049(example,)X
65953365(in)X
65963451(the)X
65973573(1)X
65983637(disk)X
65993794(case,)X
66003977(the)X
66014098(kernel)X
6602555 2496(call)N
6603697(implementation)X
66041225(achieved)X
66051537(4.4)X
66061662(TPS)X
66071824(\(transactions)X
66082259(per)X
66092387(second\))X
66102662(while)X
66112865(the)X
66122988(semaphore)X
66133361(implementation)X
66143888(achieved)X
66154199(4.6)X
6616555 2586(TPS,)N
6617735(and)X
6618874(the)X
6619995(relative)X
66201259(performance)X
66211689(of)X
66221779(the)X
66231900(kernel)X
66242123(synchronization)X
66252657(is)X
66262732(96%)X
66272901(that)X
66283043(of)X
66293132(the)X
66303252(spinlock)X
66313545(\(100)X
66323714(*)X
66333776(4.4)X
66343898(/)X
66353942(4.6\).)X
66364111(There)X
6637555 2676(are)N
6638674(two)X
6639814(striking)X
66401078(observations)X
66411503(from)X
66421679(these)X
66431864(results:)X
664410 f
6645635 2799(g)N
66461 f
6647755(even)X
6648927(when)X
66491121(the)X
66501239(system)X
66511481(is)X
66521554(disk)X
66531707(bound,)X
66541947(the)X
66552065(CPU)X
66562240(cost)X
66572389(of)X
66582476(synchronization)X
66593008(is)X
66603081(noticeable,)X
66613451(and)X
666210 f
6663635 2922(g)N
66641 f
6665755(when)X
6666949(we)X
66671063(are)X
66681182(CPU)X
66691357(bound,)X
66701597(the)X
66711715(difference)X
66722062(is)X
66732135(dramatic)X
66742436(\(67%\).)X
66753 f
6676555 3108(4.4.)N
6677715(Transaction)X
66781148(Protected)X
66791499(Access)X
66801747(Methods)X
66811 f
6682755 3231(The)N
6683903(B-tree)X
66841127(and)X
66851266(\256xed)X
66861449(length)X
66871671(recno)X
66881872(\(record)X
66892127(number\))X
66902421(access)X
66912649(methods)X
66922942(have)X
66933116(been)X
66943290(modi\256ed)X
66953596(to)X
66963680(provide)X
66973947(transaction)X
6698555 3321(protection.)N
6699941(Whereas)X
67001244(the)X
67011363(previously)X
67021722(published)X
67032054(interface)X
67042357(to)X
67052440(the)X
67062559(access)X
67072786(routines)X
67083065(had)X
67093202(separate)X
67103487(open)X
67113664(calls)X
67123832(for)X
67133946(each)X
67144114(of)X
67154201(the)X
671610 f
6717555 3507(h)N
6718579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
67191 Dt
67202978 5036 MXY
6721 2978 5036 lineto
6722 2978 4662 lineto
6723 3093 4662 lineto
6724 3093 5036 lineto
6725 2978 5036 lineto
6726closepath 21 2978 4662 3093 5036 Dp
67272518 MX
6728 2518 5036 lineto
6729 2518 3960 lineto
6730 2633 3960 lineto
6731 2633 5036 lineto
6732 2518 5036 lineto
6733closepath 3 2518 3960 2633 5036 Dp
67342059 MX
6735 2059 5036 lineto
6736 2059 3946 lineto
6737 2174 3946 lineto
6738 2174 5036 lineto
6739 2059 5036 lineto
6740closepath 1 2059 3946 2174 5036 Dp
67413 f
67427 s
67432912 5141(Read-only)N
67441426 3767(of)N
67451487(Spinlock)X
67461710(Throughput)X
67471480 3710(Throughput)N
67481786(as)X
67491850(a)X
67501892(%)X
675111 s
67521670 4843(20)N
67531670 4614(40)N
67541670 4384(60)N
67551670 4155(80)N
67561648 3925(100)N
67577 s
67582041 5141(1)N
67592083(Disk)X
67602490(2)X
67612532(Disks)X
67625 Dt
67631829 5036 MXY
67641494 0 Dl
67654 Ds
67661 Dt
67671829 4806 MXY
67681494 0 Dl
67691829 4577 MXY
67701494 0 Dl
67711829 4347 MXY
67721494 0 Dl
67731829 4118 MXY
67741494 0 Dl
67751829 3888 MXY
67761494 0 Dl
67773 Dt
6778-1 Ds
67798 s
6780555 5360(Figure)N
6781753(5:)X
6782823(Kernel)X
67831028(Overhead)X
67841315(for)X
67851413(System)X
67861625(Call)X
67871756(Synchronization.)X
67881 f
67892254(The)X
67902370(performance)X
67912708(of)X
67922778(the)X
67932873(kernel)X
67943049(call)X
67953158(synchronization)X
67963583(is)X
67973643(expressed)X
67983911(as)X
67993980(a)X
68004024(percentage)X
6801555 5450(of)N
6802625(the)X
6803720(spinlock)X
6804954(synchronization)X
68051379(performance.)X
68061749(In)X
68071819(disk)X
68081943(bound)X
68092120(cases)X
68102271(\(1)X
68112341(Disk)X
68122479(and)X
68132588(2)X
68142637(Disks\),)X
68152837(we)X
68162928(see)X
68173026(that)X
68183139(4-6%)X
68193294(of)X
68203364(the)X
68213459(performance)X
68223797(is)X
68233857(lost)X
68243966(due)X
68254074(to)X
68264140(kernel)X
6827555 5540(calls)N
6828688(while)X
6829846(in)X
6830912(the)X
68311006(CPU)X
68321147(bound)X
68331323(case,)X
68341464(we)X
68351554(have)X
68361690(lost)X
68371799(67%)X
68381932(of)X
68392001(the)X
68402095(performance)X
68412432(due)X
68422540(to)X
68432606(kernel)X
68442781(calls.)X
6845
684610 p
6847%%Page: 10 10
68488 s 8 xH 0 xS 1 f
684910 s
68503 f
68511 f
6852555 630(access)N
6853781(methods,)X
68541092(we)X
68551206(now)X
68561364(have)X
68571536(an)X
68581632(integrated)X
68591973(open)X
68602149(call)X
68612285(with)X
68622447(the)X
68632565(following)X
68642896(calling)X
68653134(conventions:)X
68667 f
6867715 753(DB)N
6868859(*dbopen)X
68691243(\(const)X
68701579(char)X
68711819(*file,)X
68722155(int)X
68732347(flags,)X
68742683(int)X
68752875(mode,)X
68763163(DBTYPE)X
68773499(type,)X
68781291 843(int)N
68791483(dbflags,)X
68801915(const)X
68812203(void)X
68822443(*openinfo\))X
68831 f
6884555 966(where)N
68852 f
6886774(\256le)X
68871 f
6888894(is)X
6889969(the)X
68901089(name)X
68911285(of)X
68921374(the)X
68931494(\256le)X
68941618(being)X
68951818(opened,)X
68962 f
68972092(\257ags)X
68981 f
68992265(and)X
69002 f
69012402(mode)X
69021 f
69032597(are)X
69042717(the)X
69052836(standard)X
69063129(arguments)X
69073484(to)X
69083 f
69093567(open)X
69101 f
69113731(\(2\),)X
69122 f
69133866(type)X
69141 f
69154021(is)X
69164095(one)X
69174232(of)X
6918555 1056(the)N
6919680(access)X
6920913(method)X
69211180(types,)X
69222 f
69231396(db\257ags)X
69241 f
69251654(indicates)X
69261966(the)X
69272091(mode)X
69282296(of)X
69292390(the)X
69302515(buffer)X
69312739(pool)X
69322907(and)X
69333049(transaction)X
69343427(protection,)X
69353798(and)X
69362 f
69373940(openinfo)X
69381 f
69394246(is)X
6940555 1146(the)N
6941681(access)X
6942915(method)X
69431183(speci\256c)X
69441456(information.)X
69451902(Currently,)X
69462257(the)X
69472383(possible)X
69482673(values)X
69492906(for)X
69502 f
69513028(db\257ags)X
69521 f
69533287(are)X
69543414(DB_SHARED)X
69553912(and)X
69564055(DB_TP)X
6957555 1236(indicating)N
6958895(that)X
69591035(buffers)X
69601283(should)X
69611516(be)X
69621612(kept)X
69631770(in)X
69641852(a)X
69651908(shared)X
69662138(buffer)X
69672355(pool)X
69682517(and)X
69692653(that)X
69702793(the)X
69712911(\256le)X
69723033(should)X
69733266(be)X
69743362(transaction)X
69753734(protected.)X
6976755 1359(The)N
6977900(modi\256cations)X
69781355(required)X
69791643(to)X
69801725(add)X
69811861(transaction)X
69822233(protection)X
69832578(to)X
69842660(an)X
69852756(access)X
69862982(method)X
69873242(are)X
69883361(quite)X
69893541(simple)X
69903774(and)X
69913910(localized.)X
6992715 1482(1.)N
6993795(Replace)X
69941074(\256le)X
69952 f
69961196(open)X
69971 f
69981372(with)X
69992 f
70001534(buf_open)X
70011 f
70021832(.)X
7003715 1572(2.)N
7004795(Replace)X
70051074(\256le)X
70062 f
70071196(read)X
70081 f
70091363(and)X
70102 f
70111499(write)X
70121 f
70131683(calls)X
70141850(with)X
70152012(buffer)X
70162229(manager)X
70172526(calls)X
70182693(\()X
70192 f
70202720(buf_get)X
70211 f
7022(,)S
70232 f
70243000(buf_unpin)X
70251 f
70263324(\).)X
7027715 1662(3.)N
7028795(Precede)X
70291070(buffer)X
70301287(manager)X
70311584(calls)X
70321751(with)X
70331913(an)X
70342009(appropriate)X
70352395(\(read)X
70362581(or)X
70372668(write\))X
70382880(lock)X
70393038(call.)X
7040715 1752(4.)N
7041795(Before)X
70421034(updates,)X
70431319(issue)X
70441499(a)X
70451555(logging)X
70461819(operation.)X
7047715 1842(5.)N
7048795(After)X
7049985(data)X
70501139(have)X
70511311(been)X
70521483(accessed,)X
70531805(release)X
70542049(the)X
70552167(buffer)X
70562384(manager)X
70572681(pin.)X
7058715 1932(6.)N
7059795(Provide)X
70601064(undo/redo)X
70611409(code)X
70621581(for)X
70631695(each)X
70641863(type)X
70652021(of)X
70662108(log)X
70672230(record)X
70682456(de\256ned.)X
7069555 2071(The)N
7070702(following)X
70711035(code)X
70721209(fragments)X
70731552(show)X
70741743(how)X
70751903(to)X
70761987(transaction)X
70772361(protect)X
70782606(several)X
70792856(updates)X
70803123(to)X
70813206(a)X
70823263(B-tree.)X
70837 s
70843484 2039(3)N
708510 s
70863533 2071(In)N
70873621(the)X
70883740(unprotected)X
70894140(case,)X
7090555 2161(an)N
7091652(open)X
7092829(call)X
7093966(is)X
70941040(followed)X
70951346(by)X
70961447(a)X
70971504(read)X
70981664(call)X
70991801(to)X
71001884(obtain)X
71012105(the)X
71022224(meta-data)X
71032562(for)X
71042677(the)X
71052796(B-tree.)X
71063058(Instead,)X
71073331(we)X
71083446(issue)X
71093627(an)X
71103724(open)X
71113901(to)X
71123984(the)X
71134102(buffer)X
7114555 2251(manager)N
7115852(to)X
7116934(obtain)X
71171154(a)X
71181210(\256le)X
71191332(id)X
71201414(and)X
71211550(a)X
71221606(buffer)X
71231823(request)X
71242075(to)X
71252157(obtain)X
71262377(the)X
71272495(meta-data)X
71282832(as)X
71292919(shown)X
71303148(below.)X
71317 f
7132715 2374(char)N
7133955(*path;)X
7134715 2464(int)N
7135907(fid,)X
71361147(flags,)X
71371483(len,)X
71381723(mode;)X
7139715 2644(/*)N
7140859(Obtain)X
71411195(a)X
71421291(file)X
71431531(id)X
71441675(with)X
71451915(which)X
71462203(to)X
71472347(access)X
71482683(the)X
71492875(buffer)X
71503211(pool)X
71513451(*/)X
7152715 2734(fid)N
7153907(=)X
71541003(buf_open\(path,)X
71551723(flags,)X
71562059(mode\);)X
7157715 2914(/*)N
7158859(Read)X
71591099(the)X
71601291(meta)X
71611531(data)X
71621771(\(page)X
71632059(0\))X
71642203(for)X
71652395(the)X
71662587(B-tree)X
71672923(*/)X
7168715 3004(if)N
7169859(\(tp_lock\(fid,)X
71701531(0,)X
71711675(READ_LOCK\)\))X
71721003 3094(return)N
71731339(error;)X
7174715 3184(meta_data_ptr)N
71751387(=)X
71761483(buf_get\(fid,)X
71772107(0,)X
71782251(BF_PIN,)X
71792635(&len\);)X
71801 f
7181555 3307(The)N
7182714(BF_PIN)X
71831014(argument)X
71841350(to)X
71852 f
71861445(buf_get)X
71871 f
71881718(indicates)X
71892036(that)X
71902189(we)X
71912316(wish)X
71922500(to)X
71932595(leave)X
71942798(this)X
71952946(page)X
71963131(pinned)X
71973382(in)X
71983477(memory)X
71993777(so)X
72003881(that)X
72014034(it)X
72024111(is)X
72034197(not)X
7204555 3397(swapped)N
7205862(out)X
7206990(while)X
72071194(we)X
72081314(are)X
72091439(accessing)X
72101772(it.)X
72111881(The)X
72122031(last)X
72132167(argument)X
72142495(to)X
72152 f
72162582(buf_get)X
72171 f
72182847(returns)X
72193095(the)X
72203218(number)X
72213488(of)X
72223580(bytes)X
72233774(on)X
72243879(the)X
72254002(page)X
72264179(that)X
7227555 3487(were)N
7228732(valid)X
7229912(so)X
72301003(that)X
72311143(the)X
72321261(access)X
72331487(method)X
72341747(may)X
72351905(initialize)X
72362205(the)X
72372323(page)X
72382495(if)X
72392564(necessary.)X
7240755 3610(Next,)N
7241955(consider)X
72421251(inserting)X
72431555(a)X
72441615(record)X
72451845(on)X
72461949(a)X
72472009(particular)X
72482341(page)X
72492517(of)X
72502608(a)X
72512668(B-tree.)X
72522932(In)X
72533022(the)X
72543143(unprotected)X
72553545(case,)X
72563727(we)X
72573844(read)X
72584006(the)X
72594127(page,)X
7260555 3700(call)N
72612 f
7262693(_bt_insertat)X
72631 f
72641079(,)X
72651121(and)X
72661258(write)X
72671444(the)X
72681563(page.)X
72691776(Instead,)X
72702049(we)X
72712164(lock)X
72722323(the)X
72732442(page,)X
72742635(request)X
72752888(the)X
72763007(buffer,)X
72773245(log)X
72783368(the)X
72793487(change,)X
72803756(modify)X
72814008(the)X
72824127(page,)X
7283555 3790(and)N
7284691(release)X
7285935(the)X
72861053(buffer.)X
72877 f
7288715 3913(int)N
7289907(fid,)X
72901147(len,)X
72911387(pageno;)X
72921867(/*)X
72932011(Identifies)X
72942539(the)X
72952731(buffer)X
72963067(*/)X
7297715 4003(int)N
7298907(index;)X
72991867(/*)X
73002011(Location)X
73012443(at)X
73022587(which)X
73032875(to)X
73043019(insert)X
73053355(the)X
73063547(new)X
73073739(pair)X
73083979(*/)X
7309715 4093(DBT)N
7310907(*keyp,)X
73111243(*datap;)X
73121867(/*)X
73132011(Key/Data)X
73142443(pair)X
73152683(to)X
73162827(be)X
73172971(inserted)X
73183403(*/)X
7319715 4183(DATUM)N
73201003(*d;)X
73211867(/*)X
73222011(Key/data)X
73232443(structure)X
73242923(to)X
73253067(insert)X
73263403(*/)X
7327715 4363(/*)N
7328859(Lock)X
73291099(and)X
73301291(request)X
73311675(the)X
73321867(buffer)X
73332203(*/)X
7334715 4453(if)N
7335859(\(tp_lock\(fid,)X
73361531(pageno,)X
73371915(WRITE_LOCK\)\))X
73381003 4543(return)N
73391339(error;)X
7340715 4633(buffer_ptr)N
73411243(=)X
73421339(buf_get\(fid,)X
73431963(pageno,)X
73442347(BF_PIN,)X
73452731(&len\);)X
7346715 4813(/*)N
7347859(Log)X
73481051(and)X
73491243(perform)X
73501627(the)X
73511819(update)X
73522155(*/)X
7353715 4903(log_insdel\(BTREE_INSERT,)N
73541915(fid,)X
73552155(pageno,)X
73562539(keyp,)X
73572827(datap\);)X
7358715 4993(_bt_insertat\(buffer_ptr,)N
73591915(d,)X
73602059(index\);)X
7361715 5083(buf_unpin\(buffer_ptr\);)N
73621 f
7363555 5206(Succinctly,)N
7364942(the)X
73651068(algorithm)X
73661407(for)X
73671529(turning)X
73681788(unprotected)X
73692195(code)X
73702375(into)X
73712527(protected)X
73722854(code)X
73733034(is)X
73743115(to)X
73753205(replace)X
73763466(read)X
73773633(operations)X
73783995(with)X
73792 f
73804165(lock)X
73811 f
7382555 5296(and)N
73832 f
7384691(buf_get)X
73851 f
7386951(operations)X
73871305(and)X
73881441(write)X
73891626(operations)X
73901980(with)X
73912 f
73922142(log)X
73931 f
73942264(and)X
73952 f
73962400(buf_unpin)X
73971 f
73982744(operations.)X
73998 s
740010 f
7401555 5458(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
74025 s
74031 f
7404727 5536(3)N
74058 s
7406766 5561(The)N
7407884(following)X
74081152(code)X
74091291(fragments)X
74101565(are)X
74111661(examples,)X
74121937(but)X
74132038(do)X
74142120(not)X
74152220(de\256ne)X
74162394(the)X
74172490(\256nal)X
74182622(interface.)X
74192894(The)X
74203011(\256nal)X
74213143(interface)X
74223383(will)X
74233501(be)X
74243579(determined)X
74253884(after)X
74264018(LIBTP)X
74274214(has)X
7428555 5633(been)N
7429691(fully)X
7430828(integrated)X
74311099(with)X
74321229(the)X
74331323(most)X
74341464(recent)X
74353 f
74361635(db)X
74371 f
74381707(\(3\))X
74391797(release)X
74401989(from)X
74412129(the)X
74422223(Computer)X
74432495(Systems)X
74442725(Research)X
74452974(Group)X
74463153(at)X
74473215(University)X
74483501(of)X
74493570(California,)X
74503861(Berkeley.)X
7451
745211 p
7453%%Page: 11 11
74548 s 8 xH 0 xS 1 f
745510 s
74563 f
7457555 630(5.)N
7458655(Performance)X
74591 f
7460755 753(In)N
7461845(this)X
7462983(section,)X
74631253(we)X
74641370(present)X
74651625(the)X
74661746(results)X
74671978(of)X
74682067(two)X
74692209(very)X
74702374(different)X
74712673(benchmarks.)X
74723103(The)X
74733250(\256rst)X
74743396(is)X
74753471(an)X
74763569(online)X
74773791(transaction)X
74784165(pro-)X
7479555 843(cessing)N
7480824(benchmark,)X
74811234(similar)X
74821489(to)X
74831584(the)X
74841715(standard)X
74852020(TPCB,)X
74862272(but)X
74872407(has)X
74882547(been)X
74892732(adapted)X
74903015(to)X
74913110(run)X
74923250(in)X
74933345(a)X
74943414(desktop)X
74953696(environment.)X
74964174(The)X
7497555 933(second)N
7498798(emulates)X
74991103(a)X
75001159(computer-aided)X
75011683(design)X
75021912(environment)X
75032337(and)X
75042473(provides)X
75052769(more)X
75062954(complex)X
75073250(query)X
75083453(processing.)X
75093 f
7510555 1119(5.1.)N
7511715(Transaction)X
75121148(Processing)X
75131533(Benchmark)X
75141 f
7515755 1242(For)N
7516887(this)X
75171023(section,)X
75181291(all)X
75191392(performance)X
75201820(numbers)X
75212117(shown)X
75222346(except)X
75232576(for)X
75242690(the)X
75252808(commercial)X
75263207(database)X
75273504(system)X
75283746(were)X
75293923(obtained)X
75304219(on)X
7531555 1332(a)N
7532614(DECstation)X
75331009(5000/200)X
75341333(with)X
75351497(32MBytes)X
75361852(of)X
75371941(memory)X
75382230(running)X
75392501(Ultrix)X
75402714(V4.0,)X
75412914(accessing)X
75423244(a)X
75433302(DEC)X
75443484(RZ57)X
75453688(1GByte)X
75463959(disk)X
75474114(drive.)X
7548555 1422(The)N
7549720(commercial)X
75501139(relational)X
75511482(database)X
75521799(system)X
75532061(tests)X
75542242(were)X
75552438(run)X
75562584(on)X
75572703(a)X
75582778(comparable)X
75593192(machine,)X
75603523(a)X
75613598(Sparcstation)X
75624033(1+)X
75634157(with)X
7564555 1512(32MBytes)N
7565915(memory)X
75661209(and)X
75671352(a)X
75681415(1GByte)X
75691691(external)X
75701976(disk)X
75712135(drive.)X
75722366(The)X
75732517(database,)X
75742840(binaries)X
75753120(and)X
75763262(log)X
75773390(resided)X
75783648(on)X
75793754(the)X
75803878(same)X
75814069(device.)X
7582555 1602(Reported)N
7583869(times)X
75841062(are)X
75851181(the)X
75861299(means)X
75871524(of)X
75881611(\256ve)X
75891751(tests)X
75901913(and)X
75912049(have)X
75922221(standard)X
75932513(deviations)X
75942862(within)X
75953086(two)X
75963226(percent)X
75973483(of)X
75983570(the)X
75993688(mean.)X
7600755 1725(The)N
7601905(test)X
76021041(database)X
76031343(was)X
76041493(con\256gured)X
76051861(according)X
76062203(to)X
76072290(the)X
76082413(TPCB)X
76092637(scaling)X
76102889(rules)X
76113070(for)X
76123189(a)X
76133250(10)X
76143355(transaction)X
76153732(per)X
76163860(second)X
76174108(\(TPS\))X
7618555 1815(system)N
7619817(with)X
7620999(1,000,000)X
76211359(account)X
76221649(records,)X
76231946(100)X
76242106(teller)X
76252311(records,)X
76262607(and)X
76272762(10)X
76282881(branch)X
76293139(records.)X
76303455(Where)X
76313709(TPS)X
76323885(numbers)X
76334200(are)X
7634555 1905(reported,)N
7635865(we)X
7636981(are)X
76371102(running)X
76381373(a)X
76391431(modi\256ed)X
76401737(version)X
76411995(of)X
76422084(the)X
76432203(industry)X
76442486(standard)X
76452779(transaction)X
76463152(processing)X
76473516(benchmark,)X
76483914(TPCB.)X
76494174(The)X
7650555 1995(TPCB)N
7651780(benchmark)X
76521163(simulates)X
76531491(a)X
76541553(withdrawal)X
76551940(performed)X
76562301(by)X
76572407(a)X
76582469(hypothetical)X
76592891(teller)X
76603082(at)X
76613166(a)X
76623228(hypothetical)X
76633650(bank.)X
76643872(The)X
76654022(database)X
7666555 2085(consists)N
7667831(of)X
7668921(relations)X
76691220(\(\256les\))X
76701430(for)X
76711547(accounts,)X
76721871(branches,)X
76732200(tellers,)X
76742439(and)X
76752578(history.)X
76762863(For)X
76772997(each)X
76783168(transaction,)X
76793563(the)X
76803684(account,)X
76813976(teller,)X
76824183(and)X
7683555 2175(branch)N
7684795(balances)X
76851093(must)X
76861269(be)X
76871366(updated)X
76881641(to)X
76891724(re\257ect)X
76901946(the)X
76912065(withdrawal)X
76922447(and)X
76932584(a)X
76942640(history)X
76952882(record)X
76963108(is)X
76973181(written)X
76983428(which)X
76993644(contains)X
77003931(the)X
77014049(account)X
7702555 2265(id,)N
7703657(branch)X
7704896(id,)X
7705998(teller)X
77061183(id,)X
77071285(and)X
77081421(the)X
77091539(amount)X
77101799(of)X
77111886(the)X
77122004(withdrawal)X
77132385([TPCB90].)X
7714755 2388(Our)N
7715914(implementation)X
77161450(of)X
77171551(the)X
77181683(benchmark)X
77192074(differs)X
77202317(from)X
77212506(the)X
77222637(speci\256cation)X
77233075(in)X
77243170(several)X
77253431(aspects.)X
77263736(The)X
77273894(speci\256cation)X
7728555 2478(requires)N
7729840(that)X
7730985(the)X
77311108(database)X
77321410(keep)X
77331587(redundant)X
77341933(logs)X
77352091(on)X
77362196(different)X
77372498(devices,)X
77382784(but)X
77392911(we)X
77403030(use)X
77413162(a)X
77423223(single)X
77433439(log.)X
77443606(Furthermore,)X
77454052(all)X
77464157(tests)X
7747555 2568(were)N
7748734(run)X
7749863(on)X
7750965(a)X
77511023(single,)X
77521256(centralized)X
77531631(system)X
77541875(so)X
77551968(there)X
77562151(is)X
77572226(no)X
77582328(notion)X
77592553(of)X
77602641(remote)X
77612885(accesses.)X
77623219(Finally,)X
77633486(we)X
77643601(calculated)X
77653948(throughput)X
7766555 2658(by)N
7767662(dividing)X
7768955(the)X
77691080(total)X
77701249(elapsed)X
77711517(time)X
77721686(by)X
77731793(the)X
77741918(number)X
77752190(of)X
77762284(transactions)X
77772694(processed)X
77783038(rather)X
77793253(than)X
77803418(by)X
77813525(computing)X
77823894(the)X
77834018(response)X
7784555 2748(time)N
7785717(for)X
7786831(each)X
7787999(transaction.)X
7788755 2871(The)N
7789912(performance)X
77901351(comparisons)X
77911788(focus)X
77921993(on)X
77932104(traditional)X
77942464(Unix)X
77952655(techniques)X
77963029(\(unprotected,)X
77973486(using)X
77983 f
77993690(\257ock)X
78001 f
78013854(\(2\))X
78023979(and)X
78034126(using)X
78043 f
7805555 2961(fsync)N
78061 f
7807733(\(2\)\))X
7808884(and)X
78091030(a)X
78101096(commercial)X
78111504(relational)X
78121836(database)X
78132142(system.)X
78142433(Well-behaved)X
78152913(applications)X
78163329(using)X
78173 f
78183531(\257ock)X
78191 f
78203695(\(2\))X
78213818(are)X
78223946(guaranteed)X
7823555 3051(that)N
7824704(concurrent)X
78251077(processes')X
78261441(updates)X
78271715(do)X
78281824(not)X
78291955(interact)X
78302225(with)X
78312396(one)X
78322541(another,)X
78332831(but)X
78342962(no)X
78353070(guarantees)X
78363442(about)X
78373648(atomicity)X
78383978(are)X
78394105(made.)X
7840555 3141(That)N
7841731(is,)X
7842833(if)X
7843911(the)X
78441038(system)X
78451289(crashes)X
78461555(in)X
78471646(mid-transaction,)X
78482198(only)X
78492369(parts)X
78502554(of)X
78512649(that)X
78522797(transaction)X
78533177(will)X
78543329(be)X
78553433(re\257ected)X
78563738(in)X
78573828(the)X
78583954 0.3125(after-crash)AX
7859555 3231(state)N
7860725(of)X
7861815(the)X
7862936(database.)X
78631276(The)X
78641424(use)X
78651554(of)X
78663 f
78671643(fsync)X
78681 f
78691821(\(2\))X
78701937(at)X
78712017(transaction)X
78722391(commit)X
78732657(time)X
78742821(provides)X
78753119(guarantees)X
78763485(of)X
78773574(durability)X
78783907(after)X
78794077(system)X
7880555 3321(failure.)N
7881825(However,)X
78821160(there)X
78831341(is)X
78841414(no)X
78851514(mechanism)X
78861899(to)X
78871981(perform)X
78882260(transaction)X
78892632(abort.)X
78903 f
7891555 3507(5.1.1.)N
7892775(Single-User)X
78931191(Tests)X
78941 f
7895755 3630(These)N
7896978(tests)X
78971151(compare)X
78981459(LIBTP)X
78991712(in)X
79001804(a)X
79011870(variety)X
79022123(of)X
79032220(con\256gurations)X
79042708(to)X
79052800(traditional)X
79063159(UNIX)X
79073390(solutions)X
79083708(and)X
79093854(a)X
79103920(commercial)X
7911555 3720(relational)N
7912884(database)X
79131187(system)X
79141435(\(RDBMS\).)X
79151814(To)X
79161929(demonstrate)X
79172347(the)X
79182471(server)X
79192694(architecture)X
79203100(we)X
79213220(built)X
79223392(a)X
79233454(front)X
79243636(end)X
79253777(test)X
79263913(process)X
79274179(that)X
7928555 3810(uses)N
7929732(TCL)X
7930922([OUST90])X
79311304(to)X
79321405(parse)X
79331614(database)X
79341930(access)X
79352175(commands)X
79362561(and)X
79372716(call)X
79382870(the)X
79393006(database)X
79403321(access)X
79413565(routines.)X
79423901(In)X
79434006(one)X
79444160(case)X
7945555 3900(\(SERVER\),)N
7946956(frontend)X
79471249(and)X
79481386(backend)X
79491675(processes)X
79502004(were)X
79512181(created)X
79522434(which)X
79532650(communicated)X
79543142(via)X
79553260(an)X
79563356(IP)X
79573447(socket.)X
79583712(In)X
79593799(the)X
79603917(second)X
79614160(case)X
7962555 3990(\(TCL\),)N
7963802(a)X
7964860(single)X
79651073(process)X
79661336(read)X
79671497(queries)X
79681751(from)X
79691929(standard)X
79702223(input,)X
79712429(parsed)X
79722660(them,)X
79732861(and)X
79742998(called)X
79753211(the)X
79763330(database)X
79773628(access)X
79783855(routines.)X
79794174(The)X
7980555 4080(performance)N
7981987(difference)X
79821338(between)X
79831630(the)X
79841752(TCL)X
79851927(and)X
79862067(SERVER)X
79872397(tests)X
79882563(quanti\256es)X
79892898(the)X
79903020(communication)X
79913542(overhead)X
79923861(of)X
79933952(the)X
79944074(socket.)X
7995555 4170(The)N
7996732(RDBMS)X
79971063(implementation)X
79981617(used)X
79991816(embedded)X
80002198(SQL)X
80012401(in)X
80022515(C)X
80032620(with)X
80042814(stored)X
80053062(database)X
80063391(procedures.)X
80073835(Therefore,)X
80084224(its)X
8009555 4260(con\256guration)N
80101003(is)X
80111076(a)X
80121132(hybrid)X
80131361(of)X
80141448(the)X
80151566(single)X
80161777(process)X
80172038(architecture)X
80182438(and)X
80192574(the)X
80202692(server)X
80212909(architecture.)X
80223349(The)X
80233494(graph)X
80243697(in)X
80253779(\256gure)X
80263986(six)X
80274099(shows)X
8028555 4350(a)N
8029611(comparison)X
80301005(of)X
80311092(the)X
80321210(following)X
80331541(six)X
80341654(con\256gurations:)X
80351126 4506(LIBTP)N
80361552(Uses)X
80371728(the)X
80381846(LIBTP)X
80392088(library)X
80402322(in)X
80412404(a)X
80422460(single)X
80432671(application.)X
80441126 4596(TCL)N
80451552(Uses)X
80461728(the)X
80471846(LIBTP)X
80482088(library)X
80492322(in)X
80502404(a)X
80512460(single)X
80522671(application,)X
80533067(requires)X
80543346(query)X
80553549(parsing.)X
80561126 4686(SERVER)N
80571552(Uses)X
80581728(the)X
80591846(LIBTP)X
80602088(library)X
80612322(in)X
80622404(a)X
80632460(server)X
80642677(con\256guration,)X
80653144(requires)X
80663423(query)X
80673626(parsing.)X
80681126 4776(NOTP)N
80691552(Uses)X
80701728(no)X
80711828(locking,)X
80722108(logging,)X
80732392(or)X
80742479(concurrency)X
80752897(control.)X
80761126 4866(FLOCK)N
80771552(Uses)X
80783 f
80791728(\257ock)X
80801 f
80811892(\(2\))X
80822006(for)X
80832120(concurrency)X
80842538(control)X
80852785(and)X
80862921(nothing)X
80873185(for)X
80883299(durability.)X
80891126 4956(FSYNC)N
80901552(Uses)X
80913 f
80921728(fsync)X
80931 f
80941906(\(2\))X
80952020(for)X
80962134(durability)X
80972465(and)X
80982601(nothing)X
80992865(for)X
81002979(concurrency)X
81013397(control.)X
81021126 5046(RDBMS)N
81031552(Uses)X
81041728(a)X
81051784(commercial)X
81062183(relational)X
81072506(database)X
81082803(system.)X
8109755 5235(The)N
8110902(results)X
81111133(show)X
81121324(that)X
81131466(LIBTP,)X
81141730(both)X
81151894(in)X
81161978(the)X
81172098(procedural)X
81182464(and)X
81192602(parsed)X
81202834(environments,)X
81213312(is)X
81223387(competitive)X
81233787(with)X
81243951(a)X
81254009(commer-)X
8126555 5325(cial)N
8127692(system)X
8128935(\(comparing)X
81291326(LIBTP,)X
81301589(TCL,)X
81311781(and)X
81321917(RDBMS\).)X
81332263(Compared)X
81342617(to)X
81352699(existing)X
81362972(UNIX)X
81373193(solutions,)X
81383521(LIBTP)X
81393763(is)X
81403836(approximately)X
8141555 5415(15%)N
8142738(slower)X
8143988(than)X
81441162(using)X
81453 f
81461371(\257ock)X
81471 f
81481535(\(2\))X
81491665(or)X
81501768(no)X
81511884(protection)X
81522245(but)X
81532383(over)X
81542562(80%)X
81552745(better)X
81562964(than)X
81573137(using)X
81583 f
81593345(fsync)X
81601 f
81613523(\(2\))X
81623652(\(comparing)X
81634057(LIBTP,)X
8164555 5505(FLOCK,)N
8165857(NOTP,)X
81661106(and)X
81671242(FSYNC\).)X
8168
816912 p
8170%%Page: 12 12
817110 s 10 xH 0 xS 1 f
81723 f
81738 s
81743500 2184(RDBMS)N
81751 Dt
81763553 2085 MXY
8177 3553 2085 lineto
8178 3676 2085 lineto
8179 3676 1351 lineto
8180 3553 1351 lineto
8181 3553 2085 lineto
8182closepath 16 3553 1351 3676 2085 Dp
81832018 2184(SERVER)N
81841720 1168 MXY
81850 917 Dl
8186122 0 Dl
81870 -917 Dl
8188-122 0 Dl
81891715 2184(TCL)N
81902087 1534 MXY
8191 2087 1534 lineto
8192 2209 1534 lineto
8193 2209 2085 lineto
8194 2087 2085 lineto
8195 2087 1534 lineto
8196closepath 12 2087 1534 2209 2085 Dp
81973187 MX
8198 3187 1534 lineto
8199 3309 1534 lineto
8200 3309 2085 lineto
8201 3187 2085 lineto
8202 3187 1534 lineto
8203closepath 19 3187 1534 3309 2085 Dp
82043142 2184(FSYNC)N
82052425(NOTP)X
82062453 955 MXY
8207 2453 955 lineto
8208 2576 955 lineto
8209 2576 2085 lineto
8210 2453 2085 lineto
8211 2453 955 lineto
8212closepath 21 2453 955 2576 2085 Dp
82132820 1000 MXY
8214 2820 1000 lineto
8215 2942 1000 lineto
8216 2942 2085 lineto
8217 2820 2085 lineto
8218 2820 1000 lineto
8219closepath 14 2820 1000 2942 2085 Dp
82205 Dt
82211231 2085 MXY
82222567 0 Dl
82234 Ds
82241 Dt
82251231 1840 MXY
82262567 0 Dl
82271231 1596 MXY
82282567 0 Dl
82291231 1351 MXY
82302567 0 Dl
82311231 1108 MXY
82322567 0 Dl
82331231 863 MXY
82342567 0 Dl
823511 s
82361087 1877(2)N
82371087 1633(4)N
82381087 1388(6)N
82391087 1145(8)N
82401065 900(10)N
82411028 763(TPS)N
8242-1 Ds
82431353 2085 MXY
8244 1353 2085 lineto
8245 1353 1151 lineto
8246 1476 1151 lineto
8247 1476 2085 lineto
8248 1353 2085 lineto
8249closepath 3 1353 1151 1476 2085 Dp
82508 s
82511318 2184(LIBTP)N
82522767(FLOCK)X
82533 Dt
8254-1 Ds
825510 s
82561597 2399(Figure)N
82571844(6:)X
82581931(Single-User)X
82592347(Performance)X
82602814(Comparison.)X
82611 f
826210 f
8263555 2579(h)N
8264579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
82653 f
8266555 2855(5.1.2.)N
8267775(Multi-User)X
82681174(Tests)X
82691 f
8270755 2978(While)N
8271975(the)X
82721097(single-user)X
82731473(tests)X
82741639(form)X
82751819(a)X
82761878(basis)X
82772061(for)X
82782178(comparing)X
82792544(LIBTP)X
82802789(to)X
82812874(other)X
82823062(systems,)X
82833358(our)X
82843488(goal)X
82853649(in)X
82863734(multi-user)X
82874086(testing)X
8288555 3068(was)N
8289714(to)X
8290810(analyze)X
82911089(its)X
82921197(scalability.)X
82931579(To)X
82941701(this)X
82951849(end,)X
82962018(we)X
82972145(have)X
82982330(run)X
82992470(the)X
83002601(benchmark)X
83012991(in)X
83023086(three)X
83033280(modes,)X
83043542(the)X
83053673(normal)X
83063933(disk)X
83074099(bound)X
8308555 3158(con\256guration)N
83091010(\(\256gure)X
83101252(seven\),)X
83111510(a)X
83121573(CPU)X
83131755(bound)X
83141982(con\256guration)X
83152436(\(\256gure)X
83162677(eight,)X
83172884(READ-ONLY\),)X
83183426(and)X
83193569(lock)X
83203734(contention)X
83214099(bound)X
8322555 3248(\(\256gure)N
8323796(eight,)X
83241003(NO_FSYNC\).)X
83251510(Since)X
83261715(the)X
83271840(normal)X
83282094(con\256guration)X
83292548(is)X
83302628(completely)X
83313011(disk)X
83323171(bound)X
83333398(\(each)X
83343600(transaction)X
83353978(requires)X
83364263(a)X
8337555 3354(random)N
8338823(read,)X
83391005(a)X
83401064(random)X
83411332(write,)X
83421540(and)X
83431679(a)X
83441738(sequential)X
83452086(write)X
83467 s
83472251 3322(4)N
834810 s
83493354(\))Y
83502329(we)X
83512446(expect)X
83522679(to)X
83532764(see)X
83542890(little)X
83553059(performance)X
83563489(improvement)X
83573939(as)X
83584028(the)X
83594148(mul-)X
8360555 3444(tiprogramming)N
83611064(level)X
83621249(increases.)X
83631613(In)X
83641709(fact,)X
83651879(\256gure)X
83662095(seven)X
83672307(reveals)X
83682564(that)X
83692713(we)X
83702836(are)X
83712964(able)X
83723127(to)X
83733218(overlap)X
83743487(CPU)X
83753670(and)X
83763814(disk)X
83773975(utilization)X
8378555 3534(slightly)N
8379825(producing)X
83801181(approximately)X
83811674(a)X
83821740(10%)X
83831917(performance)X
83842354(improvement)X
83852811(with)X
83862983(two)X
83873133(processes.)X
83883511(After)X
83893711(that)X
83903861(point,)X
83914075(perfor-)X
8392555 3624(mance)N
8393785(drops)X
8394983(off,)X
83951117(and)X
83961253(at)X
83971331(a)X
83981387(multi-programming)X
83992038(level)X
84002214(of)X
84012301(4,)X
84022381(we)X
84032495(are)X
84042614(performing)X
84052995(worse)X
84063207(than)X
84073365(in)X
84083447(the)X
84093565(single)X
84103776(process)X
84114037(case.)X
8412755 3747(Similar)N
84131021(behavior)X
84141333(was)X
84151489(reported)X
84161787(on)X
84171897(the)X
84182025(commercial)X
84192434(relational)X
84202767(database)X
84213074(system)X
84223326(using)X
84233529(the)X
84243657(same)X
84253852(con\256guration.)X
8426555 3837(The)N
8427707(important)X
84281045(conclusion)X
84291419(to)X
84301508(draw)X
84311696(from)X
84321879(this)X
84332021(is)X
84342101(that)X
84352248(you)X
84362395(cannot)X
84372636(attain)X
84382841(good)X
84393028(multi-user)X
84403384(scaling)X
84413638(on)X
84423745(a)X
84433808(badly)X
84444013(balanced)X
8445555 3927(system.)N
8446839(If)X
8447915(multi-user)X
84481266(performance)X
84491695(on)X
84501797(applications)X
84512205(of)X
84522293(this)X
84532429(sort)X
84542570(is)X
84552644(important,)X
84562996(one)X
84573133(must)X
84583309(have)X
84593482(a)X
84603539(separate)X
84613824(logging)X
84624089(device)X
8463555 4017(and)N
8464697(horizontally)X
84651110(partition)X
84661407(the)X
84671531(database)X
84681834(to)X
84691921(allow)X
84702124(a)X
84712185(suf\256ciently)X
84722570(high)X
84732737(degree)X
84742977(of)X
84753069(multiprogramming)X
84763698(that)X
84773843(group)X
84784055(commit)X
8479555 4107(can)N
8480687(amortize)X
8481988(the)X
84821106(cost)X
84831255(of)X
84841342(log)X
84851464(\257ushing.)X
8486755 4230(By)N
8487871(using)X
84881067(a)X
84891126(very)X
84901292(small)X
84911488(database)X
84921788(\(one)X
84931954(that)X
84942097(can)X
84952232(be)X
84962331(entirely)X
84972599(cached)X
84982846(in)X
84992930(main)X
85003112(memory\))X
85013428(and)X
85023566(read-only)X
85033896(transactions,)X
8504555 4320(we)N
8505670(generated)X
85061004(a)X
85071061(CPU)X
85081236(bound)X
85091456(environment.)X
85101921(By)X
85112034(using)X
85122227(the)X
85132345(same)X
85142530(small)X
85152723(database,)X
85163040(the)X
85173158(complete)X
85183472(TPCB)X
85193691(transaction,)X
85204083(and)X
85214219(no)X
85223 f
8523555 4410(fsync)N
85241 f
8525733(\(2\))X
8526862(on)X
8527977(the)X
85281110(log)X
85291247(at)X
85301340(commit,)X
85311639(we)X
85321768(created)X
85332036(a)X
85342107(lock)X
85352280(contention)X
85362652(bound)X
85372886(environment.)X
85383365(The)X
85393524(small)X
85403731(database)X
85414042(used)X
85424223(an)X
8543555 4500(account)N
8544828(\256le)X
8545953(containing)X
85461314(only)X
85471479(1000)X
85481662(records)X
85491922(rather)X
85502133(than)X
85512294(the)X
85522415(full)X
85532549(1,000,000)X
85542891(records)X
85553150(and)X
85563288(ran)X
85573413(enough)X
85583671(transactions)X
85594076(to)X
85604160(read)X
8561555 4590(the)N
8562677(entire)X
8563883(database)X
85641183(into)X
85651330(the)X
85661451(buffer)X
85671671(pool)X
85681836(\(2000\))X
85692073(before)X
85702302(beginning)X
85712645(measurements.)X
85723147(The)X
85733295(read-only)X
85743626(transaction)X
85754001(consisted)X
8576555 4680(of)N
8577646(three)X
8578831(database)X
85791132(reads)X
85801326(\(from)X
85811533(the)X
85821655(1000)X
85831839(record)X
85842069(account)X
85852343(\256le,)X
85862489(the)X
85872611(100)X
85882754(record)X
85892983(teller)X
85903171(\256le,)X
85913316(and)X
85923455(the)X
85933576(10)X
85943679(record)X
85953908(branch)X
85964150(\256le\).)X
8597555 4770(Since)N
8598759(no)X
8599865(data)X
86001025(were)X
86011208(modi\256ed)X
86021518(and)X
86031660(no)X
86041766(history)X
86052014(records)X
86062277(were)X
86072460(written,)X
86082733(no)X
86092839(log)X
86102966(records)X
86113228(were)X
86123410(written.)X
86133702(For)X
86143838(the)X
86153961(contention)X
8616555 4860(bound)N
8617780(con\256guration,)X
86181252(we)X
86191371(used)X
86201543(the)X
86211666(normal)X
86221918(TPCB)X
86232142(transaction)X
86242519(\(against)X
86252798(the)X
86262920(small)X
86273117(database\))X
86283445(and)X
86293585(disabled)X
86303876(the)X
86313998(log)X
86324124(\257ush.)X
8633555 4950(Figure)N
8634784(eight)X
8635964(shows)X
86361184(both)X
86371346(of)X
86381433(these)X
86391618(results.)X
8640755 5073(The)N
8641902(read-only)X
86421231(test)X
86431363(indicates)X
86441669(that)X
86451810(we)X
86461925(barely)X
86472147(scale)X
86482329(at)X
86492408(all)X
86502509(in)X
86512592(the)X
86522711(CPU)X
86532887(bound)X
86543108(case.)X
86553308(The)X
86563454(explanation)X
86573849(for)X
86583964(that)X
86594105(is)X
86604179(that)X
8661555 5163(even)N
8662735(with)X
8663905(a)X
8664969(single)X
86651188(process,)X
86661477(we)X
86671599(are)X
86681726(able)X
86691888(to)X
86701978(drive)X
86712171(the)X
86722297(CPU)X
86732480(utilization)X
86742832(to)X
86752922(96%.)X
86763137(As)X
86773254(a)X
86783317(result,)X
86793542(that)X
86803689(gives)X
86813885(us)X
86823983(very)X
86834153(little)X
8684555 5253(room)N
8685753(for)X
8686876(improvement,)X
86871352(and)X
86881497(it)X
86891570(takes)X
86901764(a)X
86911829(multiprogramming)X
86922462(level)X
86932647(of)X
86942743(four)X
86952906(to)X
86962997(approach)X
86973321(100%)X
86983537(CPU)X
86993721(saturation.)X
87004106(In)X
87014201(the)X
8702555 5343(case)N
8703718(where)X
8704939(we)X
87051057(do)X
87061161(perform)X
87071444(writes,)X
87081684(we)X
87091802(are)X
87101925(interested)X
87112261(in)X
87122347(detecting)X
87132665(when)X
87142863(lock)X
87153025(contention)X
87163387(becomes)X
87173691(a)X
87183750(dominant)X
87194075(perfor-)X
8720555 5433(mance)N
8721787(factor.)X
87221037(Contention)X
87231414(will)X
87241560(cause)X
87251761(two)X
87261903(phenomena;)X
87272317(we)X
87282433(will)X
87292579(see)X
87302704(transactions)X
87313109(queueing)X
87323425(behind)X
87333665(frequently)X
87344017(accessed)X
8735555 5523(data,)N
8736731(and)X
8737869(we)X
8738985(will)X
87391131(see)X
87401256(transaction)X
87411629(abort)X
87421815(rates)X
87431988(increasing)X
87442339(due)X
87452476(to)X
87462559(deadlock.)X
87472910(Given)X
87483127(that)X
87493268(the)X
87503387(branch)X
87513627(\256le)X
87523750(contains)X
87534038(only)X
87544201(ten)X
87558 s
875610 f
8757555 5595(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
87585 s
87591 f
8760727 5673(4)N
87618 s
8762763 5698(Although)N
87631021(the)X
87641115(log)X
87651213(is)X
87661272(written)X
87671469(sequentially,)X
87681810(we)X
87691900(do)X
87701980(not)X
87712078(get)X
87722172(the)X
87732266(bene\256t)X
87742456(of)X
87752525(sequentiality)X
87762868(since)X
87773015(the)X
87783109(log)X
87793207(and)X
87803315(database)X
87813550(reside)X
87823718(on)X
87833798(the)X
87843892(same)X
87854039(disk.)X
8786
878713 p
8788%%Page: 13 13
87898 s 8 xH 0 xS 1 f
879010 s
87913 f
87921 f
87933187 2051 MXY
87940 18 Dl
87950 -9 Dl
87969 0 Dl
8797-18 0 Dl
87983286 2028 MXY
87990 17 Dl
88000 -9 Dl
88019 0 Dl
8802-18 0 Dl
88033384 1926 MXY
88040 18 Dl
88050 -9 Dl
88069 0 Dl
8807-18 0 Dl
88083483 1910 MXY
88090 18 Dl
88100 -9 Dl
88119 0 Dl
8812-18 0 Dl
88133581 1910 MXY
88140 18 Dl
88150 -9 Dl
88169 0 Dl
8817-18 0 Dl
88183680 1832 MXY
88190 18 Dl
88200 -9 Dl
88219 0 Dl
8822-18 0 Dl
88233778 1909 MXY
88240 18 Dl
88250 -9 Dl
88269 0 Dl
8827-18 0 Dl
88283877 1883 MXY
88290 18 Dl
88300 -9 Dl
88319 0 Dl
8832-18 0 Dl
88333975 1679 MXY
88340 17 Dl
88350 -8 Dl
88369 0 Dl
8837-18 0 Dl
88384074 1487 MXY
88390 17 Dl
88400 -8 Dl
88419 0 Dl
8842-18 0 Dl
88435 Dt
88443187 2060 MXY
884599 -24 Dl
884698 -101 Dl
884799 -16 Dl
884898 0 Dl
884999 -78 Dl
885098 77 Dl
885199 -26 Dl
885298 -204 Dl
885399 -192 Dl
88543 f
88556 s
88564088 1516(SMALL)N
88573 Dt
88583187 2051 MXY
88590 18 Dl
88600 -9 Dl
88619 0 Dl
8862-18 0 Dl
88633286 2051 MXY
88640 18 Dl
88650 -9 Dl
88669 0 Dl
8867-18 0 Dl
88683384 2041 MXY
88690 18 Dl
88700 -9 Dl
88719 0 Dl
8872-18 0 Dl
88733483 1990 MXY
88740 18 Dl
88750 -9 Dl
88769 0 Dl
8877-18 0 Dl
88783581 1843 MXY
88790 17 Dl
88800 -8 Dl
88819 0 Dl
8882-18 0 Dl
88833680 1578 MXY
88840 18 Dl
88850 -9 Dl
88869 0 Dl
8887-18 0 Dl
88883778 1496 MXY
88890 18 Dl
88900 -9 Dl
88919 0 Dl
8892-18 0 Dl
88933877 1430 MXY
88940 18 Dl
88950 -9 Dl
88969 0 Dl
8897-18 0 Dl
88983975 1269 MXY
88990 18 Dl
89000 -9 Dl
89019 0 Dl
8902-18 0 Dl
89034074 1070 MXY
89040 18 Dl
89050 -9 Dl
89069 0 Dl
8907-18 0 Dl
89081 Dt
89093187 2060 MXY
891099 0 Dl
891198 -10 Dl
891299 -51 Dl
891398 -147 Dl
891499 -265 Dl
891598 -82 Dl
891699 -66 Dl
891798 -161 Dl
891899 -199 Dl
89194088 1099(LARGE)N
89205 Dt
89213089 2060 MXY
8922985 0 Dl
89233089 MX
89240 -1174 Dl
89254 Ds
89261 Dt
89273581 2060 MXY
89280 -1174 Dl
89294074 2060 MXY
89300 -1174 Dl
89313089 1825 MXY
8932985 0 Dl
89339 s
89342993 1855(25)N
89353089 1591 MXY
8936985 0 Dl
89372993 1621(50)N
89383089 1356 MXY
8939985 0 Dl
89402993 1386(75)N
89413089 1121 MXY
8942985 0 Dl
89432957 1151(100)N
89443089 886 MXY
8945985 0 Dl
89462957 916(125)N
89473281 2199(Multiprogramming)N
89483071 2152(0)N
89493569(5)X
89504038(10)X
89512859 787(Aborts)N
89523089(per)X
89533211(500)X
89542901 847(transactions)N
8955-1 Ds
89563 Dt
89572037 1342 MXY
89580 18 Dl
89590 -9 Dl
89609 0 Dl
8961-18 0 Dl
89622125 1358 MXY
89630 18 Dl
89640 -9 Dl
89659 0 Dl
8966-18 0 Dl
89672213 1341 MXY
89680 18 Dl
89690 -9 Dl
89709 0 Dl
8971-18 0 Dl
89722301 1191 MXY
89730 18 Dl
89740 -9 Dl
89759 0 Dl
8976-18 0 Dl
89772388 1124 MXY
89780 18 Dl
89790 -9 Dl
89809 0 Dl
8981-17 0 Dl
89822476 1157 MXY
89830 18 Dl
89840 -9 Dl
89859 0 Dl
8986-18 0 Dl
89872564 1157 MXY
89880 18 Dl
89890 -9 Dl
89909 0 Dl
8991-18 0 Dl
89922652 1161 MXY
89930 18 Dl
89940 -9 Dl
89959 0 Dl
8996-18 0 Dl
89972740 1153 MXY
89980 18 Dl
89990 -9 Dl
90009 0 Dl
9001-18 0 Dl
90022828 1150 MXY
90030 18 Dl
90040 -9 Dl
90058 0 Dl
9006-17 0 Dl
90075 Dt
90082037 1351 MXY
900988 16 Dl
901088 -17 Dl
901188 -150 Dl
901287 -67 Dl
901388 33 Dl
901488 0 Dl
901588 4 Dl
901688 -8 Dl
901788 -3 Dl
90186 s
90192685 1234(READ-ONLY)N
90203 Dt
90212037 1464 MXY
90220 18 Dl
90230 -9 Dl
90249 0 Dl
9025-18 0 Dl
90262125 1640 MXY
90270 18 Dl
90280 -9 Dl
90299 0 Dl
9030-18 0 Dl
90312213 1854 MXY
90320 18 Dl
90330 -9 Dl
90349 0 Dl
9035-18 0 Dl
90362301 1872 MXY
90370 18 Dl
90380 -9 Dl
90399 0 Dl
9040-18 0 Dl
90412388 1871 MXY
90420 17 Dl
90430 -9 Dl
90449 0 Dl
9045-17 0 Dl
90462476 1933 MXY
90470 18 Dl
90480 -9 Dl
90499 0 Dl
9050-18 0 Dl
90512564 1914 MXY
90520 18 Dl
90530 -9 Dl
90549 0 Dl
9055-18 0 Dl
90562652 1903 MXY
90570 18 Dl
90580 -9 Dl
90599 0 Dl
9060-18 0 Dl
90612740 1980 MXY
90620 18 Dl
90630 -9 Dl
90649 0 Dl
9065-18 0 Dl
90662828 2004 MXY
90670 18 Dl
90680 -9 Dl
90698 0 Dl
9070-17 0 Dl
90711 Dt
90722037 1473 MXY
907388 176 Dl
907488 214 Dl
907588 18 Dl
907687 -2 Dl
907788 63 Dl
907888 -19 Dl
907988 -11 Dl
908088 77 Dl
908188 24 Dl
90822759 1997(NO-FSYNC)N
90835 Dt
90841949 2060 MXY
9085879 0 Dl
90861949 MX
90870 -1174 Dl
90884 Ds
90891 Dt
90902388 2060 MXY
90910 -1174 Dl
90922828 2060 MXY
90930 -1174 Dl
90941949 1825 MXY
9095879 0 Dl
90969 s
90971842 1855(40)N
90981949 1591 MXY
9099879 0 Dl
91001842 1621(80)N
91011949 1356 MXY
9102879 0 Dl
91031806 1386(120)N
91041949 1121 MXY
9105879 0 Dl
91061806 1151(160)N
91071949 886 MXY
9108879 0 Dl
91091806 916(200)N
91102088 2199(Multiprogramming)N
91111844 863(in)N
91121922(TPS)X
91131761 792(Throughput)N
91141931 2121(0)N
91152370 2133(5)N
91162792(10)X
91176 s
91181679 1833(LIBTP)N
9119-1 Ds
91203 Dt
9121837 1019 MXY
91220 17 Dl
91230 -9 Dl
91249 0 Dl
9125-18 0 Dl
9126929 878 MXY
91270 17 Dl
91280 -9 Dl
91299 0 Dl
9130-18 0 Dl
91311021 939 MXY
91320 18 Dl
91330 -9 Dl
91349 0 Dl
9135-18 0 Dl
91361113 1043 MXY
91370 18 Dl
91380 -9 Dl
91399 0 Dl
9140-18 0 Dl
91411205 1314 MXY
91420 18 Dl
91430 -9 Dl
91449 0 Dl
9145-18 0 Dl
91461297 1567 MXY
91470 18 Dl
91480 -9 Dl
91499 0 Dl
9150-18 0 Dl
91511389 1665 MXY
91520 18 Dl
91530 -9 Dl
91549 0 Dl
9155-18 0 Dl
91561481 1699 MXY
91570 18 Dl
91580 -9 Dl
91599 0 Dl
9160-18 0 Dl
91611573 1828 MXY
91620 18 Dl
91630 -9 Dl
91649 0 Dl
9165-18 0 Dl
91661665 1804 MXY
91670 18 Dl
91680 -9 Dl
91698 0 Dl
9170-17 0 Dl
91715 Dt
9172837 1027 MXY
917392 -141 Dl
917492 62 Dl
917592 104 Dl
917692 271 Dl
917792 253 Dl
917892 98 Dl
917992 34 Dl
918092 129 Dl
918192 -24 Dl
9182745 2060 MXY
9183920 0 Dl
9184745 MX
91850 -1174 Dl
91864 Ds
91871 Dt
91881205 2060 MXY
91890 -1174 Dl
91901665 2060 MXY
91910 -1174 Dl
9192745 1766 MXY
9193920 0 Dl
91949 s
9195673 1796(3)N
9196745 1473 MXY
9197920 0 Dl
9198673 1503(5)N
9199745 1180 MXY
9200920 0 Dl
9201673 1210(8)N
9202745 886 MXY
9203920 0 Dl
9204637 916(10)N
9205905 2199(Multiprogramming)N
9206622 851(in)N
9207700(TPS)X
9208575 792(Throughput)N
9209733 2152(0)N
92101196(5)X
92111629(10)X
92123 Dt
9213-1 Ds
92148 s
9215655 2441(Figure)N
9216872(7:)X
9217960(Multi-user)X
92181286(Performance.)X
92191 f
9220655 2531(Since)N
9221825(the)X
9222931(con\256guration)X
92231300(is)X
92241371(completely)X
9225655 2621(disk)N
9226790(bound,)X
9227994(we)X
92281096(see)X
92291204(only)X
92301345(a)X
92311400(small)X
92321566(im-)X
9233655 2711(provement)N
9234964(by)X
92351064(adding)X
92361274(a)X
92371337(second)X
92381549(pro-)X
9239655 2801(cess.)N
9240849(Adding)X
92411081(any)X
92421213(more)X
92431383(concurrent)X
9244655 2891(processes)N
9245935(causes)X
92461137(performance)X
92471493(degra-)X
9248655 2981(dation.)N
92493 f
92501927 2441(Figure)N
92512149(8:)X
92522243(Multi-user)X
92532574(Performance)X
92541927 2531(on)N
92552021(a)X
92562079(small)X
92572251(database.)X
92581 f
92592551(With)X
92602704(one)X
92612821(pro-)X
92621927 2621(cess,)N
92632075(we)X
92642174(are)X
92652276(driving)X
92662486(the)X
92672589(CPU)X
92682739(at)X
92692810(96%)X
92701927 2711(utilization)N
92712215(leaving)X
92722430(little)X
92732575(room)X
92742737(for)X
92752838(im-)X
92761927 2801(provement)N
92772238(as)X
92782328(the)X
92792443(multiprogramming)X
92801927 2891(level)N
92812091(increases.)X
92822396(In)X
92832489(the)X
92842607(NO-FSYNC)X
92851927 2981(case,)N
92862076(lock)X
92872209(contention)X
92882502(degrades)X
92892751(perfor-)X
92901927 3071(mance)N
92912117(as)X
92922194(soon)X
92932339(as)X
92942416(a)X
92952468(second)X
92962669(process)X
92972884(is)X
92981927 3161(added.)N
92993 f
93003199 2441(Figure)N
93013405(9:)X
93023482(Abort)X
93033669(rates)X
93043827(on)X
93053919(the)X
93064028(TPCB)X
93073199 2531(Benchmark.)N
93081 f
93093589(The)X
93103726(abort)X
93113895(rate)X
93124028(climbs)X
93133199 2621(more)N
93143366(quickly)X
93153594(for)X
93163704(the)X
93173818(large)X
93183980(database)X
93193199 2711(test)N
93203324(since)X
93213491(processes)X
93223771(are)X
93233884(descheduled)X
93243199 2801(more)N
93253409(frequently,)X
93263766(allowing)X
93274068(more)X
93283199 2891(processes)N
93293459(to)X
93303525(vie)X
93313619(for)X
93323709(the)X
93333803(same)X
93343950(locks.)X
933510 s
933610 f
9337555 3284(h)N
9338579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
93391 f
9340555 3560(records,)N
9341835(we)X
9342952(expect)X
93431185(contention)X
93441546(to)X
93451631(become)X
93461904(a)X
93471963(factor)X
93482174(quickly)X
93492437(and)X
93502576(the)X
93512697(NO-FSYNC)X
93523120(line)X
93533263(in)X
93543348(\256gure)X
93553557(eight)X
93563739(demonstrates)X
93574184(this)X
9358555 3650(dramatically.)N
93591022(Each)X
93601209(additional)X
93611555(process)X
93621822(causes)X
93632058(both)X
93642226(more)X
93652417(waiting)X
93662682(and)X
93672823(more)X
93683013(deadlocking.)X
93693470(Figure)X
93703704(nine)X
93713867(shows)X
93724092(that)X
93734237(in)X
9374555 3740(the)N
9375681(small)X
9376882(database)X
93771187(case)X
93781353(\(SMALL\),)X
93791725(waiting)X
93801992(is)X
93812072(the)X
93822197(dominant)X
93832526(cause)X
93842732(of)X
93852826(declining)X
93863151(performance)X
93873585(\(the)X
93883737(number)X
93894009(of)X
93904103(aborts)X
9391555 3830(increases)N
9392878(less)X
93931026(steeply)X
93941281(than)X
93951447(the)X
93961573(performance)X
93972008(drops)X
93982214(off)X
93992336(in)X
94002426(\256gure)X
94012641(eight\),)X
94022876(while)X
94033082(in)X
94043172(the)X
94053298(large)X
94063487(database)X
94073792(case)X
94083958(\(LARGE\),)X
9409555 3920(deadlocking)N
9410967(contributes)X
94111343(more)X
94121528(to)X
94131610(the)X
94141728(declining)X
94152046(performance.)X
9416755 4043(Deadlocks)N
94171116(are)X
94181237(more)X
94191424(likely)X
94201628(to)X
94211712(occur)X
94221913(in)X
94231997(the)X
94242116(LARGE)X
94252404(test)X
94262536(than)X
94272695(in)X
94282778(the)X
94292897(SMALL)X
94303189(test)X
94313321(because)X
94323597(there)X
94333779(are)X
94343899(more)X
94354085(oppor-)X
9436555 4133(tunities)N
9437814(to)X
9438900(wait.)X
94391082(In)X
94401173(the)X
94411295(SMALL)X
94421590(case,)X
94431773(processes)X
94442105(never)X
94452307(do)X
94462410(I/O)X
94472540(and)X
94482679(are)X
94492801(less)X
94502944(likely)X
94513149(to)X
94523234(be)X
94533333(descheduled)X
94543753(during)X
94553985(a)X
94564044(transac-)X
9457555 4223(tion.)N
9458740(In)X
9459828(the)X
9460947(LARGE)X
94611235(case,)X
94621415(processes)X
94631744(will)X
94641889(frequently)X
94652240(be)X
94662337(descheduled)X
94672755(since)X
94682941(they)X
94693100(have)X
94703273(to)X
94713356(perform)X
94723636(I/O.)X
94733804(This)X
94743967(provides)X
94754263(a)X
9476555 4313(window)N
9477837(where)X
94781058(a)X
94791118(second)X
94801365(process)X
94811630(can)X
94821766(request)X
94832022(locks)X
94842215(on)X
94852318(already)X
94862578(locked)X
94872815(pages,)X
94883041(thus)X
94893197(increasing)X
94903550(the)X
94913671(likelihood)X
94924018(of)X
94934108(build-)X
9494555 4403(ing)N
9495677(up)X
9496777(long)X
9497939(chains)X
94981164(of)X
94991251(waiting)X
95001511(processes.)X
95011879(Eventually,)X
95022266(this)X
95032401(leads)X
95042586(to)X
95052668(deadlock.)X
95063 f
9507555 4589(5.2.)N
9508715(The)X
9509868(OO1)X
95101052(Benchmark)X
95111 f
9512755 4712(The)N
9513903(TPCB)X
95141125(benchmark)X
95151505(described)X
95161836(in)X
95171921(the)X
95182042(previous)X
95192341(section)X
95202591(measures)X
95212913(performance)X
95223343(under)X
95233549(a)X
95243608(conventional)X
95254044(transac-)X
9526555 4802(tion)N
9527706(processing)X
95281076(workload.)X
95291446(Other)X
95301656(application)X
95312039(domains,)X
95322357(such)X
95332531(as)X
95342625(computer-aided)X
95353156(design,)X
95363412(have)X
95373591(substantially)X
95384022(different)X
9539555 4892(access)N
9540786(patterns.)X
95411105(In)X
95421197(order)X
95431392(to)X
95441479(measure)X
95451772(the)X
95461895(performance)X
95472327(of)X
95482418(LIBTP)X
95492664(under)X
95502871(workloads)X
95513229(of)X
95523320(this)X
95533459(type,)X
95543641(we)X
95553759(implemented)X
95564201(the)X
9557555 4982(OO1)N
9558731(benchmark)X
95591108(described)X
95601436(in)X
95611518([CATT91].)X
9562755 5105(The)N
9563908(database)X
95641213(models)X
95651472(a)X
95661535(set)X
95671651(of)X
95681745(electronics)X
95692120(components)X
95702534(with)X
95712703(connections)X
95723113(among)X
95733358(them.)X
95743585(One)X
95753746(table)X
95763929(stores)X
95774143(parts)X
9578555 5195(and)N
9579696(another)X
9580962(stores)X
95811174(connections.)X
95821622(There)X
95831835(are)X
95841959(three)X
95852145(connections)X
95862552(originating)X
95872927(at)X
95883009(any)X
95893149(given)X
95903351(part.)X
95913540(Ninety)X
95923782(percent)X
95934043(of)X
95944134(these)X
9595555 5285(connections)N
9596960(are)X
95971081(to)X
95981165(nearby)X
95991406(parts)X
96001584(\(those)X
96011802(with)X
96021966(nearby)X
96032 f
96042207(ids)X
96051 f
96062300(\))X
96072348(to)X
96082431(model)X
96092652(the)X
96102771(spatial)X
96113001(locality)X
96123262(often)X
96133448(exhibited)X
96143767(in)X
96153850(CAD)X
96164040(applica-)X
9617555 5375(tions.)N
9618779(Ten)X
9619933(percent)X
96201198(of)X
96211293(the)X
96221419(connections)X
96231830(are)X
96241957(randomly)X
96252292(distributed)X
96262662(among)X
96272908(all)X
96283016(other)X
96293209(parts)X
96303393(in)X
96313483(the)X
96323609(database.)X
96333954(Every)X
96344174(part)X
9635555 5465(appears)N
9636829(exactly)X
96371089(three)X
96381278(times)X
96391479(in)X
96401569(the)X
96412 f
96421695(from)X
96431 f
96441874(\256eld)X
96452043(of)X
96462137(a)X
96472200(connection)X
96482579(record,)X
96492832(and)X
96502975(zero)X
96513141(or)X
96523235(more)X
96533427(times)X
96543627(in)X
96553716(the)X
96562 f
96573841(to)X
96581 f
96593930(\256eld.)X
96604139(Parts)X
9661555 5555(have)N
96622 f
9663727(x)X
96641 f
9665783(and)X
96662 f
9667919(y)X
96681 f
9669975(locations)X
96701284(set)X
96711393(randomly)X
96721720(in)X
96731802(an)X
96741898(appropriate)X
96752284(range.)X
9676
967714 p
9678%%Page: 14 14
967910 s 10 xH 0 xS 1 f
96803 f
96811 f
9682755 630(The)N
9683900(intent)X
96841102(of)X
96851189(OO1)X
96861365(is)X
96871438(to)X
96881520(measure)X
96891808(the)X
96901926(overall)X
96912169(cost)X
96922318(of)X
96932405(a)X
96942461(query)X
96952664(mix)X
96962808(characteristic)X
96973257(of)X
96983344(engineering)X
96993743(database)X
97004040(applica-)X
9701555 720(tions.)N
9702770(There)X
9703978(are)X
97041097(three)X
97051278(tests:)X
970610 f
9707635 843(g)N
97082 f
9709755(Lookup)X
97101 f
97111022(generates)X
97121353(1,000)X
97131560(random)X
97141832(part)X
97152 f
97161984(ids)X
97171 f
97182077(,)X
97192124(fetches)X
97202378(the)X
97212502(corresponding)X
97222987(parts)X
97233169(from)X
97243351(the)X
97253475(database,)X
97263798(and)X
97273940(calls)X
97284113(a)X
97294175(null)X
9730755 933(procedure)N
97311097(in)X
97321179(the)X
97331297(host)X
97341450(programming)X
97351906(language)X
97362216(with)X
97372378(the)X
97382496(parts')X
97392 f
97402699(x)X
97411 f
97422755(and)X
97432 f
97442891(y)X
97451 f
97462947(positions.)X
974710 f
9748635 1056(g)N
97492 f
9750755(Traverse)X
97511 f
97521067(retrieves)X
97531371(a)X
97541434(random)X
97551706(part)X
97561858(from)X
97572041(the)X
97582166(database)X
97592470(and)X
97602613(follows)X
97612880(connections)X
97623290(from)X
97633473(it)X
97643544(to)X
97653632(other)X
97663823(parts.)X
97674045(Each)X
97684232(of)X
9769755 1146(those)N
9770947(parts)X
97711126(is)X
97721202(retrieved,)X
97731531(and)X
97741670(all)X
97751773(connections)X
97762179(from)X
97772358(it)X
97782424(followed.)X
97792771(This)X
97802935(procedure)X
97813279(is)X
97823354(repeated)X
97833649(depth-\256rst)X
97844000(for)X
97854116(seven)X
9786755 1236(hops)N
9787930(from)X
97881110(the)X
97891232(original)X
97901505(part,)X
97911674(for)X
97921792(a)X
97931852(total)X
97942018(of)X
97952109(3280)X
97962293(parts.)X
97972513(Backward)X
97982862(traversal)X
97993162(also)X
98003314(exists,)X
98013539(and)X
98023678(follows)X
98033941(all)X
98044044(connec-)X
9805755 1326(tions)N
9806930(into)X
98071074(a)X
98081130(given)X
98091328(part)X
98101473(to)X
98111555(their)X
98121722(origin.)X
981310 f
9814635 1449(g)N
98152 f
9816755(Insert)X
98171 f
9818962(adds)X
98191129(100)X
98201269(new)X
98211423(parts)X
98221599(and)X
98231735(their)X
98241902(connections.)X
9825755 1572(The)N
9826913(benchmark)X
98271303(is)X
98281389(single-user,)X
98291794(but)X
98301929(multi-user)X
98312291(access)X
98322530(controls)X
98332821(\(locking)X
98343120(and)X
98353268(transaction)X
98363652(protection\))X
98374036(must)X
98384223(be)X
9839555 1662(enforced.)N
9840898(It)X
9841968(is)X
98421042(designed)X
98431348(to)X
98441431(be)X
98451528(run)X
98461656(on)X
98471757(a)X
98481814(database)X
98492112(with)X
98502275(20,000)X
98512516(parts,)X
98522713(and)X
98532850(on)X
98542951(one)X
98553087(with)X
98563249(200,000)X
98573529(parts.)X
98583745(Because)X
98594033(we)X
98604147(have)X
9861555 1752(insuf\256cient)N
9862935(disk)X
98631088(space)X
98641287(for)X
98651401(the)X
98661519(larger)X
98671727(database,)X
98682044(we)X
98692158(report)X
98702370(results)X
98712599(only)X
98722761(for)X
98732875(the)X
98742993(20,000)X
98753233(part)X
98763378(database.)X
98773 f
9878555 1938(5.2.1.)N
9879775(Implementation)X
98801 f
9881755 2061(The)N
9882920(LIBTP)X
98831182(implementation)X
98841724(of)X
98851831(OO1)X
98862027(uses)X
98872205(the)X
98882342(TCL)X
98892532([OUST90])X
98902914(interface)X
98913235(described)X
98923582(earlier.)X
98933867(The)X
98944031(backend)X
9895555 2151(accepts)N
9896813(commands)X
98971181(over)X
98981345(an)X
98991442(IP)X
99001534(socket)X
99011760(and)X
99021897(performs)X
99032208(the)X
99042327(requested)X
99052656(database)X
99062954(actions.)X
99073242(The)X
99083387(frontend)X
99093679(opens)X
99103886(and)X
99114022(executes)X
9912555 2241(a)N
9913618(TCL)X
9914796(script.)X
99151041(This)X
99161210(script)X
99171415(contains)X
99181709(database)X
99192013(accesses)X
99202313(interleaved)X
99212697(with)X
99222866(ordinary)X
99233165(program)X
99243463(control)X
99253716(statements.)X
99264120(Data-)X
9927555 2331(base)N
9928718(commands)X
99291085(are)X
99301204(submitted)X
99311539(to)X
99321621(the)X
99331739(backend)X
99342027(and)X
99352163(results)X
99362392(are)X
99372511(bound)X
99382731(to)X
99392813(program)X
99403105(variables.)X
9941755 2454(The)N
9942903(parts)X
99431082(table)X
99441261(was)X
99451409(stored)X
99461628(as)X
99471718(a)X
99481776(B-tree)X
99491999(indexed)X
99502275(by)X
99512 f
99522377(id)X
99531 f
99542439(.)X
99552501(The)X
99562648(connection)X
99573022(table)X
99583200(was)X
99593347(stored)X
99603565(as)X
99613654(a)X
99623712(set)X
99633823(of)X
99643912(\256xed-length)X
9965555 2544(records)N
9966824(using)X
99671029(the)X
99681159(4.4BSD)X
99691446(recno)X
99701657(access)X
99711895(method.)X
99722207(In)X
99732306(addition,)X
99742620(two)X
99752771(B-tree)X
99763003(indices)X
99773261(were)X
99783449(maintained)X
99793836(on)X
99803947(connection)X
9981555 2634(table)N
9982732(entries.)X
99831007(One)X
99841162(index)X
99851360(mapped)X
99861634(the)X
99872 f
99881752(from)X
99891 f
99901923(\256eld)X
99912085(to)X
99922167(a)X
99932223(connection)X
99942595(record)X
99952821(number,)X
99963106(and)X
99973242(the)X
99983360(other)X
99993545(mapped)X
100003819(the)X
100012 f
100023937(to)X
100031 f
100044019(\256eld)X
100054181(to)X
100064263(a)X
10007555 2724(connection)N
10008932(record)X
100091163(number.)X
100101473(These)X
100111690(indices)X
100121941(support)X
100132205(fast)X
100142345(lookups)X
100152622(on)X
100162726(connections)X
100173133(in)X
100183219(both)X
100193385(directions.)X
100203765(For)X
100213900(the)X
100224022(traversal)X
10023555 2814(tests,)N
10024743(the)X
10025867(frontend)X
100261165(does)X
100271338(an)X
100281439(index)X
100291642(lookup)X
100301889(to)X
100311976(discover)X
100322273(the)X
100332396(connected)X
100342747(part's)X
100352 f
100362955(id)X
100371 f
100383017(,)X
100393062(and)X
100403203(then)X
100413366(does)X
100423538(another)X
100433804(lookup)X
100444051(to)X
100454138(fetch)X
10046555 2904(the)N
10047673(part)X
10048818(itself.)X
100493 f
10050555 3090(5.2.2.)N
10051775(Performance)X
100521242(Measurements)X
100531766(for)X
100541889(OO1)X
100551 f
10056755 3213(We)N
10057888(compare)X
100581186(LIBTP's)X
100591487(OO1)X
100601664(performance)X
100612092(to)X
100622174(that)X
100632314(reported)X
100642602(in)X
100652684([CATT91].)X
100663087(Those)X
100673303(results)X
100683532(were)X
100693709(collected)X
100704019(on)X
100714119(a)X
100724175(Sun)X
10073555 3303(3/280)N
10074759(\(25)X
10075888(MHz)X
100761075(MC68020\))X
100771448(with)X
100781612(16)X
100791714(MBytes)X
100801989(of)X
100812078(memory)X
100822367(and)X
100832505(two)X
100842647(Hitachi)X
100852904(892MByte)X
100863267(disks)X
100873452(\(15)X
100883580(ms)X
100893694(average)X
100903966(seek)X
100914130(time\))X
10092555 3393(behind)N
10093793(an)X
10094889(SMD-4)X
100951149(controller.)X
100961521(Frontends)X
100971861(ran)X
100981984(on)X
100992084(an)X
101002180(8MByte)X
101012462(Sun)X
101022606(3/260.)X
10103755 3516(In)N
10104844(order)X
101051036(to)X
101061120(measure)X
101071410(performance)X
101081839(on)X
101091941(a)X
101101999(machine)X
101112293(of)X
101122382(roughly)X
101132653(equivalent)X
101143009(processor)X
101153339(power,)X
101163582(we)X
101173698(ran)X
101183822(one)X
101193959(set)X
101204069(of)X
101214157(tests)X
10122555 3606(on)N
10123666(a)X
10124733(standalone)X
101251107(MC68030-based)X
101261671(HP300)X
101271923(\(33MHz)X
101282225(MC68030\).)X
101292646(The)X
101302801(database)X
101313108(was)X
101323263(stored)X
101333489(on)X
101343599(a)X
101353665(300MByte)X
101364037(HP7959)X
10137555 3696(SCSI)N
10138744(disk)X
10139898(\(17)X
101401026(ms)X
101411139(average)X
101421410(seek)X
101431573(time\).)X
101441802(Since)X
101452000(this)X
101462135(machine)X
101472427(is)X
101482500(not)X
101492622(connected)X
101502968(to)X
101513050(a)X
101523106(network,)X
101533409(we)X
101543523(ran)X
101553646(local)X
101563822(tests)X
101573984(where)X
101584201(the)X
10159555 3786(frontend)N
10160855(and)X
10161999(backend)X
101621295(run)X
101631430(on)X
101641538(the)X
101651664(same)X
101661856(machine.)X
101672195(We)X
101682334(compare)X
101692638(these)X
101702830(measurements)X
101713316(with)X
101723485(Cattell's)X
101733783(local)X
101743966(Sun)X
101754117(3/280)X
10176555 3876(numbers.)N
10177755 3999(Because)N
101781051(the)X
101791177(benchmark)X
101801562(requires)X
101811849(remote)X
101822100(access,)X
101832354(we)X
101842476(ran)X
101852607(another)X
101862876(set)X
101872993(of)X
101883088(tests)X
101893258(on)X
101903365(a)X
101913428(DECstation)X
101923828(5000/200)X
101934157(with)X
10194555 4089(32M)N
10195732(of)X
10196825(memory)X
101971118(running)X
101981393(Ultrix)X
101991610(V4.0)X
102001794(and)X
102011936(a)X
102021998(DEC)X
102032184(1GByte)X
102042459(RZ57)X
102052666(SCSI)X
102062859(disk.)X
102073057(We)X
102083194(compare)X
102093496(the)X
102103619(local)X
102113800(performance)X
102124232(of)X
10213555 4179(OO1)N
10214734(on)X
10215837(the)X
10216958(DECstation)X
102171354(to)X
102181439(its)X
102191536(remote)X
102201781(performance.)X
102212250(For)X
102222383(the)X
102232503(remote)X
102242748(case,)X
102252929(we)X
102263045(ran)X
102273170(the)X
102283290(frontend)X
102293584(on)X
102303686(a)X
102313744(DECstation)X
102324139(3100)X
10233555 4269(with)N
10234717(16)X
10235817(MBytes)X
102361090(of)X
102371177(main)X
102381357(memory.)X
10239755 4392(The)N
10240900(databases)X
102411228(tested)X
102421435(in)X
102431517([CATT91])X
102441880(are)X
1024510 f
10246635 4515(g)N
102471 f
10248755(INDEX,)X
102491045(a)X
102501101(highly-optimized)X
102511672(access)X
102521898(method)X
102532158(package)X
102542442(developed)X
102552792(at)X
102562870(Sun)X
102573014(Microsystems.)X
1025810 f
10259635 4638(g)N
102601 f
10261755(OODBMS,)X
102621137(a)X
102631193(beta)X
102641347(release)X
102651591(of)X
102661678(a)X
102671734(commercial)X
102682133(object-oriented)X
102692639(database)X
102702936(management)X
102713366(system.)X
1027210 f
10273635 4761(g)N
102741 f
10275755(RDBMS,)X
102761076(a)X
102771133(UNIX-based)X
102781565(commercial)X
102791965(relational)X
102802289(data)X
102812444(manager)X
102822742(at)X
102832821(production)X
102843189(release.)X
102853474(The)X
102863620(OO1)X
102873797(implementation)X
10288755 4851(used)N
10289922(embedded)X
102901272(SQL)X
102911443(in)X
102921525(C.)X
102931638(Stored)X
102941867(procedures)X
102952240(were)X
102962417(de\256ned)X
102972673(to)X
102982755(reduce)X
102992990(client-server)X
103003412(traf\256c.)X
10301755 4974(Table)N
10302974(two)X
103031130(shows)X
103041366(the)X
103051500(measurements)X
103061995(from)X
103072187([CATT91])X
103082566(and)X
103092718(LIBTP)X
103102976(for)X
103113106(a)X
103123178(local)X
103133370(test)X
103143517(on)X
103153632(the)X
103163765(MC680x0-based)X
10317555 5064(hardware.)N
10318915(All)X
103191037(caches)X
103201272(are)X
103211391(cleared)X
103221644(before)X
103231870(each)X
103242038(test.)X
103252209(All)X
103262331(times)X
103272524(are)X
103282643(in)X
103292725(seconds.)X
10330755 5187(Table)N
10331960(two)X
103321102(shows)X
103331324(that)X
103341466(LIBTP)X
103351710(outperforms)X
103362123(the)X
103372242(commercial)X
103382642(relational)X
103392966(system,)X
103403229(but)X
103413352(is)X
103423426(slower)X
103433661(than)X
103443820(OODBMS)X
103454183(and)X
10346555 5277(INDEX.)N
10347872(Since)X
103481077(the)X
103491202(caches)X
103501444(were)X
103511628(cleared)X
103521888(at)X
103531973(the)X
103542098(start)X
103552263(of)X
103562356(each)X
103572530(test,)X
103582687(disk)X
103592846(throughput)X
103603223(is)X
103613302(critical)X
103623551(in)X
103633639(this)X
103643780(test.)X
103653957(The)X
103664108(single)X
10367555 5367(SCSI)N
10368749(HP)X
10369877(drive)X
103701068(used)X
103711241(by)X
103721347(LIBTP)X
103731595(is)X
103741674(approximately)X
103752163(13%)X
103762336(slower)X
103772576(than)X
103782739(the)X
103792862(disks)X
103803051(used)X
103813223(in)X
103823310([CATT91])X
103833678(which)X
103843899(accounts)X
103854205(for)X
10386555 5457(part)N
10387700(of)X
10388787(the)X
10389905(difference.)X
10390755 5580(OODBMS)N
103911118(and)X
103921255(INDEX)X
103931525(outperform)X
103941906(LIBTP)X
103952148(most)X
103962323(dramatically)X
103972744(on)X
103982844(traversal.)X
103993181(This)X
104003343(is)X
104013416(because)X
104023691(we)X
104033805(use)X
104043932(index)X
104054130(look-)X
10406555 5670(ups)N
10407689(to)X
10408774(\256nd)X
10409921(connections,)X
104101347(whereas)X
104111634(the)X
104121755(other)X
104131942(two)X
104142084(systems)X
104152359(use)X
104162488(a)X
104172546(link)X
104182692(access)X
104192920(method.)X
104203222(The)X
104213369(index)X
104223569(requires)X
104233850(us)X
104243943(to)X
104254027(examine)X
10426
1042715 p
10428%%Page: 15 15
1042910 s 10 xH 0 xS 1 f
104303 f
104311 f
1043210 f
10433555 679(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
104342 f
10435606 769(Measure)N
104361 f
104371019(INDEX)X
104381389(OODBMS)X
104391851(RDBMS)X
104402250(LIBTP)X
1044110 f
10442555 771(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
10443555 787(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
104441 f
10445595 869(Lookup)N
104461114(5.4)X
104471490(12.9)X
104481950(27)X
104492291(27.2)X
10450595 959(Traversal)N
104511074(13)X
104521530(9.8)X
104531950(90)X
104542291(47.3)X
10455595 1049(Insert)N
104561114(7.4)X
104571530(1.5)X
104581950(22)X
104592331(9.7)X
1046010 f
10461555 1059(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
10462555(c)X
10463999(c)Y
10464919(c)Y
10465839(c)Y
10466759(c)Y
10467959 1059(c)N
10468999(c)Y
10469919(c)Y
10470839(c)Y
10471759(c)Y
104721329 1059(c)N
10473999(c)Y
10474919(c)Y
10475839(c)Y
10476759(c)Y
104771791 1059(c)N
10478999(c)Y
10479919(c)Y
10480839(c)Y
10481759(c)Y
104822190 1059(c)N
10483999(c)Y
10484919(c)Y
10485839(c)Y
10486759(c)Y
104872512 1059(c)N
10488999(c)Y
10489919(c)Y
10490839(c)Y
10491759(c)Y
104922618 679(i)N
104932629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
104942 f
104952829 769(Measure)N
104963401(Cache)X
104973726(Local)X
104984028(Remote)X
104991 f
1050010 f
105012618 771(i)N
105022629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
105032618 787(i)N
105042629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
105051 f
105062658 869(Lookup)N
105073401(cold)X
105083747(15.7)X
105094078(20.6)X
105103401 959(warm)N
105113787(7.8)X
105124078(12.4)X
1051310 f
105142618 969(i)N
105152629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
105161 f
105172658 1059(Forward)N
105182950(traversal)X
105193401(cold)X
105203747(28.4)X
105214078(52.6)X
105223401 1149(warm)N
105233747(23.5)X
105244078(47.4)X
1052510 f
105262618 1159(i)N
105272629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
105281 f
105292658 1249(Backward)N
105303004(traversal)X
105313401(cold)X
105323747(24.2)X
105334078(47.4)X
105343401 1339(warm)N
105353747(24.3)X
105364078(47.6)X
1053710 f
105382618 1349(i)N
105392629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
105401 f
105412658 1439(Insert)N
105423401(cold)X
105433787(7.5)X
105444078(10.3)X
105453401 1529(warm)N
105463787(6.7)X
105474078(10.9)X
1054810 f
105492618 1539(i)N
105502629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
105512618(c)X
105521479(c)Y
105531399(c)Y
105541319(c)Y
105551239(c)Y
105561159(c)Y
105571079(c)Y
10558999(c)Y
10559919(c)Y
10560839(c)Y
10561759(c)Y
105623341 1539(c)N
105631479(c)Y
105641399(c)Y
105651319(c)Y
105661239(c)Y
105671159(c)Y
105681079(c)Y
10569999(c)Y
10570919(c)Y
10571839(c)Y
10572759(c)Y
105733666 1539(c)N
105741479(c)Y
105751399(c)Y
105761319(c)Y
105771239(c)Y
105781159(c)Y
105791079(c)Y
10580999(c)Y
10581919(c)Y
10582839(c)Y
10583759(c)Y
105843968 1539(c)N
105851479(c)Y
105861399(c)Y
105871319(c)Y
105881239(c)Y
105891159(c)Y
105901079(c)Y
10591999(c)Y
10592919(c)Y
10593839(c)Y
10594759(c)Y
105954309 1539(c)N
105961479(c)Y
105971399(c)Y
105981319(c)Y
105991239(c)Y
106001159(c)Y
106011079(c)Y
10602999(c)Y
10603919(c)Y
10604839(c)Y
10605759(c)Y
106063 f
10607587 1785(Table)N
10608823(2:)X
10609931(Local)X
106101163(MC680x0)X
106111538(Performance)X
106122026(of)X
106132133(Several)X
10614587 1875(Systems)N
10615883(on)X
10616987(OO1.)X
106172667 1785(Table)N
106182909(3:)X
106193023(Local)X
106203260(vs.)X
106213397(Remote)X
106223707(Performance)X
106234200(of)X
106242667 1875(LIBTP)N
106252926(on)X
106263030(OO1.)X
106271 f
1062810 f
10629555 1998(h)N
10630579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
106311 f
10632555 2274(two)N
10633696(disk)X
10634850(pages,)X
106351074(but)X
106361197(the)X
106371316(links)X
106381492(require)X
106391741(only)X
106401904(one,)X
106412061(regardless)X
106422408(of)X
106432496(database)X
106442794(size.)X
106452980(Cattell)X
106463214(reports)X
106473458(that)X
106483599(lookups)X
106493873(using)X
106504067(B-trees)X
10651555 2364(instead)N
10652808(of)X
10653901(links)X
106541082(makes)X
106551313(traversal)X
106561616(take)X
106571776(twice)X
106581976(as)X
106592069(long)X
106602237(in)X
106612325(INDEX.)X
106622641(Adding)X
106632907(a)X
106642969(link)X
106653119(access)X
106663351(method)X
106673617(to)X
106683 f
106693704(db)X
106701 f
106713792(\(3\))X
106723911(or)X
106734003(using)X
106744201(the)X
10675555 2454(existing)N
10676828(hash)X
10677995(method)X
106781255(would)X
106791475(apparently)X
106801834(be)X
106811930(a)X
106821986(good)X
106832166(idea.)X
10684755 2577(Both)N
10685936(OODBMS)X
106861304(and)X
106871446(INDEX)X
106881722(issue)X
106891908 0.1944(coarser-granularity)AX
106902545(locks)X
106912739(than)X
106922902(LIBTP.)X
106933189(This)X
106943356(limits)X
106953562(concurrency)X
106963985(for)X
106974104(multi-)X
10698555 2667(user)N
10699711(applications,)X
107001140(but)X
107011264(helps)X
107021455(single-user)X
107031829(applications.)X
107042278(In)X
107052367(addition,)X
107062671(the)X
107072791(fact)X
107082934(that)X
107093076(LIBTP)X
107103319(releases)X
107113595(B-tree)X
107123817(locks)X
107134007(early)X
107144189(is)X
107154263(a)X
10716555 2757(drawback)N
10717896(in)X
10718986(OO1.)X
107191210(Since)X
107201416(there)X
107211605(is)X
107221686(no)X
107231793(concurrency)X
107242218(in)X
107252307(the)X
107262432(benchmark,)X
107272836(high-concurrency)X
107283430(strategies)X
107293760(only)X
107303929(show)X
107314125(up)X
107324232(as)X
10733555 2847(increased)N
10734882(locking)X
107351145(overhead.)X
107361503(Finally,)X
107371772(the)X
107381892(architecture)X
107392294(of)X
107402383(the)X
107412503(LIBTP)X
107422747(implementation)X
107433271(was)X
107443418(substantially)X
107453844(different)X
107464143(from)X
10747555 2937(that)N
10748702(of)X
10749796(either)X
107501006(OODBMS)X
107511375(or)X
107521469(INDEX.)X
107531786(Both)X
107541968(of)X
107552062(those)X
107562258(systems)X
107572538(do)X
107582645(the)X
107592770(searches)X
107603070(in)X
107613159(the)X
107623284(user's)X
107633503(address)X
107643771(space,)X
107653997(and)X
107664139(issue)X
10767555 3027(requests)N
10768844(for)X
10769964(pages)X
107701173(to)X
107711260(the)X
107721383(server)X
107731605(process.)X
107741911(Pages)X
107752123(are)X
107762247(cached)X
107772496(in)X
107782583(the)X
107792706(client,)X
107802929(and)X
107813070(many)X
107823273(queries)X
107833530(can)X
107843667(be)X
107853768(satis\256ed)X
107864055(without)X
10787555 3117(contacting)N
10788910(the)X
107891029(server)X
107901247(at)X
107911326(all.)X
107921467(LIBTP)X
107931710(submits)X
107941979(all)X
107952080(the)X
107962199(queries)X
107972452(to)X
107982535(the)X
107992653(server)X
108002870(process,)X
108013151(and)X
108023287(receives)X
108033571(database)X
108043868(records)X
108054125(back;)X
10806555 3207(it)N
10807619(does)X
10808786(no)X
10809886(client)X
108101084(caching.)X
10811755 3330(The)N
10812911(RDBMS)X
108131221(architecture)X
108141632(is)X
108151716(much)X
108161925(closer)X
108172148(to)X
108182241(that)X
108192392(of)X
108202490(LIBTP.)X
108212783(A)X
108222872(server)X
108233100(process)X
108243372(receives)X
108253667(queries)X
108263930(and)X
108274076(returns)X
10828555 3420(results)N
10829786(to)X
10830870(a)X
10831928(client.)X
108321168(The)X
108331315(timing)X
108341545(results)X
108351776(in)X
108361860(table)X
108372038(two)X
108382180(clearly)X
108392421(show)X
108402612(that)X
108412754(the)X
108422874(conventional)X
108433309(database)X
108443607(client/server)X
108454025(model)X
108464246(is)X
10847555 3510(expensive.)N
10848941(LIBTP)X
108491188(outperforms)X
108501605(the)X
108511728(RDBMS)X
108522032(on)X
108532136(traversal)X
108542437(and)X
108552577(insertion.)X
108562921(We)X
108573057(speculate)X
108583380(that)X
108593524(this)X
108603663(is)X
108613740(due)X
108623880(in)X
108633966(part)X
108644115(to)X
108654201(the)X
10866555 3600(overhead)N
10867870(of)X
10868957(query)X
108691160(parsing,)X
108701436(optimization,)X
108711880(and)X
108722016(repeated)X
108732309(interpretation)X
108742761(of)X
108752848(the)X
108762966(plan)X
108773124(tree)X
108783265(in)X
108793347(the)X
108803465(RDBMS')X
108813791(query)X
108823994(executor.)X
10883755 3723(Table)N
10884962(three)X
108851147(shows)X
108861371(the)X
108871492(differences)X
108881873(between)X
108892164(local)X
108902343(and)X
108912482(remote)X
108922728(execution)X
108933063(of)X
108943153(LIBTP's)X
108953456(OO1)X
108963635(implementation)X
108974160(on)X
108984263(a)X
10899555 3813(DECstation.)N
10900989(We)X
109011122(measured)X
109021451(performance)X
109031879(with)X
109042042(a)X
109052099(populated)X
109062436(\(warm\))X
109072694(cache)X
109082899(and)X
109093036(an)X
109103133(empty)X
109113354(\(cold\))X
109123567(cache.)X
109133812(Reported)X
109144126(times)X
10915555 3903(are)N
10916681(the)X
10917806(means)X
109181037(of)X
109191130(twenty)X
109201374(tests,)X
109211562(and)X
109221704(are)X
109231829(in)X
109241917(seconds.)X
109252237(Standard)X
109262548(deviations)X
109272903(were)X
109283086(within)X
109293316(seven)X
109303525(percent)X
109313788(of)X
109323881(the)X
109334005(mean)X
109344205(for)X
10935555 3993(remote,)N
10936818(and)X
10937954(two)X
109381094(percent)X
109391351(of)X
109401438(the)X
109411556(mean)X
109421750(for)X
109431864(local.)X
10944755 4116(The)N
10945914(20ms)X
109461121(overhead)X
109471450(of)X
109481551(TCP/IP)X
109491824(on)X
109501938(an)X
109512048(Ethernet)X
109522354(entirely)X
109532633(accounts)X
109542948(for)X
109553076(the)X
109563207(difference)X
109573567(in)X
109583662(speed.)X
109593918(The)X
109604076(remote)X
10961555 4206(traversal)N
10962857(times)X
109631055(are)X
109641179(nearly)X
109651405(double)X
109661648(the)X
109671771(local)X
109681952(times)X
109692150(because)X
109702430(we)X
109712549(do)X
109722653(index)X
109732855(lookups)X
109743132(and)X
109753272(part)X
109763421(fetches)X
109773673(in)X
109783759(separate)X
109794047(queries.)X
10980555 4296(It)N
10981629(would)X
10982854(make)X
109831053(sense)X
109841252(to)X
109851339(do)X
109861444(indexed)X
109871723(searches)X
109882021(on)X
109892126(the)X
109902248(server,)X
109912489(but)X
109922615(we)X
109932733(were)X
109942914(unwilling)X
109953244(to)X
109963330(hard-code)X
109973676(knowledge)X
109984052(of)X
109994143(OO1)X
11000555 4386(indices)N
11001803(into)X
11002948(our)X
110031075(LIBTP)X
110041317(TCL)X
110051488(server.)X
110061745(Cold)X
110071920(and)X
110082056(warm)X
110092259(insertion)X
110102559(times)X
110112752(are)X
110122871(identical)X
110133167(since)X
110143352(insertions)X
110153683(do)X
110163783(not)X
110173905(bene\256t)X
110184143(from)X
11019555 4476(caching.)N
11020755 4599(One)N
11021915(interesting)X
110221279(difference)X
110231632(shown)X
110241867(by)X
110251973(table)X
110262155(three)X
110272342(is)X
110282421(the)X
110292545(cost)X
110302700(of)X
110312793(forward)X
110323074(versus)X
110333305(backward)X
110343644(traversal.)X
110353987(When)X
110364205(we)X
11037555 4689(built)N
11038725(the)X
11039847(database,)X
110401168(we)X
110411285(inserted)X
110421562(parts)X
110431741(in)X
110441826(part)X
110452 f
110461974(id)X
110471 f
110482059(order.)X
110492292(We)X
110502427(built)X
110512596(the)X
110522717(indices)X
110532967(at)X
110543048(the)X
110553169(same)X
110563357(time.)X
110573562(Therefore,)X
110583923(the)X
110594044(forward)X
11060555 4779(index)N
11061757(had)X
11062897(keys)X
110631068(inserted)X
110641346(in)X
110651432(order,)X
110661646(while)X
110671848(the)X
110681970(backward)X
110692307(index)X
110702509(had)X
110712649(keys)X
110722820(inserted)X
110733098(more)X
110743286(randomly.)X
110753656(In-order)X
110763943(insertion)X
110774246(is)X
11078555 4885(pessimal)N
11079858(for)X
11080975(B-tree)X
110811199(indices,)X
110821469(so)X
110831563(the)X
110841684(forward)X
110851962(index)X
110862163(is)X
110872239(much)X
110882440(larger)X
110892651(than)X
110902812(the)X
110912933(backward)X
110923269(one)X
110937 s
110943385 4853(5)N
1109510 s
110964885(.)Y
110973476(This)X
110983640(larger)X
110993850(size)X
111003997(shows)X
111014219(up)X
11102555 4975(as)N
11103642(extra)X
11104823(disk)X
11105976(reads)X
111061166(in)X
111071248(the)X
111081366(cold)X
111091524(benchmark.)X
111103 f
11111555 5161(6.)N
11112655(Conclusions)X
111131 f
11114755 5284(LIBTP)N
111151006(provides)X
111161311(the)X
111171438(basic)X
111181632(building)X
111191927(blocks)X
111202165(to)X
111212256(support)X
111222525(transaction)X
111232906(protection.)X
111243300(In)X
111253396(comparison)X
111263799(with)X
111273970(traditional)X
11128555 5374(Unix)N
11129746(libraries)X
111301040(and)X
111311187(commercial)X
111321597(systems,)X
111331900(it)X
111341974(offers)X
111352192(a)X
111362258(variety)X
111372511(of)X
111382608(tradeoffs.)X
111392964(Using)X
111403185(complete)X
111413509(transaction)X
111423891(protection)X
111434246(is)X
11144555 5464(more)N
11145747(complicated)X
111461166(than)X
111471331(simply)X
111481575(adding)X
111493 f
111501820(fsync)X
111511 f
111521998(\(2\))X
111532119(and)X
111543 f
111552262(\257ock)X
111561 f
111572426(\(2\))X
111582547(calls)X
111592721(to)X
111602810(code,)X
111613008(but)X
111623136(it)X
111633206(is)X
111643285(faster)X
111653490(in)X
111663578(some)X
111673773(cases)X
111683969(and)X
111694111(offers)X
111708 s
1117110 f
11172555 5536(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
111735 s
111741 f
11175727 5614(5)N
111768 s
11177763 5639(The)N
11178878(next)X
111791004(release)X
111801196(of)X
111811265(the)X
111821359(4.4BSD)X
111831580(access)X
111841758(method)X
111851966(will)X
111862082(automatically)X
111872446(detect)X
111882614(and)X
111892722(compensate)X
111903039(for)X
111913129(in-order)X
111923350(insertion,)X
111933606(eliminating)X
111943914(this)X
111954023(problem.)X
11196
1119716 p
11198%%Page: 16 16
111998 s 8 xH 0 xS 1 f
1120010 s
112013 f
112021 f
11203555 630(stricter)N
11204801(guarantees)X
112051168(\(atomicity,)X
112061540(consistency,)X
112071957(isolation,)X
112082275(and)X
112092414(durability\).)X
112102815(If)X
112112892(the)X
112123013(data)X
112133170(to)X
112143255(be)X
112153354(protected)X
112163676(are)X
112173798(already)X
112184058(format-)X
11219555 720(ted)N
11220675(\()X
112212 f
11222702(i.e.)X
112231 f
11224821(use)X
11225949(one)X
112261086(of)X
112271174(the)X
112281293(database)X
112291591(access)X
112301818(methods\),)X
112312157(then)X
112322316(adding)X
112332555(transaction)X
112342928(protection)X
112353274(requires)X
112363554(no)X
112373655(additional)X
112383996(complex-)X
11239555 810(ity,)N
11240679(but)X
11241801(incurs)X
112421017(a)X
112431073(performance)X
112441500(penalty)X
112451756(of)X
112461843(approximately)X
112472326(15%.)X
11248755 933(In)N
11249844(comparison)X
112501240(with)X
112511404(commercial)X
112521805(database)X
112532104(systems,)X
112542399(the)X
112552519(tradeoffs)X
112562827(are)X
112572948(more)X
112583135(complex.)X
112593473(LIBTP)X
112603717(does)X
112613886(not)X
112624009(currently)X
11263555 1023(support)N
11264825(a)X
11265891(standard)X
112661193(query)X
112671406(language.)X
112681766(The)X
112691921(TCL-based)X
112702312(server)X
112712539(process)X
112722810(allows)X
112733049(a)X
112743115(certain)X
112753364(ease)X
112763533(of)X
112773630(use)X
112783767(which)X
112793993(would)X
112804223(be)X
11281555 1113(enhanced)N
11282882(with)X
112831047(a)X
112841106(more)X
112851294(user-friendly)X
112861732(interface)X
112872037(\()X
112882 f
112892064(e.g.)X
112901 f
112912203(a)X
112922261(windows)X
112932572(based)X
112942777(query-by-form)X
112953272(application\),)X
112963697(for)X
112973813(which)X
112984031(we)X
112994147(have)X
11300555 1203(a)N
11301620(working)X
11302916(prototype.)X
113031292(When)X
113041513(accesses)X
113051815(do)X
113061924(not)X
113072055(require)X
113082312(sophisticated)X
113092758(query)X
113102969(processing,)X
113113360(the)X
113123486(TCL)X
113133665(interface)X
113143975(is)X
113154056(an)X
113164160(ade-)X
11317555 1293(quate)N
11318756(solution.)X
113191080(What)X
113201281(LIBTP)X
113211529(fails)X
113221693(to)X
113231781(provide)X
113242052(in)X
113252140(functionality,)X
113262595(it)X
113272665(makes)X
113282896(up)X
113293002(for)X
113303122(in)X
113313210(performance)X
113323643(and)X
113333785(\257exibility.)X
113344161(Any)X
11335555 1383(application)N
11336931(may)X
113371089(make)X
113381283(use)X
113391410(of)X
113401497(its)X
113411592(record)X
113421818(interface)X
113432120(or)X
113442207(the)X
113452325(more)X
113462510(primitive)X
113472823(log,)X
113482965(lock,)X
113493143(and)X
113503279(buffer)X
113513496(calls.)X
11352755 1506(Future)N
11353987(work)X
113541175(will)X
113551322(focus)X
113561519(on)X
113571621(overcoming)X
113582026(some)X
113592217(of)X
113602306(the)X
113612426(areas)X
113622614(in)X
113632698(which)X
113642916(LIBTP)X
113653160(is)X
113663235(currently)X
113673547(de\256cient)X
113683845(and)X
113693983(extending)X
11370555 1596(its)N
11371652(transaction)X
113721026(model.)X
113731288(The)X
113741435(addition)X
113751719(of)X
113761808(an)X
113771905(SQL)X
113782077(parser)X
113792295(and)X
113802432(forms)X
113812640(front)X
113822817(end)X
113832954(will)X
113843099(improve)X
113853387(the)X
113863506(system's)X
113873807(ease)X
113883967(of)X
113894055(use)X
113904183(and)X
11391555 1686(make)N
11392750(it)X
11393815(more)X
113941001(competitive)X
113951400(with)X
113961563(commercial)X
113971963(systems.)X
113982277(In)X
113992365(the)X
114002484(long)X
114012647(term,)X
114022835(we)X
114032950(would)X
114043170(like)X
114053310(to)X
114063392(add)X
114073528(generalized)X
114083919(hierarchical)X
11409555 1776(locking,)N
11410836(nested)X
114111062(transactions,)X
114121486(parallel)X
114131748(transactions,)X
114142171(passing)X
114152431(of)X
114162518(transactions)X
114172921(between)X
114183209(processes,)X
114193557(and)X
114203693(distributed)X
114214055(commit)X
11422555 1866(handling.)N
11423900(In)X
11424992(the)X
114251115(short)X
114261300(term,)X
114271492(the)X
114281614(next)X
114291776(step)X
114301929(is)X
114312006(to)X
114322092(integrate)X
114332397(LIBTP)X
114342643(with)X
114352809(the)X
114362931(most)X
114373110(recent)X
114383331(release)X
114393579(of)X
114403670(the)X
114413792(database)X
114424093(access)X
11443555 1956(routines)N
11444833(and)X
11445969(make)X
114461163(it)X
114471227(freely)X
114481435(available)X
114491745(via)X
114501863(anonymous)X
114512252(ftp.)X
114523 f
11453555 2142(7.)N
11454655(Acknowledgements)X
114551 f
11456755 2265(We)N
11457888(would)X
114581109(like)X
114591250(to)X
114601332(thank)X
114611530(John)X
114621701(Wilkes)X
114631948(and)X
114642084(Carl)X
114652242(Staelin)X
114662484(of)X
114672571(Hewlett-Packard)X
114683131(Laboratories)X
114693557(and)X
114703693(Jon)X
114713824(Krueger.)X
114724148(John)X
11473555 2355(and)N
11474694(Carl)X
11475855(provided)X
114761162(us)X
114771255(with)X
114781419(an)X
114791517(extra)X
114801700(disk)X
114811855(for)X
114821971(the)X
114832091(HP)X
114842215(testbed)X
114852464(less)X
114862606(than)X
114872766(24)X
114882868(hours)X
114893068(after)X
114903238(we)X
114913354(requested)X
114923684(it.)X
114933770(Jon)X
114943903(spent)X
114954094(count-)X
11496555 2445(less)N
11497699(hours)X
11498901(helping)X
114991164(us)X
115001258(understand)X
115011633(the)X
115021754(intricacies)X
115032107(of)X
115042197(commercial)X
115052599(database)X
115062899(products)X
115073198(and)X
115083337(their)X
115093507(behavior)X
115103811(under)X
115114017(a)X
115124076(variety)X
11513555 2535(of)N
11514642(system)X
11515884(con\256gurations.)X
115163 f
11517555 2721(8.)N
11518655(References)X
115191 f
11520555 2901([ANDR89])N
11521942(Andrade,)X
115221265(J.,)X
115231361(Carges,)X
115241629(M.,)X
115251765(Kovach,)X
115262060(K.,)X
115272183(``Building)X
115282541(an)X
115292642(On-Line)X
115302939(Transaction)X
115313343(Processing)X
115323715(System)X
115333975(On)X
115344098(UNIX)X
11535727 2991(System)N
11536982(V'',)X
115372 f
115381134(CommUNIXations)X
115391 f
115401725(,)X
115411765 0.2188(November/December)AX
115422477(1989.)X
11543555 3171([BAY77])N
11544878(Bayer,)X
115451110(R.,)X
115461223(Schkolnick,)X
115471623(M.,)X
115481754(``Concurrency)X
115492243(of)X
115502330(Operations)X
115512702(on)X
115522802(B-Trees'',)X
115532 f
115543155(Acta)X
115553322(Informatica)X
115561 f
115573700(,)X
115583740(1977.)X
11559555 3351([BERN80])N
11560936(Bernstein,)X
115611297(P.,)X
115621415(Goodman,)X
115631785(N.,)X
115641917(``Timestamp)X
115652365(Based)X
115662595(Algorithms)X
115672992(for)X
115683119(Concurrency)X
115693567(Control)X
115703844(in)X
115713939(Distributed)X
11572727 3441(Database)N
115731042(Systems'',)X
115742 f
115751402(Proceedings)X
115761823(6th)X
115771945(International)X
115782387(Conference)X
115792777(on)X
115802877(Very)X
115813049(Large)X
115823260(Data)X
115833440(Bases)X
115841 f
115853627(,)X
115863667(October)X
115873946(1980.)X
11588555 3621([BSD91])N
11589864(DB\(3\),)X
115902 f
115911109(4.4BSD)X
115921376(Unix)X
115931552(Programmer's)X
115942044(Manual)X
115952313(Reference)X
115962655(Guide)X
115971 f
115982851(,)X
115992891(University)X
116003249(of)X
116013336(California,)X
116023701(Berkeley,)X
116034031(1991.)X
11604555 3801([CATT91])N
11605923(Cattell,)X
116061181(R.G.G.,)X
116071455(``An)X
116081632(Engineering)X
116092049(Database)X
116102369(Benchmark'',)X
116112 f
116122838(The)X
116132983(Benchmark)X
116143373(Handbook)X
116153731(for)X
116163848(Database)X
116174179(and)X
11618727 3891(Transaction)N
116191133(Processing)X
116201509(Systems)X
116211 f
116221763(,)X
116231803(J.)X
116241874(Gray,)X
116252075(editor,)X
116262302(Morgan)X
116272576(Kaufman)X
116282895(1991.)X
11629555 4071([CHEN91])N
11630929(Cheng,)X
116311180(E.,)X
116321291(Chang,)X
116331542(E.,)X
116341653(Klein,)X
116351872(J.,)X
116361964(Lee,)X
116372126(D.,)X
116382245(Lu,)X
116392375(E.,)X
116402485(Lutgardo,)X
116412820(A.,)X
116422939(Obermarck,)X
116433342(R.,)X
116443456(``An)X
116453629(Open)X
116463824(and)X
116473961(Extensible)X
11648727 4161(Event-Based)N
116491157(Transaction)X
116501556(Manager'',)X
116512 f
116521936(Proceedings)X
116532357(1991)X
116542537(Summer)X
116552820(Usenix)X
116561 f
116573043(,)X
116583083(Nashville,)X
116593430(TN,)X
116603577(June)X
116613744(1991.)X
11662555 4341([CHOU85])N
11663943(Chou,)X
116641163(H.,)X
116651288(DeWitt,)X
116661570(D.,)X
116671694(``An)X
116681872(Evaluation)X
116692245(of)X
116702338(Buffer)X
116712574(Management)X
116723019(Strategies)X
116733361(for)X
116743481(Relational)X
116753836(Database)X
116764157(Sys-)X
11677727 4431(tems'',)N
116782 f
11679972(Proceedings)X
116801393(of)X
116811475(the)X
116821593(11th)X
116831755(International)X
116842197(Conference)X
116852587(on)X
116862687(Very)X
116872859(Large)X
116883070(Databases)X
116891 f
116903408(,)X
116913448(1985.)X
11692555 4611([DEWI84])N
11693925(DeWitt,)X
116941207(D.,)X
116951331(Katz,)X
116961529(R.,)X
116971648(Olken,)X
116981890(F.,)X
116992000(Shapiro,)X
117002295(L.,)X
117012410(Stonebraker,)X
117022843(M.,)X
117032979(Wood,)X
117043220(D.,)X
117053343(``Implementation)X
117063929(Techniques)X
11707727 4701(for)N
11708841(Main)X
117091030(Memory)X
117101326(Database)X
117111641(Systems'',)X
117122 f
117132001(Proceedings)X
117142422(of)X
117152504(SIGMOD)X
117161 f
117172812(,)X
117182852(pp.)X
117192972(1-8,)X
117203119(June)X
117213286(1984.)X
11722555 4881([GRAY76])N
11723944(Gray,)X
117241153(J.,)X
117251252(Lorie,)X
117261474(R.,)X
117271595(Putzolu,)X
117281887(F.,)X
117291999(and)X
117302143(Traiger,)X
117312428(I.,)X
117322522(``Granularity)X
117332973(of)X
117343067(locks)X
117353263(and)X
117363406(degrees)X
117373679(of)X
117383773(consistency)X
117394174(in)X
117404263(a)X
11741727 4971(large)N
11742909(shared)X
117431140(data)X
117441295(base'',)X
117452 f
117461533(Modeling)X
117471861(in)X
117481944(Data)X
117492125(Base)X
117502301(Management)X
117512740(Systems)X
117521 f
117532994(,)X
117543034(Elsevier)X
117553317(North)X
117563524(Holland,)X
117573822(New)X
117583994(York,)X
117594199(pp.)X
11760727 5061(365-394.)N
11761555 5241([HAER83])N
11762931(Haerder,)X
117631235(T.)X
117641348(Reuter,)X
117651606(A.)X
117661728(``Principles)X
117672126(of)X
117682217(Transaction-Oriented)X
117692928(Database)X
117703246(Recovery'',)X
117712 f
117723651(Computing)X
117734029(Surveys)X
117741 f
117754279(,)X
11776727 5331(15\(4\);)N
11777943(237-318,)X
117781250(1983.)X
11779555 5511([KUNG81])N
11780943(Kung,)X
117811162(H.)X
117821261(T.,)X
117831371(Richardson,)X
117841777(J.,)X
117851869(``On)X
117862042(Optimistic)X
117872400(Methods)X
117882701(for)X
117892816(Concurrency)X
117903252(Control'',)X
117912 f
117923591(ACM)X
117933781(Transactions)X
117944219(on)X
11795727 5601(Database)N
117961054(Systems)X
117971 f
117981328(6\(2\);)X
117991504(213-226,)X
118001811(1981.)X
11801
1180217 p
11803%%Page: 17 17
1180410 s 10 xH 0 xS 1 f
118053 f
118061 f
11807555 630([LEHM81])N
11808939(Lehman,)X
118091245(P.,)X
118101352(Yao,)X
118111529(S.,)X
118121636(``Ef\256cient)X
118131989(Locking)X
118142279(for)X
118152396(Concurrent)X
118162780(Operations)X
118173155(on)X
118183258(B-trees'',)X
118192 f
118203587(ACM)X
118213779(Transactions)X
118224219(on)X
11823727 720(Database)N
118241054(Systems)X
118251 f
118261308(,)X
118271348(6\(4\),)X
118281522(December)X
118291873(1981.)X
11830555 900([MOHA91])N
11831964(Mohan,)X
118321241(C.,)X
118331364(Pirahesh,)X
118341690(H.,)X
118351818(``ARIES-RRH:)X
118362366(Restricted)X
118372721(Repeating)X
118383076(of)X
118393173(History)X
118403442(in)X
118413533(the)X
118423660(ARIES)X
118433920(Transaction)X
11844727 990(Recovery)N
118451055(Method'',)X
118462 f
118471398(Proceedings)X
118481819(7th)X
118491941(International)X
118502383(Conference)X
118512773(on)X
118522873(Data)X
118533053(Engineering)X
118541 f
118553449(,)X
118563489(Kobe,)X
118573703(Japan,)X
118583926(April)X
118594115(1991.)X
11860555 1170([NODI90])N
11861914(Nodine,)X
118621194(M.,)X
118631328(Zdonik,)X
118641602(S.,)X
118651709(``Cooperative)X
118662178(Transaction)X
118672580(Hierarchies:)X
118682996(A)X
118693077(Transaction)X
118703479(Model)X
118713711(to)X
118723796(Support)X
118734072(Design)X
11874727 1260(Applications'',)N
118752 f
118761242(Proceedings)X
118771675(16th)X
118781849(International)X
118792303(Conference)X
118802704(on)X
118812815(Very)X
118822998(Large)X
118833220(Data)X
118843411(Bases)X
118851 f
118863598(,)X
118873649(Brisbane,)X
118883985(Australia,)X
11889727 1350(August)N
11890978(1990.)X
11891555 1530([OUST90])N
11892923(Ousterhout,)X
118931324(J.,)X
118941420(``Tcl:)X
118951648(An)X
118961771(Embeddable)X
118972197(Command)X
118982555(Language'',)X
118992 f
119002971(Proceedings)X
119013396(1990)X
119023580(Winter)X
119033822(Usenix)X
119041 f
119054045(,)X
119064089(Wash-)X
11907727 1620(ington,)N
11908971(D.C.,)X
119091162(January)X
119101432(1990.)X
11911555 1800([POSIX91])N
11912955(``Unapproved)X
119131441(Draft)X
119141645(for)X
119151773(Realtime)X
119162096(Extension)X
119172450(for)X
119182578(Portable)X
119192879(Operating)X
119203234(Systems'',)X
119213608(Draft)X
119223812(11,)X
119233946(October)X
119244239(7,)X
11925727 1890(1991,)N
11926927(IEEE)X
119271121(Computer)X
119281461(Society.)X
11929555 2070([ROSE91])N
11930925(Rosenblum,)X
119311341(M.,)X
119321484(Ousterhout,)X
119331892(J.,)X
119341995(``The)X
119352206(Design)X
119362464(and)X
119372611(Implementation)X
119383149(of)X
119393247(a)X
119403314(Log-Structured)X
119413835(File)X
119423990(System'',)X
119432 f
11944727 2160(Proceedings)N
119451148(of)X
119461230(the)X
119471348(13th)X
119481510(Symposium)X
119491895(on)X
119501995(Operating)X
119512344(Systems)X
119522618(Principles)X
119531 f
119542947(,)X
119552987(1991.)X
11956555 2340([SELT91])N
11957904(Seltzer,)X
119581171(M.,)X
119591306(Stonebraker,)X
119601738(M.,)X
119611873(``Read)X
119622116(Optimized)X
119632478(File)X
119642626(Systems:)X
119652938(A)X
119663020(Performance)X
119673454(Evaluation'',)X
119682 f
119693898(Proceedings)X
11970727 2430(7th)N
11971849(Annual)X
119721100(International)X
119731542(Conference)X
119741932(on)X
119752032(Data)X
119762212(Engineering)X
119771 f
119782608(,)X
119792648(Kobe,)X
119802862(Japan,)X
119813085(April)X
119823274(1991.)X
11983555 2610([SPEC88])N
11984907(Spector,)X
119851200(Rausch,)X
119861484(Bruell,)X
119871732(``Camelot:)X
119882107(A)X
119892192(Flexible,)X
119902501(Distributed)X
119912888(Transaction)X
119923294(Processing)X
119933668(System'',)X
119942 f
119954004(Proceed-)X
11996727 2700(ings)N
11997880(of)X
11998962(Spring)X
119991195(COMPCON)X
120001606(1988)X
120011 f
12002(,)S
120031806(February)X
120042116(1988.)X
12005555 2880([SQL86])N
12006862(American)X
120071201(National)X
120081499(Standards)X
120091836(Institute,)X
120102139(``Database)X
120112509(Language)X
120122847(SQL'',)X
120133093(ANSI)X
120143301(X3.135-1986)X
120153747(\(ISO)X
120163924(9075\),)X
120174152(May)X
12018727 2970(1986.)N
12019555 3150([STON81])N
12020919(Stonebraker,)X
120211348(M.,)X
120221480(``Operating)X
120231876(System)X
120242132(Support)X
120252406(for)X
120262520(Database)X
120272835(Management'',)X
120282 f
120293348(Communications)X
120303910(of)X
120313992(the)X
120324110(ACM)X
120331 f
120344279(,)X
12035727 3240(1981.)N
12036555 3420([SULL92])N
12037925(Sullivan,)X
120381247(M.,)X
120391394(Olson,)X
120401641(M.,)X
120411788(``An)X
120421976(Index)X
120432195(Implementation)X
120442737(Supporting)X
120453127(Fast)X
120463295(Recovery)X
120473638(for)X
120483767(the)X
120493900(POSTGRES)X
12050727 3510(Storage)N
120511014(System'',)X
120521365(to)X
120531469(appear)X
120541726(in)X
120552 f
120561830(Proceedings)X
120572272(8th)X
120582415(Annual)X
120592687(International)X
120603150(Conference)X
120613561(on)X
120623682(Data)X
120633883(Engineering)X
120641 f
120654279(,)X
12066727 3600(Tempe,)N
12067990(Arizona,)X
120681289(February)X
120691599(1992.)X
12070555 3780([TPCB90])N
12071914(Transaction)X
120721319(Processing)X
120731692(Performance)X
120742129(Council,)X
120752428(``TPC)X
120762653(Benchmark)X
120773048(B'',)X
120783200(Standard)X
120793510(Speci\256cation,)X
120803973(Waterside)X
12081727 3870(Associates,)N
120821110(Fremont,)X
120831421(CA.,)X
120841592(1990.)X
12085555 4050([YOUN91])N
12086947(Young,)X
120871211(M.)X
120881328(W.,)X
120891470(Thompson,)X
120901858(D.)X
120911962(S.,)X
120922072(Jaffe,)X
120932274(E.,)X
120942388(``A)X
120952525(Modular)X
120962826(Architecture)X
120973253(for)X
120983372(Distributed)X
120993757(Transaction)X
121004161(Pro-)X
12101727 4140(cessing'',)N
121022 f
121031057(Proceedings)X
121041478(1991)X
121051658(Winter)X
121061896(Usenix)X
121071 f
121082119(,)X
121092159(Dallas,)X
121102404(TX,)X
121112551(January)X
121122821(1991.)X
121133 f
12114755 4263(Margo)N
121151008(I.)X
121161080(Seltzer)X
121171 f
121181338(is)X
121191411(a)X
121201467(Ph.D.)X
121211669(student)X
121221920(in)X
121232002(the)X
121242120(Department)X
121252519(of)X
121262606(Electrical)X
121272934(Engineering)X
121283346(and)X
121293482(Computer)X
121303822(Sciences)X
121314123(at)X
121324201(the)X
12133555 4353(University)N
12134919(of)X
121351012(California,)X
121361383(Berkeley.)X
121371739(Her)X
121381886(research)X
121392181(interests)X
121402474(include)X
121412735(\256le)X
121422862(systems,)X
121433160(databases,)X
121443513(and)X
121453654(transaction)X
121464031(process-)X
12147555 4443(ing)N
12148686(systems.)X
121491008(She)X
121501157(spent)X
121511355(several)X
121521612(years)X
121531811(working)X
121542107(at)X
121552194(startup)X
121562441(companies)X
121572813(designing)X
121583153(and)X
121593298(implementing)X
121603771(\256le)X
121613902(systems)X
121624183(and)X
12163555 4533(transaction)N
12164929(processing)X
121651294(software)X
121661592(and)X
121671729(designing)X
121682061(microprocessors.)X
121692648(Ms.)X
121702791(Seltzer)X
121713035(received)X
121723329(her)X
121733453(AB)X
121743585(in)X
121753668(Applied)X
121763947(Mathemat-)X
12177555 4623(ics)N
12178664(from)X
12179840 0.1953(Harvard/Radcliffe)AX
121801445(College)X
121811714(in)X
121821796(1983.)X
12183755 4746(In)N
12184845(her)X
12185971(spare)X
121861163(time,)X
121871347(Margo)X
121881583(can)X
121891717(usually)X
121901970(be)X
121912068(found)X
121922277(preparing)X
121932607(massive)X
121942887(quantities)X
121953220(of)X
121963309(food)X
121973478(for)X
121983594(hungry)X
121993843(hordes,)X
122004099(study-)X
12201555 4836(ing)N
12202677(Japanese,)X
122031003(or)X
122041090(playing)X
122051350(soccer)X
122061576(with)X
122071738(an)X
122081834(exciting)X
122092112(Bay)X
122102261(Area)X
122112438(Women's)X
122122770(Soccer)X
122133009(team,)X
122143205(the)X
122153323(Berkeley)X
122163633(Bruisers.)X
122173 f
12218755 5049(Michael)N
122191056(A.)X
122201159(Olson)X
122211 f
122221383(is)X
122231461(a)X
122241522(Master's)X
122251828(student)X
122262084(in)X
122272170(the)X
122282292(Department)X
122292695(of)X
122302786(Electrical)X
122313118(Engineering)X
122323534(and)X
122333674(Computer)X
122344018(Sciences)X
12235555 5139(at)N
12236645(the)X
12237774(University)X
122381143(of)X
122391241(California,)X
122401617(Berkeley.)X
122411978(His)X
122422120(primary)X
122432405(interests)X
122442703(are)X
122452833(database)X
122463141(systems)X
122473425(and)X
122483572(mass)X
122493763(storage)X
122504026(systems.)X
12251555 5229(Mike)N
12252759(spent)X
12253963(two)X
122541118(years)X
122551323(working)X
122561625(for)X
122571754(a)X
122581825(commercial)X
122592239(database)X
122602551(system)X
122612808(vendor)X
122623066(before)X
122633307(joining)X
122643567(the)X
122653699(Postgres)X
122664004(Research)X
12267555 5319(Group)N
12268780(at)X
12269858(Berkeley)X
122701168(in)X
122711250(1988.)X
122721470(He)X
122731584(received)X
122741877(his)X
122751990(B.A.)X
122762161(in)X
122772243(Computer)X
122782583(Science)X
122792853(from)X
122803029(Berkeley)X
122813339(in)X
122823421(May)X
122833588(1991.)X
12284755 5442(Mike)N
12285945(only)X
122861108(recently)X
122871388(transferred)X
122881758(into)X
122891903(Sin)X
122902030(City,)X
122912208(but)X
122922330(is)X
122932403(rapidly)X
122942650(adopting)X
122952950(local)X
122963126(customs)X
122973408(and)X
122983544(coloration.)X
122993929(In)X
123004016(his)X
123014129(spare)X
12302555 5532(time,)N
12303742(he)X
12304843(organizes)X
123051176(informal)X
123061477(Friday)X
123071711(afternoon)X
123082043(study)X
123092240(groups)X
123102482(to)X
123112568(discuss)X
123122823(recent)X
123133044(technical)X
123143358(and)X
123153498(economic)X
123163834(developments.)X
12317555 5622(Among)N
12318815(his)X
12319928(hobbies)X
123201197(are)X
123211316(Charles)X
123221581(Dickens,)X
123231884(Red)X
123242033(Rock,)X
123252242(and)X
123262378(speaking)X
123272683(Dutch)X
123282899(to)X
123292981(anyone)X
123303233(who)X
123313391(will)X
123323535(permit)X
123333764(it.)X
12334
1233517 p
12336%%Trailer
12337xt
12338
12339xs
12340
Note: See TracBrowser for help on using the repository browser.