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

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

Info

Publication number
JP6764175B2
JP6764175B2 JP2019025453A JP2019025453A JP6764175B2 JP 6764175 B2 JP6764175 B2 JP 6764175B2 JP 2019025453 A JP2019025453 A JP 2019025453A JP 2019025453 A JP2019025453 A JP 2019025453A JP 6764175 B2 JP6764175 B2 JP 6764175B2
Authority
JP
Japan
Prior art keywords
interruption
processing
query
state
completion time
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
JP2019025453A
Other languages
English (en)
Other versions
JP2020135189A (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
University of Tokyo NUC
Original Assignee
Hitachi Ltd
University of Tokyo NUC
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, University of Tokyo NUC filed Critical Hitachi Ltd
Priority to JP2019025453A priority Critical patent/JP6764175B2/ja
Priority to US16/576,947 priority patent/US11494383B2/en
Publication of JP2020135189A publication Critical patent/JP2020135189A/ja
Application granted granted Critical
Publication of JP6764175B2 publication Critical patent/JP6764175B2/ja
Active 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • 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
    • 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/24549Run-time optimisation
    • 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/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、概して、データベース管理に関し、特に、クエリ処理の中断に関する。
データベースに対するクエリに従うクエリ処理の中断と再開が望ましいケースが考えられる。クエリ処理の中断と再開に関する技術として、非特許文献1及び2に開示の技術がある。
非特許文献1によれば、ヒープ(実行状態)を出力して中断しヒープを読み込んで再開するDumpStateと、実行中の処理を放棄して中断し実行途中で適宜設定されたチェックポイントから処理を再開するGoBackという二種類の中断再開方法から、トータルコストが最小になる中断再開方法が選択され、選択された中断再開方法に従ってクエリ処理の中断と再開が行われる。
非特許文献2によれば、中断時には、中間結果の一部がダンプされ、再開時には、ダンプされた部分以外の部分についてスキャンが行われる。
Badrish Chandramouli et al., "Query Suspend and Resume", SIGMOD'07, June 12-14, 2007, Beijing, China Surajit Chaudhuri, et al., "Stop-and-Restart Style Execution for Long Running Decision Support Queries", VLDB ’07, September 23-28, 2007, Vienna, Austria
クエリ処理の中断を中断完了時刻までに完了することが必要とされるケースが考えられる。例えば、消費電力が増加する日中に行われる第1のクエリ処理の性能低下を避けるため、或いは、日中における消費電力の更なる増加を避けるために、夜間に行われる第2のクエリ処理の中断を日中の開始時刻までに完了するといったケースが考えられる。
しかし、非特許文献1及び2のいずれも、クエリ処理の中断を中断完了時刻までに完了するための技術を開示も示唆もしていない。このため、例えば、上述の第2のクエリ処理の中断を日中の開始時刻までに完了することができず、結果として、日中の上述の第1のクエリ処理の性能低下や、日中の消費電力の更なる増加といった問題が生じ得る。
クエリ処理を直ちに中断する方法が考えられるが、当該方法では、クエリ処理の進捗率の低下や、ダンプするデータの量の増加が懸念される。
データベース管理システム(DBMS)を、クエリ処理の中断完了時刻を先の時刻とした中断命令を受け付け可能とする。DBMSは、クエリ処理の実行中に、当該クエリ処理について上記中断命令を受け付けた場合、中断命令が受け付けられてから中断完了時刻までの間に、予想完了時刻が中断完了時刻以前である対象オブジェクトがあれば、当該対象オブジェクトの状態をスナップショット中断を意味する状態に変更する。対象オブジェクトには、中断命令が受け付けられたときに実行中を意味する状態である処理オブジェクトが少なくとも該当する。スナップショット中断を意味する状態の処理オブジェクトであるスナップショット中断オブジェクトがあれば、DBMSは、中断完了時刻まで当該スナップショット中断オブジェクトを実行する。
クエリ処理の進捗率の低下や中断時に保存するデータの量を抑えて当該クエリ処理の中断を中断完了時刻までに完了することができる。
実施例1の概要を示す。 実施例1に係るDBMSを実行するDBサーバを含むシステム全体の構成例を示す。 クエリ処理(中断と再開を含まない)の一例を示す。 クエリ処理(中断と再開を含む)の一例を示す。 クエリの一例を示す。 実行プランの一例を示す。 実施例1に係るオブジェクト一覧情報の一例を示す。 実施例1に係るトランザクション管理情報の一例を示す。 実施例1に係る状態管理情報(中断命令が受け付けられる前の情報)の一例を示す。 ダンプの一例を示す。 クエリ処理のフローを示す。 処理オブジェクトの実行のフローの一部を示す。 処理オブジェクトの実行のフローの残りを示す。 中断判定処理のフローを示す。 実施例1に係る状態管理情報(中断命令が受け付けられる後の情報)の一例を示す。 実施例2に係る匿名加工処理の流れの概要図である。 実施例2に係るトランザクション管理情報の一例を示す。 実施例2に係るデータ配置の一例を示す。 実施例2に係るオブジェクト一覧情報の一例を示す。 実施例2に係る状態管理情報の一例を示す。 実施例3に係るクエリ処理の一部を示す。 実施例3に係る状態管理情報の一例を示す。
以下の説明では、データベース管理システムを「DBMS」と言い、DBMSを有するサーバを「DBサーバ」と言う。DBMSに対するクエリの発行元は、DBMSの外部のコンピュータプログラム(例えばアプリケーションプログラム)でよい。外部のコンピュータプログラムは、DBサーバ内で実行されるプログラムでもよいし、DBサーバのクライアントで実行されるプログラムでもよい。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、一つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスである。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスであるが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「kkk部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
また、以下の説明では、「クエリ処理」とは、クエリに従う処理である。クエリ処理は、複数の処理オブジェクトから構成される。「処理オブジェクト」は、クエリ処理の一部である。複数の処理オブジェクトの各々のコストは、同一でも異なっていてもよい。処理オブジェクトのコストとしては、例えば、処理オブジェクトの実行に要する時間である「時間コスト」や、処理オブジェクトの消費電力である「電力コスト」がある。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別する場合は、参照符号を使用することがある。例えば、処理オブジェクトを区別しない場合には、「処理オブジェクト12」と言い、処理オブジェクトを区別する場合には、「処理オブジェクト12A」、「処理オブジェクト12B」のように言うことがある。
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。なお、以下の説明により本発明が限定されるものではない。
図1は、実施例1の概要を示す。
DBMS130は、クエリ処理の中断完了時刻を先の時刻とした中断命令を当該クエリ処理の実行中に受け付けることができるよう構成されている。
本実施例では、クエリ処理は、DBMS130が受け付けたクエリに基づき生成されたクエリ実行プラン(以下、実行プラン)に従い行われる。DBMS130は、実行プランに従い、クエリ処理を構成する複数の処理オブジェクトを実行するようになっている。実行プランの一例が、図1に例示の実行プラン11である。実行プラン11に従う複数の処理オブジェクトの一例が、図1に例示の複数の処理オブジェクト12である。「HJ」はハッシュ結合を意味し、「Agg.」は集約を意味する。また、図1の例によれば、4並列(N並列の一例)でクエリ処理を実行すること、すなわち、最大四つの処理オブジェクト12を並列に実行することができる。
処理オブジェクトの状態として、例えば、“実行完了”、“実行中”及び“未実行”がある。そして、“未実行”として、少なくとも“実行不可”と“実行可”がある。
DBMS130が、クエリ処理の実行中に時刻T1で中断命令を受け付けたとする。この場合、DBMS130は、時刻T1から中断完了時刻T2までの間に、予想完了時刻が中断完了時刻T2以前である対象オブジェクトがあれば、当該対象オブジェクトの状態を“中断(SS)”(スナップショット中断を意味する状態)に変更する。スナップショット中断とは、区切りのよい状態まで処理オブジェクトの実行を進めて、実行状態を保存する処理オブジェクトの中断方法である。例えば、本実施例では、スキャンした対象データに対する処理をすべて実施することである。「対象オブジェクト」には、中断命令が受け付けられたときに状態が“実行中”である処理オブジェクト12A〜12Dが少なくとも該当する。
具体的には、例えば、DBMS130は、処理オブジェクト12A〜12Dの各々について、当該処理オブジェクト12の予想完了時刻が中断完了時刻T2以前か否かの判定である中断判定を実行する。図1の例によれば、処理オブジェクト12A、12B及び12Dについて、それぞれ中断判定の結果が真となる。DBMS130は、処理オブジェクト12A、12B及び12Dの各々の状態を“中断(SS)”に変更する。
なお、「中断完了時刻」は、本実施例では、中断が完了する時刻として中断命令で指定されている時刻であるが、それに代えて、時刻T1から一定時間経過した時点での時刻でもよい。中断完了時刻T2の指定は、時刻それ自体の指定でもよいし、時刻T1又は中断命令のタイムスタンプ(例えば送信時刻)からの経過時間の指定でもよい。また、「中断判定」は、本実施例では時刻T1で行われるが、それに代えて、時刻T1又は中断命令のタイムスタンプから一定時間経過した時刻、或いは、中断完了時刻T2から一定時間前の時刻でもよい。
スナップショット中断オブジェクト(状態が“中断(SS)”である処理オブジェクト)があれば、DBMS130は、中断完了時刻T2まで当該スナップショット中断オブジェクトを実行する。図1の例によれば、処理オブジェクト12A、12B及び12Dの各々が、スナップショット中断オブジェクトである。
本実施例によれば、時刻T1において実行中の処理オブジェクトについて少なくとも中断判定が行われ、中断判定の結果が真であれば当該処理オブジェクトの実行が継続する。このため、クエリ処理の進捗率の低下や中断時に保存するデータの量を抑えて当該クエリ処理の中断を中断完了時刻までに完了することができる。また、動的な電力変動(例えば、外的なピークカット要請)に応じた処理管理を効率的に行なうことも期待できる。
DBMS130は、予想完了時刻が中断完了時刻よりも後である対象オブジェクトがあれば、当該対象オブジェクトの状態を“中断(DP)”(ダンプ中断を意味する状態)に変更する。ダンプ中断オブジェクト(状態が“中断(DP)”である処理オブジェクト)があれば、DBMS130は、当該オブジェクトの実行途中の情報を含んだダンプを保存することであるダンプ保存を実行する。図1の例によれば、「予想完了時刻が中断完了時刻よりも後である対象オブジェクト」は、中断判定の結果が偽である処理オブジェクト12Cであり、処理オブジェクト12Cの状態が、“中断(DP)”に変更される。結果として、処理オブジェクト12Cについて、ダンプ保存が実行される。
少なくとも一つのスナップショット中断オブジェクトは、当該オブジェクトを実行する計算リソースの負荷又はその他の原因によって、当該オブジェクトの予想完了時刻までに完了しない可能性が考えられる。
そこで、本実施例では、DBMS130は、各スナップショット中断オブジェクトについて、当該オブジェクトがそれの予想完了時刻までに完了するかを監視する。DBMS130は、予想完了時刻が現在時刻より前のスナップショット中断オブジェクトがあれば、当該スナップショット中断オブジェクトの状態を“中断(DP)”に変更する。図1の例によれば、予想完了時刻が現在時刻T3よりも前のスナップショット中断オブジェクト12Aがあり、このため、DBMS130は、当該オブジェクト12Aの状態を“中断(DP)”に変更する。この場合、結果として、処理オブジェクト12Aについて、ダンプ保存が実行される。
また、DBMS130は、予想完了時刻が現在時刻より後のスナップショット中断オブジェクトがあれば、当該スナップショット中断オブジェクトの進捗を基に予想完了時刻を補正する。DBMS130は、当該補正された予想完了時刻が現在時刻よりも前であれば、当該スナップショット中断オブジェクトの状態を“中断(DP)”に変更する。これにより、中断時刻までにクエリ処理を中断することの確実性を高めることができる。
以下、本実施例を詳細に説明する。
図2は、実施例1に係るDBMSを実行するDBサーバを含むシステム全体の構成例を示す。
DBサーバ100は、計算機システムの一例である。DBサーバ100は、例えば、パーソナルコンピュータ、ワークステーション又はメインフレームであってよいし、これらの計算機において仮想化プログラムによって構成された仮想的な計算機であってよいし、クラウド環境(例えば、インターフェースデバイス、記憶デバイス及びプロセッサといった複数の計算リソースを含んだ計算リソースプール)上で実現されてもよい。
DBサーバ100に、クライアント19及びストレージシステム110が接続される。
具体的には、例えば、DBサーバ100に、ネットワーク160Aを介してクライアント19が接続される。クライアント19は、クエリ発行元の一例であり、DBサーバ100にデータベースに対するクエリを発行する。
また、例えば、DBサーバ100に、ネットワーク160Bを介してストレージシステム110が接続される。ストレージシステム110は、記憶装置を有している。ストレージシステム110は、DBサーバ100からI/O(Input/Output)要求を受けた場合には、当該I/O要求に応答して、記憶装置に対するデータのI/Oを行う。ストレージシステム110には、データベースの一部として、例えば、ORDERS表50A(検索対象の表の一例)、及び、LINEITEM表50B(検索対象の表の一例)が格納されている。また、クエリ処理において、ストレージシステム110には、作業表51(クエリ処理中の中間結果(例えば、スキャンされた表の一部)が格納される一時表)がDBMS130により格納される。また、クエリ処理の中断が行われる場合、ストレージシステム110には、クエリ処理の中断において出力されクエリ処理の再開に使用される情報である中間管理情報52もDBMS130により格納される。
ネットワーク160A及び160Bは、通信速度及び消費電力の異なるネットワークでもよいし、ネットワーク160A及び160Bが同一のネットワークでもよい。例えば、ネットワーク160A及び160Bの各々は、FC(Fibre Channel)ネットワーク、イーサネット(登録商標)、InfiniBand及びLocal Area Network)のいずれでもよい。
DBサーバ100は、インターフェース装置101、メモリ150及びそれらに接続されたプロセッサ102を有する。DBサーバ100は、キーボードやポインティングデバイス等の入力デバイス(図示しない)と液晶ディスプレイ等の出力デバイス(図示しない)を有してもよい。入力デバイス及び出力デバイスは、プロセッサ102に接続されていてよい。入力デバイスと出力デバイスは一体であってもよい。
インターフェース装置101が、ネットワーク160A及び160Bに接続される。インターフェース装置101経由で(ネットワーク160A及び160B経由で)、DBサーバ100は、ストレージシステム110及びクライアント19と通信することができる。
メモリ150が、プロセッサ102によって実行されるプログラムと、プログラムが使用するデータを記憶する。プログラムとして、例えば、DBMS130及びOS(Operating System)120がある。DBMS130が、クライアント19からクエリを受け、そのクエリを実行する。そのクエリの実行において、DBMS130は、データベースからデータを読み込むために、又は、データベースにデータを書き込むために、I/O要求をOS120に発行する。OS120は、そのI/O要求を受け、そのI/O要求に基づくI/O要求をストレージシステム110へ発行し、結果をDBMS130に返す。
DBMS130は、クエリ受付部131、プラン生成部132、クエリ実行部133、中断命令受付部134、及び中断再判定部135を有する。なお、DBMS130の構成は一例に過ぎない。例えば、ある構成要素は複数の構成要素に分割されていてもよく、複数の構成要素が一つの構成要素に統合されていてもよい。例えば、中断命令受付部134は、クエリ実行部133の中に存在してもよい。
クエリ受付部131は、データベースに対するクエリをクライアント19から受け付ける。クエリは、例えば、SQL(Structured Query Language)によって記述される。
プラン生成部132は、受け付けたクエリに基づいて当該クエリを実行するために必要な実行プラン11を生成する。実行プラン11は、例えば、一つ以上のデータベース演算子と、データベース演算子の実行順序の関係を含む情報である。実行プラン11は、例えば、データベース演算子をノード、データベース演算子の実行順序の関係をエッジとする木構造で表されることがある。
クエリ実行部133は、生成された実行プラン11に基づいてクエリ処理を実行し、当該クエリ処理の結果を示す応答をクライアント19に返す。なお、クエリ処理において、クエリ実行部133は、データベース演算子を実行するためのタスクを生成し、生成されたタスクを実行することで、そのタスクに対応したデータベース演算子に必要なデータの読込み要求を発行することができる。クエリ実行部133は、一のタスクで複数のデータベース演算子を実行してもよい。タスクの実装としては、例えば、OS120が実現するプロセスやカーネルスレッド等のほか、ライブラリ等が実現するユーザスレッドを用いてよい。
中断命令受付部134は、クエリ処理の中断完了時刻を現在時刻より先の時刻とした中断命令を受け付ける。
中断再判定部135は、予想完了時刻が現在時刻より後のスナップショット中断オブジェクトがあれば、当該スナップショット中断オブジェクトの進捗を基に予想完了時刻を補正する。中断再判定部135は、当該補正された予想完了時刻が現在時刻を過ぎていれば、当該スナップショット中断オブジェクトの状態を“中断(DP)”に変更する。
DBMS130は、オブジェクト一覧情報190、トランザクション管理情報191、状態管理情報192、クエリ実行データ193、及び、オブジェクト実行データ194を管理する。クエリ処理は、一つ以上のトランザクション処理を含んでおり、オブジェクト一覧情報190、トランザクション管理情報191及び状態管理情報192は、トランザクション処理毎に存在する。クエリ実行データ193は、クエリ毎に存在する。図示しないが、クエリと当該クエリに対応した一つ以上のトランザクション処理(TxID)との対応関係を示す情報もDBMS130により管理されてよい。
オブジェクト一覧情報190は、当該情報190に対応するトランザクション処理に属する全ての処理オブジェクトの各々に関する情報を保持する。
トランザクション管理情報191は、当該情報191に対応するトランザクション処理に関する情報を保持する。本実施例では、トランザクション処理は、クエリ処理の開始から完了までにクライアント19から発行される複数の要求(例えば、後述のCONNECT、PREPARE、OPEN、FETCH、CLOSE、DISCONNECT)にそれぞれ対応した複数の処理である。
状態管理情報192は、当該192に対応したトランザクション処理に属する全ての処理オブジェクトの各々の状態に関する情報を保持する。
クエリ実行データ193は、クエリ処理の実行において得られたデータ、本実施例では、ハッシュ表である。
オブジェクト実行データ194は、クエリ処理の並列度N分存在する。例えば、N=4であれば、第1〜第4のオブジェクト実行データ194が存在する。オブジェクト実行データ194は、処理オブジェクトの実行において得られたデータである(詳細の一例は図10を参照して後に説明する)。
以上が、本実施例に係るシステム全体についての説明である。
図2に示したシステムにおいて、一つのクエリの受け付けは、図3に例示するように、CONNECT要求の受け付けにより開始される。DECLARE CURSOR要求及びOPEN要求の受け付けにより実行プランが生成される。一つ以上のFETCH要求の受け付けにより実行プランに基づくクエリ処理が実行される。CLOSE要求及びDISCONNECT要求の受け付けにより当該一つのクエリについての処理が終了する。
ここで、図4に例示するように、クエリ処理の実行中に(例えば、FETCH要求が受け付けられてからFETCH応答(FETCH要求に対する応答)が返る前に)中断命令受付部134が当該クエリ処理の中断命令を受け付けると、当該クエリ処理が中断する。中断命令は、クライアント19から発行されてもよいし、DBサーバ100内で発行されてもよい。中断命令には、例えば、TxID(中断対象とされるトランザクション処理のID)と、中断所要時間tとが指定される。ここでは、TxIDは、FETCH要求に従うトランザクション処理のIDである。
中断命令に応答して、クエリ実行部133が、中断命令が受け付けられてから中断所要時間t以内にクエリ処理を中断し、中断されたトランザクション処理のTxIDを含みクエリ処理の中断を示す中断通知を、クエリ処理の再開主体に送信する。本実施例では、「再開主体」は、クエリ発行元の一例であるクライアント19であり、「中断通知」は、FETCH応答が兼ねる。このように、本実施例では、効率的なクエリ中断の通知が行われる。クライアント19は、中断通知を兼ねたFETCH応答を受けた場合、DISCONNECT要求を送信する。
中断通知に含まれているTxIDが、再開主体によって、クエリ処理の再開に使用される。本実施例では、FETCH応答から得られたTxIDを含むFETCH要求(言い換えれば、再開指示を兼ねたFETCH要求)がクライアント19から送信され、当該FETCH要求に応答して、再開処理(当該TxIDを用いて中間管理情報52がクエリ実行部133により読み込まれることを含む処理)を経て、クエリ処理が再開する。
図5は、本実施例におけるクエリの一例を示す。図6は、図5に例示のクエリに基づく実行プランの一例を示す。実行プランは、複数(又は一つ)のブロック60に分割される。ブロック60は、同時実行可能な処理範囲であり一つ以上のデータベース演算子で構成されている。各ブロック60について、当該ブロック60を構成する一つ以上の処理オブジェクトが存在する。
図7は、オブジェクト一覧情報190の一例を示す。
オブジェクト一覧情報190は、当該情報190に対応するトランザクション処理のIDを示すTxID701の他に、当該トランザクション処理に属する処理オブジェクト毎にエントリを有する。各エントリは、オブジェクトID702、時間コスト703、ブロックID704及び対象データ705といった情報を保持する。以下、一つの処理オブジェクトを例に取る(図7の説明において「注目オブジェクト」)。
オブジェクトID702は、注目オブジェクトのIDを示す。図7の例によれば、注目オブジェクトのIDは、注目オブジェクトが属するブロックのIDと、当該ブロックにおける注目オブジェクトの通し番号との組合せである(例えば、注目オブジェクトが、ブロックAにおける1番目の処理オブジェクトであれば、オブジェクトIDは、“A−1”である)。時間コスト703は、注目オブジェクトの時間コスト、すなわち、注目オブジェクトの実行に要する時間(例えば単位は「分」)を示す。ブロックID704は、注目オブジェクトが属するブロックのIDを示す。対象データ705は、注目オブジェクトの実行によってアクセスされるデータを示す。図7において、「セグメント」とは、表や索引のようなデータベース構成要素の一部を意味、具体的には、例えば、一つ以上のレコードの全部又は一部、或いは、一つ以上のカラムの全部又は一部を意味する。本実施例では、「セグメント」とは、複数のレコードを意味する。
注目オブジェクトの時間コストは、既存技術を利用して算出可能である。例えば、注目オブジェクトの時間コストは、下記のうちのいずれかにより算出可能である。
(x1)読込みサイズ÷I/Oスループット
(x2)件数÷処理スループット
(x3)(x1)及び(x2)のうちの大きい方
「読込みサイズ」は、注目オブジェクトの対象データ705が示すデータ(例えばLINEITEM表のセグメント#1〜#10)のサイズである。「件数」は、注目オブジェクトの対象データ705が示すセグメントに格納したレコードの総数である。「I/Oスループット」は、単位時間当たりに入出力されるデータのサイズである。「処理スループット」は、単位時間当たりに処理されるレコードの数である。I/Oスループットや処理スループットは、事前に定義された値でもよいし、過去の実行履歴から算出された値でもよい。
また、本実施例では、クエリに関する全ての処理オブジェクトはクエリ処理の開始前に予めリストアップされるが、それに代えて、処理オブジェクトは、クエリ処理の実行に応じて動的に特定されてもよい。例えば、クエリ処理の実行において、クエリ実行部133は、処理オブジェクトを生成し、生成された処理オブジェクトを実行することでその処理オブジェクトに必要なデータの読込み要求を発行し、その結果に基づき新たな処理オブジェクトを実行する必要がある場合に当該新たな処理オブジェクトを生成してもよい。
図8は、トランザクション管理情報191の一例を示す。
トランザクション管理情報191は、当該情報191に対応するトランザクション処理IDを示すTxID801の他に、当該トランザクション処理に対応した要求の種別を示す要求種別802と、当該トランザクション処理が中断の対象であるか否かを示す中断フラグ803と、クエリ処理の中断完了時刻を示す中断完了時刻804といった情報を保持する。
例えば、当該トランザクション処理のTxIDと、中断所要時間“30分”を指定した中断命令を中断命令受付部134が23:00に受け付けた場合、中断命令受付部134は、当該TxIDと一致するTxID801を有するトランザクション管理情報191に関し、中断フラグ803を“ON”に変更し、中断完了時刻804“23:30”(受信時刻“23:00”に中断所要時間“30分”を加算した時刻)を設定する。つまり、中断命令が受け付けられたときに、中断完了時刻804が決まる。なお、時刻の単位は、時分以外の単位、例えば、年月日時分秒でもよい。
図9は、状態管理情報192の一例を示す。
状態管理情報192は、当該情報192に対応するトランザクション処理のIDを示すTxID901の他に、当該トランザクション処理に属する処理オブジェクト毎にエントリを有する。各エントリは、オブジェクトID902、状態903、開始時刻904及び終了時刻905といった情報を保持する。以下、一つの処理オブジェクトを例に取る(図9の説明において「注目オブジェクト」)。
オブジェクトID902は、注目オブジェクトのIDを示す。状態903は、注目オブジェクトの状態を示す。開始時刻904は、注目オブジェクトの開始時刻を示す。終了時刻905は、注目オブジェクトの終了時刻を示す。従って、注目オブジェクトが未完了の場合(すなわち、注目オブジェクトの状態903が“実行完了”ではない場合)、注目オブジェクトの終了時刻905は未設定である。
図9の例は、図1に例示の4並列が採用されている例である。図9の例によれば、ブロックAが完了しているため、ブロックBに属する処理オブジェクトの状態903は、“実行可”又は“実行中”である。また、ブロックCに属する処理オブジェクトの状態903は、ブロックBが完了するまで“実行不可”である。
また、本実施例では、クエリ処理は、ブロック単位で進む。或るブロックが開始されるときに、クエリ実行部133が、当該ブロックに属する各処理オブジェクトの開始時刻904を設定し、且つ、当該ブロックに属する処理オブジェクトが完了する都度に、当該処理オブジェクトの終了時刻905を設定する。
図10は、ダンプの一例を示す。
図10の例は、ブロックBに属するノード3〜5の実行においてメモリ150に生成されるデータを示す(図6参照)。すなわち、ノード3に属する処理オブジェクトが実行されることで、スキャンデータ1001が生成される。スキャンデータ1001と、ブロックAの結果として生成済のハッシュ表1002とを用いて、ノード4に属する処理オブジェクトが実行されることで、ハッシュ結合結果1003が生成される。ハッシュ結合結果1003を用いて、ノード5に属する処理オブジェクトが実行されることで、集計結果1004が生成される。
図10の例では、ハッシュ表1002が、上述のようにブロックAの結果として生成済であり、クエリ実行データ193に含まれているデータである。スキャンデータ1001、ハッシュ結合結果1003及び集計結果1004の少なくとも一部が、オブジェクト実行データ194に含まれるデータである。
ここで、ブロックBの実行中にクエリ処理の中断が行われるとする。
ブロックBに属する処理オブジェクトの中に、状態903が“中断(DP)”である処理オブジェクトがなければ、実行途中の情報であるダンプが存在しないため、ダンプの保存は行われない。なお、この場合、状態管理情報192(各“中断(SS)”が“実行完了”に変更された情報192)、及び、ハッシュ表1002(クエリの実行状態に関する情報の一例)は、ストレージシステム110内の中間管理情報52に保存される。また、完成した集計結果1004があれば、当該表1004が作業表51に保存される。
ブロックBに属する処理オブジェクトの中に、状態903が“中断(DP)”である処理オブジェクトがあれば、図10に例示のデータ1001、1003及び1004の全部又は一部を含んだダンプが、ストレージシステム110内の中間管理情報52に保存される。また、状態管理情報192(例えば、少なくとも一つの“中断(DP)”を含んだ情報192)も、ストレージシステム110内の中間管理情報52に保存される。なお、ダンプには、ハッシュ表1002は含まれないでよい。ブロックBに属する処理オブジェクトに固有の情報ではなく、クエリの実行状態に関する情報のためである。
以下、本実施例で行われる処理の一例を説明する。
図示は省略するが、本実施例では、例えば次の処理が行われる。すなわち、クエリ受付部131が、クエリをクライアント19から受け付ける。プラン生成部132が、当該クエリの実行プランを生成する。クエリ実行部133が、当該実行プランに基づきクエリ処理を実行し、当該クエリ処理の結果を示す応答をクライアント19に返す。図11〜16を参照して、クエリ処理に関する詳細説明を行う。
図11は、クエリ処理のフローを示す。
クエリ実行部133が、再開指示(例えば、再開指示を兼ねたFETCH要求)があるか否かを判定する(S1101)。S1101の判定結果が真の場合(S1101:Yes)、クエリ実行部133は、再開処理を実行する(S1102)。再開処理は、再開に必要な情報(例えば、再開指示に関連付けられているTxIDに対応した情報)を中間管理情報52から(必要があれば作業表51からも)取得し当該取得した情報をメモリ150に復元する処理を含む。
S1101の判定結果が偽の場合(S1101:No)、又は、S1102の後、クエリ実行部133は、空きスレッド(処理オブジェクトが割り当てられていないスレッド)ができるまで待つ(S1103)。空きスレッドがあればS1103はスキップされる。また、或る処理オブジェクトが終了したことで空きスレッドが生じれば、S1103は終了する。
或る処理オブジェクトが終了した結果(例えば或るブロックが終了した結果)、状態903が“実行不可”である少なくとも一つの処理オブジェクトが実行可能である場合、クエリ実行部133は、当該処理オブジェクトの状態903を“実行不可”から“実行可”に変更する(S1104)。
現在実行中のトランザクション処理(例えば、現在実行中のブロックが属するトランザクション処理)に対応した中断フラグ803が“ON”の場合、クエリ実行部133は、予想完了時刻が中断完了時刻以前の実行可オブジェクト(状態903が“実行可”の処理オブジェクト)があれば、当該実行可オブジェクトの状態903を“実行可”から“中断(SS)”に変更する(S1105)。なお、当該オブジェクトの予想完了時刻は、当該オブジェクトの開始時刻904に当該オブジェクトの時間コスト703を加算することで得られた時刻である。また、中断フラグ803が“OFF”の場合、S1105はスキップされる。
クエリ実行部133は、状態管理情報192から、条件を満たす処理オブジェクト、具体的には、状態903が“実行可”又は“中断(SS)”の処理オブジェクトを探す(S1106)。ここでは、“中断(SS)”が“実行可”よりも優先されてもよい。“中断(SS)”の方が、実行が開始されれば中断完了時刻804までに完了する可能性が高いことが期待されるからである。
条件を満たす処理オブジェクトが見つかれば(S1107:Yes)、クエリ実行部133は、当該処理オブジェクトに空きスレッドを割り当て、当該処理オブジェクトを実行する(S1108)。S1105〜S1108によれば、状態903が“実行中”の処理オブジェクトに加えて、元は状態903が“実行可”であった処理オブジェクトであり、予想完了時刻が中断完了時刻以前の処理オブジェクトについても実行が開始されることになる。これにより、中断完了時刻までになるべく多くの処理オブジェクトの実行を完了させられることが期待できる。なお、実行開始された処理オブジェクトのブローは、図12及び図13に示す通りである。
条件を満たす処理オブジェクトが見つからなければ(S1107:No)、クエリ実行部133は、実行中のスレッドがあるか否かを判定する(S1109)。S1109の判定結果が真の場合(S1109:Yes)、処理がS1103に戻る。
S1109の判定結果が偽の場合(S1109:No)、中断フラグ803が“ON”であれば、クエリ実行部133は、状態管理情報192及びハッシュ表1002を中間管理情報52に保存する(S1110)。これは、ダンプ保存が実行されるか否かに関わらず、クエリ処理の中断に共通の処理である。なお、中断フラグ803が“OFF”の場合、S1110はスキップされる。
図12及び図13は、処理オブジェクトの実行のフローを示す。図14は、図13における中断判定処理のフローを示す。図12〜図14の説明では、一つの処理オブジェクトを例に取る(図12〜図14の説明において「注目オブジェクト」)。
クエリ実行部133は、注目オブジェクトが属するトランザクション処理に対応した中断フラグ803が“ON”か否かを判定する(S1201)。
S1201の判定結果が偽の場合(S1201:No)、クエリ実行部133は、注目オブジェクトに対応した対象データ705を参照し(S1204)、対象データ705が示すデータのうち少なくとも一部の未処理データ(例えば少なくとも一つの未処理セグメント)が存在するか否かを判定する(S1203)。S1203の判定結果が偽の場合(S1203:No)、注目オブジェクトが完了する。S1203の判定結果が真の場合(S1203:Yes)、クエリ実行部133は、注目オブジェクトが属するデータベース演算子に従い、少なくとも一部のデータを処理する(S1204)。S1204の後、処理がS1201に戻る。注目オブジェクトの実行中に、注目オブジェクトが属するトランザクション処理のTxIDを指定した中断命令が受け付けられ、中断フラグ803が“ON”に変更されることがあり得る。
S1201の判定結果が真の場合(S1201:Yes)、クエリ実行部133は、中断判定処理を行う(S1301)。
中断判定処理の結果、注目オブジェクトの状態が“中断(SS)”であれば(S1302:Yes)、クエリ実行部133は、注目オブジェクトの実行を継続する。すなわち、クエリ実行部133は、注目オブジェクトに対応した対象データ705を参照し(S1303)、対象データ705が示すデータのうち少なくとも一部の未処理データが存在するか否かを判定する(S1304)。S1304の判定結果が真の場合(S1304:Yes)、クエリ実行部133は、注目オブジェクトが属するデータベース演算子に従い、少なくとも一部のデータを処理する(S1305)。S1305の後、処理がS1303に戻る。S1304の判定結果が偽の場合(S1304:No)、注目オブジェクトが完了する。なお、ここでは、注目オブジェクトが属するクエリ、ブロック、ノード及びデータベース演算子の少なくとも一つに依存する所定の情報がストレージシステム110内の作業表51及び中間管理情報52の少なくとも一方に保存されてもよい。しかし、当該所定の情報の情報量は、通常、いずれの処理オブジェクトのダンプの情報量よりも小さい。
中断判定処理の結果、注目オブジェクトの状態が“中断(SS)”であれば(S1302:Yes)、クエリ実行部133は、注目オブジェクトの実行継続を止め、注目オブジェクトの実行途中の情報を含んだダンプをストレージシステム110内の中間管理情報52に保存する(S1306)。なお、S1306で保存されるダンプは、注目オブジェクトが属するクエリ、ブロック、ノード及びデータベース演算子の少なくとも一つに依存する。
図14は、中断判定処理のフローを示す。
クエリ実行部133は、注目オブジェクトの開始時刻904に注目オブジェクトの時間コスト703を加えることで、注目オブジェクトの予想完了時刻を算出する(S1401)。注目オブジェクトの時間コスト703は、注目オブジェクトが属するデータベース演算子に関する情報を基に決定された値であるため、注目オブジェクトの予想完了時刻は、注目オブジェクトが属するデータベース演算子に関する情報を基に予想された完了時刻である。
クエリ実行部133は、S1401で算出された予想完了時刻が中断完了時刻804以前か否かを判定する(S1402)。
S1402の判定結果が真の場合(S1402:Yes)、クエリ実行部133は、注目オブジェクトの状態903を“中断(SS)”に変更する(S1403)。
一方、S1402の判定結果が偽の場合(S1402:No)、クエリ実行部133は、注目オブジェクトの状態903を“中断(DP)”に変更する(S1404)。
クエリ処理において一つ以上の処理オブジェクトの各々について中断判定処理が行われることで、図9に例示の状態管理情報192が、図15に例示の状態管理情報192となる。
図11〜図14によれば、状態903が“中断(SS)”の処理オブジェクトは、実行が継続され(又は新たに実行が開始され)、中断完了時刻までに当該オブジェクトが完了する。
しかし、処理オブジェクトの予想完了時刻は、必ずしも正確ではなく、故に、当該処理オブジェクトの完了は、予想完了時刻よりも遅れることがあり得る。この場合、クエリ処理の中断が中断完了時刻までに完了しない。
そこで、本実施例では、中断再判定処理を実行する上述の中断再判定部135が備えられている。
図16は、中断再判定処理の流れを示す。図16の説明では、状態903が“実行完了”以外の一つの処理オブジェクトを例に取る(図16の説明において「注目オブジェクト」)。本実施例に係る中断再判定処理は、クエリ処理とは別の処理であり、例えばクエリ処理の実行中に定期的に行われる。このため(例えばS1105が実行された場合)、S1301の中断判定処理が行われていない処理オブジェクトについて中断再判定処理が実行されることもあり得る。
中断再判定部135が、注目オブジェクトの状態903が“中断(SS)”であるか否かを判定する(S1601)。S1601の判定結果が偽の場合(S1601:No)、処理が終了する。
S1601の判定結果が真の場合(S1601:Yes)、中断再判定部135は、注目オブジェクトの開始時刻904に注目オブジェクトの時間コスト703を加えることで、注目オブジェクトの予想完了時刻を算出する(S1602)。なお、注目オブジェクトについてS1301で算出済の予想完了時刻がオブジェクト一覧情報190及び状態管理情報192の少なくとも一方の情報に関連付けられていて、当該情報から予想完了時刻が特定可能であれば、S1602がスキップされてよい。
中断再判定部135は、S1602で算出された予想完了時刻が現在時刻よりも前か否かを判定する(S1603)。但し、ここでの「現在時刻」は、中断完了時刻よりも前である。
S1603の判定結果が真の場合(S1603:Yes)、中断再判定部135は、注目オブジェクトの状態903を“中断(SS)”から“中断(DP)”に変更する(S1606)。S1603:Yesは、注目オブジェクトが完了しないまま現在時刻を過ぎたということを意味し、中断完了時刻までにクエリ処理を中断するためには、このような注目オブジェクトについては実行途中で中断した方が適切であるためである。
S1603の判定結果が偽の場合(S1603:No)、中断再判定部135は、注目オブジェクトの進捗を基に、注目オブジェクトの予想完了時刻を補正する(S1604)。具体的には、例えば、中断再判定部135は、スキャンしたセグメント数と処理したセグメント数から進捗率を算出し、進捗率と経過時間(注目オブジェクトの開始時刻904から現在時刻までの時間)から、残りの時間コストを算出し、当該時間コストを基に、補正後の予想完了時刻を算出する。
中断再判定部135は、補正後の予想完了時刻が現在時刻よりも前か否かを判定する(S1605)。
S1605の判定結果が偽の場合(S1605:No)、処理が終了する。すなわち、中断再判定部135は、注目オブジェクトの状態903が“中断(SS)”であることを維持する。
S1605の判定結果が真の場合(S1605:Yes)、中断再判定部135は、注目オブジェクトの状態903を“中断(SS)”から“中断(DP)”に変更する(S1606)。
このような中断再判定処理が実行されることで、中断命令が受け付けられた以降も実行が継続される(又は新たに実行が開始される)が中断完了時刻までに完了しない処理オブジェクトが生じないようにすることが期待できる。
以上が、実施例1の説明である。各処理オブジェクトについて、時間コストは、図7を参照して説明した方法に従い算出されることに代えて又は加えて、当該処理オブジェクトが属するデータベース演算子の実行時間を基に算出されてよい。各データベース演算子について、実行時間は、例えば下記のうちの少なくとも一つに基づく。以下、一つのデータベース演算子を例に取る(以下、「対象データベース演算子」と言う)。
・対象データベース演算子によってアクセスされる(I/Oがされる)表部分のサイズ、及び、当該表部分を格納した記憶領域の容量、の少なくとも一方。表部分のサイズは、例えば、当該表部分を構成するレコードの数と、一つのレコードのサイズとに基づく。表部分を格納した記憶領域の容量は、例えば、当該表部分を格納するページの数と、一つのページのサイズとに基づく。一つ以上の永続記憶デバイスに基づく論理的な記憶領域がデータベース領域として提供され、データベース領域が、複数のページで構成され、ページ単位でアクセスがされてよい。
・対象データベース演算子でのスループット、及び、対象データベース演算子でのレイテンシ、のうちの少なくとも一方。対象データベース演算子でのスループットは、例えば、対象データベース演算子に関わる複数の機器(例えば、ストレージシステム110、永続記憶デバイス、ネットワーク160及びDBサーバ100のうちの一つ以上の機器)にそれぞれ対応した複数のスループットのうちの最小値でよい。最小のスループットの機器が対象データベース演算子のボトルネックとなり得るからである。対象データベース演算子でのレイテンシも、例えば、対象データベース演算子に関わる複数の機器にそれぞれ対応した複数のレイテンシのうちの最小値でよい。
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
実施例2では、中断命令に、消費電力上限の指定が可能である。受け付けられた中断命令に消費電力上限が指定されている場合、クエリ処理の中断において消費される電力が消費電力上限以下に維持される。
以下、実施例2を詳細に説明する。
図17は、実施例2に係るトランザクション管理情報の一例を示す。
実施例2に係るトランザクション管理情報1700は、図8に示した情報801〜804に加えて、消費電力上限を示す情報である消費電力上限1701を保持する。受け付けられた中断命令に消費電力上限が指定されている場合、当該消費電力上限が、消費電力上限1701としてトランザクション管理情報1700に設定される。
図18は、実施例2に係るデータ配置の一例を示す。
実施例2に係るストレージシステム110は、ボリューム1801A〜1801E(複数のボリューム1801の一例)を提供する。ボリューム1801A〜1801Eの各々について、当該ボリューム1801の基になる一つ以上の永続記憶デバイスは、当該ボリューム1801以外のボリュームの基にはなっていない。各ボリューム1801について、当該ボリュームの基になる一つ以上の永続記憶デバイスの各々は、消費電力に関する状態として、アクティブ状態(I/O可能な状態)と、省電力状態(アクティブ状態に比べて消費電力が低い状態)とがある。省電力状態としては、複数種類の省電力状態が用意されていてもよい。
ボリューム1801A〜1801Eの各々にも、消費電力に関する状態として、アクティブ状態と省電力状態とがある。ボリューム1801の状態がアクティブ状態の場合、当該ボリューム1801の基になる各永続記憶デバイスの状態もアクティブ状態である。ボリューム1801の状態が省電力状態の場合、当該ボリューム1801の基になる各永続記憶デバイスの状態も省電力状態である。
図18の例によれば、ボリューム1801Aに、LINEITEM表50Bの一部が配置されており、ボリューム1801Bに、LINEITEM表50Bの残りが配置されている。ボリューム1801Cに、ORDERS表50Aの一部が配置されており、ボリューム1801Dに、ORDERS表50Aの残りが配置されている。ボリューム1801Eに、作業表51及び中間管理情報52が配置されている。
図19は、実施例2に係るオブジェクト一覧情報の一例を示す。
実施例2に係るオブジェクト一覧情報1900において、各エントリは、情報702〜705の他に、電力コスト1901及びボリュームID1902といった情報も保持する。以下、一つの処理オブジェクトを例に取る(図19の説明において「注目オブジェクト」)。
電力コスト1901は、注目オブジェクトに関わる消費電力の一例であり、注目オブジェクトの実行において消費されると予想される最大の消費電力を示す。電力コスト1901は、例えば、実行プランの生成において算出されてよい。また、電力コスト1901は、例えば、注目オブジェクトが属するデータベース演算子が関わる消費電力に基づいてよい。なお、各データベース演算子について、消費電力は、例えば下記に基づく。以下、一つのデータベース演算子を例に取る(以下、「対象データベース演算子」と言う)。
・対象データベース演算子の実行においてアクセスされる一つ以上の永続記憶デバイスの消費電力と、対象データベース演算子の実行に関わる計算リソースの消費電力と、当該一つ以上の永続記憶デバイスを有する一つ以上の装置の消費電力とのうちの少なくとも一つ。例えば、対象データベース演算子の消費電力は、対象データベース演算子に関わる複数の機器(例えば、ストレージシステム110、永続記憶デバイス、ネットワーク160及びDBサーバ100のうちの一つ以上の機器)にそれぞれ対応した複数の消費電力の総和でよい。
ボリュームID1902は、注目オブジェクトの実行によりアクセスされる一つ以上のボリュームの各々のIDを示す。
図20は、実施例2に係る状態管理情報の一例を示す。
実施例2に係る状態管理情報2000では、処理オブジェクトの状態903として、“中断(SS)”及び“中断(DP)”の他に、“中断(Wait)”がある。実施例1では、4並列で処理オブジェクトを実行可能であるが、本実施例では、4並列で処理オブジェクトを実行すると、当該オブジェクトが属するトランザクション処理に対応した消費電力上限1701を消費電力が超える場合には、一部の処理オブジェクトの状態903が、“中断(Wait)”とされる。
本実施例では、消費電力上限が指定されており、且つ、中断命令が受け付けられてから前記中断完了時刻までの間に、予想完了時刻が中断完了時刻以前である一つ又は複数のスナップショット中断オブジェクト対象オブジェクト(状態903が“実行可”又は“中断(SS)”である処理オブジェクト)がある場合、クエリ実行部133は、当該一つ又は複数の対象オブジェクトの各々に関わる電力コスト1901を基に、当該一つ又は複数の対象オブジェクトから、スナップショット中断を意味する状態に変更される一つ以上の対象オブジェクトを決定する。これにより、中断命令を受け付けてから中断完了時刻までの間のいずれの時点においても消費電力を消費電力上限1701以下に維持することができる。
また、本実施例では、クエリ実行部133は、複数の対象オブジェクトのうち、同じ計算リソースに関わる二つ以上の対象オブジェクトがあれば、当該二つ以上の対象オブジェクトのいずれも、スナップショット中断を意味する状態に変更される対象オブジェクトに決定する。これにより、クエリ処理の中断において消費電力上限1701以下の範囲でなるべく多くの処理オブジェクトを中断完了時刻までに実行することができる。
本実施例で行われる処理の詳細の一例は、例えば下記の通りである。なお、下記の説明において、スナップショット中断オブジェクトは、対象オブジェクトの一例である。
(A)並列実行可能な複数のスナップショット中断オブジェクトがある場合、クエリ実行部133は、当該複数のスナップショット中断オブジェクトのアクセス先がそれぞれ異なる複数のボリューム1801であれば、消費電力を、当該複数のスナップショット中断オブジェクトにそれぞれ対応した複数の電力コスト1901の和とする。消費電力が消費電力上限1701以下であれば、クエリ実行部133は、当該複数のスナップショット中断オブジェクトを並列に実行する。クエリ実行部133は、アクセス先ボリューム(計算リソースの一例)が同じである二つ以上のスナップショット中断オブジェクトをアクセス先ボリュームが異なる二つ以上のスナップショット中断オブジェクトよりも優先的に実行してもよい。
(B)並列実行可能な複数のスナップショット中断オブジェクトにそれぞれ対応した複数の電力コスト1901の和が消費電力上限1701を超えているとしても、当該複数のスナップショット中断オブジェクトのうちの二つ以上のスナップショット中断オブジェクトのアクセス先が同一のボリューム1801の場合、クエリ実行部133は、当該二つ以上のスナップショット中断オブジェクトの消費電力を、当該二つ以上のスナップショット中断オブジェクトにそれぞれ対応した二つ以上の電力コスト1901の最大値とし、当該最大値と、他のスナップショット中断オブジェクトの電力コスト1901とを基に、消費電力を算出してもよい。当該算出された消費電力が消費電力上限1701以下であれば、クエリ実行部133は、当該複数のスナップショット中断オブジェクトを並列に実行する。
(C)並列実行可能な複数のスナップショット中断オブジェクトがある場合、(A)及び(B)のうちのいずれにおいても、消費電力が消費電力上限1701を超える場合、クエリ実行部133は、一部のスナップショット中断オブジェクトの状態903を“中断(Wait)”に変更する。待ち時間は、当該一部のスナップショット中断オブジェクトの予想完了時刻に加算される。その結果、予想完了時刻が中断完了時刻を超えるスナップショット中断オブジェクトが生じたならば、クエリ実行部133は、当該オブジェクトの状態903を“中断(DP)”に変更する。図18図19の例によれば、ダンプ保存は、ボリューム1805Eへの書込みである。ダンプ保存が実行される場合、ダンプ保存について定義された最大消費電力であるダンプ電力が、消費電力に加算される。クエリ実行部133は、消費電力を、消費電力上限1701からダンプ電力を減じた電力以下に維持してもよい。クエリ処理の中断においてダンプ保存がいつ生じてもよいようにするためである。
この(A)乃至(C)の具体例の一つは、図17〜図20によれば、次の通りである。すなわち、アクセス先ボリュームが同じであるスナップショット中断オブジェクトB−2及びB−4と、アクセス先ボリュームが同じであるスナップショット中断オブジェクトB−1及びB−5のうち、クエリ実行部133は、スナップショット中断オブジェクトB−2及びB−4を並列に実行し、スナップショット中断オブジェクトB−1及びB−5を待ちとする(状態903を“中断(Wait)”に変更する)。スナップショット中断オブジェクトB−1及びB−5を実行しない理由は、スナップショット中断オブジェクトB−2及びB−4を並列実行した場合の消費電力は250Wであり、スナップショット中断オブジェクトB−1及びB−5を並列実行した場合の消費電力も250Wであり、それらを並列に実行すると消費電力は合計500Wとなり、消費電力上限1701“400W”を超えるからである。また、スナップショット中断オブジェクトB−1及びB−5の状態903を“中断(DP)”ではなく“中断(Wait)”とする理由は、スナップショット中断オブジェクトB−2及びB−4の予想完了時刻は23:12であり、その後にスナップショット中断オブジェクトB−1及びB−5を実行しても、中断完了時刻“24:00”までに完了する見込みがあるからである。なお、もし、スナップショット中断オブジェクトB−1及びB−5が中断完了時刻までに終らない見込みであれば、クエリ実行部133は、スナップショット中断オブジェクトB−1及びB−5の状態903を“中断(DP)”に変更する。
以上が、実施例2の説明である。なお、実行プラン生成において消費電力を見積もったり、実行対象とする処理オブジェクトを決定したりすることには、例えば、特開2017−045381号公報(或いは、US2018/0329477)に開示の技術を利用することができる。
以下、実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略又は簡略する。
実施例2でも、中断命令に、消費電力上限の指定が可能である。受け付けられた中断命令に消費電力上限が指定されている場合、クエリ処理の中断において消費される電力が消費電力上限以下に維持される。具体的には、例えば、実行プランのうち、一つ以上のデータベース演算子とそれの実行順序とで構成され中断完了時刻までに実行されるデータベース演算子までの実行プラン部分が、消費電力がより低い構成に変更される。
図21は、実施例3に係るクエリ処理の一部を示す。図22は、実施例3に係る状態管理情報の一例を示す。
図11のS1104の後、クエリ実行部133は、現在実行中のトランザクション処理(例えば、現在実行中のブロックが属するトランザクション処理)に対応した中断フラグ803が“ON”か否かを判定する(S2101)。S2101の判定結果が偽の場合(S2101:No)、処理がS1105に進む(なお、中断フラグ803が“OFF”のため、結果としてS1105がスキップされ処理がS1106に進む)。
S2101の判定結果が真の場合(S2101:Yes)、プラン生成部132が、中断命令が受け付けられてから中断完了時刻までの間において、状態903が“実行可”又は“実行不可”である一つ又は複数の処理オブジェクト(図22に例示の状態管理情報2200によれば、ブロックBとブロックCのいずれかに属する各処理オブジェクト)の各々の電力コスト1901を基に、中断完了時刻までに実行されるデータベース演算子までの実行プラン部分を変更する(S2102)。具体的には、例えば、プラン生成部132は、状態903が“実行可”又は“中断(SS)”である処理オブジェクトが属し状態903が“実行不可”である処理オブジェクトが属さないブロックの範囲で、実行プランを改めて探索し、現在の実行プランが示すアクセスパスよりも消費電力が小さいアクセスパスを示す実行プラン(部分的な実行プラン)が見つかれば、実行プランを新たに見つかった実行プランに変更する。
以上が、実施例3の説明である。なお、実行プラン(アクセスパス)の探索については、例えば、特開2018−169644号公報(或いは、US2018/0285421)に開示の技術を利用することができる。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
100…DBサーバ

Claims (12)

  1. クエリを受け付けるクエリ受付部と、
    前記受け付けたクエリに従う処理であるクエリ処理をデータベースに対して実行するクエリ実行部と、
    前記クエリ処理の中断完了時刻を先の時刻とした中断命令を受け付ける中断命令受付部と
    を備え、
    前記クエリ実行部は、前記中断命令が受け付けられた場合、前記中断命令が受け付けられてから前記中断完了時刻までの間に、
    予想完了時刻が前記中断完了時刻以前である対象オブジェクトがあれば、当該対象オブジェクトの状態をスナップショット中断を意味する状態に変更し、
    前記対象オブジェクトには、前記中断命令が受け付けられたときに実行中を意味する状態である処理オブジェクトが少なくとも該当し、
    スナップショット中断を意味する状態の処理オブジェクトであるスナップショット中断オブジェクトがあれば、前記中断完了時刻まで当該スナップショット中断オブジェクトを実行する、
    データベース管理システム。
  2. 前記クエリ実行部は、予想完了時刻が前記中断完了時刻よりも後である対象オブジェクトがあれば、当該対象オブジェクトの状態をダンプ中断を意味する状態に変更し、
    ダンプ中断を意味する状態の処理オブジェクトであるダンプ中断オブジェクトがあれば、前記クエリ実行部は、当該オブジェクトの実行途中の情報を含んだダンプを保存することであるダンプ保存を実行する、
    請求項1に記載のデータベース管理システム。
  3. 前記クエリ実行部は、予想完了時刻が現在時刻よりも前のスナップショット中断オブジェクトがあれば、当該スナップショット中断オブジェクトの状態をダンプ中断を意味する状態に変更する、
    請求項2に記載のデータベース管理システム。
  4. 中断再判定部を更に備え、
    前記中断再判定部は、予想完了時刻が現在時刻より後のスナップショット中断オブジェクトがあれば、
    当該スナップショット中断オブジェクトの進捗を基に予想完了時刻を補正し、
    当該補正された予想完了時刻が現在時刻よりも前であれば、当該スナップショット中断オブジェクトの状態をダンプ中断を意味する状態に変更する、
    請求項2に記載のデータベース管理システム。
  5. 前記対象オブジェクトには、実行可を意味する状態の処理オブジェクトも該当する、
    請求項1に記載のデータベース管理システム。
  6. 前記中断命令が受け付けられてから前記中断完了時刻までの間に、状態が実行可に変わった処理オブジェクトの予想完了時刻が中断完了時刻以前であれば、前記クエリ実行部は、当該処理オブジェクトの状態をスナップショット中断を意味する状態に変更する、
    請求項5に記載のデータベース管理システム。
  7. 一つ又は複数のデータベース演算子とデータベース演算子の実行順序の関係とを含む情報であり前記クエリ処理の実行のプランである実行プランを前記受け付けたクエリを基に生成するプラン生成部、
    を更に備え、
    各処理オブジェクトの予想完了時刻は、当該処理オブジェクトが属するデータベース演算子と当該処理オブジェクトの実行によってアクセスされるデータとを基に予想された完了時刻である、
    請求項1に記載のデータベース管理システム。
  8. 前記実行プランは、一つ以上のブロックに分割され、
    前記一つ以上のブロックの各々は、同時実行可能な処理範囲であり一つ以上のデータベース演算子で構成されており、
    前記一つ以上のブロックの各々について、当該ブロックを構成する一つ以上の処理オブジェクトが存在する、
    請求項7に記載のデータベース管理システム。
  9. 消費電力上限が指定されており、且つ、前記中断命令が受け付けられてから前記中断完了時刻までの間に、予想完了時刻が前記中断完了時刻以前である一つ又は複数の対象オブジェクトがある場合、前記クエリ実行部は、当該一つ又は複数の対象オブジェクトの各々に関わる消費電力を基に、当該一つ又は複数の対象オブジェクトから、スナップショット中断を意味する状態に変更される一つ以上の対象オブジェクトを決定する、
    請求項1に記載のデータベース管理システム。
  10. 前記クエリ実行部は、前記複数の対象オブジェクトのうち、同じ計算リソースに関わる二つ以上の対象オブジェクトがあれば、当該二つ以上の対象オブジェクトのいずれも、スナップショット中断を意味する状態に変更される対象オブジェクトに決定する、
    請求項9に記載のデータベース管理システム。
  11. 一つ又は複数のデータベース演算子とデータベース演算子の実行順序の関係とを含む情報であり前記クエリ処理の実行のプランである実行プランを前記受け付けたクエリを基に生成するプラン生成部、
    を更に備え、
    消費電力上限が指定されており、且つ、前記中断命令が受け付けられた場合、前記プラン生成部が、前記中断命令が受け付けられてから前記中断完了時刻までの間において、状態が実行可又はスナップショット中断である一つ又は複数の処理オブジェクトの各々が関わる消費電力を基に、一つ以上のデータベース演算子とそれの実行順序とで構成され前記中断完了時刻までに実行されるデータベース演算子までの実行プラン部分を変更する、
    請求項1に記載のデータベース管理システム。
  12. データベースに対するクエリに従うクエリ処理の実行中に、当該クエリ処理の中断完了時刻を先の時刻とした中断命令が受け付けられた場合、前記中断命令が受け付けられてから前記中断完了時刻までの間に、
    予想完了時刻が前記中断完了時刻以前である対象オブジェクトがあれば、当該対象オブジェクトの状態をスナップショット中断を意味する状態に変更し、
    前記対象オブジェクトには、前記中断命令が受け付けられたときに実行中を意味する状態である処理オブジェクトが少なくとも該当し、
    スナップショット中断を意味する状態の処理オブジェクトであるスナップショット中断オブジェクトがあれば、前記中断完了時刻まで当該スナップショット中断オブジェクトを実行する、
    データベース管理方法。
JP2019025453A 2019-02-15 2019-02-15 データベース管理システム、及び、データベース管理方法 Active JP6764175B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019025453A JP6764175B2 (ja) 2019-02-15 2019-02-15 データベース管理システム、及び、データベース管理方法
US16/576,947 US11494383B2 (en) 2019-02-15 2019-09-20 Database management system and database management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019025453A JP6764175B2 (ja) 2019-02-15 2019-02-15 データベース管理システム、及び、データベース管理方法

Publications (2)

Publication Number Publication Date
JP2020135189A JP2020135189A (ja) 2020-08-31
JP6764175B2 true JP6764175B2 (ja) 2020-09-30

Family

ID=72042153

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019025453A Active JP6764175B2 (ja) 2019-02-15 2019-02-15 データベース管理システム、及び、データベース管理方法

Country Status (2)

Country Link
US (1) US11494383B2 (ja)
JP (1) JP6764175B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4281849A1 (en) 2021-01-25 2023-11-29 Volumez Technologies Ltd. Operating system based storage method and system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092062A (en) * 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
US7269607B2 (en) * 2003-09-29 2007-09-11 International Business Machines Coproartion Method and information technology infrastructure for establishing a log point for automatic recovery of federated databases to a prior point in time
US7640409B1 (en) * 2005-07-29 2009-12-29 International Business Machines Corporation Method and apparatus for data migration and failover
US8402469B2 (en) * 2008-04-08 2013-03-19 Infosys Limited Allocating resources for parallel execution of query plans
US9934261B2 (en) * 2009-03-10 2018-04-03 Hewlett Packard Enterprise Development Lp Progress analyzer for database queries
US8290937B2 (en) * 2010-08-30 2012-10-16 International Business Machines Corporation Estimating and monitoring query processing time
US8447776B2 (en) * 2010-08-30 2013-05-21 International Business Machines Corporation Estimating and managing energy consumption for query processing
US20120109936A1 (en) * 2010-10-29 2012-05-03 Nec Laboratories America, Inc. Cost-effective data layout optimization over heterogeneous storage classes
US20140214793A1 (en) * 2013-01-29 2014-07-31 Nec Laboratories America, Inc. Cost-Effective Data Layout Optimization Over Heterogeneous Storage Classes
JP2018055394A (ja) * 2016-09-29 2018-04-05 富士通株式会社 情報処理装置、及びプログラム

Also Published As

Publication number Publication date
JP2020135189A (ja) 2020-08-31
US11494383B2 (en) 2022-11-08
US20200265050A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
US9189487B2 (en) Method for recording transaction log, and database engine
US8601474B2 (en) Resuming execution of an execution plan in a virtual machine
US10706009B2 (en) Techniques to parallelize CPU and IO work of log writes
US8738673B2 (en) Index partition maintenance over monotonically addressed document sequences
US10664452B2 (en) Parallel processing of large data files on distributed file systems with dynamic workload balancing
US20120311581A1 (en) Adaptive parallel data processing
JP2004070403A (ja) ファイル格納先ボリューム制御方法
JP6707797B2 (ja) データベース管理システム及びデータベース管理方法
US20180349422A1 (en) Database management system, database server, and database management method
JP6823626B2 (ja) データベース管理システム及び方法
WO2020125362A1 (zh) 文件系统及数据布局方法
JP6764175B2 (ja) データベース管理システム、及び、データベース管理方法
CN111971667B (zh) 可恢复的合并排序
US9870152B2 (en) Management system and management method for managing data units constituting schemas of a database
JP6210501B2 (ja) データベース管理システム、計算機、データベース管理方法
CN112559457A (zh) 数据访问方法及装置
JP2019101595A (ja) データベース管理システム及び方法
US11748369B2 (en) Separation of logical and physical storage in a distributed database system
Bindschaedler An Architecture for Load Balance in Computer Cluster Applications
Fan et al. OS4M: achieving global load balance of mapreduce workload by scheduling at the operation level
WO2022132361A1 (en) Page split detection and affinity in query processing pushdowns
US20180150241A1 (en) Computer system and storage device activation control method
CN118296191A (zh) 一种元数据管理方法及相关系统
CN114706832A (zh) 一种数据重分布方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190924

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200907

R150 Certificate of patent or registration of utility model

Ref document number: 6764175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150