JP2008225693A - データベース管理方法、装置およびプログラム - Google Patents

データベース管理方法、装置およびプログラム Download PDF

Info

Publication number
JP2008225693A
JP2008225693A JP2007060898A JP2007060898A JP2008225693A JP 2008225693 A JP2008225693 A JP 2008225693A JP 2007060898 A JP2007060898 A JP 2007060898A JP 2007060898 A JP2007060898 A JP 2007060898A JP 2008225693 A JP2008225693 A JP 2008225693A
Authority
JP
Japan
Prior art keywords
record
transaction
database
identification number
value
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.)
Granted
Application number
JP2007060898A
Other languages
English (en)
Other versions
JP5211514B2 (ja
Inventor
Yoshihisa Nakano
嘉久 中野
Takayuki Nakazawa
孝之 仲沢
Naohiro Ito
尚洋 伊藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007060898A priority Critical patent/JP5211514B2/ja
Priority to US12/039,443 priority patent/US7908245B2/en
Publication of JP2008225693A publication Critical patent/JP2008225693A/ja
Application granted granted Critical
Publication of JP5211514B2 publication Critical patent/JP5211514B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データベースのトランザクションIDの整理をする際に発生する負荷を分散させたデータベース管理装置の提供を目的とする。
【解決手段】複数のレコードを含むページによってデータベースとの間の読出しあるいは書き込みを行い、データベースに格納されたレコードのデータの値が変化する処理毎に新たなレコードを作成するデータベースの管理方法であって、読出しの対象となるレコードの識別番号情報を含むページを読出し、トランザクションに付された最新の識別番号よりもページのレコード識別番号が所定の値以上古いレコードをレコードの順序の判定の対象外とする。
【選択図】図1

Description

本発明はデータベースの管理に関する。
データベース管理システムの一つにPostgreSQLがある。PostgreSQLのデータベースは複数のテーブルを有し、テーブルは複数のレコードを有する。PostgreSQLはレコードを追記型構造によって格納する。追記型構造は、レコードの更新が発生した場合、更新後の新たなレコードを逐次追加する構造である。追記型構造はMVCC(Multiversion Concurrency Control)モデルを実現することが可能となる。MVCCは、データベースからデータの取得を依頼するトランザクションを実行した時に、ある時点でのデータベースに格納されたデータの値の一貫性が保証されたデータを利用可能とする機能である。トランザクションは関連する複数の処理を一つの処理の単位とするものである。MVCCを実現するためにはトランザクション毎にトランザクションを識別するための番号(トランザクションID)を付し、トランザクションに付された番号の大小によってレコードを特定する必要がある。
追加されたレコードは追記型構造では削除あるいは上書きされることがない。そのため追記型構造は、テーブルのデータ更新処理を行うアプリケーションの動作に伴い、有効レコードあるいは処理が完結した無効レコードの件数が増加する。データベースでは、データに関する処理をトランザクション単位で管理する。トランザクションIDの取得可能な個数は有限である。トランザクションIDがオーバーフローするとトランザクションIDの大小が不明となる。したがって追記型構造では、増加した有効レコードあるいは無効レコードの件数を整理する処理が必要である。PostgreSQLでは定期的なVACUUM処理によって無効レコードが存在しているデータ領域を再利用可能な状態に変更する(回収処理)。また、VACUUM処理は、有効レコードの内、所定の値よりも古いトランザクションIDをトランザクションIDの大小の比較を行わない特殊なトランザクションIDに変更する(Freeze処理)。従来技術として下記文献がある。
しかし、VACUUM処理はデータベースのテーブルを単位として処理を実行する必要があるため、VACUUM処理の実行によってデータベースシステムが受ける負荷は大きい。
特開平11−212831号公報
本発明は、データベースのトランザクションIDの整理をするときに発生する負荷を分散させたデータベース管理装置の提供を目的とする。
本発明の第一の手段は以下となる。本発明は、データベース内のレコードの読出しあるいは書込みをトランザクションに応じて行い、データベースに格納されたレコードのデータの値が変化する処理毎に新たなレコードを作成するデータベースの管理方法であって、トランザクションによって読出しあるいは書込みをされたレコードにトランザクションの識別番号を対応付け、データベース内の処理の対象のレコードを含む予め定めたデータ量のデータによって読出しあるいは書込み、読出しあるいは書込み処理のトランザクションの識別番号と読出されたデータ内のレコードに対応するトランザクションの識別番号との差が所定の値以上のレコードをレコードの順序の判定の対象外とする。
また、本発明の第二の手段は第一の手段に更に以下を行う。レコードの識別番号の取得できる領域を所定の範囲で区分して、所定の範囲毎に世代情報を付し、予め定めたデータ量のデータ内の最古のレコードの属する世代をデータの世代情報として取得し、データの世代情報の値がトランザクションの識別番号に対応する世代情報の値よりも所定の値以上のときに、データ内のレコードに付される識別番号毎のレコードをレコードの順序の判定の対象外とするか否かの判定処理を実行する。
また、本発明の第三の手段は第一の手段に更に以下を行う。読出される対象のレコードに格納されたデータに対する処理の前に実行する。
また、本発明の第四の手段は第一の手段に更に以下を行う。レコードに対する処理が完結したときに付された識別番号が所定の値以上古いレコードの場合は、レコードの記憶領域に新たなレコードを生成可能とする。
また、本発明の第五の手段は第二の手段のレコードの識別番号の取得できる領域を区分する所定の範囲は4とする。
レコードを読み出す際の単位となるページ毎に不要なトランザクションIDの削除を行うため、データベースのトランザクションIDの整理の処理によって発生する負荷を分散させることが可能となる。その結果、VACUUMコマンドを実行することによるデータベースシステムの処理速度の低下を防ぐことが可能となる。
(実施例)
図1は本実施例のハードウェア構成図である。
データベース管理装置10は、制御部21、メモリ22、記憶部23、入力部24、出力部25を有し、それぞれがバス11接続された構成である。
制御部21は当該データベース管理装置10の全体を制御する。例えば、Central Processing Unit(CPU)である。また、制御部21はメモリ22に展開されたデータベース管理プログラム231を実行する。データベース管理プログラム231は制御部21を新たなデータおよびコマンドを取得する入力モジュール、該当するレコードを検出する検出モジュール、ページ内のトランザクションIDの大小関係を比較する比較モジュールおよび更新したページを出力する出力モジュールとして機能させる。
メモリ22は、記憶部23に格納されたデータベース管理プログラム231が展開される記憶領域である。また、メモリ22は制御部21がデータベース管理プログラム231を実行する際に生成される種々の演算結果が格納される記憶領域である。例えば、データベースから読み出したページ、ページの内容が変更された結果としてデータベースに反映すべきデータとなったDIRTYデータが一時格納される。メモリ22は例えばRandom Access Memory(RAM)である。
入力部24は他の利用者からの命令情報を受付ける。入力部24は、例えば、キーボード、マウス、タッチパネル等である。出力部25は、処理結果を出力する。出力部25は、例えば、ディスプレイ等である。記憶部23は、データベース管理プログラム231が格納される。記憶部23は例えばハードディスク装置である。
データベース26はデータベース管理装置10が管理する対象のデータベースである。本実施例では、データベースの管理にPostgreSQLを用いる場合を説明する。PostgreSQLは、データベースに対してトランザクション毎に処理を実行することでデータベースにデータを格納する。
データベースに格納されたデータの検索/更新等の処理が実行された場合、当該処理を実行したトランザクションに対して過去のデータか否かは、レコード内に格納されたデータに対応するトランザクションを識別する識別番号(以下XIDとする)の値および実行中のトランザクションに対応するXIDの値の大小比較を行うことにより、判定される。
本実施例のPostgreSQLでは、例えば、XIDは4バイトの符号なし整数として実装される。一方、XIDが4バイトの符号なし整数の範囲を超えるとXIDの周回(オーバフロー)が発生する。XIDのオーバーフローが発生したままではXIDの大小比較が正しく行われなくなる。
図2は本実施例のデータベース26の構成例である。本実施例のデータベース26は複数のテーブル27を有する。またテーブル27は複数のレコード28が格納される。テーブル27のカラム(列)は2つのトランザクションID(XIDmin29、XIDmax30)、およびレコード28のデータ(data)31によって構成される。XIDmin29は、新しくレコードを挿入するトランザクションが実行されたときに登録される。例えばINSERTコマンドが実行された場合にテーブルの空き領域に新たにレコード28が追加され、XIDmin29列にINSERTコマンドに対応するトランザクションIDが登録される。また、UPDATEコマンドが実行された場合にテーブルの空き領域に新たに更新後のレコード28が追加され、XIDmin29列にUPDATEコマンドに対応するトランザクションIDが登録される。XIDmax30は、レコードを削除するトランザクションが実行されたときに登録される。例えばDELETEコマンドが実行された場合に、XIDmax30列にDELETEコマンドに対応するトランザクションIDが登録される。
次に本実施例でのページについて説明する。ページ32は制御部21がデータベース26のテーブル27からメモリ22にデータを読み出すときのデータ量の単位である。例えば、1ページは8kbyteの大きさである。図3はページ32の構成図である。
ページ32は複数のレコード28を有する。ページ32はページヘッダ33を有する。ページヘッダ33は世代識別番号(以下GIDとする)を有する。GIDはXIDの世代を識別するための番号。世代は、XIDの値をとりうる領域を予め定めた複数の領域に分割し、各領域を越える毎に切り替わる。
ここで、XIDとGIDとの関係について説明する。図4はXIDとGIDとの関係を示す図である。図4の円41はXIDのとりうる全領域を示す。本実施例では、XIDは32bit長の整数であるとする。したがって、図4のXIDは円41で2の32乗個のIDを取り得る。
世代は、XIDの値をとりうる領域を予め定めた複数の領域に分割し、各領域を越える毎に切り替わる。GIDは世代を特定する番号である。本実施例は、XIDの取り得る値を4つの領域に分割する。図4では、XIDを表す円41が4つの領域(0,1,2,3)に分割される。
本実施例のXIDは新しく識別番号を取得する度に1ずつ増加するものとする。XIDは2の32乗の整数の範囲で値を取得するため、XIDを2進数で表記する場合、上位2bitの変化よってXIDの取り得る全ての数を4分割することが可能となる。XIDのとりうる値が4分割された領域を超えるIDをXIDが取得する度にGIDが変化する。したがって、XIDの上位2bitが変化する度にGIDを1ずつ増やせば良い。図4での円41内の値はXIDの上位2bitの値を示す。XIDの上位2bitの値は2進数表記では、「00」、「01」、「10」および「11」)となる。XIDの上位2bitが変化するたびにGIDは1ずつ増加する関係は図4の下段の表で示される。図3のページ32の構成の説明に戻る。
ページヘッダ33にはGIDmin34、GIDmax35が格納される。例えば、ページ32を初期化するとき、現在のトランザクションに付されたXIDが属する世代に対応するGIDがページヘッダ33のGIDmin34、GIDmax35に設定される。GIDmin34はページ32に含まれるレコードが有するXIDmin29が属する世代の内最小の世代が格納される。GIDmax35はページ32に含まれるレコードが有するXIDmax30が属する世代の内最小の世代が格納される。
本実施例は、XIDを単に長くした構成ではない。例えばGIDの領域を32bitとする場合、トランザクションの値はXIDとGIDとを合わせると64bit長となる。データベースシステムは64bit長をXIDとすることで、トランザクションを一意に特定することが可能である。しかし、メモリ22にデータを読み出すときのデータ量の単位であるページの容量は変わらないため、一度に読み出せるデータ量が低下する。その結果、データベースシステムのデータ読出し速度が低下する。したがって、ページヘッダにのみGIDを付すことにより、一度にデータベース26からメモリ22に読み出し得るデータ量の低下を防ぐことが可能となる効果を生じる。
次にデータベースの管理について説明する。図5は、トランザクションID、世代IDの識別番号の取得処理のフローチャートである。XIDは、新たなXIDが必要となった場合に採番される。GIDは一つの世代に割当てられているXIDがすべて消費された場合に、新たに採番される。制御部21は、データベース26にアクセスする処理を実行させるアプリケーションによって、データベース26のレコードにアクセスするための処理依頼を受付ける。制御部21は処理依頼に対応するレコードを含むページをメモリ22に読み出す。
制御部21は、現在の最新のトランザクションIDを一時退避する(S01)。現在の最新のトランザクションIDは例えばメモリ22に格納されている。退避することにより、以降の処理で制御部21が現在の最新のトランザクションIDを演算に用いることが可能となる。
制御部21は、アプリケーションからのデータベース26へのアクセス要求に対するXIDを新たに生成する(S02)。新たに生成されたXIDは、例えばS01のトランザクションIDに1を加えた値である。
制御部21はS01のXIDが属する世代とS02で生成されたXIDが属する世代が一致するか否かを判別する(S03)。具体的には、制御部21はS01で退避したXIDの領域を示す値とS02で生成したXIDの領域を示す値とが合致するか否かを判別する。本実施例では、図4で説明したようにXIDを4つの領域に分割する。したがって、XIDの領域を示す値は、XIDの上位2bitの値となる。制御部21はXIDの上位2bitの値が一致するか否かを判別する。
制御部21がS01のXIDが属する世代とS02で生成されたXIDが属する世代が一致しないと判定した場合(S03:No)、制御部21はGIDを新たに生成する(S04)。GIDの生成は、例えば、制御部21が現在の最新のGIDに1を加えて新たなGIDとする。
次にページを初期化するときの処理について説明する。図6は、制御部21がページを初期化する処理のフローチャートである。制御部21は新たなページ32の領域を取得する(S11)。制御部21はページヘッダ33のGIDを現在のトランザクションに付されたXIDが属する世代のGIDに更新する。制御部21はGIDmin34に現在のトランザクションに付されたXIDが属する世代のGIDの値を挿入し(S12)、GIDmax35に現在のトランザクションに付されたXIDが属する世代のGIDの値を挿入する(S13)。
次に、データベース26に格納されたページを読み出すときの処理について説明する。図7は、制御部21がページを読み出すときの処理のフローチャートである。ページを読み込むときに制御部21はページヘッダ33に格納したGIDmin34およびGIDmax35の値に応じて、処理を切り替える。
制御部21はアプリケーションから要求されたデータベース26の対象のレコード28を読み出す。本実施例での制御部21がテーブル27から呼び出すデータの単位はページ32である。したがって、制御部21は対象のレコード28を含むページ32を読み出す(S21)。
制御部21は、GIDmin34がトランザクションに付された最新のXIDが属する世代の値よりも「2」以上前か否かを判定する(S22)。本実施例では、レコードの有効無効の判別を行う世代の値は「2」を基準とする。レコードの有効無効の判別を行う世代の値を「2」とすることによって、従来のVACUUM処理でのレコードの有効無効の判別を行う処理の結果との整合が図れる効果がある。従来のVACUUM処理では、XIDのとりうる値を最新のXIDを基準として過去のXIDと未来のXIDとに2分割する方式のためである。
GIDmin34が最新のXIDが属する世代の値よりも2以上前の場合(S22:Yes)、制御部21はページ32に含まれるXIDmin29の列のFreeze処理を実行する(S23)。
ここで、制御部21がS23にて実行するページ32に含まれるXIDmin29の列のFreeze処理について詳細に説明する。図8は、XIDmin29の列のFreeze処理のフローチャートである。
制御部21は、現在のページ32に含まれる全てのレコード28についてS32以降の処理が完了したか否かを判定する(S31)。
現在のページ32に含まれる全てのレコード28についてS32以降の処理が完了していない場合(S31:No)、制御部21はページ32に含まれる処理の対象となるレコード28を読み出す(S32)。制御部21は、S32で読み出したレコードのXIDmin29の列の世代の識別番号が最新の世代識別番号より2世代以上前か否かを判別する(S33)。
S32で読み出したレコードのXIDmin29の列の世代の識別番号が最新の世代識別番号より2世代以上前の場合(S33:Yes)、制御部21はS32で読み出したレコードのXIDmin29の値をトランザクションの大小の比較において比較の対象外であることを示す値に更新する(S34)。トランザクションの大小の比較において比較の対象外であることを示す値は、例えば、レコードが持つ十分古いXIDを他のXIDよりも古いと判定される特殊なXID(Frozen Transaction Id)である。制御部21は特殊なXID(Frozen Transaction Id(FTID))に置き換えるFreeze処理を実行する。
一方、S32で読み出したレコードのXIDmin29の列の世代の識別番号が最新の世代識別番号より2世代以上前ではない場合(S33:No)、制御部21はS32で読み出したレコードのXIDmin29が1世代前の値か否かを判定する(S35)。S32で読み出したレコードのXIDmin29が1世代前の値の場合(S35:Yes)、制御部21はページ32内のXIDmin29のレコードには1世代前の値を有するレコードが含まれている旨の情報を記憶する(S36)。一方、S32で読み出したレコードのXIDmin29が1世代前ではない値の場合(S35:No)、S32で読み出したレコードのXIDmin29の世代の値は現在の最新のXIDが属する世代の値と同一であるため、特に処理を行わず、次のレコードについてS31からの処理を実行する。
次にページ32内の全てのレコード28について処理が完了する(S31:Yes)と、制御部21はページ内の各レコード28で最新の世代よりも1世代前のXIDmin29を有するレコード28があったか否かを判定する(S37)。具体的にはS36で制御部21がページ32内のXIDmin29のレコードには1世代前の値を有するレコードが含まれている情報を記憶した否かを判別する。1世代前のレコードが含まれている場合(S37:Yes)、制御部21はGIDmin34に最新のGIDから1を引いた値を格納する(S38)。一方、1世代前のレコードが含まれていない場合(S37:No)、制御部21はGIDmin34に最新のGIDの値を格納する(S39)。図7のフローチャートの説明に戻る。
制御部21は、GIDmax35がトランザクションに付された最新のXIDが属する世代の値よりも2以上前か否かを判定する(S24)。本実施例では、レコードの有効無効の判別を行う世代の値は「2」を基準とする。レコードの有効無効の判別を行う世代の値を「2」とすることによって、従来のVACUUM処理でのレコードの有効無効の判別を行う処理の結果との整合が図れる効果がある。従来のVACUUM処理では、XIDのとりうる値を現在のXIDを基準として過去のXIDと未来のXIDとに2分割する方式のためである。
なお、XIDmax30についてFreeze処理を実行することにより、処理が完結したレコードをページ32上から削除することが可能となる。従来のVACUUM処理では、Freeze処理と回収処理とが行われる。本実施例では、XIDmin29についてFreeze処理を実行し、XIDmax30については回収処理を実行することで空き領域とすることができる。
GIDmax35がトランザクションに付された最新のXIDが属する世代の値よりも2以上前の場合(S24:Yes)、制御部21はページ32に含まれるXIDmax30の列のFreeze処理を実行する(S25)。
ここで、制御部21がS25にて実行するページ32に含まれるXIDmax30の列のFreeze処理について詳細に説明する。図9は、XIDmax30の列のFreeze処理のフローチャートである。
制御部21は、現在のページ32に含まれる全てのレコード28についてS42以降の処理が完了したか否かを判定する(S41)。現在のページ32に含まれる全てのレコード28についてS42以降の処理が完了していない場合(S41:No)、制御部21はページ32に含まれる処理の対象となるレコード28を読み出す(S42)。制御部21は、S42で読み出したレコード28のXIDmax30の列の世代の識別番号が最新の世代識別番号より2世代以上前か否かを判別する(S43)。
S42で読み出したレコードのXIDmax30の列の世代の識別番号が最新の世代識別番号より2世代以上前の場合(S43:Yes)、制御部21はS42で読み出したレコードのXIDmax30の値をトランザクションの大小の比較において比較の対象外であることを示す値に更新する(S44)。トランザクションの大小の比較において比較の対象外であることを示す値は、例えば、レコードが持つ十分古いXIDを他のXIDよりも古いと判定される特殊なXID(Frozen Transaction Id)である。制御部21は特殊なXID(Frozen Transaction Id(FTID))に置き換えるFreeze処理を実行する。
一方、S42で読み出したレコードのXIDmax30の列の世代の識別番号が最新の世代識別番号より2世代以上前ではない場合(S43:No)、制御部21はS42で読み出したレコードのXIDmax30が1世代前の値か否かを判定する(S45)。S42で読み出したレコードのXIDmax30が1世代前の値の場合(S45:Yes)、制御部21はページ32内のXIDmax30のレコードには1世代前の値を有するレコードが含まれている旨の情報を記憶する(S46)。一方、S42で読み出したレコードのXIDmax30が1世代前ではない値の場合(S45:No)、S42で読み出したレコードのXIDmax30の世代の値は現在の最新のXIDが属する世代の値と同一であるため、特に処理を行わず、次のレコードについてS41からの処理を実行する。
次にページ32内の全てのレコード28について処理が完了すると、制御部21はページ内の各レコード28で最新の世代よりも1世代前のXIDmax30を有するレコード28があったか否かを判定する(S47)。具体的にはS46で制御部21がページ32内のXIDmax30のレコードには1世代前の値を有するレコードが含まれている情報を記憶した否かを判別する。1世代前のレコードが含まれている場合(S47:Yes)、制御部21はGIDmax35に最新のGIDから1を引いた値を格納する(S48)。一方、1世代前のレコードが含まれていない場合(S47:No)、制御部21はGIDmax35に最新のGIDの値を格納する(S49)。図7のフローチャートの説明に戻る。
制御部21はページ32の内容に変更が発生したか否かを判定する(S26)。ページ32の内容に変更が発生した場合(S26:Yes)、制御部21はDIRTYフラグを設定する。DIRTYフラグは、データベースに反映すべきDIRTYデータがメモリ22上にある場合に立てられるフラグである。DIRTYデータはデータベース26に反映すべきデータであるがメモリ22上にのみあるデータである。例えば、ページ32に新たなレコードが追加された場合には、制御部21は更新されたページ32をデータベース26に反映する必要がある。そこで、制御部21は、データベース26に反映するための更新されたページ32であるDIRTYデータをメモリ22に記憶する。制御部21は、ログ情報を出力する。ログ情報は例えば、ページ32の内容の変化等である。
次に図7乃至図9のフローチャートによって本実施例を適用した場合におけるページ32内の状態の変化について具体例を用いて説明する。図10はデータベース26から読み出されたページ32の構成を示す。図11は制御部21がFreeze処理を実行した後のページ32の構成を示す。
図10のページ32は、ページヘッダ33と複数のレコード28とを有する。ページヘッダ33はGIDmin34、GIDmax35およびその他のデータを有する。各レコード28はXIDmin29列、XIDmax30列およびデータ列31を有する。
ここで、ページ32に含まれる各レコードのXIDmin29列の値は2進数表記で「00...1000」、「01...1011」およびページ32内の空き領域である。ページ32に含まれる各レコードのXIDmax30列の値は2進数表記で「00...1110」、「未設定」およびページ32内の空き領域である。ページ32に含まれるデータ列31にはデータベースで管理する対象のデータが格納される。
GIDmin34はページ32内の各レコード28のXIDmin29列から求めた世代番号の最小値が格納される。世代番号は、XIDmin29列を2進数で表した場合の上位2bit36の値に対応する値であり、上位2bit36が変化する毎に世代番号が増加する。図10では、「00...1000」によるXIDmin29列の上位2bit36の値は「00」であり、「01...1011」によるXIDmin29列の上位2bit36の値は「01」である。図4の関係から、上位2bit36が「00」については世代番号「4」が対応し、上位2bit36が「01」については世代番号「5」が対応する。したがって、GIDmin34には、世代番号「4」が格納される。
GIDmax35はページ32内の各レコード28のXIDmax30列から求めた世代番号の最小値が格納される。世代番号は、XIDmax30列を2進数で表した場合の上位2bit37の値に対応する値である。上位2bit37が変化する毎に世代番号が増加する。図10では、「00...1110」によるXIDmax30列の上位2bit37の値は「00」である。図4の関係から上位2bit37が「00」については世代番号「4」が対応する。したがって、GIDmax35には、世代番号「4」が格納される。
次に、現在の最新の世代番号が「6」の場合において、図10のページ32が読み込まれた場合に、制御部21が実行するFreeze処理について説明する。
制御部21は最新の世代IDの値「6」と図10のページ32のGIDmin34の値「4」とを比較する。この比較によって、最新の世代IDよりも所定の世代以上前のXIDを含むレコードがページ32内に含まれるか否かを判別することができる。本実施例では制御部21は2世代以上前の場合にFreeze処理を実行する。したがってページ32に格納されたXIDmin29列のデータに2世代以上前のXIDが含まれることとなる。
制御部21はXIDmin29の内、最新の世代よりも2世代以上前の値となるレコード28のXIDmin29の列を「Frozen Transaction Id」とする。
GIDmin34の値「4」に対応するXIDmin29の上位2bit36の値は図4の関係から「00」である。したがって、制御部21は図10のXIDmin29の上位2bit36の値が「00」である「00...1000」のレコード28のXIDmin29列を図11のレコード281のXIDmin列29のように「Frozen Transaction Id」とする。
また制御部21はページ32に含まれる上位2bitが最新の一つ前の世代となるXIDmin29を検出する。図10の場合、制御部21は最新の世代番号「6」の一つ前の世代番号「5」に対応するXIDmin29を検出する。図10では制御部21は図4の世代番号「5」に対応する「01...1011」の上位2bitの「01」を検出する。制御部21は図10のページヘッダ33のGIDmin34を図11のように一つ前の世代番号「5」で更新する。
また、制御部21は現在の最新の世代IDの値「6」と図10のページ32のGIDmax35の値「4」とを比較する。この比較によって、最新の世代IDよりも所定の世代以上前のXIDを含むレコードがページ32内に含まれるか否かを判別することができる。本実施例では制御部21は2世代以上前の場合にFreeze処理を実行する。したがって制御部21はページ32に格納されたXIDmax30列のデータに2世代以上前のXIDが含まれるため、Freeze処理を実行する。制御部21はXIDmax30の内、現在の世代よりも2世代以上前の値となるレコード28のXIDmax30の列を「Frozen Transaction Id」とする。なお、制御部21は、XIDmax30の内、最新の世代よりも2世代以上前の値となるレコード28を回収する処理を行うことも可能である。ただし、回収処理は時間を要し、データベース26からレコード28を読み出すときの処理の負担になるため、本実施例では回収処理を行っていない。
GIDmax35の値「4」に対応するXIDmax30の上位2bit36の値は図4の関係から「00」である。したがって、制御部21は図10のXIDmin29列の上位2bit36の値が「00」である「00...1110」のレコード28のXIDmax30列を図11のレコード281のXIDmax列30のように「Frozen Transaction Id」とする。
また、制御部21はページ32に含まれる上位2bitが一つ前の世代となるXIDmax30を検出する。図10の場合、制御部21は現在の世代番号「6」の一つ前の世代番号「5」に対応するXIDmax30を検出する。図10では制御部21は検出しない。そこで、制御部21は図10のページヘッダ33のGIDmax35を図11のように現在の世代番号「6」で更新する。
なお、制御部21はページ32を読み出すときにページヘッダ33に記録されたGIDが最新の世代よりも2世代以上前か否かを判定するため、周回が異なるXIDが混在することはない。
具体的には、ページ32に含まれる各レコードが持つXIDmin29の世代は、(GIDmin34)あるいは(GIDmin34+1)のいずれかであることが保証される。また、ページ32に含まれる各レコードが持つXIDmax30の世代は、(GIDmax35)あるいは(GIDmax35+1)のいずれかであることが保証される。
以上の処理により、データベース26から読み出してページ32のレコード28に対する実際の処理を行うときには、ページ32内の各レコードが持つXIDmin29およびXIDmax30は、従来のVACUUMコマンドによってFreeze処理が行われた場合と同等の状態となっている。したがって、XIDの周回が発生しても、制御部21はXID間の大小比較が可能となる。
以上、本実施例によって、ページ32をデータベースから読み出す度にページ32内の各レコード28の内の古いレコードについてはFreeze処理を実行することが可能となり、XIDのオーバーフローの回避を目的とする定期的なVACUUM処理が不要となる。その結果、データベース管理における運用性が向上する。また、データベースシステムに対するVACUUM処理の負荷が分散され、データベースを利用する業務アプリケーションのVACUUM処理時の性能低下が解消される。また、トランザクションIDのオーバーフローを回避するための定期的なVACUUM処理が不要となることによるデータベースシステムの運用性の向上が可能となる。
なお、本実施例ではXIDを4つに分割したそれぞれを世代としたが、レコードの有効無効の判別を行う世代の値は他の値でも良い。例えば、XIDの上位「n」個のbitによって世代を取得する方式としても良いし、上位「n(nは自然数)」個のbitに拠らずに世代を決定しても良い。
本実施例のハードウェア構成図である。 本実施例のデータベース26の構成例である。 ページ32の構成図である。 XIDとGIDとの関係を示す図である。 XID、GIDの識別番号の取得処理のフローチャートである。 制御部21がページを初期化する処理のフローチャートである。 制御部21がページを読み出すときの処理のフローチャートである。 XIDmin29の列のFreeze処理のフローチャートである。 XIDmax30の列のFreeze処理のフローチャートである。 データベース26から読み出されたページ32の構成である。 制御部21がFreeze処理を実行した後のページ32の構成である。
符号の説明
10 データベース管理装置
11 バス
21 制御部
22 メモリ
23 記憶部
24 入力部
25 出力部
26 データベース
27 テーブル
32 ページ
28 レコード
231 データベース管理プログラム

Claims (7)

  1. データベース内のレコードの読出しあるいは書込みをトランザクションに応じて行い、該データベースに格納されたレコードのデータの値が変化する処理毎に新たなレコードを作成するデータベース管理装置によるデータベース管理方法であって、
    該データベース管理装置が、
    該トランザクションによって読出しあるいは書込みをされたレコードに該トランザクションの識別番号を対応付け、
    該データベース内の処理の対象のレコードを含む該予め定めたデータ量の該データによって読出しあるいは書込み、
    該読出しあるいは書込み処理の該トランザクションの識別番号と該読出されたデータ内のレコードに対応する該トランザクションの識別番号との差が所定の値以上のレコードをレコードの順序の判定の対象外とする
    ことを特徴とするデータベースの管理方法。
  2. レコードの識別番号の取得できる領域を所定の範囲で区分して、該所定の範囲毎に世代情報を付し、該予め定めたデータ量の該データ内の最古のレコードの属する世代を該データの世代情報として取得し、該データの世代情報の値がトランザクションの識別番号に対応する世代情報の値よりも所定の値以上のときに、該データ内のレコードに付される識別番号毎のレコードをレコードの順序の判定の対象外とするか否かの判定処理を実行することを特徴とする請求項1に記載のデータベースの管理方法。
  3. 読出される対象のレコードに格納されたデータに対する処理の前に実行することを特徴とする請求項1に記載のデータベースの管理方法。
  4. 該レコードに対する処理が完結したときに付された識別番号が所定の値以上古いレコードの場合は、該レコードの記憶領域に新たなレコードを生成可能とすることを特徴とする請求項1に記載のデータベースの管理方法。
  5. レコードの識別番号の取得できる領域を区分する所定の範囲は4であることを特徴とする請求項2に記載のデータベースの管理方法。
  6. データベース内のレコードの読出しあるいは書込みをトランザクションに応じて行い、該データベースに格納されたレコードのデータの値が変化する処理毎に新たなレコードを作成するデータベース管理装置であって、
    該トランザクションによって読出しあるいは書込みをされたレコードに該トランザクションの識別番号を対応付け、
    該データベース内の処理の対象のレコードを含む該予め定めたデータ量の該データによって読出しあるいは書込み、
    該読出しあるいは書込み処理の該トランザクションの識別番号と該読出されたデータ内のレコードに対応する該トランザクションの識別番号との差が所定の値以上のレコードをレコードの順序の判定の対象外とする
    ことを特徴とするデータベースの管理装置。
  7. コンピュータをデータベース内のレコードの読出しあるいは書込みをトランザクションに応じて行い、該データベースに格納されたレコードのデータの値が変化する処理毎に新たなレコードを作成するデータベース管理装置として機能させるデータベース管理プログラムであって、該コンピュータに、
    該トランザクションによって読出しあるいは書込みをされたレコードに該トランザクションの識別番号を対応付けるステップ、
    該データベース内の処理の対象のレコードを含む該予め定めたデータ量のデータによって読出しあるいは書込むステップ、
    該読出しあるいは書込み処理の該トランザクションの識別番号と該読出された該データ内のレコードに対応する該トランザクションの識別番号との差が所定の値以上のレコードをレコードの順序の判定の対象外とするステップ
    を実行させることを特徴とするデータベースの管理プログラム。
JP2007060898A 2007-03-09 2007-03-09 更新装置、更新方法および更新プログラム Expired - Fee Related JP5211514B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007060898A JP5211514B2 (ja) 2007-03-09 2007-03-09 更新装置、更新方法および更新プログラム
US12/039,443 US7908245B2 (en) 2007-03-09 2008-02-28 Database management method and database management apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007060898A JP5211514B2 (ja) 2007-03-09 2007-03-09 更新装置、更新方法および更新プログラム

Publications (2)

Publication Number Publication Date
JP2008225693A true JP2008225693A (ja) 2008-09-25
JP5211514B2 JP5211514B2 (ja) 2013-06-12

Family

ID=39742712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007060898A Expired - Fee Related JP5211514B2 (ja) 2007-03-09 2007-03-09 更新装置、更新方法および更新プログラム

Country Status (2)

Country Link
US (1) US7908245B2 (ja)
JP (1) JP5211514B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015133271A1 (ja) * 2014-03-03 2015-09-11 株式会社野村総合研究所 データ管理システム、サービス提供システム及びその機能拡張方法
JP2015165357A (ja) * 2014-03-03 2015-09-17 株式会社野村総合研究所 データ管理システム
JP2016504700A (ja) * 2013-03-14 2016-02-12 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム
JP2016031682A (ja) * 2014-07-30 2016-03-07 株式会社野村総合研究所 サービス提供システム及びその機能拡張方法
CN113486089A (zh) * 2015-08-28 2021-10-08 斯沃尔德斯股份有限公司 用于网络内的分布式数据库的方法和装置
JP2022501747A (ja) * 2018-11-30 2022-01-06 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 データバックアップ方法、装置、サーバ及びコンピュータプログラム

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8121117B1 (en) 2007-10-01 2012-02-21 F5 Networks, Inc. Application layer network traffic prioritization
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8806056B1 (en) 2009-11-20 2014-08-12 F5 Networks, Inc. Method for optimizing remote file saves in a failsafe way
US9420049B1 (en) 2010-06-30 2016-08-16 F5 Networks, Inc. Client side human user indicator
US9503375B1 (en) 2010-06-30 2016-11-22 F5 Networks, Inc. Methods for managing traffic in a multi-service environment and devices thereof
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8879431B2 (en) 2011-05-16 2014-11-04 F5 Networks, Inc. Method for load balancing of requests' processing of diameter servers
US8463850B1 (en) * 2011-10-26 2013-06-11 F5 Networks, Inc. System and method of algorithmically generating a server side transaction identifier
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9244843B1 (en) 2012-02-20 2016-01-26 F5 Networks, Inc. Methods for improving flow cache bandwidth utilization and devices thereof
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
WO2013163648A2 (en) 2012-04-27 2013-10-31 F5 Networks, Inc. Methods for optimizing service of content requests and devices thereof
US10033837B1 (en) 2012-09-29 2018-07-24 F5 Networks, Inc. System and method for utilizing a data reducing module for dictionary compression of encoded data
US9578090B1 (en) 2012-11-07 2017-02-21 F5 Networks, Inc. Methods for provisioning application delivery service and devices thereof
US9141669B2 (en) * 2013-01-22 2015-09-22 Go Daddy Operating Company, LLC Configuring an origin server content delivery using a pulled data list
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9497614B1 (en) 2013-02-28 2016-11-15 F5 Networks, Inc. National traffic steering device for a better control of a specific wireless/LTE network
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
CN105573678B (zh) * 2015-12-17 2018-11-09 深圳市华讯方舟软件技术有限公司 一种PostgreSQL块
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10412198B1 (en) 2016-10-27 2019-09-10 F5 Networks, Inc. Methods for improved transmission control protocol (TCP) performance visibility and devices thereof
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
CN108287835B (zh) 2017-01-09 2022-06-21 腾讯科技(深圳)有限公司 一种数据清理方法及装置
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11223689B1 (en) 2018-01-05 2022-01-11 F5 Networks, Inc. Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof
CN110309233B (zh) * 2018-03-28 2022-11-15 腾讯科技(深圳)有限公司 数据存储的方法、装置、服务器和存储介质
US12003422B1 (en) 2018-09-28 2024-06-04 F5, Inc. Methods for switching network packets based on packet data and devices
US11055184B2 (en) * 2018-12-19 2021-07-06 Vmware, Inc. In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations
US10877881B2 (en) 2019-01-11 2020-12-29 Vmware, Inc. In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations
CN116257531B (zh) * 2023-05-16 2023-08-04 广州图灵科技有限公司 一种数据库空间回收方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212831A (ja) 1998-01-27 1999-08-06 Ntt Data Corp オブジェクト間協調動作のログ管理およびイベント追跡のための方式および方法
US7284018B1 (en) * 2003-10-15 2007-10-16 Sun Microsystems, Inc. Logless transaction coordination
US7979463B2 (en) * 2005-09-02 2011-07-12 Synchsource, Inc. Database system and method for access control and workflow routing
US7689565B1 (en) * 2006-06-28 2010-03-30 Emc Corporation Methods and apparatus for synchronizing network management data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200800069001; 鈴木 啓修: '"Part2 PostgreSQLの内部構造"' PostgreSQL完全機能リファレンス 第1版 第1版, 20061110, P. 32-42, 株式会社秀和システム *
JPN6012013202; 鈴木 啓修: '"Part2 PostgreSQLの内部構造"' PostgreSQL完全機能リファレンス 第1版 第1版, 20061110, P. 32-42, 株式会社秀和システム *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016504700A (ja) * 2013-03-14 2016-02-12 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム
WO2015133271A1 (ja) * 2014-03-03 2015-09-11 株式会社野村総合研究所 データ管理システム、サービス提供システム及びその機能拡張方法
JP2015165357A (ja) * 2014-03-03 2015-09-17 株式会社野村総合研究所 データ管理システム
JP2016031682A (ja) * 2014-07-30 2016-03-07 株式会社野村総合研究所 サービス提供システム及びその機能拡張方法
CN113486089A (zh) * 2015-08-28 2021-10-08 斯沃尔德斯股份有限公司 用于网络内的分布式数据库的方法和装置
JP2022501747A (ja) * 2018-11-30 2022-01-06 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 データバックアップ方法、装置、サーバ及びコンピュータプログラム
JP7395227B2 (ja) 2018-11-30 2023-12-11 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 データバックアップ方法、装置、サーバ及びコンピュータプログラム
US12001297B2 (en) 2018-11-30 2024-06-04 Tencent Technology (Shenzhen) Company Limited Data backup method and apparatus, server, and computer-readable storage medium

Also Published As

Publication number Publication date
US20080222209A1 (en) 2008-09-11
JP5211514B2 (ja) 2013-06-12
US7908245B2 (en) 2011-03-15

Similar Documents

Publication Publication Date Title
JP5211514B2 (ja) 更新装置、更新方法および更新プログラム
US20220309049A1 (en) Key-Value Store System
RU2672719C2 (ru) Журналируемое хранение без блокировок для нескольких способов доступа
CN109086388B (zh) 区块链数据存储方法、装置、设备及介质
US9058351B2 (en) Apparatus and method for read optimized bulk data storage
KR100862661B1 (ko) 지연된 로깅 방법 및 그 장치
WO2015144003A1 (en) Systems and methods to optimize multi-version support in indexes
US20140344311A1 (en) Systems and methods for asynchronous schema changes
US20120259863A1 (en) Low Level Object Version Tracking Using Non-Volatile Memory Write Generations
CN111090663B (zh) 事务并发控制方法、装置、终端设备及介质
US20010051954A1 (en) Data updating apparatus that performs quick restoration processing
JP2010117869A (ja) メモリ制御装置、プログラム及び方法
CN109690522B (zh) 一种基于b+树索引的数据更新方法、装置及存储装置
US20160203203A1 (en) Metadata peering with improved inodes
US20150169668A1 (en) Single Pass File System Repair With Copy On Write
US8572048B2 (en) Supporting internal consistency checking with consistency coded journal file entries
CN110832473B (zh) 日志结构管理系统及方法
CN113253932A (zh) 一种分布式存储系统的读写控制方法和系统
US20110099347A1 (en) Managing allocation and deallocation of storage for data objects
US20180150498A1 (en) Database management device, information processing system, and database management method
CN115421648A (zh) 内存垃圾回收方法、装置、设备、存储介质和程序产品
US11656991B2 (en) Device and method for maintaining summary consistency in caches
US20100131477A1 (en) Versioning file system
CN113886478A (zh) 应用于etl的数据处理方法和装置及电子设备
CN117009361A (zh) 一种两阶段无锁并行日志回放方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130211

R150 Certificate of patent or registration of utility model

Ref document number: 5211514

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees