JPWO2015111152A1 - データベース管理システム及び方法 - Google Patents

データベース管理システム及び方法 Download PDF

Info

Publication number
JPWO2015111152A1
JPWO2015111152A1 JP2015558634A JP2015558634A JPWO2015111152A1 JP WO2015111152 A1 JPWO2015111152 A1 JP WO2015111152A1 JP 2015558634 A JP2015558634 A JP 2015558634A JP 2015558634 A JP2015558634 A JP 2015558634A JP WO2015111152 A1 JPWO2015111152 A1 JP WO2015111152A1
Authority
JP
Japan
Prior art keywords
log
database
transaction
order
checkpoint
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
JP2015558634A
Other languages
English (en)
Other versions
JP6152431B2 (ja
Inventor
敦 友田
敦 友田
有哉 礒田
有哉 礒田
一智 牛嶋
一智 牛嶋
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2015111152A1 publication Critical patent/JPWO2015111152A1/ja
Application granted granted Critical
Publication of JP6152431B2 publication Critical patent/JP6152431B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • 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/2358Change logging, detection, and notification
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

データベース管理システムは、複数のトランザクションの実行において、トランザクション毎に、トランザクションのログを生成し、生成したログをログ格納領域に格納する。データベース管理システムは、少なくとも、トランザクション実行順序によって結果が異なるトランザクションの集合に属するトランザクションについて生成されたログには、ログの順番を記録する。

Description

本発明は、概して、データベース管理に関し、例えば、トランザクション処理のログの出力に関する。
データベース管理システム(以下、DBMS)として、データベース(特に、テーブル及びインデックスといった主要なデータ)を不揮発性のストレージ装置(典型的にはHDD(Hard Disk Drive)のようなディスクストレージ装置)に配置するオンディスクデータベースと、データベースをメインメモリ(一般的に揮発性メモリ)に配置するインメモリデータベースが知られている(オンディスクデータベースとインメモリデータベースを組み合わせたハイブリット型のDBMSも知られている)。
インメモリデータベースも、メインメモリ上のデータベースの状態をリカバリーするためには、不揮発性のストレージ装置に更新履歴を含んだログを出力しておく必要がある。
ログは、一般に、トランザクション実行時に単一のログファイルに出力される。複数のコア(又は複数のCPU(Central Processing Unit))で並行してトランザクションが処理されるようになっていても、ログの出力先は、単一のログファイルである。このため、ログ出力がボトルネックとなる。
ところで、必ずしも全てのトランザクションの間に順序を定める必要はない。例えば、2つのトランザクションが参照及び更新するデータの集合が共通部分を持たない場合には、その2つのトランザクションの実行順序を入れ替えても、データベースへの操作結果は変わらない。このため、2つのトランザクションには順序を定める必要はない。特許文献1では、分散されたデータベース毎にログファイルが用意され、データベースの更新履歴を含んだログが、複数のログファイルのうちのそのデータベースに対応したログファイルに出力される。
US5878414
インメモリデータベースは、データベースを複数のパーティションに分割し、各パーティションを管理することができる。特許文献1に開示の技術をインメモリデータベースに適用した場合、インメモリデータベースが管理するパーティション毎にログファイルを用意し、パーションの更新履歴を含んだログをそのパーティションに対応するログファイルに出力することができる。
しかし、特許文献1の技術を単純にインメモリデータベースに適用すると、トランザクション数の数倍のI/O要求がストレージ装置に対して発生してことになる。なぜなら、パーティションは予め定義されており、トランザクションの処理において複数のパーティションのデータを参照及び更新することがあることを避けることができず、その場合、処理されたトランザクションが1つであっても、複数のパーティションにそれぞれ対応した複数のログファイルの各々にログを出力しなければならないからである。
このような課題は、インメモリデータベースに限らず、分割されたデータベースを管理する他のDBMS、或いは、単一のデータベースを管理する他のDBMSについてもあり得る。
DBMSは、複数のトランザクションの実行において、トランザクション毎に、トランザクションのログを生成し、生成したログをログ格納領域に格納する。DBMSは、少なくとも、トランザクション実行順序によって結果が異なるトランザクションの集合に属するトランザクションについて生成されたログには、ログの順番を記録する。
トランザクション実行順序によって結果が異なるトランザクションの集合に属するトランザクションについて生成されたログにログの順番が記録されるので、トランザクション実行順序によって結果が異なるトランザクションの集合について、トランザクションの実行順序を特定することができる。このため、データベースが分割された複数のデータベース部分のうちの2以上のデータベース部分を更新した1つのトランザクションについて生成されるログが、更新されたデータベース部分の数より少ない数のログであっても、格納されたログを基に、トランザクションの実行順序(例えば半順序)を特定することができる。
実施例に係る計算機システムの構成を示す。 トランザクション集合の一例を示す。 実施例に係る計算機システムの機能ブロック図である。 LLSN管理部の構成を示す。 ログのデータ構造を示す。 チェックポイントログのデータ構造を示す。 トランザクション集合の一例を示す。 トランザクション集合の実行前と実行後のテーブルを示す。 実施例に係るログ出力の一例を示す。 比較例1に係るログ出力の一例を示す。 比較例2に係るログ出力の一例を示す。 トランザクション処理のフローチャートである。 ログ出力処理のフローチャートである。 チェックポイント生成処理のフローチャートである。 データベースのリカバリー処理(親)のフローチャートである。 データベースのリカバリー処理(子)のフローチャートである。
以下、図面を参照して、一実施例を説明する。
なお、以下の説明では、同種の要素の参照符号には同一の親番号を含んでいる。同種の要素を区別して説明する場合には、要素の参照符号を使用し(例えばパーティション111A、111B、…)、同種の要素を区別しないで説明する場合には、要素の参照符号のうちの親番号のみ使用することがある(例えばパーティション111)。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイスデバイス等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する装置(例えばデータベースサーバ)が行う処理としてもよい。また、プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は記憶メディアであってもよい。
図1は、実施例に係る計算機システムの構成を示す。
データベースサーバ401に外部ストレージ装置402が、例えば通信ネットワーク403を介して接続されている。
データベースサーバ401は、計算機であって、例えば、パーソナルコンピュータ、ワークステーション又はメインフレームであってよく、もしくは、これらの計算機において仮想化プログラムによって構成された仮想的な計算機であってよい。データベースサーバ401は、I/Oアダプタ413、メインメモリ416、記憶デバイス415及びそれらに接続されたプロセッサ414を有する。プロセッサ414は、例えば、マイクロプロセッサ、又は、マイクロプロセッサと専用ハードウェア回路を含んだモジュールでよい。プロセッサ414は、コンピュータプログラムを実行する。プロセッサ414により実行されるコンピュータプログラムは、例えば、オペレーティングシステム(OS)117及びデータベース管理システム(DBMS)412である。メインメモリ416は、例えば、揮発性のDRAM(Dynamic Random Access Memory)等であり、プロセッサ414によって実行されるプログラムと、プログラムが使用するデータを一時的に記憶する。記憶デバイス415は、不揮発性であり、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。記憶デバイス415は、プログラム及びプログラムが使用するデータを格納してよい。I/Oアダプタ413は、通信ネットワーク403とデータベースサーバ401を接続する。
外部ストレージ装置402は、複数の記憶デバイスを含む記憶デバイス群451を有する装置であり、例えば、ディスクアレイ装置であるが、それに代えて、単一の記憶デバイスであってもよい。外部ストレージ装置402は、ログファイル301を記憶する。外部ストレージ装置402は、データベースサーバ401からログのI/O要求を受け付け、当該I/O要求に従いデータ(例えばログ)の読み書きを行い、その結果をデータベースサーバ401に返す。なお、記憶デバイス群451が有する記憶デバイスは、不揮発性の記憶媒体を有するデバイスであって、例えば、HDD又はSSDである。記憶デバイス群451は、RAID(Redundant Array of Independent Disks)グループでよく、所定のRAIDレベルでデータを記憶してもよい。記憶デバイス群451の記憶空間に基づく論理的な記憶デバイス(例えば、論理ユニット、論理ボリューム、ファイルシステムボリューム)が、データベースサーバ401に提供され、当該論理的な記憶デバイス上にログファイル301が格納されてもよい。なお、本実施例において、ログファイル301は、ログ格納領域の一例である。
外部ストレージ装置402は、記憶デバイス群451に加えて、I/Oアダプタ441及びこれらに接続されたストレージコントローラ442を有する。I/Oアダプタ441は、外部ストレージ装置402を通信ネットワーク403に接続し、これを介して、データベースサーバ401と接続される。通信ネットワーク403を介した通信プロトコルとしては、例えば、ファイバチャネル(FC)、SCSI(Small Computer System Interface)、又は、TCP/IP(Transmission Control Protocol/Internet Protocol)が採用されてよい。例えば、ファイバチャネルもしくはSCSIが採用される場合、I/Oアダプタ441(及び413)は、ホストバスアダプタと呼ばれることがある。ストレージコントローラ442は、例えば、メモリ及びプロセッサを含み、データベースサーバ401からのI/O要求に応じて、ログファイル301を格納した記憶デバイス群451との間でデータの読出し、もしくは、書込みを行う。
図2は、トランザクション集合の一例を示す。
この図は、2つのチェックポイント1及び2の間で実行されるトランザクションの例を示す。本実施例において実行される各トランザクションは、第1種トランザクション集合と第2種トランザクション集合のいずれかに分類される。
第1種トランザクション集合は、トランザクション実行順序によって結果が変化するトランザクションの集合である。図示の例では、半順序が定義されている。半順序によれば、例えば、同一のレコードを更新する複数のトランザクションは定義された順序で実行されなければならないが、異なるレコードを更新する複数のトランザクションはどのような順序で実行されてもよい。
第2種トランザクション集合は、トランザクションの実行順序が結果に影響を与えないトランザクション集合である。
実行対象のトランザクションが第1種及び第2種トランザクション集合のどちらに属するかは、例えば、1又は複数のクエリ実行プランから判断することができる。
図3は、実施例に係る計算機システムの機能ブロック図である。
DBMS412は、インメモリデータベースである。DBMS412は、データベースを複数のパーティション111(例えば3つのパーティション111A〜111C)に分割してメインメモリ416上に配置する。各パーティション111は、データベースの一部分、例えば、データベース中のテーブルの一部分であるテーブル112と、データベース中のインデックスの一部分であるインデックス113とを含む。1つのパーティション111(例えば111A)において、そのパーティション111内のインデックス113(例えば113A)を用いて、そのパーティション111内のテーブル112(例えば112A)からデータを特定することができる。1つのテーブル112が有するデータは、そのテーブル112を含むパーティション111内のインデックス113のみから特定可能でよい。また、各パーティション111は、ロック機構116を含んでよい。同一のパーティション111に対して2以上のスレッド110が競合することを避けるためである。ロック機構116は、パーティション111のロックの取得済か否かを表す情報でよい。例えば、ロック機構116は、ロック取得済なら値「1」でよくロック未取得なら値「0」でよい。ロック機構116は、パーティション111に関連付けられていればよく、パーティション111の外にあってもよい。
DBMS412は、パーティション111毎に、ログバッファ114とLLSN管理部115を有する。ログバッファ114は、パーティション111の更新履歴を含んだログを一時格納する。LLSN管理部115は、LLSNを管理する。「LLSN」は、ローカルログシーケンス番号の略である。LLSNは、1つのパーティション111において重複しない番号である。LLSNは、第1種トランザクション集合(トランザクション実行順序によって結果が変化するトランザクション集合)に属するトランザクションのログの出力の際に採番される。LLSNは、第1種トランザクション集合に限らず第2種トランザクション集合に属するトランザクションのログの出力の際にも採番されてもよい。
DBMS412は、クエリ発行元からクエリを受信し、受信したクエリの実行において、1又は複数のトランザクションを実行する。具体的には、DBMS412は、クエリ受付部421、クエリ実行プラン生成部422及びクエリ実行部424を有する。
クエリ受付部421は、クエリ発行元が発行するクエリを受け付ける。クエリは、例えば、構造化問合せ言語(SQL、Structured Query Language)によって記述される。1つのクエリで複数のトランザクションが記述されていてもよいし、複数のクエリで複数のトランザクションが記述されてもよい。また、クエリ発行元は、DBMS412の内部のコンピュータプログラムであってよいし、DBMS412外部のコンピュータプログラムであってよい。例えば、外部のコンピュータプログラムは、データベースサーバ401内で実行されるコンピュータプログラム(例えばアプリケーションプログラム)であってもよいし、データベースサーバ401に接続されたクライアント計算機等の装置で実行されるコンピュータプログラム(例えば、アプリケーションプログラム)であってもよい。
クエリ実行プラン生成部422は、クエリ受付部421が受け付けたクエリから、当該クエリを実行するために必要な1以上のデータベースオペレーションを含むクエリ実行プランを生成する。クエリ実行プランは、例えば、1以上のデータベースオペレーションと、データベースオペレーションの実行順序の関係を含む情報であり、クエリ実行プラン情報423として格納される。クエリ実行プランは、データベースオペレーションをノード、データベースオペレーションの実行順序の関係をエッジとする木構造で表されることがある。1つのクエリ実行プラン、又は、複数のクエリ実行プランの組合せから、1又は複数のトランザクション集合と、各トランザクション集合が第1種及び第2種のトランザクション集合のどちらであるかを特定することができる。
クエリ実行部424は、クエリ実行プラン生成部422が生成したクエリ実行プランに従って、クエリ受付部421が受け付けたクエリを実行し、その実行結果をクエリ発行元に返す。この際、クエリ実行部424は、データベースオペレーションの実行に必要なデータの読出し要求(参照要求)を発行し、その読出し要求に従いパーティション111から読み出されたデータを使用して、そのデータベースオペレーション(例えば、読み出されたデータ(値)を用いて新たなデータを算出し、読出し元レコードにおけるデータを算出後のデータに更新する書込み要求を発行する)を行う。クエリ実行部424は、データベースオペレーションを、スレッド110を実行することにより行う。なお、DBMS412において、複数のスレッド110が並行して実行される。このため、プロセッサ414は、複数のコアを有する。複数のコアは、1又は複数のCPUに存在する。スレッド110は、タスクと呼ばれてもよい。スレッド110の実装としては、例えば、OS117が実現するプロセスやカーネルスレッド等のほか、ライブラリ等が実現するユーザスレッドを用いてよい。1つのスレッド110により、1以上のデータベースオペレーションに対応した1つのトランザクションが実行されてよい。以下、クエリ実行部424がスレッド110を実行することにより行われる処理の主語を、スレッド110、とすることがある。
クエリ実行部424(スレッド110)は、トランザクションの実行において、外部ストレージ装置402内のログファイル301にログを書き込むために、外部ストレージ装置402に対するI/O要求をOS117に発行する。OS117は、そのI/O要求を受け付け、外部ストレージ装置402へI/O要求を発行する。
I/Oアダプタ413には、複数のI/Oキュー201(201A〜201C)が用意される。トランザクションの処理において、スレッド110が、ログの書込みのためのI/O要求を発行するが、I/Oキュー201には、そのI/O要求が格納される。具体的には、I/O要求は、OS117によりI/Oキュー201に格納される。
外部ストレージ装置402が、複数のログファイル301(301A〜301C)を記憶する。ログファイル301に、I/O要求の書込み対象のログが記録される。
本実施例では、パーティション111と、I/Oキュー201と、ログファイル301が、1:1:1で対応している。つまり、パーティション111毎に、1つのI/Oキュー201と、1つのログファイル301がある。具体的には、パーティション111AにI/Oキュー201A及びログファイル301Aが関連付けられており、パーティション111BにI/Oキュー201B及びログファイル301Bが関連付けられており、パーティション111CにI/Oキュー201C及びログファイル301Cが関連付けられている。スレッド110は、1つのログファイル301につき1つであっても複数であってもよい。ただし、I/O要求の完了を通知するための割り込みをI/Oキュー201毎に特定のスレッド110に送信するようにする方がI/O要求の処理が軽減できる場合があり、その場合には例えばスレッド110とパーティション111とI/Oキュー201を1対1対応させておくとよい場合がある。本実施例では、説明を分かり易くするために、スレッド110もログファイル301に1:1で対応していてよい。例えば、スレッド110Aが、パーティション111Aにおけるテーブル112A中のレコードを更新したことを表すログのI/O要求を、そのパーティション111Aに対応するログファイル301Aに対して発行するようになっている。発行されたI/O要求は、ログバッファ114Aを経由して、OS117に送られる。OS117が、ログファイル301Aに対するI/O要求を受けて、そのI/O要求を、ログファイル301Aに対応するI/Oキュー201Aに格納する。I/Oキュー201Aに格納されたI/O要求は、OS117によりI/Oキュー201から外部ストレージ装置402に送られる。それにより、そのI/O要求の書込み対象データであるログが、ログファイル301Aに書き込まれる。
図3に示すDBMS412の構成は一例に過ぎない。例えば、或る構成要素は複数の構成要素に分割されていてもよく、複数の構成要素が1つの構成要素に統合されていてもよい。
図4は、LLSN管理部115の構成を示す。
LLSN管理部115は、ロック機構121と、LLSN122と、ログファイルアドレス123とを有する。
ロック機構121も、図3に示したロック機構116と同様、LLSN管理部115のロックの取得済か否かを表すデータでよい。例えば、ロック機構121は、ロック取得済なら値「1」でよくロック未取得なら値「0」でよい。
LLSN122は、このLLSN管理部115を含むパーティション111についてのログのシーケンス番号(LLSN)である。例えば、LLSNは、このLLSN管理部115のIDと、シリアル番号との組合せである。例えば、LLSN管理部115Aからスレッド110AによりLLSNが採番される度に、LLSN122が表す値は、1−001、1−002、1−003のように更新される。LLSNは、LLSN管理部115AのID「1」と、更新後のシリアル番号との組合せである。
ログファイルアドレス123は、LLSN管理部115を含むパーティション111に対応したログファイル301におけるログの書込み先アドレスである。ログファイルアドレス123が表すアドレス(値)は、ログファイル301にログを書き出す度に出力するログのサイズ分だけ加算される。
図5は、ログのデータ構造を示す。
ログは、1つのトラザクションにつき1つでよく、トランザクションのIDと、そのトランザクションの実行中に採番された1以上のLLSNと、そのトランザクションの更新履歴を表す情報とを含む。ログに含まれるLLSNの数は、トランザクションの実行において更新されたパーティション111の数と同じである。
図6は、チェックポイントログのデータ構造を示す。
チェックポイントログは、チェックポイントが生成されたことのログである。チェックポイントログは、チェックポイントを生成するトランザクションのIDと、そのチェックポイントの生成において採番された全てのLLSNと、生成されたチェックポイントのIDとを含む。データベースのリカバリーの際には、チェックポイントIDを使用して、リカバリーする時点を特定することができる。なお、チェックポイントIDは、チェックポイント生成時の時刻を表す値でもよい。
図7は、トランザクション集合の一例を示す。図8は、トランザクション集合の実行前と実行後のテーブル112A及び112Bを示す。なお、図7(及び後述の図9〜図11)では、トランザクションは「Tr.」と略記されている。また、以下の説明では、レコードは、行IDとVal(値)を有していて、行ID:XのレコードをレコードXと言い、行ID:YのレコードをレコードYと言う。
図7に示すトランザクション集合は、第1種のトランザクション集合、すなわち、トランザクション実行順序によって結果が変化するトランザクションの集合である。トランザクション集合により、レコードX及びYが更新される。
図8に示すように、レコードXは、パーティション111A中のテーブル112Aにあるレコードであり、レコードYは、別のパーティション111B中のテーブル112Bにあるレコードである。図7に示したトランザクション集合の実行前、レコードXにおけるVal(値)は「100」であり、レコードYにおけるVal(値)も「100」である。図7に示したトランザクション集合の実行により、レコードXにおけるVal(値)は「110」に更新され、レコードYにおけるVal(値)は「122」に更新される。
図7に示すトランザクション集合によれば、トランザクションA、B及びEは、実行順序によって結果が変化する。それらは同一のレコードXを更新するトランザクションだからである。同様に、トランザクションA、C及びDも、実行順序によって結果が変化する。それらは同一のレコードYを更新するトランザクションだからである。
しかし、トランザクションBと、トランザクションC又はDのどちらを先に実行しても結果が変化しない。それらは異なるレコードX、Yを更新するトランザクションだから、言い換えれば、更新されるレコードが共通でないからである。
そこで、ログに基づいてデータベースをリカバリーする際に最低限の必要なトランザクション実行順序を記録する必要がある。この実行したトランザクション集合に半順序を定義する実装方法は1つではなく、例えば必要最小限の順序関係を記録する方法として次の方法が考えられる。例えば図2に示したように、任意のチェックポイント1とチェックポイント1より後に生成されたチェックポイント2の間に実行されたトランザクションであって、第1種のトランザクション集合に属するトランザクション(トランザクションの実行順序によって結果が異なるトランザクション)のログには、コミットされた順序に従う順番(ログの生成順番)が記録される。一方、第2種のトランザクション集合に属するトランザクション(トランザクション間の実行順序によって結果が異ならず、チェックポイント1からチェックポイント2の間に実行されていればよいトランザクション)のログには、順番が記録されない。これにより、第1種のトランザクション集合のログについて、半順序を定義することができる。
本実施例では、1つのトランザクションの実行において、更新されるパーティション111別にLLSNが採番される。1つのパーティション111について採番されるLLSNは、そのパーティション111についてのシーケンス番号であり、他のパーティション111についてのLLSNとの関連性は無い。つまり、本実施例では、パーティション111別に一連のLLSN(シーケンス番号)が採番され、採番されたLLSNがログに記録されることで、第1種のトランザクション集合について半順序が定義される。
具体的には、次のようにログが出力される。すなわち、前述したように、パーティション111とログファイル301が1:1で用意されており、パーティション111の更新履歴を含んだログは、そのパーティション111に対応したログファイル301に書き込まれる。また、1つのトランザクションの実行においてN個のパーティション111(Nは2以上の整数)が更新されることもあるが、その場合には、N個のパーティション111にそれぞれ対応したN個のログファイルにN個のログがそれぞれ書き込まれるのではなく、更新されたパーティション111の数(N)よりも少ない数のログファイル(M個のログファイル)301にそれぞれM個のログが書き込まれる。本実施例では、M=1である。すなわち、本実施例では、Nの値(1つのトランザクションの実行において更新されたパーティション111の数)が幾つであっても、更新されたパーティション111のうちのいずれかの1つのパーティション111に対応した1つのログファイル301にログが書き込まれる。但し、そのログには、更新されたN個のパーティションにそれぞれ対応したN個のLLSNが書き込まれる。
図9は、実施例に係るログ出力の一例を示す。
図7に示したトランザクション集合の実行前、パーティション111AのLLSNは1−201、パーティション111BのLLSNの値は2−100であるとする。もちろん、これは一例にすぎず、これ以外の値であることを排除するものではない。
まず、トランザクションAの実行により、パーティション111AのレコードXとパーティション111BのレコードYの両方が更新される。このため、LLSN管理部115AからLLSN=1−201が採番され、LLSN管理部115BからLLSN=2−100が採番される。この段階で、LLSN管理部115A及び115BのそれぞれのLLSNが1インクリメントされ、その結果、LLSN管理部115AのLLSNが1−202となり、LLSN管理部115BのLLSNが2−101となってよい。また、パーティション111A及び111Bが更新された場合、ログの出力先は、パーティション111A及び111Bにそれぞれ対応したログファイル301A及び301Bのうちのどちらかとなる(例えばラウンドロビンで順次出力先が切り替えられてもよいしどちらかに予め決められてもよい)。ここでは、ログファイルAにログが出力される。このため、LLSN管理部115Aからログファイルアドレスが取得され、LLSN管理部115Aにおけるログファイルアドレスに、出力するログのサイズ分の値が加算される。トランザクションAを実行したスレッド110Aが、採番されたLLSN=1−201及びLLSN=2−100、トランザクションID=A、及びレコードX及びYの更新履歴をログに記録し、それらが記録されたログ901Aを、ログファイル301Aにおける、取得したログファイルアドレスに従う位置から、書き込む。具体的には、スレッド110Aが、ログ901Aをログバッファ114Aに格納し、そのログ901Aを書込み対象とし上記取得したログファイルアドレスを指定した書込み要求を発行する。OS117が、その書込み要求を受けて、その書込み要求を、ログファイル301Aに対応したI/Oキュー201Aに書き込み、I/Oキュー201Aからその書込み要求を外部ストレージ装置402に送信する。外部ストレージ装置402が、その書込み要求を受けて、その書込み要求に従う書込み対象のログ901Aをログファイル301Aに書き込み、書込み要求の完了応答を返す。完了応答は、OS117を通じてDBMS412に戻る。
次に、トランザクションBの実行により、パーティション111AのレコードXだけが更新される。このため、トランザクションBを実行したスレッド110Aが、LLSN管理部115AからLLSN=1−202を採番し(LLSN管理部115AのLLSNは1−203にインクリメントされ)、且つログファイルアドレスを取得し(LLSN管理部115Aのログファイルアドレスに出力対象のログのサイズが加算され)、LLSN=1−202、トランザクションID=B、及びレコードXの更新履歴を含んだログ901Bを、トランザクションBの実行により更新されたパーティション111Aに対応するログファイル301A(取得したログファイルアドレス)に出力する。
また、トランザクションCの実行により、パーティション111BのレコードYだけが更新される。このため、トランザクションCを実行したスレッド110Bが、LLSN管理部115BからLLSN=2−101を採番し(LLSN管理部115BのLLSNは2−102にインクリメントされ)、且つログファイルアドレスを取得し(LLSN管理部115Bのログファイルアドレスに出力対象のログのサイズが加算され)、LLSN=2−101、トランザクションID=C、及びレコードYの更新履歴を含んだログ901Cを、トランザクションCの実行により更新されたパーティション111Bに対応するログファイル301B(取得したログファイルアドレス)に出力する。
同様に、トランザクションDが実行された場合には、LLSN管理部115BからLLSN=2−102が採番され、LLSN=2−102を含んだログ901Dがログファイル301Bに書き込まれる。
最後に、トランザクションEが実行された場合には、LLSN管理部115A及び115BからそれぞれLLSN=1−103及び2−103が採番され、それら採番されたLLSNを含んだログ901Eが、ログファイル301Bに書き込まれる。
このようにログを出力することにより、それぞれのログにおけるLLSNを参照することで、トランザクションA−>B−>E、トランザクションA−>C−>D−>Eの順序がリカバリー可能である。なお、本実施例では、同一のパーティションについて、第1のLLSNが第2のLLSNより大きいことは、第1のLLSNが第2のLLSNよりも後に(将来に)採番されたことを意味するが、一変形例では、第1のLLSNが第2のLLSNより大きいことは、第1のLLSNが第2のLLSNよりも前に(過去に)採番されたことを意味してもよい。つまり、LLSNの大小関係から順序関係が特定できればよい。
一般に、いずれか1つのLLSN管理部115のLLSNの大小関係でトランザクション間の順序関係(これを便宜上「≧」と表す)を定義すると、トランザクション全体の集合にいくつかの例外を除いて半順序が定まる。例えば、LLSN管理部115AのLLSNではトランザクションA->Bの順に並び(A≧B)、LLSN管理部115BのLLSNではトランザクションB->Aの順に並ぶ(B≧A)ということが起こる。この場合には、トランザクションAとBの間には順序が定義されていないこととして取り扱われる。実際に、トランザクションAとBはそれぞれ更新を行ったレコードのロックをトランザクション終了まで解放しないため、このような事象が発生するのは、トランザクションA及びBがそれぞれ更新するレコードが異なるレコードであるからであり、トランザクションAとBの実行順序はどちらでもかまわない。
以下、図7に示したトランザクション集合のログ出力の比較例1及び2を説明する。
図10は、比較例1に係るログ出力の一例を示す。
比較例1は、5個のトランザクションA〜Eにそれぞれ対応した5個のログを単一ログファイルへ出力する例である。比較例1では、トランザクションの実行順にログがログファイルへ出力される。この場合、2以上のトランザクションが並行して実行されてもログ出力が逐次実行になってしまい、トランザクション間でI/Oリソース(例えば単一ログファイルに対応した単一I/Oキュー)の競合が発生してしまう。
本実施例では、複数のログファイルが用意され、且つ、複数のログファイルにそれぞれ対応した複数のI/Oリソース(例えばI/Oキュー)が用意される。これにより、I/Oリソースの競合を減らすことができる。
図11は、比較例2に係るログ出力の一例を示す。
比較例2は、分散データベースにおいて行われているログ出力例である。トランザクションB、C及びDのように、パーティション111A及び111Bの一方のみを更新するトランザクションについては、ログの出力は、実施例と同様である。しかし、トランザクションA(及びE)のように、パーティション111A及び111Bの両方を更新するトランザクションについては、更新されたパーティションと同数のログが同数のログファイルにそれぞれ出力される。このため、ログI/O数が実施例よりも多くなる。
すなわち、本実施例では、トランザクションが複数のパーティションを更新しても書き込まれるログの数は、更新されたパーティションの数よりも少ない。そのため、ログI/O数を抑えることができる。
本実施例では、上述した通り、トランザクションによって順序が定義されない場合がある。例えば、トランザクションBとトランザクションCはどちらが先にトランザクション実行が完了したかログ上は不定である。従って、一般には、最新状態以外の任意のタイミングの状態にデータベースをリカバリーすることはできない。そこで、本実施例では、前述したように、チェックポイントを生成することにより、ある時点のデータベースの状態を記録しリカバリーすることが可能である。
以下、実施例において行われる処理を説明する。
図12は、トランザクション処理のフローチャートである。なお、以下の説明では、1つのトランザクションAを例に取り説明する。そのため、そのトランザクションAを実行するスレッドはスレッド110Aであり、そのトランザクションAにより更新されるパーティションはパーティション111A及び111Bであり、パーティション111A及び111Bにそれぞれ対応したログファイルはログファイル301A及び301Bである。
スレッド110Aが、トランザクションAが開始されると、トランザクションAに対応した指示(クエリ中の指示)に基づいて、パーティション111A及び111Bの各々について、参照/更新セットの生成を行う(S301)。参照/更新セットは、レコードの参照(パーティションに対する読出し要求)とレコードの更新(パーティションに対する書込み要求)とのセットである。参照/更新セットは、パーティションの更新のための要求セットであるが、S301の時点では、パーティション111A及び111Bの変更は行われず、トランザクションAに対応したローカルメモリ領域(メインメモリ461上に確保された領域(図示せず))に参照/更新セットが保持される。
次に、スレッド110Aが、コミット判定を行う(S302)。コミット判定は、例えば、トランザクションAが参照/更新セットに基づいて行うパーティション111A及び111Bへの変更が他のトランザクションとの整合性を保てているかどうかをデータベースのアイソレーションレベルに応じて行われる。
コミット判定がNGの場合(S303:No)、スレッド110Aは、アボート処理を行う(S307)。
コミット判定がOKの場合(S303:Yes)、スレッド110Aは、ログ出力処理を実行する(S304)。次に、スレッド110Aは、参照/更新セットに基づいてパーティション111A及び111Bをそれぞれ更新し(S305)、コミット完了通知を出して(S306)、トランザクションを終了する。
図13は、ログ出力処理(図12のS304)のフローチャートである。
トランザクションAを実行しているスレッド110Aと対応付けられているログファイル301AのLLSN管理部115は、LLSN管理部115Aである。スレッド110Aは、LLSN管理部115Aからログファイルアドレスを取得し、LLSN管理部115AのログファイルアドレスにトランザクションAのログサイズを加算する(S401)。なお、この一連の動作の前に、スレッド110Aが、LLSN管理部115Aのロックを取得し、動作後にロックを解放する。LLSN管理部115及びログファイル301がスレッド110Aに対応付けられていない場合には、スレッド110Aは、任意のLLSN管理部115を選択し、その選択したLLSN管理部115について同様の処理を行う。ただし、後述するリカバリー処理においてデッドロックを回避するためには、S401で操作されたLLSN管理部115に対応するログファイル301にログが書き込まれる必要がある。
次に、スレッド110Aは、トランザクションAの実行により更新されたパーティション111A又は111BのLLSNを採番する(S402)。データベースのアイソレーションレベルやデータ構造によっては、トランザクションAの実行により参照されたパーティションのLLSNも採番する必要がある場合がある。
スレッド110Aは、更新されたパーティション111A及び111BのうちLLSNが採番されていないパーティションがあれば(S403:No)、その採番されていないパーティションについてS402を行う。一方、更新された全てのパーティション111A及び111BのLLSNが採番されたのであれば(S403:No)、スレッド110Aは、ログ901A(図9参照)を生成しそのログ901Aをログバッファ114Aに書き込み、そのログ901Aの書込み要求(LLSN管理部115Aから取得したログファイルアドレスを指定した書込み要求)を発行する(S404)。スレッド110Aは、外部ストレージ装置402からI/Oアダプタ413を介して書込み完了通知を受信した場合に書込み完了とし(S405)、ログ出力フローを終了する。
図14は、チェックポイント生成処理のフローチャートである。図14の説明では、チェックポイントを生成するスレッドがスレッド110Aであるとする。
スレッド110Aは、まず、新規コミット開始を禁止する(S501)。具体的には、スレッド110Aは、スレッド共有の領域に新規コミット禁止を表すフラグビットを予め置き、初期値を0とする。スレッド110Aは、新規コミット開始を禁止する際に、該フラグビットを1に変更する。トランザクションを実行するスレッドは、コミット処理実行開始時に、該フラグビットを確認し、該フラグビットが0の時に限りコミット処理を実行し、該フラグビットが1の時には該フラグビットが0に変更されるまで待ち状態となる。スレッド110Aの新規コミット開始禁止処理以降、いずれのスレッド110もコミットを開始することできなくなり、コミット中のトランザクションについてのみコミットが進む。
スレッド110Aは、コミット中のトランザクション数が0になるまで待つ(S502:No)。コミット中のトランザクション数が0になると(S502:Yes)、スレッド110Aは、任意に選択したログファイル301(例えば301A)に対応するLLSN管理部115(例えば115A)から、LLSNを採番し且つログファイルアドレスを取得し、チェックポイントログのサイズ分の値を、そのLLSN管理部115(例えば115A)内のログファイルアドレスに加算する(S503)。
さらに、スレッド110Aは、残りのログファイルに対応する全てのLLSNをそれぞれ採番する(S504)。スレッド110Aは、S503で採番したLLSNと、S504で採番したLLSNと、チェックポイントIDとを含んだチェックポイントログを完成させる。スレッド110Aは、S503で取得したログファイルアドレスを指定したログ書込み要求(書込み対象は上記完成したチェックポイントログ)を、上記任意に選択したログファイル301(例えば301A)に対応したログバッファ114(例えば114A)に書き込み、ログバッファ114(例えば114A)からログ書込み要求を発行する(S505)。
次に、スレッド110Aは、データベースのバックアップをする条件が満たされているか否かを判断する(S506)。その条件は、チェックポイント生成が行われた回数がN回(Nは自然数)に達したことでもよいし、直前回のバックアップ時刻から一定時間経過したことでもよい。
S506の判断結果が真の場合(S506:Yes)、スレッド110Aは、データベースのバックアップ、すなわち、メインメモリ416上のデータベース(各パーティション111のテーブル112及びインデックス113)を、上記チェックポイントログに含められたチェックポイントIDに関連付け、そのチェックポイントIDが関連付けられたデータベース(イメージ)を、外部ストレージ装置402に格納する(S507)。この動作は、すべてのチェックポイントで必ずしも必要ではない。しかし、チェックポイントログの書込みの際にデータベースのバックアップが行われることで、チェックポイント生成時点のデータベース(或いは、チェックポイント時点近傍の時点のデータベース)を高速にリカバリーすることができる。なお、バックアップされたデータベース(イメージ)と、チェックポイントIDと、そのチェックポイントIDを含んだチェックポイントログの書込み先アドレスとの対応関係を含んだ情報(以下、チェックポイント管理情報)は、スレッドにより、データベースサーバ401の中又は外の記憶領域(例えばメインメモリ416)に格納されてよい。
バックアップ完了後、又は、S506の判断結果が偽の場合(S506:No)、スレッド110Aは、新規コミット開始の禁止を解除し(S508)、チェックポイント生成処理が終了する。具体的には、スレッド110Aは、新規コミット禁止を表すフラグビットを1から0に変更する。
図15は、データベースのリカバリー処理(親)のフローチャートである。図15(及び図16)の説明では、データベースをリカバリーするスレッドがスレッド110Aであるとする。
スレッド110Aが、チェックポイント管理情報を基に、指定されたチェックポイントのチェックポイントIDに関連付けられたデータベース(バックアップイメージ)、又は、指定されたチェックポイントのチェックポイントIDよりも過去に生成されたチェックポイントIDに関連付けられたデータベース(バックアップイメージ)を、外部ストレージ装置402からメインメモリ416上にロードする(S601)。チェックポイントIDは、クエリ発行元から受けたクエリで指定されていてもよいし、データベースサーバ401に接続された図示しない計算機(例えば管理計算機)より指定されてもよい。
スレッド110Aは、チェックポイント管理情報を基に、そのデータベースに関連付けられているチェックポイントIDを含んだチェックポイントログを、そのログのアドレス(ログファイル)から取得して、そのログ中の各LLSNを、そのLLSNに対応したパーティション111中のLLSN管理部115のLLSNに設定する(S602)。例えば、先頭番号が1であるLLSNは、LLSN管理部115AのLLSNに設定され、先頭番号が2であるLLSNは、LLSN管理部115BのLLSNに設定される。
スレッド110Aは、ロードされたデータベースに関連付けられているチェックポイントIDと指定されたチェックポイントIDが違っていれば(S603:No)、各パーティション111に対応したスレッド110に、リカバリー処理(子)を実行させる(S604)。パーティション111Aについては、スレッド110Aが、リカバリー処理(子)も実行する。スレッド110Aは、全てのリカバリー処理(子)が終了となるのを待って(S605:Yes)、リカバリー処理(親)を終了する。
一方、スレッド110Aは、ロードされたデータベースに関連付けられているチェックポイントIDと指定されたチェックポイントIDが同じであれば(S603:Yes)、S604及び605を行うこと無しに、リカバリー処理(親)を終了する。なぜなら、S601でロードされたデータベースが、リカバリーされるべきデータベースだからである。
図16は、データベースのリカバリー処理(子)のフローチャートである。
リカバリー処理(子)は、各パーティション111について実行される。以下、1つのパーティション111Bを例に取り、リカバリー処理(子)を説明する。
スレッド110Bは、リカバリー処理(親)において設定されたLLSN(LLSN管理部115B内のLLSN)を、バックアップ時点のLLSNとして取得する(S700)。以下、パーティション111Bに対応したログファイル301Bにおいて、S705で取得したLLSNよりも大きなLLSNであって、指定されたチェックポイントIDより古いLLSN(指定されたチェックポイントIDの生成時点よりも過去に採番されたLLSN)を含んだログを、「バックアップ後ログ」と言うことにする。バックアップ後ログのうち最も大きいLLSNを含むバックアップ後ログは、ログファイル301Bの終端のログであることもある。また、バックアップ後ログのうち、パーティション111BのLLSNの他に、パーティション111BのLLSN以外のLLSNを含んでいるバックアップ後ログもあり得る。以下、パーティション111BのLLSNを「該当LLSN」と言い、パーティション111BのLLSN以外のLLSNを「非該当LLSN」と言う。
スレッド110Bは、パーティション111Bに対応したログファイル301Bにおける未処理のバックアップ後ログのうち最小の該当LLSNを含んだバックアップ後ログを特定する(S701)。以下、S701で特定されたバックアップ後ログを「対象ログ」と言う。
スレッド110Bは、対象ログ中の該当LLSNが、直前回のS705又はS706で処理されたバックアップ後ログ中の該当LLSNの次の該当LLSN(例えば、直前回のS705又はS706で処理されたバックアップ後ログ中の該当LLSNに1が加算された該当LLSN)か否かを判断する(S702)。
S702の判断結果が真の場合(S702:Yes)、スレッド110Bは、対象ログに非該当LLSNが含まれているか否かを判断する。
S704の判断結果が真の場合(S704:Yes)、スレッド110Bは、対象ログ中の更新履歴のうち、パーティション111Bについての更新をパーティション111Bに対して実行し、且つ、対象ログのコピーを、非該当LLSNに対応するパーティションに対応したスレッドに(非該当LLSNに対応するパーティションのリカバリー処理(子)を実行しているスレッド)に転送する(S705)。例えば、非該当LLSNの先頭番号が1の場合、対象ログのコピーは、スレッド110Aに転送される。非該当LLSNが2以上の場合、対象ログのコピーは、2以上の非該当LLSNに対応した2以上のパーティションに対応するスレッドにそれぞれ転送される。
S704の判断結果が偽の場合(S704:No)、スレッド110Bは、対象ログ中の更新履歴通りの更新をパーティション111Bに対して実行する(S706)。
S702の判断結果が偽の場合(S702:No)、実行すべき更新の履歴を含んだログが、ログファイル301B以外のログファイルに格納されているということである。このため、スレッド110Bは、S705とは逆に、別のスレッドから、実行すべき更新の履歴を含んだログ(直前回のS705又はS706で処理されたバックアップ後ログ中の該当LLSNの次の該当LLSNを含んだログ)のコピーを待ち、そのログのコピーを受信した場合(S703)、そのログのコピー中の更新履歴のうちの、パーティション111Bについての更新をパーティション111Bに対して実行する(S706)。
スレッド110Bは、S705又はS706の後、未処理のバックアップ後ログが未だ残っているか否かを判断する(S707)。未処理のバックアップ後ログがあれば(S707:Yes)、再度S701が行われ、未処理のバックアップ後ログがなければ(S707:Yes)、パーティション111Bについてのリカバリー処理(子)が終了となる。
以上、一実施例を説明したが、本発明はその実施例に限られない。
例えば、DBMSとして、インメモリデータベース以外のDBMSが採用されてもよい。データベースを構成する複数のデータベース部分は、異なる複数のデータベースサーバに分散していてもよいし、複数のデータベース部分のうちの少なくとも1つが、外部ストレージ装置に格納されていてもよい。
また、ログファイル301(及びデータベース部分)は、外部ストレージ装置402に代えてデータベースサーバ401内の記憶デバイス415に格納されていてもよい。
また、第2種のトランザクション集合に属するトランザクションのログについても、順番(LLSNのようなログの生成順番)が記録されてもよい。しかし、実施例のように、第2種のトランザクション集合に属するトランザクションのログにはLLSNが記録されないようにすることで、ログを生成するがLLSNを採番しなくてもよいことがあり、結果として、プロセッサ414の負荷の軽減が期待できる。
また、ログファイル301に代えて別のログ格納領域が採用されてもよい。例えば、ログ格納領域は、外部ストレージ装置402、メインメモリ416、又は記憶デバイス415内の領域であり、その領域に、ログ毎に生成されたログファイルが書き込まれてもよい。つまり、上記実施例では1つのログファイルに複数のログが書き込まれるが、一変形例では、1つのログにつき1つのログファイルがログ格納領域に書き込まれてもよい。
また、LLSNは、対応するLLSN管理部115のIDと、タイムスタンプとの組み合わせでもよい。
また、同一のチェックポイントについて2以上のチェックポイントログが生成され、それら2以上のチェックポイントログに、全てのLLSN管理部115に対応した全てのLLSNが記録されてもよい。ただし、同一のチェックポイントについてのチェックポイントログの数は、パーティション111の数よりも少ないことが望ましい。ログI/O数の削減のためである。なお、チェックポイントログは、ログファイル以外の領域(例えばメインメモリ416)に格納されてもよい。
また、リカバリー処理は、スレッド(クエリ実行部)に代えて、クエリ実行部とは別に設けられたリカバリー実行部(図示せず)によって行われてもよい。つまり、上記実施例では、クエリ実行部がリカバリー実行部を兼ねているが、クエリ実行部とは別にリカバリー実行部が設けられてもよい。
401:データベースサーバ 402:外部ストレージ装置

Claims (15)

  1. データベースを管理するデータベース管理システムであって、
    前記データベースへのクエリをクエリ発行元から受け付けるクエリ受付部と、
    前記受け付けたクエリに関する情報を基に、複数のトランザクションを実行し、トランザクション毎に、トランザクションのログを生成し、前記生成したログをログ格納領域に書き込むためのログ書込み要求を発行するクエリ実行部と
    を有し、
    前記クエリ実行部は、トランザクション実行順序によって結果が異なるトランザクションの集合である第1種トランザクション集合に属するトランザクション毎に、トランザクションのログに、ログの順番を記録する、
    データベース管理システム。
  2. 分割された前記データベースである複数のデータベース部分、の各々について、ログの順番を管理する順番管理部を有し、
    各順番管理部により管理される順番は、その順番管理部に対応したデータベース部分を更新したトランザクションのログの生成の都度に更新され、
    前記複数のデータベース部分のうちN個のデータベース部分を更新したトランザクションのログとして(Nは2以上の整数)、M個のログが生成され(MはN以下であり1以上の整数)、
    前記M個のログのうちの少なくとも1つが、前記N個のデータベース部分にそれぞれ対応したN個の順番のうちの2以上の順番を含む、
    請求項1記載のデータベース管理システム。
  3. 前記N個のデータベース部分にそれぞれ対応したN個のログ格納領域があり、
    1つの順番を含んだログは、その順番に対応したログ格納領域に書き込まれ、
    前記2以上の順番を含んだログは、前記2以上の順番にそれぞれ対応した2以上のログ格納領域のうちのいずれかに書き込まれる、
    請求項2記載のデータベース管理システム。
  4. M=1である、
    請求項2記載のデータベース管理システム。
  5. 前記複数のデータベース部分にそれぞれ対応した複数のI/O(Input/Output)リソースがあり、
    1つの順番を含んだログは、その順番に対応したI/Oリソースを通じて、そのI/Oリソースに対応したログ格納領域に書き込まれ、
    前記2以上の順番を含んだログは、前記2以上の順番にそれぞれ対応した2以上のI/Oリソースのいずれかを通じて、そのI/Oリソースに対応したログ格納領域に書き込まれる、
    請求項2記載のデータベース管理システム。
  6. 前記クエリ実行部は、トランザクション実行順序が結果に影響を与えないトランザクションの集合である第2種トランザクション集合に属するトランザクションのログには、順番を記録しない、
    請求項1記載のデータベース管理システム。
  7. 前記クエリ実行部は、前記クエリに関する情報を基に、実行対象のトランザクションが、前記第1トランザクション集合と前記第2種トランザクション集合とのどちらに属するかを判断する、
    請求項6記載のデータベース管理システム。
  8. 前記受け付けたクエリに基づいて前記受け付けたクエリを実行するために必要な1以上のデータベースオペレーションと前記1以上のデータベースオペレーションの実行手順とを表す情報を含んだクエリ実行プランを生成するクエリ実行プラン生成部を更に有し、
    前記クエリに関する情報は、前記クエリ実行プランを表す情報である、
    請求項7記載のデータベース管理システム。
  9. 前記クエリ実行部は、チェックポイント毎に、全ての順番管理部にそれぞれ対応した全ての順番を含んだ1以上のチェックポイントログを生成する、
    請求項1記載のデータベース管理システム。
  10. チェックポイント毎に、チェックポイントログの数は、データベース部分の数よりも少ない、
    請求項9記載のデータベース管理システム。
  11. 指定された第1のチェックポイントの時点におけるデータベースをリカバリーするリカバリー実行部を更に有し、
    前記クエリ実行部は、複数のチェックポイントのうちの少なくとも1つのチェックポイントにおいてデータベースをバックアップし、
    前記リカバリー実行部は、
    バックアップされたデータベースのうち、前記第1のチェックポイントと同じ、又は、前記第1のチェックポイントよりも過去のチェックポイントである第2のチェックポイントに対応したデータベースをロードし、
    前記第2のチェックポイントに対応したチェックポイントログ中の各順番を、その順番に対応する順番管理部に設定する、
    請求項9記載のデータベース管理システム。
  12. 前記リカバリー実行部は、前記第2のチェックポイントと前記第1のチェックポイントが異なっていれば、ロードされたデータベースのデータベース部分毎に、データベース部分に対応したログ格納領域に格納されている、前記第2のチェックポイントから前記第1のチェックポイントまでの1以上のログを、ログ中の順番の小さい順に用いて、データベース部分をリカバリーし、
    前記リカバリー実行部は、データベース部分毎のリカバリーにおいて、そのデータベース部分に対応した順番である該当順番と該当順番以外の1以上の順番である1以上の非該当順番とを含んだログについては、そのログに従う更新を、そのデータベース部分と、前記1以上の非該当順番にそれぞれ対応する1以上のデータベース部分とに対して実行し、
    前記リカバリー実行部は、データベース部分毎のリカバリーにおいて、そのデータベース部分に対応したログ中の順番が、直前回に用いたログ中の順番の次の番号でなければ、前記次の番号を含んだログを待つ、
    請求項11記載のデータベース管理システム。
  13. 前記データベースは、メインメモリ上に存在する、
    請求項2記載のデータベース管理システム。
  14. データベースを管理する計算機システムであって、
    ログ格納領域に接続されたインターフェイスデバイスと、
    前記インターフェイスデバイスに接続されたプロセッサと
    を有し、
    前記プロセッサは、複数のトランザクションを実行し、複数のトランザクションの実行において、トランザクション毎に、トランザクションのログを生成し、生成したログをログ格納領域に格納し、
    前記プロセッサは、少なくとも、トランザクション実行順序によって結果が異なるトランザクションの集合に属するトランザクションのログには、ログの順番を記録する、
    計算機システム。
  15. データベースを管理するデータベース管理方法であって、
    複数のトランザクションの実行において、トランザクション毎に、トランザクションのログを生成し、
    生成したログをログ格納領域に格納し、
    少なくとも、トランザクション実行順序によって結果が異なるトランザクションの集合に属するトランザクションについて生成されたログには、ログの順番が記録される、
    データベース管理方法。
JP2015558634A 2014-01-22 2014-01-22 データベース管理システム及び方法 Active JP6152431B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/051263 WO2015111152A1 (ja) 2014-01-22 2014-01-22 データベース管理システム及び方法

Publications (2)

Publication Number Publication Date
JPWO2015111152A1 true JPWO2015111152A1 (ja) 2017-03-23
JP6152431B2 JP6152431B2 (ja) 2017-06-21

Family

ID=53680984

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015558634A Active JP6152431B2 (ja) 2014-01-22 2014-01-22 データベース管理システム及び方法

Country Status (5)

Country Link
US (1) US10366075B2 (ja)
JP (1) JP6152431B2 (ja)
DE (1) DE112014002275T5 (ja)
GB (1) GB2537446A (ja)
WO (1) WO2015111152A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016183539A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Data partitioning and ordering
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
JP2017097639A (ja) * 2015-11-25 2017-06-01 富士通株式会社 データベース制御プログラム、データベース制御装置及びデータベース制御方法
US10452491B2 (en) * 2016-04-14 2019-10-22 Sap Se Scalable log partitioning system
KR102454779B1 (ko) * 2016-12-19 2022-10-13 스월즈, 인크. 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
JP6390748B1 (ja) * 2017-04-19 2018-09-19 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10241965B1 (en) 2017-08-24 2019-03-26 Deephaven Data Labs Llc Computer data distribution architecture connecting an update propagation graph through multiple remote query processors
US11334439B2 (en) 2018-08-29 2022-05-17 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11196542B2 (en) 2018-08-29 2021-12-07 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US10901957B2 (en) * 2018-08-29 2021-01-26 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249903A (ja) * 2000-03-07 2001-09-14 Toshiba Corp 情報処理システム
JP2012069031A (ja) * 2010-09-27 2012-04-05 Nec Corp データベースシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2581141B2 (ja) * 1988-03-29 1997-02-12 株式会社日立製作所 ディレイド・ジャーナル・マージ方式
US5878414A (en) * 1997-06-06 1999-03-02 International Business Machines Corp. Constructing a transaction serialization order based on parallel or distributed database log files
US6366915B1 (en) * 1998-11-04 2002-04-02 Micron Technology, Inc. Method and system for efficiently retrieving information from multiple databases
JP2001229063A (ja) * 2000-02-17 2001-08-24 Mitsubishi Electric Corp データ管理システム
JP4437650B2 (ja) * 2003-08-25 2010-03-24 株式会社日立製作所 ストレージシステム
JP4452533B2 (ja) * 2004-03-19 2010-04-21 株式会社日立製作所 システムおよび記憶装置システム
JP4998549B2 (ja) * 2007-02-28 2012-08-15 富士通株式会社 メモリミラー化制御プログラム、メモリミラー化制御方法およびメモリミラー化制御装置
JP4912973B2 (ja) * 2007-07-11 2012-04-11 株式会社日立製作所 端末及びデータ配信システム
JP4870190B2 (ja) * 2009-04-27 2012-02-08 株式会社日立製作所 データ処理方法、計算機、及びデータ処理プログラム
US8964849B2 (en) * 2011-11-01 2015-02-24 Blackberry Limited Multi-level significance maps for encoding and decoding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249903A (ja) * 2000-03-07 2001-09-14 Toshiba Corp 情報処理システム
JP2012069031A (ja) * 2010-09-27 2012-04-05 Nec Corp データベースシステム

Also Published As

Publication number Publication date
US10366075B2 (en) 2019-07-30
GB201521129D0 (en) 2016-01-13
GB2537446A (en) 2016-10-19
WO2015111152A1 (ja) 2015-07-30
DE112014002275T5 (de) 2016-01-28
JP6152431B2 (ja) 2017-06-21
US20160125018A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
JP6152431B2 (ja) データベース管理システム及び方法
US10977124B2 (en) Distributed storage system, data storage method, and software program
CN114341792B (zh) 存储集群之间的数据分区切换
EP2731013B1 (en) Backing up method, device, and system for virtual machine
US9251233B2 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US8495313B2 (en) Transferring learning metadata between storage servers having clusters via copy services operations on a shared virtual logical unit that stores the learning metadata
JP6445049B2 (ja) ログの管理方法及び計算機システム
CN107656834B (zh) 用于基于事务日志恢复主机访问的系统和方法及存储介质
US20100180093A1 (en) Rapid defragmentation of storage volumes
JP6479186B2 (ja) 計算機システム及びデータベース管理方法
US20160098324A1 (en) Dynamic protection of storage resources for disaster recovery
US9495253B2 (en) Virtual snapshot system and method
KR100819022B1 (ko) 하나의 타겟 볼륨과 하나의 소스 볼륨 사이의 관계 관리
US20220066786A1 (en) Pre-scanned data for optimized boot
JP6272556B2 (ja) 共有リソース更新装置及び共有リソース更新方法
JP2007323657A (ja) 過渡状態情報を格納するための方法、システムおよびコンピュータ・プログラム
US20160171021A1 (en) Recovering from a pending uncompleted reorganization of a data set
CN112748865B (zh) 用于存储管理的方法、电子设备和计算机程序产品
US9547450B2 (en) Method and apparatus to change tiers
JP6210501B2 (ja) データベース管理システム、計算機、データベース管理方法
US11586466B2 (en) Centralized high-availability flows execution framework
JP6263673B2 (ja) 計算機システム及びデータベース管理方法
US8738823B2 (en) Quiescing input/output (I/O) requests to subsets of logical addresses in a storage for a requested operation
WO2016120988A1 (ja) データベースシステム及びデータベース管理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170111

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: 20170509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170529

R150 Certificate of patent or registration of utility model

Ref document number: 6152431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150