JP6365858B2 - データベースの選択的なスナップショットを生成するためのシステムおよび方法 - Google Patents

データベースの選択的なスナップショットを生成するためのシステムおよび方法 Download PDF

Info

Publication number
JP6365858B2
JP6365858B2 JP2017516691A JP2017516691A JP6365858B2 JP 6365858 B2 JP6365858 B2 JP 6365858B2 JP 2017516691 A JP2017516691 A JP 2017516691A JP 2017516691 A JP2017516691 A JP 2017516691A JP 6365858 B2 JP6365858 B2 JP 6365858B2
Authority
JP
Japan
Prior art keywords
snapshot
segment
segments
accessed
snapshot process
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.)
Active
Application number
JP2017516691A
Other languages
English (en)
Other versions
JP2017529632A (ja
Inventor
エリーツァー・レヴィー
アントニオス・イリオポウロス
シェイ・ゴイクマン
イスラエル・ゴールド
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
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 ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Publication of JP2017529632A publication Critical patent/JP2017529632A/ja
Application granted granted Critical
Publication of JP6365858B2 publication Critical patent/JP6365858B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • 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/2379Updates performed during online database operations; commit processing
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するためのシステムおよび方法に関する。セグメントは1つまたは複数のメモリ・ページを含む。
本発明はまた、1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するための方法を実行するための命令を含むプログラム・コードを格納したコンピュータ可読記憶媒体に関する。セグメントは1つまたは複数のメモリ・ページを含む。
幾つかのデータベース操作は、当該データベースのスナップショットを生成するためにスナップショット・プロセスをフォークさせるステップを含む。例えば、ハイブリッド・オンライン・トランザクション処理およびオンライン分析処理、OLTP−OLAP、データベースは、長期のクエリ実行の期間にわたって当該OLAPの部分に対する一貫したスナップショットを生成するスナップショット・プロセスに対してフォーク・システム・コールを利用することができる。
同様な機構をデータベースのチェックポイント生成に利用することができる。当該チェックポイント生成は、スナップショット・プロセスにおける一貫したデータベース・スナップショットを永続記憶にフラッシュする。当該スナップショット・プロセスはまた、それが当該スナップショットのサイズとI/Oの速度に依存するので、長期間のプロセスとなりうる。増分的チェックポイント生成のような様々な最適化を、連続するチェックポイントの間のデータベース・アプリケーション状態の差分修正の追跡に適用でき、当該差分のみ存続することができる。
一般に、子プロセスにおけるスナップショット、またはポイント・イン・ア・タイム・コピーはコピー・オン・ライト(CoW)最適化によって動的に保持される。即ち、フォーク・システム・コールが、両方のプロセスにおける共有ページ・フレームを読取り専用としてマップし、ページがプロセスにより修正されるときのみ、カーネルが新たなページ・フレームを割り当て、当該ページのデータを当該新たなフレームにコピーする。これはさらなるオーバヘッドおよび性能劣化を生み出す。特に、上述の同様なアプリケーションにおいて、性能は、スナップショット・プロセスを保持するときのオーバヘッドに大きく依存する。
システムのスケーラビリティを改善するために、特にコピー・オン・ライト・アクセスに起因するスナップショットを保持するコストを軽減する問題は、学界で活発に研究されている。しかし、当該研究に基づく生産水準のシステムが利用可能であるとは知られていない。
本発明の目的は、1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するためのシステムおよび方法を提供することである。セグメントは1つまたは複数のメモリ・ページを含み、当該システムおよび当該方法は、先行技術の上述の問題のうち1つまたは複数を克服する。
本発明の第1の態様では、1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するためのシステムを提供する。セグメントは1つまたは複数のメモリ・ページを含み、当該システムは、
−スナップショット・プロセスが当該1つまたは複数のセグメントの選択されたセグメントにアクセスするように構成されるかどうかを判定するための判定ユニットと、
−当該スナップショット・プロセスによりアクセスされていると当該判定ユニットが判定したアクセスされたセグメントに正のマッピング・ステータスを割り当て、当該スナップショット・プロセスによってアクセスされていないと当該判定ユニットが判定したアクセスされていないセグメントに負のマッピング・ステータスを割り当てるための割当てユニットと、
−スナップショットを生成するためのスナップショット・ユニットであって、当該スナップショットを生成するステップは、当該1つまたは複数のセグメントのサブセットを含むアドレス空間を有するスナップショット・プロセスをフォークさせるステップを含み、負のマッピング・ステータスを割り当てられたマップされていないセグメントは当該アドレス空間内でマップされない、スナップショット・ユニットと、
を備える。
第1の態様のシステムは、どのメモリ・サブセットがスナップショット・プロセスによりアクセスされるかという知識を利用する。本発明の諸実施形態では、この知識により、割当てユニットを、必要なセグメントのみを当該スナップショット・プロセスにおいてマップされると設定するように構成することができる。当該スナップショット・プロセスを実行すると、当該プロセスは、そのアドレス空間内でマップされた、マップされたセグメントのみを発見する。他の実施形態では、親プロセスの全てのセグメントは当該スナップショット・プロセスから継承されるが、セグメントを用いて当該スナップショット・プロセスを行うとき、当該プロセスは当該セグメントをアンマップするかもしれない。同時に、親プロセスにおける書込みが、当該スナップショット・プロセス内でその時点でマップされているセグメントでのみコピー・オン・ライトをトリガする。
当該セグメントの残りは負のマッピング・ステータスを有する、即ち、スナップショット・プロセスのアドレス空間内でマップされるように設定されないので、それらは全く当該スナップショットアドレス空間の一部ではなく、後に、親プロセスにおいて書き込まれている場合、コピー・オン・ライトは受けない。書込み操作はスナップショット・プロセスが存在しないかのように、これらのセグメントをインプレースで修正する。結果として、親が受けるコピー・オン・ライトの数を数桁減らすことができる。
第1の態様に従うシステムは、データベースのどのメモリ領域がスナップショット消費者により読まれるかに関する知識を利用し、これらのメモリ領域のみをスナップショットすることができる。さらに、当該スナップショット消費者は、当該スナップショットの実行時保守、即ち、コピー・オン・ライトのコストを減らすために、スナップショットされた領域またはこれらの領域の一部の保持を断念するかもしれない
forkベースのスナップショット技術のケースでは、madvise()システム・コールをメモリ領域ごとに起動して、スナップショット・プロセス内のそのマッピング・ステータスを設定でき、munmap()システム・コールを、当該スナップショット・プロセス内の領域の保持を断念するために起動することができる。特に、当該マッピング・ステータスが、継承可能ステータス、即ち、セグメントが新たに生成されたプロセスのアドレス空間にマップされるかどうかを示すステータスであることができる。
本発明の諸実施形態では、セグメントは、メモリ内の連続する位置に配置された1つまたは複数のメモリ・ページを含む。
第1の態様のシステムでは、スナップショット・プロセスによりアクセスされることになっているページのみが、親がそれを修正する場合にコピーされるので、親プロセス内で遭遇するコピー・オン・ライトの数の大幅な削減をもたらすことができる。
第1の態様のシステムではまた、非常に少ない割合のページ・テーブル・エントリをスナップショット・ページ・テーブルにコピーする必要があるので、フォーク回数を減らすことができる。
コピー・オン・ライトの数が削減されるため、第1の態様の実施形態では、システムは、短く均一な行更新レイテンシを提供することができる。
さらなる実施形態では、第1の態様に従うシステムは、必要なユースケースをサポートするための予約されたページ・フレームのプールのサイズ削減、および、一般に、大幅に削減されたシステム・メモリ圧力を実現することができる。したがって、幾つかの実施形態では、削減されたメモリ圧力およびより軽量のスナップショット生成工数のため、データベースはより頻繁な長期のスナップショット・プロセスを提供することができる。
第1の態様に従うシステムの第1の実装では、判定ユニットは、スナップショット・プロセスが、当該スナップショット・プロセスの実行が開始する前に選択されたセグメントにアクセスするように構成されるかどうかを判定するように構成される。
第1の実装によれば、割当てユニットは、どのセグメントを継承すべきか、即ち、どのセグメントを新たに生成されたスナップショット・プロセスのアドレス空間にマップすべきかを判定することができる。したがって、当該スナップショット・プロセスを、当該スナップショット・プロセスの実行中に必要とされるそのアドレス空間にマップされるセグメントのみで開始することができる。当該スナップショット・プロセスが必要とするセグメントを、当該スナップショット・プロセスを開始する前に判定することには、当該スナップショット・プロセスの実行中の不要なセグメントのアンマップを回避できるという利点がありうる。
第1の態様に従うシステムの第2の実装では、判定ユニットは、アクティブなスナップショット・プロセスの実行中に、当該アクティブなスナップショット・プロセスが当該アクティブなスナップショット・プロセスの残存実行時間中に選択されたセグメントにアクセスするように構成されるかどうかを判定するように構成される。
第1の実装および第2の実装を組み合せることができる。即ち、どのセグメントがとにかくスナップショット・プロセスによりアクセスされるかを実行前に判定でき、どのセグメントが残存実行時間において依然としてアクセスされるかを実行中に判定することができる。例えば、特定のセグメントがスナップショット・プロセスによりその実行中に1度だけアクセスされることがありうる。したがって、この1度のアクセスの後、判定ユニットは、当該特定のセグメントが再びアクセスされないと判定でき、割当てユニットは、以前に(スナップショット・プロセスの実行が開始する前に)正のマッピング・ステータスを当該特定のセグメントに割り当てたけれども、負のマッピング・ステータスを当該特定のセグメントに割り当てることができる。
第2の実装の実施形態では、割当てユニットを、スナップショット・プロセスの残存実行時間において当該スナップショット・プロセスによりアクセスされないと判定ユニットが判定した1つまたは複数のセグメントを、当該スナップショット・プロセスのアドレス空間からアンマップするように構成することができる。
第1の態様に従うシステムの第3の実装では、割当てユニットは、スナップショット・プロセスにより実行されるべき物理実行計画をコンパイルするように構成されたコンパイル・ユニットを備える。コンパイルされた物理実行計画は、好適には、セグメントが当該物理実行計画の残存実行時間の間はもはやアクセスされないとき、当該物理実行計画内の位置にあるセグメントに対するアンマップ・コマンドを含む。これは、セグメントがスナップショット・プロセスにおいてもはや必要とされないと判定されたとき、当該セグメントを即座にアンマップできるという利点を有する。
第1の態様に従うシステムの第4の実装では、正のマッピング・ステータスをアクセスされたセグメントに割り当てるステップは、アクセスされたセグメントのアドレスおよびサイズならびにMADV_NORMALパラメータを含む引数でmadviseオペレーティング・システム関数を呼び出すステップを含み、かつ/または、負のマッピング・ステータスをアクセスされていないセグメントに割り当てるステップは、当該アクセスされていないセグメントのアドレスおよびサイズならびにMADV_DONTFORKパラメータを含む引数でmadviseオペレーティング・システム関数を呼び出すステップを含む。
本発明の諸実施形態では、正のまたは負のマッピング・ステータスを設定するステップが、「内部」変数を正のまたは負のマッピング・ステータスに対応する値に設定するステップを含んでもよく、また、オペレーティング・システム・レベルで正のまたは負のマッピング・ステータスを設定するためにmadvise()のようなオペレーティング・システム関数を起動するステップを含んでもよい。
madvise()オペレーティング・システム関数は、特定のアドレス範囲にあるメモリ・ページに関してカーネルにアドバイスまたは指示を与えるために使用される。MADV_NORMAL、MADV_DOFORKまたはMADV_DONTFORKのような幾つかの所定のパラメータにより、アプリケーションはカーネルに、どのようにアプリケーションが幾つかのマップまたは共有されたメモリ領域を使用するのを期待するかを伝えることができ、その結果、カーネルは適切な先読みおよびキャッシュ技術を選択することができる。特に、当該システムの第4の実装によれば、madvise()をMADV_NORMALパラメータで起動することには、デフォルトの扱いがこのセグメントに対して使用されるという効果がある。例えば、スナップショット・プロセスは、そのアドレス空間に含まれる特定のセグメントで生成される。
セグメントが1つより多くのメモリ・ページを含む場合、madvise()関数を、引数として当該セグメントのメモリ・ページにより起動することができる。
本発明の第2の態様は、1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するための方法に関する。セグメントは1つまたは複数のメモリ・ページを含み、当該方法は、
−親プロセスが、スナップショット・プロセスが当該1つまたは複数のセグメントの選択されたセグメントにアクセスするように構成されるかどうかを判定するステップと、
−当該親プロセスが、当該セグメントが当該スナップショット・プロセスによりアクセスされていると判定された場合、正のマッピング・ステータスを当該セグメントに割り当てるステップ、および/または、当該親プロセスが、当該セグメントが当該スナップショット・プロセスによりアクセスされていないと判定された場合に当該セグメントに負のマッピング・ステータスを割り当てるステップと、
−当該親プロセスがスナップショットを生成するステップであって、当該スナップショットを生成するステップは、当該スナップショット・プロセスをフォークするステップを含み、負のマッピング・ステータスを割り当てられたマップされていないセグメントは当該スナップショット・プロセスのアドレス空間内でマップされていない、ステップと、
を含む。
本発明の第2の態様に従う方法を本発明の第1の態様に従うシステムにより実施することができる。本発明の第2の態様に従う方法のさらなる特徴または実装が、本発明の第1の態様に従う装置の機能およびその異なる実装形式を実施することができる。
第2の態様の方法の第1の実装では、正のマッピング・ステータスをアクセスされたセグメントに割り当てるステップは、
−当該アクセスされたセグメントのステータス変数をマスク変数とOR結合された当該ステータス変数に設定するステップと、
−ハッシュ・テーブル内の当該アクセスされたセグメントにポインタを挿入するステップと、
−当該ポインタが当該ハッシュ・テーブルに新たに挿入された場合、正のマッピング・ステータスを設定するステップと、
を含み、
当該親プロセスが当該スナップショットを生成するステップは、当該マスク変数を更新するステップを含み、当該マスク変数を更新するステップは特に、当該マスク変数のビット値を回転するステップを含む。
ハッシュ・テーブルを全てのアクセスされたセグメントで最新に保ち、アクセスされたセグメントへのポインタが新たに挿入されたかどうかを判定することによって、マッピング・ステータスへの不要な更新を回避することができる。例えば、セグメントのマップまたはアンマップに関連するシステム・コマンドを、このセグメントのマッピング・ステータスが変化した場合のみ、起動する必要がある。
本発明の諸実施形態では、マスク変数は2ビットの変数である。このように、一方のビットは現在の時間間隔に対応でき、他方のビットは以前の時間間隔に対応することができる。
新たなスナップショット・プロセスが生成されたときマスク変数を更新し、セグメントのステータス変数を設定するとき当該マスク変数を使用することによって、第1の実装に従う方法は、各セグメントの現在のマッピング・ステータスと以前のマッピング・ステータスの記録を保つことができる。したがって、マッピング・ステータスに関連するオペレーティング・システム関数の不要な起動を回避することができる。
第2の態様の方法の第2の実装では、スナップショットを生成するステップはさらに、マスク変数にAND結合されたセグメントのステータス変数が0である場合にハッシュ・テーブル集合内のセグメントごとに負のマッピング・ステータスを設定するステップを含む。
特に、マスク変数にAND結合されたセグメントのステータス変数が、AND結合の結果の全ビットに対して0であるかどうかを判定することができる。
マスク変数とのAND結合を用いてセグメントのマッピング・ステータス変数にアクセスすることは、現在の位置に対応するマッピング・ステータスのビットのみにアクセスする効率的な方法を提供する。
第2の態様の方法の第3の実装では、方法はチェックポイント生成方法であり、スナップショット・プロセスは、1つまたは複数のセグメントのサブセットを含むデータベースの選択的なスナップショットを永続記憶に書き込むように構成される。チェックポイント生成方法では、当該スナップショット・プロセスは一般に、最後のチェックポイント生成間隔において変化したデータベースのセグメント(「差分」)のみを永続メモリに書き込む。幾つかの実施形態では、当該スナップショット・プロセスはしたがって、変化したセグメントの各々を1度だけ読むだけでよい。特定のセグメントへの読取りアクセスが実施された後、このセグメントへのさらなるアクセスは当該スナップショット・プロセスにより実施されず、負のマッピング・ステータスを設定することができる。
例えば、多くのセグメントが最後のチェックポイント生成間隔で変更されているケースでは、第3の実装の方法はコピー・オン・ライトの大幅な削減を提供することができる。
第2の態様の方法の第4の実装では、親プロセスが、スナップショット・プロセスが1つまたは複数のセグメントの選択されたセグメントにアクセスするように構成されるかどうかを判定するステップは、当該選択されたセグメントが以前のチェックポイント間隔において変更されているかどうかを判定するステップを含む。これは、セグメントが当該スナップショット・プロセスによりアクセスされないと判定するための単純なルールを提供する。当該ルールは比較的単純であるので、アクセスされていないセグメントを決定しそれらに対して負のマッピング・ステータスを設定するのに必要な計算オーバヘッドは非常に低い。
第2の態様の方法の第5の実装では、方法はハイブリッド・オンライン・トランザクション処理、OLTP、およびオンライン分析処理、OLAP、データベースシステムを保守するための方法であり、当該方法は、
−親プロセスがOLAPクエリを受信するステップと、
−当該スナップショット・プロセスが当該OLAPクエリを実行するステップと
を含む。
ハイブリッドOLTPおよびOLAPデータベースシステムによりトランザクション・データに対する直接的な分析クエリを処理することができる。OLAPに関するトランザクション・データの現在のスナップショットを任意に提供することによって、これらのシステムはリアルタイムなビジネス・インテリジェンスを可能とすることができる。しかし、ハイブリッドシステムにおけるOLAPクエリの実行には、スナップショット・プロセスが生成されることが必要であるので、当該スナップショット・プロセスを生成するときに不要なコピー・オン・ライトが回避されることが特に重要である。
第2の態様の方法の第6の実装では、当該方法はさらに、親プロセスがOLAPクエリに基づいてスナップショット・プロセスをコンパイルするステップを含む。当該スナップショット・プロセスのコンパイルは、どのセグメントが当該スナップショット・プロセスによりアクセスされるかの知識に部分的に基づくことができる。これには、例えばアンマップ・コマンドを当該コンパイルされたスナップショット・プロセス内の適切な場所に挿入できるという利点がある。
第2の態様の方法の第7の実装では、親プロセスが、スナップショット・プロセスが選択されたセグメントにアクセスするように構成されるかどうかを判定するステップは、当該親プロセスが物理実行計画を生成するステップであって、特に当該親プロセスは正のマッピング・ステータスを当該物理実行計画内で参照される参照セグメントに割り当てる、ステップを含む。
物理実行計画は、SQL関係データベース管理システムにおいてデータにアクセスするために使用されるステップの順序集合を含むことができる。このように、いつスナップショット・プロセスがどのセグメントにアクセスする必要があるかを判定でき、例えば、不要なセグメントを当該スナップショット・プロセスのアドレス空間からアンマップするアンマップ・コマンドをそれに従って配置することができる。
典型的なSQLクエリに対して、それぞれ異なるクエリ実行計画に対応する、当該クエリを実行するための多数の代替的な方法がある。一般に、データベース管理システムは幾つかの性能基準に基づいて好適な物理実行計画を選択する。本発明の諸実施形態では、複数の利用可能な物理実行計画から、好適な物理実行計画は、負のマッピング・ステータスをスナップショット・プロセスのセグメントに対して設定できるかに基づいて選択される。例えば、セグメントがこの物理実行計画に対してより早期の位置で必要とされないと判定できる場合に、物理実行を好適な物理実行計画として選択でき、したがってアンマップ・コマンドをより早期に起動することができる。
第2の態様の方法の第8の実装では、当該方法はさらに、
−もはやスナップショット・プロセスによりアクセスされていない、アクセスされていないセグメントを決定するステップと、
−当該アクセスされていないセグメントをアンマップするステップと、
を含む。
上述のように、当該アクセスされていないセグメントをアンマップするステップを、メモリ・ページのアンマップのためのシステム・コマンドを用いて実施することができる。
本発明の第3の態様は、第2の態様の方法または第2の態様の実装の1つを実行するための命令を含むプログラム・コードを格納したコンピュータ可読記憶媒体に関する。
本発明の諸実施形態の技術的特徴をより明確に説明するために、当該実施形態を説明するために提供される添付図面を以下で簡単に説明する。以下の説明における添付図面は本発明の幾つかの実施形態にすぎず、特許請求の範囲で定義した本発明の範囲から逸脱しないこれらの実施形態の修正が可能である。
同一の物理ページへのポインタを含む親ページ・テーブルと子ページ・テーブルの略図である。 コピー・オン・ライトの影響が示される、同一の物理ページへのポインタを含む親ページ・テーブルと子ページ・テーブルの略図である。 本発明の1実施形態に従うコピー・オン・ライトの影響が示される、同一の物理ページへのポインタを含む親ページ・テーブルと子ページ・テーブルの略図である。 本発明に従うデータベースの3つのテーブルの2つの結合の物理実行計画の1例の略図である。 本発明に従う、チェックポイント生成方法のスナップショット・プロセスによりアクセスされたセグメントを決定する方法の略図である。 本発明に従う、データベースの選択的なスナップショットを生成するためのシステムの略図である。 新たなスナップショット・プロセスの初期化を開始するためのルーチンの流れ図である。 正のマッピング・ステータスを有するセグメントを追加するためのルーチンの流れ図である。 新たなスナップショット・プロセスの初期化を終了させるためのルーチンの流れ図である。
図1は、親ページ・テーブル10および子ページ・テーブル20の略図を示す。子ページ・テーブル20は、親プロセスからフォークされているスナップショット・プロセスのページ・テーブルである。親ページ・テーブル10は、物理メモリ・ページ32へのポインタ14を含む第1のエントリ12を含む。子ページ・テーブル20は、同一の物理メモリ・ページ32への第2のポインタ24を含む第2のエントリ22を含む。fork()システム・コマンドが起動されたとき、灰色の陰影で示すように、親アドレス空間30全体が継承可能と設定され、したがって当該スナップショット・プロセスのアドレス空間にマップされる。fork()コマンドの後、子のページ・テーブルは親の同一の物理ページを指す。点線40は、アドレス空間全体までコピーする必要があることを示す。
親プロセスのアドレス空間全体がfork()にわたって継承されるとき、そのページの各々は、それらにアクセスする子に関わらずコピー・オン・ライトを受ける。
図2は、親プロセスが物理メモリ・ページ32に書き込むときのシナリオを示す。親アドレス空間の全てが継承されるとき、親のページへの書込みは、子プロセスが当該ページにアクセスするか否かに関わらず、新たに割り当てられたメモリ・ページ42にコピー・オン・ライトをトリガする。当該メモリ・ページが新たな位置42にコピーされると、親ページ・テーブル10内の第1のエントリ12内のポインタ14が新たなポインタ16に更新され、新たなポインタ16が、当該新たに割り当てられたメモリ・ページを指す。
親プロセスの長期の実行にわたって、親プロセスの後続の書込みが、新たなメモリ・ページのますます多くのコピー・オン・ライト割当てをトリガする。これらの新たなメモリ・ページを図2の参照番号40で示す。均一な書込み分布および長期の子プロセスにより、親におけるページの大部分は、対応するオーバヘッドで、コピーされる。
フォーク・システム・コールの期間は、子のページ・テーブルにコピーされた親プロセスのページ・テーブル内のPTE(ページ・テーブル・エントリ)の数に比例する。一般にOLTP処理をフォーク・システム・コールの期間一時停止する必要があるので、大きなメモリ内データ・セットはしたがって、フォーク中に大幅な応答時間スパイクを引き起こす。
さらに、fork()は十分な空きページ・フレームの供給を必要とする。例えば、巨大なLinux(登録商標) TLB Copy−on−writeページ・フォルト・ハンドラが新たなページ・フレームを発見できない場合に、当該ハンドラは黙って子のページをアンマップされているとしてマークし、後続の子のページのアクセスが当該プロセスを終了させる。この状況を予期し防止するのは極めて困難である。
コピー・オン・ライトのステップの規模は、以下のように大幅な直接的および間接的なオーバヘッドを伴う。
一般に、コピー・オン・ライトのページ・フォルト・オーバヘッドはスケーラブルではない。なぜならば、当該オーバヘッドはTLBを全てのコアにフラッシュする必要性に起因して、コアの数とともに増大するからである。例えば、TLBシュートダウン手続きを参照。これは、比例的に分割されたアプリケーション状態でより多くのスレッドをさらに利用することによって、OLTP性能を増大できるという主張に反する。
親プロセス内で遭遇するコピー・オン・ライトの数は、子プロセスの寿命中の親における書込みの分布に、子が当該ページにアクセスするか否かと無関係に比例する。例えば、十分に長い子の実行と親における均一な書込み分布により、そのアドレス空間の全てがコピーされる。
カラム・ストア・データベース内の行の更新は、当該行の中の修正された列の数と同数でありうる、コピー・オン・ライトを受ける幾つかのページへの書込みを伴う。したがって、更新/挿入操作のレイテンシはコストが高く、大きく変動する。
図3は、本発明に従うシステムと方法がどのように上述の制限を克服するかを示す。子プロセスをフォークするとき、親プロセスのアドレス空間のサブセットのみが当該子プロセスにより継承される(当該子プロセスは例えばスナップショット・プロセスでありうる)。どのデータ集合を当該子プロセスがその実行のために必要とするかの情報に基づいて、親のアドレス空間内の陰影領域34のみが継承可能として設定される。したがって、コピー・オン・ライトは、あるとしても、陰影領域34内のメモリ・ページに対して行われた書込みに対してのみ発生する。親アドレス空間30内のページの残りはコピー・オン・ライトを受けない。これは、コピー・オン・ライトでコピーする必要があるかもしれない、かなり小さな全体メモリ領域44に対応する。
図4は、3つのテーブルR、S、およびUの2つの結合の物理実行計画の1例を示す。当該物理実行計画は、当該クエリが動作するセグメントの指定を含む。
特に、当該物理実行計画は、テーブルRのセグメントのTableScanを実施するステップS16と、テーブルSのセグメントのTableScanを実施するステップS18とを含む。その後、ステップS12で、ハッシュ結合がステップS16およびS18のマテリアライズされた結果に実施され、ステップS14でTableScanがテーブルUのセグメントに実施される。最後に、ステップS12の2パスハッシュ結合の結果に対して、ステップS10でTableScanがステップS14およびS12のマテリアライズされた結果に実施される。
クエリを実行するように構成されたスナップショット・プロセスを生成する前に、クエリ計画器が、物理計画において参照されるセグメントを当該スナップショット・プロセスに対して継承可能と設定するようにスナップショット・マネージャに要求する。
本発明の1実施形態では、システムは、どのセグメントがクエリを実行するスナップショット・プロセスにおいて必要とされるかを判定するOLAPクエリ計画器モジュールを備える。同様に、チェックポインタ・モジュールが、当該チェックポインタの子プロセスで実行される増分的チェックポイント生成アルゴリズムで必要とされるセグメントを決定する。
初期化の際、全てのデータベース・セグメントは継承可能として設定されない。同じことは、新たなセグメントが当該データベースに挿入されるときにも当てはまる。
OLAPクエリ計画器モジュールは、それが解析し、分析し、再書き込みするOLAPSQLクエリ・ステートメントを受け付け、データベースのメタデータを用いてクエリ解析ツリーを、物理実行計画、例えば、オペレータ関数呼出しおよびその引数からなるツリーに変換する。
チェックポインタ・モジュールが増分的チェックポイント生成アルゴリズムを実行する。時間がチェックポイント間隔に分割され、間隔のそれぞれの終わりで、当該間隔にわたって修正されたメモリ・セグメントを構成するスナップショットが、当該セグメントを継承可能として設定しfork()を呼び出すようにスナップショット・マネージャに要求することによって取得される。子チェックポインタ・プロセスはこれらのセグメントをディスクに出力する。全てのセグメントが成功裏に存続した場合には、子プロセスは成功ステータスを返す。そうでない場合、チェックポインタ・モジュールは、以前の間隔において存続に失敗したセグメントを、現在の間隔の終わりに存続すべき同一のスナップショットにおいて現在の間隔にわたって修正されたものとともに蓄積する。
図5は、幾つかのチェックポイント間隔にわたるチェックポイント生成のための方法の図を提供する。複数の4つのオブジェクト131、132、133および134が4つの時間間隔にわたって追跡される。第1の、第2のおよび第3の時間間隔は図5において参照番号111、112、および113で示されている。第1の時間間隔111は第1のチェックポイント121に先行する。第2のおよび第3の時間間隔112、113は第1の、第2のおよび第3のチェックポイント121、122、123の間の間隔として定義される。第4の時間間隔114は第3のチェックポイント123の後に来る。第1のおよび第4のオブジェクト131、134が第1の間隔111において変更されている(参照番号141、142で示す)。第4のオブジェクトは第2の間隔112において再度変更されている(143)。第3の間隔113において、第2のおよび第3のオブジェクト132、133が変更されている(144、145)。
(第1のチェックポイント121の時点で終了する)第1の時間間隔111において、変更集合は、第1のおよび第4のオブジェクト131、134、即ち、第1のチェックポイント121の前に修正されたオブジェクトから成る。第1のチェックポイントの時点で、即ち、第2の時間間隔が開始したとき、当該オブジェクトは、第1のチェックポイントに対して相対的に変化したとしてマークされる。第1のおよび第4のオブジェクト131、134から成る変更集合は第2の時間間隔の間に成功裏に存続している。
第3の時間間隔の発生時、第4のオブジェクトから成る変更集合が検出される。即ち、obj4が第1のおよび第2のチェックポイント121、122の間に修正されていることが検出される。第2の変更集合をディスクにフラッシュすることが試みられる。これが、(幾つかの未知の理由のため)ディスク書込み失敗の結果となる。第4の時間間隔114において、計算された変更集合は第2の、第3のおよび第4のオブジェクト132、133、134から成る。この変更集合は、第3の時間間隔113において存続に失敗した第4のオブジェクト134と、第3の時間間隔113において変更されたと検出された第2のおよび第3のオブジェクト132、133から成る変更集合との和から生ずる。
一般に、「関心事の分離」の概念を適用すると、オブジェクトの状態の一貫した不変レプリカが生成される限り、スナップショット取得方法はチェックポイント生成方法の関心事でない必要がある。
新たなチェックポイントの発生時、最後のチェックポイントに対して変化したオブジェクトのステータス変数を、来るべきチェックポイントの期間に対して不変であるとして全ての当該オブジェクトのマークとともに、これら全てを複数の並列更新の存在下で、保持する必要がある。
本発明の好適な実施形態では、本発明に従うデータベースの選択的なスナップショットを生成するためのシステムは、OLAPクエリ計画器モジュールおよびチェックポイント生成モジュールの両方に対してスナップショットを管理する責任を負うスナップショット・マネージャを備える。
図6は、クエリ計画器モジュール202、チェックポイント生成モジュール204およびスナップショット・マネージャ220を備えたシステム200を示す。クエリ計画器モジュール202は、どのセグメントがクエリ実行器プロセス230によりアクセスされるかを判定するための第1の判定ユニット203を備える。クエリ計画器モジュール202は、クエリ実行器プロセス230によりアクセスされたこれらのセグメント210をスナップショット・マネージャ220に渡すように構成される。同様に、チェックポイント生成モジュール204は、どのセグメントがチェックポイント生成プロセス232によりアクセスされるかを判定するための第2の判定ユニット203を備える。チェックポイント生成モジュール204はセグメント212をスナップショット・マネージャ220に渡すように構成される。クエリ実行器プロセス230およびチェックポインタ・プロセス232はスナップショット取得プロセスである。
スナップショット・マネージャ220は割当てユニット222およびスナップショット・ユニット224を含む。
当該実施形態はさらに、セグメントの継承可能ステータスが既に正しく設定されている場合に、madvise()システム・コールによりセグメントの継承可能ステータスを設定するのを回避するためのスナップショット・マネージャ220における以下の最適化を使用する。
クエリ計画器モジュール202は、その物理計画に出現するセグメントを決定するように構成される。チェックポイント生成モジュール204は、当該チェックポイント生成間隔において変化したセグメントを追跡する。それらの各々は次いでそのセグメントをスナップショット・マネージャ220に渡す。
スナップショット・マネージャ220は、どのセグメントがn番目のフォークで継承可能として設定されたかを覚えておくために集合Aを保持する。最初にA={}であり、データベース内の全てのメモリ・セグメントが継承可能でないと設定される。新たな子プロセスn+1が発生すると、An+1が当該新たな子プロセスで必要とされるセグメントの集合である場合、集合A−An+1は継承可能である必要がないセグメントを含み、したがってmadvise()がフラグMADV_DONTFORKでそれらの各々に対して呼び出される。当該集合An+1−Aは、継承可能として設定されなければならない新たな必要なセグメントを含み、madvise()がそれらの各々に対してフラグMADV_NORMALで呼び出される。最後に、fork()システム・コールが起動される。
好適な実施形態では、セグメント構造は、以下のメンバ、即ち、割り当てられたページ範囲のアドレスを保持するアドレス・メンバ、セグメントのサイズを保持するサイズ・メンバ、およびゼロに初期化されている32ビットの整数である、inheritable_statusと呼ばれるステータス変数を含む。スナップショット・マネージャは、セグメントのinheritable_statusをマークしテストするために使用されるinheritable_maskと呼ばれる32ビット整数のマスク変数を保持する。当該inheritable_mask変数は初期化の際に1に設定される。当該スナップショット・マネージャは、それを通じてセグメントを継承可能として設定できるインタフェースをエクスポートし、fork()が呼び出される。特に、当該スナップショット・マネージャは、スナップショット内のセグメントをマークするために使用される、inheritable_maskを左に循環させるsnapshot_init_begin()、当該セグメントを継承可能と設定するために使用されるsnapshot_init_segment(segment)、および最後に、実際にfork()を呼び出すsnapshot_init_end()をエクスポートする。
本発明の諸実施形態では、集合Aを実装するデータ構造はハッシュ・テーブルであることができる。
本発明の諸実施形態では、スナップショット・マネージャ220は、新たなスナップショット・プロセスの生成を初期化するための関数、セグメントを追加するための関数および/または当該スナップショット・プロセスの生成を終了するための関数をインタフェースに提供する。
図7a乃至7cは、新たなスナップショットの生成の開始(図7a)、セグメントのハッシュ・テーブルへの追加(図7b)および新たなスナップショットの生成の終了(図7c)に関する流れ図を示す。
初期化の際、ハッシュ・テーブルは空である。新たな子プロセスをフォークする際、関数snapshot_init_begin()がステップS10で呼ばれる。当該inheritable_maskはステップS12で1ビット左に循環される。
子において必要とされるセグメントを、ステップS20で関数snapshot_init_segment(segment)を起動することによりスナップショットに追加することができる。この関数の第1のステップS22で、セグメントが、そのinheritable_statusをinheritable_maskの値に設定することによってマークされる。その後、ステップS24で、当該セグメントがハッシュ・テーブル内で探索され、当該セグメントが当該テーブル内に無い場合、当該セグメントが挿入され、続いてステップS28で当該セグメントのメモリ領域に対してmadvise()がMADV_NORMALで呼ばれる。そうでない場合、当該セグメントが当該ハッシュ・テーブルに既に存在する場合、このセグメントに対してさらなる動作は必要でない。
全ての必要なセグメントがハッシュ・テーブル内にあると、ステップS30で関数snapshot_init_end()を起動することができる。次いで、ステップS32で当該ハッシュ・テーブルをトラバースし、ステップS34でinheritable_maskとのビット毎ANDを用いて各セグメントのinheritable_statusをテストする。その結果がゼロである場合、当該セグメントが、そのinheritable_statusをクリアし、madviseをMD_DONTFORKでそのメモリ領域に対して呼び出すことと共に除去される。さらなる最適化として、不要なセグメントの除去を、必要なセグメントを探索している間に当該不要なセグメントに遭遇したとき行うことができる。
以上の説明は本発明の実装方式にすぎず、本発明の範囲の保護はこれに限定されない。当業者を通じて任意の変更または置換えを容易に行うことができる。したがって、本発明の保護範囲は添付の特許請求の範囲の保護範囲に支配されるべきである。
204 チェックポインタ
220 スナップショット・マネージャ
230 子プロセス―クエリ実行器
232 子プロセス―チェックポインタ

Claims (15)

  1. 1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するためのシステムであって、セグメントは1つまたは複数のメモリ・ページを含み、前記システムは、
    −スナップショット・プロセス前記1つまたは複数のセグメントの一部のセグメントにアクセスするように構成されるかどうかを、前記スナップショット・プロセスがその実行のために前記一部のセグメントを必要とするかの情報に基づいて、判定するための判定ユニットと、
    −前記スナップショット・プロセスによりアクセスされるように構成されると前記判定ユニットが判定したアクセスされたセグメントに正のマッピング・ステータスを割り当て、前記スナップショット・プロセスによってアクセスするように構成されていないと前記判定ユニットが判定したアクセスされていないセグメントに負のマッピング・ステータスを割り当てるための割当てユニットと、
    前記スナップショット・プロセスをフォークし、前記スナップショット・プロセスが利用するスナップショットを生成するためのスナップショット・ユニットであって、前記スナップショット・プロセスは、前記1つまたは複数のセグメントのサブセットを含むアドレス空間を有、負のマッピング・ステータスを割り当てられたマップされていないセグメントは前記アドレス空間内でマップされず、親プロセスの書込みによるコピー・オン・ライトを受けない、スナップショット・ユニットと、
    を備える、システム。
  2. 前記判定ユニットは、前記スナップショット・プロセスが、前記スナップショット・プロセスの実行が開始される前に前記選択されたセグメントにアクセスするように構成されるかどうかを判定するように構成される、請求項1に記載のシステム。
  3. 前記判定ユニットは、アクティブなスナップショット・プロセスの実行中に、前記アクティブなスナップショット・プロセスが、前記アクティブなスナップショット・プロセスの残存実行時間中に前記選択されたセグメントにアクセスするように構成されるかどうかを判定するように構成される、請求項1または2に記載のシステム。
  4. 前記割当てユニットは、前記スナップショット・プロセスにより実行されるべき物理実行計画をコンパイルするように構成されたコンパイル・ユニットであって、前記コンパイルされた物理実行計画は、好適には、前記セグメントは前記物理実行計画の残存実行時間の間アクセスされないとき、前記物理実行計画内の位置にあるセグメントに対するアンマップ・コマンドを含む、コンパイル・ユニットを備える、請求項1乃至3の1項に記載のシステム。
  5. 正のマッピング・ステータスをアクセスされたセグメントに割り当てるステップは、前記アクセスされたセグメントのアドレスおよびサイズならびにMADV_NORMALパラメータを含む引数でmadviseオペレーティング・システム関数を呼び出すステップを含み、かつ/または、負のマッピング・ステータスをアクセスされていないセグメントに割り当てるステップは、前記アクセスされていないセグメントのアドレスおよびサイズならびにMADV_DONTFORKパラメータを含む引数でmadviseオペレーティング・システム関数を呼び出すステップを含む、請求項1乃至4の1項に記載のシステム。
  6. 1つまたは複数のセグメントとして格納されたデータベースの選択的なスナップショットを生成するための方法であって、セグメントは1つまたは複数のメモリ・ページを含み、前記方法は、
    −親プロセスが、スナップショット・プロセス前記1つまたは複数のセグメントの一部のセグメントにアクセスするように構成されるかどうかを、前記スナップショット・プロセスがその実行のために前記一部のセグメントを必要とするかの情報に基づいて、判定するステップと、
    −前記親プロセスが、前記セグメントが前記スナップショット・プロセスによりアクセスされるように構成されると判定された場合、正のマッピング・ステータスを前記セグメントに割り当てるステップおよび/または前記親プロセスが、前記セグメントが前記スナップショット・プロセスによりアクセスするように構成されていないと判定された場合前記セグメントに負のマッピング・ステータスを割り当てるステップと、
    −前記親プロセスが前記スナップショット・プロセスをフォークし、前記スナップショット・プロセスが利用するスナップショットを生成するステップであって、前記スナップショット・プロセスは、前記1つまたは複数のセグメントのサブセットを含むアドレス空間を有、負のマッピング・ステータスを割り当てられたマップされていないセグメントは前記アドレス空間内でマップされず、親プロセスの書込みによるコピー・オン・ライトを受けない、ステップと、
    を含む、方法。
  7. 正の継承可能ステータスをアクセスされたセグメントに割り当てるステップは、
    −前記アクセスされたセグメントのステータス変数をマスク変数とOR結合された前記ステータス変数に設定するステップと、
    −ハッシュ・テーブル内の前記アクセスされたセグメントにポインタを挿入するステップと、
    −前記ポインタが前記ハッシュ・テーブルに新たに挿入された場合、正のマッピング・ステータスを設定するステップと、
    を含み、
    前記親プロセスが前記スナップショットを生成するステップは、前記マスク変数を更新するステップを含み、前記マスク変数を更新するステップは特に、前記マスク変数のビット値を回転するステップを含む、
    請求項6に記載の方法。
  8. 前記スナップショットを生成するステップはさらに、前記マスク変数にAND結合された前記セグメントのステータス変数が0である場合、前記ハッシュ・テーブルのセグメントごとに負のマッピング・ステータスを設定するステップを含む、請求項7に記載の方法。
  9. 前記方法はチェックポイント生成方法であり、前記スナップショット・プロセスは、前記1つまたは複数のセグメントのサブセットを含む前記データベースの選択的なスナップショットを永続記憶に書き込むように構成される、請求項8に記載の方法。
  10. 前記親プロセスが、スナップショット・プロセスが前記1つまたは複数のセグメントの選択されたセグメントにアクセスするように構成されるかどうかを判定するステップは、前記選択されたセグメントが以前のチェックポイント間隔において変更されているかどうかを判定するステップを含む、請求項9に記載の方法。
  11. 前記方法はハイブリッド・オンライン・トランザクション処理、OLTP、およびオンライン分析処理、OLAP、データベースシステムを保守するための方法であり、前記方法は、前記親プロセスがスナップショットを生成した後に、
    −前記親プロセスがOLAPクエリを受信するステップと、
    −前記スナップショット・プロセスが前記OLAPクエリを実行するステップと、
    を含む、請求項8乃至10の1項に記載の方法。
  12. 前記親プロセスが前記OLAPクエリに基づいて前記スナップショット・プロセスをコンパイルするステップをさらに含む、請求項11に記載の方法。
  13. 前記親プロセスが、スナップショット・プロセスが選択されたセグメントにアクセスするように構成されるかどうかを判定するステップは、前記親プロセスが物理実行計画を生成するステップであって、特に前記親プロセスは正のマッピング・ステータスを前記物理実行計画内で参照される参照セグメントに割り当てる、ステップを含む、請求項11または12の1項に記載の方法。
  14. 前記スナップショット・プロセスがフォークされた後、前記スナップショット・プロセスによりアクセスされていない、アクセスされていないセグメントを決定するステップと、
    −前記アクセスされていないセグメントをアンマップするステップと、
    をさらに含む、請求項8乃至13の1項に記載の方法。
  15. 請求項8乃至14の1項に記載の方法を実行するための命令を含むプログラム・コードを格納した、コンピュータ可読記憶媒体。
JP2017516691A 2015-05-13 2015-11-02 データベースの選択的なスナップショットを生成するためのシステムおよび方法 Active JP6365858B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15167493.4A EP3093773B1 (en) 2015-05-13 2015-05-13 System and method for creating selective snapshots of a database
EP15167493.4 2015-05-13
PCT/EP2015/075405 WO2016180504A1 (en) 2015-05-13 2015-11-02 System and method for creating selective snapshots of a database

Publications (2)

Publication Number Publication Date
JP2017529632A JP2017529632A (ja) 2017-10-05
JP6365858B2 true JP6365858B2 (ja) 2018-08-01

Family

ID=53177192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516691A Active JP6365858B2 (ja) 2015-05-13 2015-11-02 データベースの選択的なスナップショットを生成するためのシステムおよび方法

Country Status (6)

Country Link
US (1) US10417097B2 (ja)
EP (2) EP3093773B1 (ja)
JP (1) JP6365858B2 (ja)
CN (1) CN107533549B (ja)
RU (1) RU2676018C2 (ja)
WO (1) WO2016180504A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3079064B1 (en) * 2015-04-07 2017-11-29 Huawei Technologies Co., Ltd. Method and apparatus for tracking objects in a first memory
EP3291103B1 (en) 2016-09-01 2019-11-06 Huawei Technologies Co., Ltd. System and method for creating a snapshot of a subset of a database
US11579978B2 (en) * 2018-02-14 2023-02-14 Rubrik, Inc. Fileset partitioning for data storage and management
CN108551478B (zh) 2018-03-29 2020-12-18 中国银联股份有限公司 一种事务处理方法、服务器及事务处理系统
CN109739688B (zh) * 2018-12-18 2021-01-26 杭州宏杉科技股份有限公司 快照资源空间管理方法、装置、电子设备
CN110781252B (zh) * 2019-11-05 2021-01-05 安徽数据堂科技有限公司 一种基于大数据的数据智能分析可视化方法
CN111240801A (zh) * 2020-01-06 2020-06-05 北京字节跳动网络技术有限公司 生成堆内存快照文件的方法、装置、介质和电子设备
US11403200B2 (en) * 2020-06-11 2022-08-02 Cisco Technology, Inc. Provisioning resources for monitoring hosts based on defined functionalities of hosts
CN113342605B (zh) * 2021-06-07 2024-02-02 北京许继电气有限公司 一种PostgreSQL数据库监控和溯源分析的方法和系统
CN115858046B (zh) * 2023-02-28 2023-07-21 荣耀终端有限公司 一种预加载内存页的方法、电子设备及芯片系统

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860201A (en) * 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
GB8925723D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
CA2285096C (en) * 1991-11-12 2000-05-09 Ibm Canada Limited-Ibm Canada Limitee Logical mapping of data objects using data spaces
US5835964A (en) * 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US6754788B2 (en) * 2001-03-15 2004-06-22 International Business Machines Corporation Apparatus, method and computer program product for privatizing operating system data
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
KR100439675B1 (ko) * 2002-10-24 2004-07-14 한국전자통신연구원 대용량 공유 저장장치를 위한 효율적인 스냅샷 수행방법
US7421562B2 (en) * 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US7159072B2 (en) * 2005-03-24 2007-01-02 Hitachi, Ltd. Method and apparatus for monitoring the quantity of differential data in a storage system
RU2325690C1 (ru) * 2006-09-21 2008-05-27 Андрей Евгеньевич Васильев Многомерная база данных и способ доступа к многомерной базе данных
US8117409B2 (en) * 2006-11-22 2012-02-14 Hitachi, Ltd. Method and apparatus for backup and restore in a dynamic chunk allocation storage system
US20080270739A1 (en) * 2007-04-27 2008-10-30 Hamilton Eric W Management of copy-on-write fault
US20090113111A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US8745311B2 (en) * 2008-03-31 2014-06-03 Spansion Llc Flash memory usability enhancements in main memory application
US8095770B2 (en) * 2009-05-08 2012-01-10 Oracle America Inc. Method and system for mapping data to a process
US8095772B2 (en) * 2009-05-08 2012-01-10 Oracle America, Inc. Large memory pages for shared libraries
US8799914B1 (en) * 2009-09-21 2014-08-05 Tilera Corporation Managing shared resource in an operating system by distributing reference to object and setting protection levels
EP2499576A2 (en) * 2009-11-13 2012-09-19 Richard S. Anderson Distributed symmetric multiprocessing computing architecture
US8868510B2 (en) * 2009-12-03 2014-10-21 Sybase, Inc. Managing data storage as an in-memory database in a database management system
GB2480599A (en) 2010-05-17 2011-11-30 Tech Universit T Muenchen Hybrid OLTP and OLAP database
CN101907989A (zh) * 2010-06-01 2010-12-08 南京大学 一种基于移动代理的应用无缝迁移方法
US9063866B1 (en) * 2010-07-12 2015-06-23 Vmware, Inc. Page table data structure for online classification of memory pages based on activity level
US8458218B2 (en) * 2010-09-13 2013-06-04 Sybase, Inc. Incremental data transfer in a database management system
US8812555B2 (en) * 2011-06-18 2014-08-19 Microsoft Corporation Dynamic lock-free hash tables
CN102402487B (zh) * 2011-11-15 2014-10-22 北京天融信科技股份有限公司 一种零拷贝接收报文的方法和系统
US8868843B2 (en) * 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9678863B2 (en) * 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
CN103180852B (zh) * 2012-08-09 2017-02-22 华为技术有限公司 分布式数据处理方法及装置
US9292294B2 (en) * 2012-09-27 2016-03-22 Intel Corporation Detection of memory address aliasing and violations of data dependency relationships
US10210175B2 (en) * 2012-09-28 2019-02-19 Oracle International Corporation Techniques for lifecycle state management and in-database archiving
US9569612B2 (en) * 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US20140351239A1 (en) * 2013-05-23 2014-11-27 Microsoft Corporation Hardware acceleration for query operators
EP3069276B1 (en) 2014-01-02 2019-03-13 Huawei Technologies Co., Ltd. Method and apparatus of maintaining data for online analytical processing in a database system
EP3155522B1 (en) * 2014-06-13 2020-10-21 Pivotal Software, Inc. Precisely tracking memory usage in multi-process computing environment
US9916095B2 (en) * 2015-03-27 2018-03-13 Kove Ip, Llc Fork-safe memory allocation from memory-mapped files with anonymous memory behavior
US11579774B2 (en) * 2015-01-20 2023-02-14 Ultrata, Llc Object memory data flow triggers
EP3079064B1 (en) 2015-04-07 2017-11-29 Huawei Technologies Co., Ltd. Method and apparatus for tracking objects in a first memory
EP3079079B8 (en) 2015-04-07 2022-04-27 Huawei Technologies Co., Ltd. Method, apparatus and data structure for copying values of a table of a database
US9804803B2 (en) * 2015-08-20 2017-10-31 Sap Se Data access in hybrid main memory systems
US9886398B2 (en) * 2015-12-01 2018-02-06 International Business Machines Corporation Implicit sharing in storage management

Also Published As

Publication number Publication date
JP2017529632A (ja) 2017-10-05
CN107533549B (zh) 2020-09-08
RU2017104121A (ru) 2018-08-08
EP3451197B1 (en) 2021-08-25
CN107533549A (zh) 2018-01-02
EP3093773A1 (en) 2016-11-16
EP3093773B1 (en) 2019-07-10
US20170371748A1 (en) 2017-12-28
EP3451197A1 (en) 2019-03-06
RU2017104121A3 (ja) 2018-08-08
WO2016180504A1 (en) 2016-11-17
RU2676018C2 (ru) 2018-12-25
US10417097B2 (en) 2019-09-17

Similar Documents

Publication Publication Date Title
JP6365858B2 (ja) データベースの選択的なスナップショットを生成するためのシステムおよび方法
US10474369B2 (en) Mapping guest pages to disk blocks to improve virtual machine management processes
US8935456B2 (en) Method and system for integrating database memory management in virtual machines
US9886443B1 (en) Distributed NFS metadata server
US10380025B2 (en) Accessing objects via object references
US9201806B2 (en) Anticipatorily loading a page of memory
US10846222B1 (en) Dirty data tracking in persistent memory systems
US10387453B1 (en) Database views for graphs using dynamic subgraphs
US20150178219A1 (en) Application Startup Page Fault Management in a Hardware Multithreading Environment
JP6198992B2 (ja) 計算機システム、及び、データベース管理方法
US20200342008A1 (en) System for lightweight objects
US20120158679A1 (en) Controlling Database Trigger Execution with Trigger Return Data
US11249853B2 (en) System and method for creating a snapshot of a subset of a database
US10416931B2 (en) Fault tolerance in shared memory
US8683145B2 (en) Packed storage commands and storage command streams
US11341058B2 (en) Handling software page faults using data from hierarchical data structures
Shaull Retro: a methodology for retrospection everywhere
US9189297B2 (en) Managing shared memory
WO2015163898A1 (en) Structuring pages images in a memory
US11074181B2 (en) Dirty data tracking in persistent memory systems
US8756193B2 (en) System and method for persisting object pointers
US7987470B1 (en) Converting heavyweight objects to lightwight objects

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180305

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180619

R150 Certificate of patent or registration of utility model

Ref document number: 6365858

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250