JPS63191226A - B↑+tree上における同時実行制御方式 - Google Patents

B↑+tree上における同時実行制御方式

Info

Publication number
JPS63191226A
JPS63191226A JP62024298A JP2429887A JPS63191226A JP S63191226 A JPS63191226 A JP S63191226A JP 62024298 A JP62024298 A JP 62024298A JP 2429887 A JP2429887 A JP 2429887A JP S63191226 A JPS63191226 A JP S63191226A
Authority
JP
Japan
Prior art keywords
1eaf
1ock
tree
node
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP62024298A
Other languages
English (en)
Inventor
Hiroyasu Kurose
博靖 黒瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP62024298A priority Critical patent/JPS63191226A/ja
Publication of JPS63191226A publication Critical patent/JPS63191226A/ja
Priority to US07/778,749 priority patent/US5119490A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 技術分野 本発明は、コンピュータ内におけるB ”tree上の
同時実行制御方式に関する。
従来技術 ]ンピュータ上でのデータの記憶方法として、ハツシュ
、B木等の各種方法が考えられている。
B +tree上の同時実行制御としては、LHIIA
MN、P、L。
and  YAO,S、B、1Efficiant  
locking  for  concurrento
peration  on  [5−Traes、轟C
M  TODS  6.4  (Dec  1981)
650−670.に全てのノードに横方向のリンクをは
ったB ”tree上での制御が述べられているが、こ
れは双方向のリンクには拡張できない、また、MOND
Y and RAZ Y、 Coneurreney 
control in B”−treesdatOba
se using preparatory oper
ations、Proc。
of VLDll 85.(1985)、331−33
4.にB ”treeの変形の際の制御が述べられてい
るが、これは葉部とその他を2つの独立した制御で行な
っている。また。
類似のアルゴリズムを使用した商品としてはVSAM(
IBM)があるが、これは片方向のリンクである上に削
除を行なっても木全体の容量が減少しないところが欠点
!ある。
上述のように、従来は、Imが片方向のリンクした持っ
ていないかあるいは葉上の制御とその他の部分の制御を
分けて行なっていた。
目     的 本発明は、上述のごとき実情に鑑みてなされたもので、
特に、葉に双方向の横リンクをもつB +tree上で
の統合された同時実行制御を行なうことを目的としてな
されたものである。
構   成 本発明は、上記目的を達成するために、葉上に横方向に
双方向のリンクをもつB千木上での同時実行制御を行な
う方式において、変更の対象となる部分木の両脇の葉を
変更しなければいけない場合に、部分木に対するロック
のみならず、部分木の必要な側を根から葉へおりる形で
のロックを行い、このロックが最終的に該当葉の両脇の
葉をロックするために用いられることを特徴としたもの
である。以下、本発明の実施例に基づい−て説明する。
以下の説明において、葉部に双方向の横リンクを持つ変
形B土木を考え、これをDL−B木と呼ぶ。本発明は、
この木の上での挿入、削除、検索。
順次読み出し、の4つの操作のアルゴリズムによって構
成される。
第2図は、B ”treeを示す図で、Aは更新にいく
道筋、Bは更新する部分木の根の両脇のノードに常にロ
ックがかけられている状態を示し1図示のように、葉に
まで到達している。
第1図は、本発明を説明するためのB +tree図で
、本発明は、図示のB +treeの1eaf上に順次
検索のためのポインタをもったtree上における同時
実行制御を行うものである。 5equential 
readにはカーソルと呼ばれる1eaf上のkeyを
さすポインタを用いる。このカーソルを移動させること
により、keyを順次読んでいく。また、この方法によ
る5earchはあるkeyの値より大きいもので最小
のkeyという検索が可能となっている。1nsert
ionは1−safeでない(1個挿入するとあふれが
おこる)口odeは先に分割する方法により上から下へ
nodeを順次、変更する形をとっている。
本発明において対象となるB +treeの構造は、以
下の通りである。
1 、1eafからrootまでの距離(h)は一定で
ある。
2 、 rootと1eaf以外のnodeは最低でも
keyを(k−1)個、son % k個もつ。
3.1eaf以外のnodeは最高でもkeyを(2に
+1)個、sonを(2に+2)個もつ。
4 、 rootは1eafであるか、又は最低1個の
key 。
2個のsonをもつ。
5 、1eafには最低1個、最大(2に+1)個のデ
ータをもつ、また1eaf以外にデータはもっていない
6 、1eafは隣接する両方の1eafへのポインタ
をもっている。
7、全てのnon 1eaf nodeは第2図に示し
た形をしており。
Pnk、P、−KnPn で表わされる。ただし、Piはsonをさしている。ま
た、Piのさす5ubtrsa T内のkeyはこのn
ode上のkeyと以下の関係にある。
Ki<min  key  of  T<max  k
ey  of  T≦K1118 、1eaf内にある
keyの値に重複はない。
B +treeへのアクセスの種類は次の通りである。
1 、5earch ・与えられたkeyと等しいkeyを5earch・与
えられたkeyより大きいkeyの中で最小のkey 
tt 5earch ・与えられたkeyより小きいkeyの中で最小のke
y t&5earch 2、read ・カーソルのさしている1つ先のkey、dataをr
eadする。
・カーソルのさしている1つ手前の1(6y、data
をraadする。
3.1nSart ・1(6y、dataを与えてB ”treeに1ns
ertする。
4、delete ・keyを与えてそのkeyと等しい1(ey、dat
aの組をdeleteする。
ロックモードの種類はρ、σ、α、ξの4種類があり、
第3図に示したグラフのcompatibilityを
もち、線で結合されているのがcompatibleで
ある。
表に書くと表1のようになる。
表ま ただし、0はcompatibilityあり、×はc
ompatibilityなしである。
上記ロックモードρ、σ、α、ξの意味は次の通りであ
る。
p : readerが用いる 1eaf node、 non 1eaf nodeと
もこのmodeで1ockする。 cursorがのっ
ている1eafはこのmodeでLockされる。各n
ode内のkey、data、子へのpointerを
読むことができる。このLockmodeで横へのpo
interを扱うことはできない。
a : readerが5equential rea
dをする際に用いる1eaf node内の横へのポイ
ンタを読みとる前にこのmodeで1eaf node
をLock シ、カーソルを先の1eatに進めた後、
このLockをはずす。
a : writerが1eaf nodeの横へのポ
インタを書き直す際に用いる。ポインタを書き直す1e
afnodeをこのll1odeで1ock L7、a
 1ockを排他することにより変更個所へのread
erの侵入をblockする。これはポインタを書き直
すだけなので、1eaf内の要素を読むLock即ちρ
Lockとは共存できる。通常は、1eafのみにかが
るLock modeであるが、deletionの場
合はnonleafにもかかる。
ξ: nodeのkey、data、pointer等
を変更する時に用いられる。 writarが1eaf
 mode、 non leafmode両方にかける
5earchのLockについては、与えられたkey
と等しいものを検索にいく場合と、与えられたkeyよ
りも大きいkeyを検索に行く場合とがあり、以下、そ
れぞれについて説明する。
与えられたkeと等しいものを検索にいく場合1、 r
oot nodeをp 1ockする。
current nodeをrootする。
t、oop: 2、a、 current nodeが1eafの場合
2、a、1 このnodeでkeyを探す。
found  :  OKとデータを返す。
NOT found : current nodeの
Lockをはずしerrorを返す。
2、b、 current nodeがnon 1ea
fの場合2、b、1  ki<given key<k
i+1となるiを探す。
2、b、2  Piのさすsonをp 1ockする。
2、b、3  current nodeの1ockを
はずす。
2、b、4  current nodeを2.b、2
で用いたsonにする。
2、b、5 goto LOOP。
5earchが成功した後は見つかったkeyを含む1
eafにρ1ockがかかっている。見つかったkey
の上にcursorが設定される。このcursorは
g6qu6ntialreadに使用される。これはk
eyより大きいものを5earchにいく時等も同様で
ある。
与えられたkeyより大きいkeyを検索しにいく場合
1 、root nodeをp 1ockする。
current nodeをrootとする。
LOOP: 2、a、 current nodeがnon Lea
fの場合2、a、1. ki<given key≦k
i+ 1となるiを探す。
2、a、2. Piのさすsonをp  1ockする
2、a、3. current nodeの1ockを
はずす。
2、a、4. current nodeを2.a、2
で用いたsonにする。
2、b、5. goto LOOP。
2、b current nodeがA+1eafの場
合2、b、1.  このnodeでkeyを探す。
foundの場合はOKとデータを返す。
そうでない場合は2.b、2以降を行う。
2、b、2. current nodeをa 1oc
kする。
2、b、3.次のnodeへのpointerを読む。
pointerがNULLの時は。
今かけているρ、σLockをはずし、errorを返
す。
pointerがNULLでない時は、以下の2.b、
4.以降を行う。
2、b、4.2.b、3で得たpointerのさす1
eaf nodeをρ1ockする。
2.b、5. curr@nt nodsのp 、 a
 1ockをはずす。
2、b、6. current nodsを2.b、4
で1ock L/たnodeとする。
2、b、7. current node内で最小のk
eyとdataを返す。
与えら −に・ 魯  いに・   に−場合は2、b
、3.の“凍の”を“手前”に読みかえる。すなわち、
手前のnod・へのpointerを読む。
2、b、フ、の“最小”を“最大”に読みかえる。すな
わち、 current nod@内の最小のに@yと
dataを返す。
5equential readの1ockseque
ntial readは5earch及び−5qu@n
tial readによってcursor#設定されて
いる場合に実行することができる* s@quanti
al r@adは以下の3通りの方法がある。
1 、cursorのさしている一ay、data&r
eadする。
cursorのさしているkeyを含む1eafには既
にp 1ockがかかうでいるので、 1ockの変更
をせずにそのl@afを読めばよい。
2 、cursorのさしている次のkey、data
を読む。
80次のkeyが同一1eaf内にある場合curso
rのさしているkeyを含む1eafには既にρ1oc
kがかかっているでカーソルを1つ進めてLockの変
更をせずに1eafを読む。
51次のkeyが同一1eaf内にない場合1、cur
sorのさしているkeyを含む1eafにσ1ock
をかける。
2、これを用いて次の1eaf nodeへのpoin
terを読む。
a、 pointerがNULLの場合かかっているσ
、ρ両Lockをはずし、end of fileを返
す。
b、 pointerがNULLでない場合1、そのp
ointerのさす1eafにp 1ockをかける。
2、現在の1eafのσ、ρ両Lockをはずす。
3、cursorを次の1eafの先頭に移し、そこの
key、dataを返す。
3 、 cursorのさしている手前のkey、da
taを読む。
2.0“次”を“手tlI”に読みかえることによって
同機に行う、すなわち、 eur@(IFのさしている
手前の−・y、dataを読む。
1nsertの1Oek 1 、 rootl i 1ockする。
curr@nt nod−をrootとする・LOOP
: La、curr@nt nodsがnon 1eafで
かつsonがwon l・・fの場合 La、1. ki(giv@n key≦ki11とな
るiを探す。
2、aJe Plのさすsonを電1ockする。
La*LΦsonが1−safe即ち。
nod・内の翫・Vの数く2■の場合 a、curr@et 5odsの1ockをはずす。
b、curr@et nodeをPiが示すsonにす
る。
C0梶oto LOOP* ■1−saf・でない場合 ―、第4■に示すように、となり(図中にAにて示す)
のnodeにξLockをかける。
b、となりとsonとがbalancingできるなら
ば、となり、son、currentを書き直してba
lanceする。そうでなければ、sonを2つのno
de Lニー 5plit Ll、currentを書
き直す。
c、5plitないし、 balancaしたnode
に対し、1nsertするkeyが含まれるnodeの
方を改めてsonとする。
1、 sonが、father nodeの右端に位置
する場合(第5図) ・uncle nodeが存在して5ide 1ock
がかかっていればその左端の5onttside 1o
ckする。
・uncle nodeの1ockをはずす。
afather nodeのLockをはずし、cur
rentをsonにする。
2、 sonがfather nodaの右端でない場
合(第6図)・uncla nodeに5ide 1o
ckがかかっていればそれをはずす。
” sonの右側のnodeに5ide 1ockをか
ける。
・fatherのLockをはずし、currentを
sonにする・これによって、sonがtreeの最右
端でない限り、 current nodeのとなりの
nodsに5ide 1ockがかかっている状態でr
ootから1eafに1ockをかけていく。
sonが最右端をおりていく場合(第7図)は、 5i
deLockはかからない。
d、son以外のnodeの1ockをはずす。
e、currentをsonにする・ f、goto LOOP 2、b、current nodeが、non 1ea
fでかつsonが1eafの場合 2、b、1. ki<given key≦ki+ 1
となるiを探す。
2、b、2. PLのさす1eafをp 1ockする
この1eafをcurrent 1eafとよぶ。
2、b、3. currant 1eafが1−saf
eの場合■、2.b、2のρをはずしcurrent 
1eafにξLockをかける。
■、 1eafにkey、dataを代入する。
■、1ockを全てはずし、終了する。
Lb*4. current 1eafが1−safe
でない場合■current 1eafの次の1eaf
をcurrentlaaf上のpointerから探し
a 1ockする・■current 1eafのρを
はずし、ξをcurant 1eafにかける。
■第8図(a)に示すcurrent 1eaf■を5
plit L/、第8図(b)に示すように2つの1e
af■、■′にする。 currentnodeを書き
直し、新たな1eafをさす。
◎の手前の1eafへのポインタを書き直す。
(ただし、この時、Nにはξ、Bにはξ、Cにはαの1
ockがかかっている。) ■non 1eaf node、上の全ての1ock、
次の1eaf、current 1eafにかかつてい
る1ockをはずし、終了する。
daletionの1ock 1、rootをξLockする。
current nodeをrootとする。
LOOP: 2、a、current nodeがnon 1aaf
でかつsonがnonleafの場合 2、a、1. ki<given key:ii;ki
+1となるiを探す。
2、a、2.Piのさす80nをξ1ockする。
2、a、3.■sonがd−safeでない即ちnod
e内のkeyの敷く−の場合 a、となりのnodeにξ1ockをかける。
b、となりとsonとがbalancingできるなら
ばbalance Ll、そうでなければとなりとso
nを併合する。
C0併合ないし、balanca L/たnodeに対
し。
deleteするkeyが含まれるnodsの方を改め
てsonとする。
2、a、4.■sonがfather nodsの最も
右のsonの場合 第9図に示すように、右側に5ide Lockが既にあるならば、そのsonのうちの最も左
のsonを5ide 1ockする。
2、a、4.■■でない場合 第10図に示すように、5ida 1ockが既にある
場合はそれをはずす。
sonの右となりのnodeに5ide 1ockをか
ける。
2、a、5.左側の5ide 1ockについて2.a
、4と同じことをする。
2、a、6. fatherの1ockをはずす。
2、a、7. current nodeをsonにす
る。
2、a、8. @oto LOOP: 2、b、 sonが1eafでのとき。
2、b、1. sonを探してp 1ockする。
2、b、2. non上にdeleteするkeyが存
在しない場はエラーで戻る。
2、b、3. sonの要素が1より多い場合■son
にξ1ockをかける。
■deletel ■全ての1oakをはずして戻る。
2、b、4. sonの要素が1の場合■第11図に示
したように、 sonの左側の1eafをa 1ock
する。
■sonの右側の1eafをa 1ockする。
(ただし、■、■の場合、  α1ockする1aaf
は5idelockのかかっているnodeのsonか
current nodeのsonとなっている。) ■sonをξ1ockする。
■delete L/て1inkをつなぎ直す。
■全ての1ockをはずして戻る。
夏−一米 以上の説明から明らかなように1本発明によると、アル
ゴリズムをデータベースに応用すると順へ読み出しと更
新の同時実行制御が統合して行うことができ、デッドロ
ックの可能性を下げることができる。
以下に、各補Wi (Lem+*a)又は定理(The
ore+*)に対する証明(Proof)の形で、本発
明の作用効果について更に詳細に説明する。
■、相互作用の正当性に関して。
(CorrectnesSof 1nteractio
n)Lea+ma 1゜ 1nsartar同士及び1nserterとdale
ter、 deleter同士が同時に動いた場合、結
果が保証される。
Proof。
non 1eaf node、hでは変更部分は全てξ
Lockをしているので、複数のプロセスが同時に動い
ても正しく排他される。又、1eaf上のLockもプ
ロセス同士では全て排他されるので更新操作は正しく行
な才)れろ。
Lamma 2゜ readerと1nsartarが同時に動いた場合、
結果が保障される。
Proof。
1nserterのみがtreeの変更を行なうので、
変更は正しく行なわれる。readerのカーソルの動
きが正しいことを確めればよい。
1 、1nsertorによって1eafの分割がおき
ない場合 1.1.カーソルが1nserterの変更する1ea
f上にある場合(第12図) insartarは、その1eafにξLockをかけ
るが、readarが5equential read
によって前又は後ろの1eafにカーソルをうっすまで
その1ockはwaitする。よってreaderは1
niierterが変更する前の1eafを読んでいく
ので正しく前後にカーソルを動かすことができ る。
1.2.カーソルが1nsertorの変更する1ea
fのとなりの1eafにいる場合(第13[)問題とな
るのは1nsertarが1eafをかきかえようとξ
Lockをかけている間にreaderが当該1eaf
にρLockをかけにいってwait L+た場合、そ
の他の場合は互いに干渉しあわないか、1.1の場合に
帰着する。この場合も1nserterが変更した後の
1eafの中の最小(大)のkeyをreaderが読
むことになり、カーソルは正しく動いている。
2 、 ingarterによって1eafの分割がお
きる場合(第14図) 2.1.カーソルが1nserterの変更する1ea
f上にある場合 1nserterがかける1ockはαとξ、 a 1
ockとp 1ockはcompatibleであり、
となりの1eafはpointer以外書き直さないの
で1.1の場合に帰着されるのでOK。
2.2.カーソルが1nsertsrの変更する1ea
fの手前にあってカーソルが正方向に進む場合(第15
図) inssrterがξ1ockをかける前にreade
rが、変更する1eafにp 1ockをかけた場合は
2.1に帰着される。よって、1nserterがξ1
ockをかけた後、readerが当1eafにρ1o
ckをかけ、てwait している場合のみを考えれば
よい、この場合も、 1nsertion ruleに
よりkeyの順がB’B”Cとなっているので、B′の
中の最小のkeyを読むことにより、■の最大のkey
の′″次のu k e yを読むことができる。よって
、カーソルは正しく動く。
2.3.カーソルが1nserterの変更する1ea
fの後ろにあってカーソルが逆方向に進む場合 2.3,1.1nserterがξLockをかける前
にreaderがρ1ockを変更する1eafにかけ
る場合2.1の場合に帰着するので0に。
2.3,2.ingerterがξ1ockをかけた後
にreaderがρ1ockを変更する1eafにかけ
る場合(第16図) 2.3.3.1nserterが右どなりの1eafに
a 1ockをかける前にreaderがσLockを
かけた場合1nsarterはa 1ockでwait
になり、readerのσLockがはずれた後は2.
1の場合に帰着するのでOK。
Lemma 3゜ deleterとreaderが同時に動いた場合、結
果が保障される。
Proof。
1eatがdeleteされない場合は明らか、 1e
atがdeleteされる場合はLemma 2の2.
1,2.3のケースと同様に正しいことがいえる。
Le+uia 4゜ 1nserter 、 delaterと5aarch
arが同時に動いた場合、結果が保証される。
Proof。
1nserter及びdeleterと5earcha
rが共にnonleaf nodeにアクセスしている
間はLemma 1の場合と同様である6問題は1ea
f node上にある場合であるが、この場合、1ea
f上においては、 5earcherはreaderと
同一の動きをするのでLamma2により結果が保証さ
れる。
Theoram D L −Btree上における1nsertion、
deletion。
reading、searchingは同時実行によっ
ても結果が保証される。
Proof。
前述のLemmaより以下の部分の結果が保証されてい
る。
A、B、C,はいずれも変更を伴わず、がっがける1o
ckが全てcompatiblaなので全く干渉しあわ
ない、よって同時に実行しても単独で実行したのと同一
結果が得られる。よって全ての組み合せにおいて結果が
保証されたことになる。
■ デッドロックフリーであること (Free from dead lock)Lemm
a 1゜ 5earch−search、 read−searc
h、 read−readは全てdaad 1ock 
freeである。
Proof。
5earch 、 raadによってかかる1ockは
、ρとσのみであり、全てcompatiblgである
。よってwaitが起こらないのでdead 1ock
 freeである。
La+mma 2゜ non 1eaf上の5earchと1nsertの1
ockはdeadlock freeである。
Proof。
5earch、1nsertともfather nod
eを1ock L/た後にsonを1ock している
、また、rootに最初にLockをかけている。よっ
てdead 1ock freeとなる。
Lamma  3゜ 5earchが1eafに最初にかけるLockがwa
itとなって生じるdead 1ockはない。
Proof。
5earchが最初に1eafにかけるLockはp 
1ockであり、これとcompatibleでないL
ockはξLockのみである(第17図)、よってp
 1ockがwaitするためには、1nsertar
によって1eafにξLockがかが委必要がある。ま
たfather nodeは5earchorによりp
 1ockがかかっている。よって1nsarterが
fatherにξ1ockをかけていることはない* 
1nserterの1ockの定義からfatharに
ξ1ockがかからずsonにかかっているのはson
が1−safeである場合か、splittingが終
了してfather 1ockがはずされた瞬間の2通
りのみである。よってこの1n−sarterは以降何
の1ockも要求しないので、dead 1ockは生
じない。
Les+a+a 4゜ readarとnon 1eaf nodeのLock
が全てはずれた後の5earcherは同一のロックメ
カニズムをもつ。
Proof。
5earchとreadの定義より明らかである。
Le■鵬a  5゜ 1nsert同士はdead 1ock freeであ
る。
Proof。
non 1eaf上の1ockはLamma 2と同様
にdead 1ockfree、また、1eaf分割の
起きない場合も同様にdead 1ock freeで
ある0問題となるのは両方が共に1eaf分割をおこし
、かつ、となりあった1eafを分割した場合である(
第18図)。
この場合、 1nserter aは■−ξ、D−a、E−a、D−
ξ1nsarter bは■−ξ、E−a、F−a、E
−ξというLockをこの順でかける。
互いに干渉しあうのは、 1safE上のLockのみ
であり、表2の3つの場合が考えられる。
表2 1は、bがwaitするがdead 1ockは生じな
い。
2は、bのσ→ξがaのα1ockより先に行われるの
でaがwait Llてうまく動き、 dead 1o
ckは生じない。
3は、aがwaitするがdead 1ockは生じな
い。
よって1niarter同士はdead 1ockを生
じない。
Lamma  6゜ 1nserterとreaderは、dead 1oc
k freeである。
Proof。
問題となるのは1eaf上のLockのみである。
■1nsertarが1eaf分割を起こさない場合r
eaderが1nserterと干渉するのは次の通り
である。
1、カーソルが1nsertする1eaf上にある場合
(第19図) これは、カーソルが前後に動くことによりLockがは
ずれるので、 dead 1ockを生じない。
a 1ockはρ、σ共にcompatibleなので
1nserterはreaderの動きをさまたげない
2、カーソルが1nsertするLeafのとなりにい
て、1nsertする1eafに移ってこようとする場
合(第20図) readerのp 1ockが1nserterのξ1
ockが排他しあうだけである。ξLockがかかる前
にplockがかかればlの場合に帰着する。そうでな
ければ、1nsartionが終了するまでreade
rがwaitすることになりdaad 1ockは生じ
ない。
■1nsatarが1eaf分割を起こす場合(第21
図)■の場合と異なるのは、以下の2つの場合でその他
は■の場合に帰着する。
1、readerが前後の1eafから、1nsart
erがα1ockをかけた1eafにカーソルを移す場
合a 1ockとp 1ockはcompatible
なので、waitがおこらない、よってdaad 1o
ck frees2、raaderが1niarter
がa 1ockをかけた1eafからら1nsertす
る1eafにカーソルを移そうとした場合 Lockは以下の順でかかる。
D−αとD−σ、◎−ξと◎−ρが共に排他するが、2
番目のLockを先にかけた方が3番目の1ockをか
けることができるのでdead 1ockになることは
ない。
Lamma  7゜ 1nserterとdeleterはdead 1oc
k freeである。
Proof 。
1eatがdeleteされない場合は明らかa 1e
atがdeleteされる場合も1nserterの場
合と同様に2番目の1ockを先にかけた方が3番目を
かけることができるのでdead 1ock frae
である。
Lemma  8゜ 1nsarter 、 deleterと5earch
erはdead 1ock freeである。
Proof。
Lemma 2とLesuea 3により5earch
erが1eafにLockをかけるまではdead 1
ock free、それから先は、Lsmma 4,6
によりdaad 1ock free。
Theoram。
read 、 5earch 、 1nsert 、 
deleteはどの2つをとつても互いにdead 1
ock freeである。
Proof。
free from dead 1ockのLesma
 1,5,6.7より明らかである。
【図面の簡単な説明】
第1図は1本発明の詳細な説明するための図、第2図は
、B ”treeの概略図、第3図はロックモードのコ
ンパティビリティを示す図、第4図乃至第8図は、1n
sert 1ockを説明するための図。 第9図〜第11図は、delition 1ockの一
例を説明するための図、第12図乃至第21図は、それ
ぞれ本発明の作用効果を証明するための図である。 第 1r1!A          第 2 図第3図 第41N Ii 5 因 纂6図 !I7図 ME8rI!J 第9図 father   5Ide  rocklg 70図 WIO(X  7JIOGK 第 14r1!J ! 75図 第16図 第17図 第18図

Claims (1)

    【特許請求の範囲】
  1. 葉上に横方向に双方向のリンクをもつB^+木上での同
    時実行制御を行なう方式において、変更の対象となる部
    分木の両脇の葉を変更しなければいけない場合に、部分
    木に対するロックのみならず、部分木の必要な側を根か
    ら葉へおりる形でのロックを行い、このロックが最終的
    に該当葉の両脇の葉をロックするために用いられること
    を特徴とするB^+tree上における同時実行制御方
    式。
JP62024298A 1987-02-03 1987-02-03 B↑+tree上における同時実行制御方式 Pending JPS63191226A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP62024298A JPS63191226A (ja) 1987-02-03 1987-02-03 B↑+tree上における同時実行制御方式
US07/778,749 US5119490A (en) 1987-02-03 1991-10-18 Concurrent processing controlling method and apparatus on B+ tree structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62024298A JPS63191226A (ja) 1987-02-03 1987-02-03 B↑+tree上における同時実行制御方式

Publications (1)

Publication Number Publication Date
JPS63191226A true JPS63191226A (ja) 1988-08-08

Family

ID=12134261

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62024298A Pending JPS63191226A (ja) 1987-02-03 1987-02-03 B↑+tree上における同時実行制御方式

Country Status (2)

Country Link
US (1) US5119490A (ja)
JP (1) JPS63191226A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007323153A (ja) * 2006-05-30 2007-12-13 Nec Corp インデックスファイル検索装置、検索方法、検索プログラム及びこれを記録した記録媒体
WO2013098918A1 (ja) * 2011-12-26 2013-07-04 株式会社日立製作所 データベースシステム及びデータベース管理方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265207A (en) * 1990-10-03 1993-11-23 Thinking Machines Corporation Parallel computer system including arrangement for transferring messages from a source processor to selected ones of a plurality of destination processors and combining responses
US5430869A (en) * 1991-05-29 1995-07-04 Hewlett-Packard Company System and method for restructuring a B-Tree
US5307487A (en) * 1991-10-03 1994-04-26 The United States Of America As Represented By The Secretary Of The Navy Method of database synchronization with consistency determined by entry and exit counters used on both update and retrieval
US5414839A (en) * 1992-06-19 1995-05-09 Digital Equipment Corporation Hybrid lock escalation and de-escalation protocols
US5440732A (en) * 1993-02-05 1995-08-08 Digital Equipment Corp., Pat. Law Gr. Key-range locking with index trees
EP0707725B1 (en) * 1993-07-07 1997-01-29 EUROPEAN COMPUTER-INDUSTRY RESEARCH CENTRE GmbH Database structures
US5918224A (en) * 1995-07-26 1999-06-29 Borland International, Inc. Client/server database system with methods for providing clients with server-based bi-directional scrolling at the server
FR2746526B1 (fr) * 1996-03-25 1998-06-05 Digital Equipment Corp Procede pour conserver une base de donnees a organisation temporelle et spatiale
US7487152B1 (en) * 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US6944615B2 (en) 2001-06-28 2005-09-13 International Business Machines Corporation System and method for avoiding deadlock situations due to pseudo-deleted entries
US20040260709A1 (en) * 2003-01-27 2004-12-23 Yohichiroh Matsuno Merge information provider
US7562217B2 (en) * 2003-06-06 2009-07-14 Ricoh Company, Ltd. Web service provider and authentication service provider
JP2005100361A (ja) * 2003-08-26 2005-04-14 Ricoh Co Ltd ワークフロー機能追加プログラム、電子メールプログラム、ワークフロー管理プログラム、記録媒体、ユーザ端末装置、ワークフロー管理装置、ワークフロー処理方法、ワークフロー管理方法
JP4738791B2 (ja) * 2003-11-12 2011-08-03 株式会社リコー サービス提供システム、サービス提供装置、サービス提供方法、サービス提供プログラム、及び記録媒体
EP1566744A1 (en) * 2004-02-19 2005-08-24 Sap Ag Optimising lock granularity using range locking
EP1684194A1 (en) * 2005-01-25 2006-07-26 Sap Ag A central lock service for database applications
US20090006402A1 (en) * 2007-06-28 2009-01-01 Holger Bohle Methods and systems for the dynamic selection of a locking strategy
US20100076940A1 (en) * 2008-09-09 2010-03-25 International Business Machines Corporation Method for providing maximal concurrency in a tree structure
US9262463B2 (en) * 2013-08-05 2016-02-16 International Business Machines Corporation Managing multiple locks for data set members in a data set index

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2459476B2 (de) * 1974-12-16 1977-01-20 Gesellschaft für Mathematik und Datenverarbeitung mbH, 5300 Bonn Schaltungsanordnung fuer nichtzyklische datenpermutationen
US4468728A (en) * 1981-06-25 1984-08-28 At&T Bell Laboratories Data structure and search method for a data base management system
US4606002A (en) * 1983-05-02 1986-08-12 Wang Laboratories, Inc. B-tree structured data base using sparse array bit maps to store inverted lists

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007323153A (ja) * 2006-05-30 2007-12-13 Nec Corp インデックスファイル検索装置、検索方法、検索プログラム及びこれを記録した記録媒体
WO2013098918A1 (ja) * 2011-12-26 2013-07-04 株式会社日立製作所 データベースシステム及びデータベース管理方法
JPWO2013098918A1 (ja) * 2011-12-26 2015-04-30 株式会社日立製作所 データベースシステム及びデータベース管理方法
US9703829B2 (en) 2011-12-26 2017-07-11 Hitachi, Ltd. Database system and database management method

Also Published As

Publication number Publication date
US5119490A (en) 1992-06-02

Similar Documents

Publication Publication Date Title
JPS63191226A (ja) B↑+tree上における同時実行制御方式
US5197001A (en) Bill of material and project network processing
Bayer Symmetric binary B-trees: Data structure and maintenance algorithms
KR920000395B1 (ko) 키 레코드 데이타 페칭 및 삽입, 삭제 방법
US5878414A (en) Constructing a transaction serialization order based on parallel or distributed database log files
US5557786A (en) Threaded, height-balanced binary tree data structure
Tarjan Updating a balanced search tree in O (1) rotations
US5832519A (en) System and method for updating database values without the use of locking operations
EP0369699A2 (en) Updating pattern-matching networks
CN111444027A (zh) 事务处理方法、装置、计算机设备及存储介质
Ibarra et al. Fast parallel language recognition by cellular automata
Ghosh et al. Optimal retrieval strategies for carousel conveyors
CN112434035B (zh) 基于机器学习的并发哈希索引数据结构的索引方法及系统
Wang et al. The concurrent learned indexes for multicore data storage
US7185340B1 (en) Multiphase system and method of performing operations on data structures
Krishna et al. Using Cuckoo Filters to Improve Performance in Object Store-based Very Large Databases
US7315862B1 (en) Concurrent lock-free access to a record by write and read processes
KR100709275B1 (ko) 논 블록킹 검색연산을 위한 알-트리 기반의 동시성 제어방법
Bădoiu et al. A simplified and dynamic unified structure
Krishna et al. Verifying Single-Copy Concurrent Search Structures
Chang et al. Blast furnace system identification by maximum likelihood method
Makni et al. Performance evaluation of an optimistic concurrency control algorithm for temporal databases
CN114461605A (zh) 内存多维数据库的事务数据多版本实现方法、装置及设备
Kulkarni et al. An Innovative Approach for Achieving Composability in Concurrent Systems using Multi-Version Object Based STMs
JP3064619B2 (ja) 生産管理用データベース管理装置