JP2024500058A - リレーショナル・データベースにおけるクエリ実行計画のスケジューリング - Google Patents

リレーショナル・データベースにおけるクエリ実行計画のスケジューリング Download PDF

Info

Publication number
JP2024500058A
JP2024500058A JP2023534179A JP2023534179A JP2024500058A JP 2024500058 A JP2024500058 A JP 2024500058A JP 2023534179 A JP2023534179 A JP 2023534179A JP 2023534179 A JP2023534179 A JP 2023534179A JP 2024500058 A JP2024500058 A JP 2024500058A
Authority
JP
Japan
Prior art keywords
data
partition
query
query execution
rdbs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023534179A
Other languages
English (en)
Other versions
JPWO2022123437A5 (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2024500058A publication Critical patent/JP2024500058A/ja
Publication of JPWO2022123437A5 publication Critical patent/JPWO2022123437A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/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/24539Query rewriting; Transformation using cached or materialised query results
    • 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/24532Query optimisation of parallel queries

Landscapes

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

Abstract

リレーショナル・データベース・システム(RDBS)のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とをスケジューリングするための、方法、コンピュータ・プログラム製品、およびシステム。データは、データのデータ・セットのデータ・ブロックに分割されており、RDBSのメタデータは、データ・ブロックの個々のデータ・ブロックのデータ・セットの少なくとも1つのプロパティについての個々の情報を含む。スケジューリングすることは、第1のクエリに従って第1の条件を満たすことができるデータ・ブロックの第1のパーティションと、第2のクエリに従って第2の条件を満たすことができるデータ・ブロックの第2のパーティションとの間に共通パーティションがあるかどうかの検査に基づいて、実施することができる。

Description

本開示は、データベース技術の分野に関し、より詳細にはリレーショナル・データベース・システムのデータのデータ・セットにアクセスするためのクエリをスケジューリングするための方法に関する。
リレーショナル・データベース・システムは、互いにリンクされたデータ・テーブルを含む。クエリは、表現(expression)および述語(predicate)の形式で定式化された基準(criteria)に基づいて、データ・セットを検索して更新するために使用される。クエリは、リレーショナル・データベース・システムのクエリ・オプティマイザによって、述語に関して最適化することができる。例えば、データベース・システムでクエリを実行する様々な変形例を実行するための計算コストは、述語に応じて見積もることができ、そのクエリを計算コストの低減の点から最適化することができる。次いで、最適化されたクエリは、クエリ実行計画に変換することができる。クエリ実行計画は、リレーショナル・データベース・システムのワークロード・マネージャを使用することによってスケジュールすることができる。
様々な実施形態は、独立請求項の主題によって説明されるように、コンピュータ・システムおよび方法を提供する。有利な実施形態は、従属請求項で説明される。本開示の実施形態は、相互に排他的でない場合、互いに自由に組み合わせることが可能である。
一態様では、本開示は、クエリ実行計画のセットをスケジューリングするための方法であって、クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム、RDBS、のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、データが、データのデータ・セットのデータ・ブロックに分割されており、RDBSのメタデータが、データ・ブロックの個々のデータ・ブロックのデータ・セットの少なくとも1つのプロパティについての個々の情報を含む、方法に関する。方法は、
第1のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第1のパーティションを、メタデータと、第1のデータ・セットが第1のクエリに従って満たさなければならない条件とに基づいて、決定することと、
第2のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第2のパーティションを、メタデータと、第2のデータ・セットが第2のクエリに従って満たさなければならない条件とに基づいて、決定することと、
第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することと、
検査の結果に基づいてRDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることと
を含む。
別の態様では、本開示は、前述の実施形態による方法を実装するように構成されたコンピュータ可読プログラム・コードが具体化されたコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品に関する。
別の態様では、本開示は、クエリ実行計画のセットをスケジューリングするためのコンピュータ・システムであって、クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム、RDBS、のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、データが、データのデータ・セットのデータ・ブロックに分割されており、RDBSのメタデータが、データ・ブロックの個々のデータ・ブロックのデータ・セットの少なくとも1つのプロパティについての個々の情報を含む、コンピュータ・システムに関する。コンピュータ・システムは、
第1のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第1のパーティションを、メタデータと、第1のデータ・セットが第1のクエリに従って満たさなければならない条件とに基づいて、決定することと、
第2のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第2のパーティションを、メタデータと、第2のデータ・セットが第2のクエリに従って満たさなければならない条件とに基づいて、決定することと、
第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することと、
検査の結果に基づいてRDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることと
のために構成することができる。
本開示の以下の実施形態を、次の図面を参照しながら、単なる例として、十分詳細に説明する。
本主題によるコンピュータ・システムを示す図である。 図1のコンピュータ・システムに接続されるネットワークを示す図である。 リレーショナル・データベース・システムを示す図である。 第1のユース・ケースによる、データ・ブロックの第1のパーティションの構成およびデータ・ブロックの第2のパーティションの構成を示す、図3のリレーショナル・データベース・システムのデータ・テーブルを示す図である。 図4のデータ・テーブルのデータ・ブロックのメタデータを示すテーブルを示す図である。 RDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングするためのスケジュールを示す図である。 第2のユース・ケースによる、データ・ブロックの第1のパーティションの構成およびデータ・ブロックの第2のパーティションの構成を示す図である。 RDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングするためのさらなるスケジュールを示す図である。 さらなる変形例による、RDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングするためのスケジュールを示す図である。 図7のデータ・テーブルのデータ・ブロックのさらなるメタデータを示すテーブルを示す図である。 第1のユース・ケースのさらなる変形例による、データ・ブロックの第1のパーティションの構成およびデータ・ブロックの第2のパーティションの構成を示す図である。 第2のユース・ケースのさらなる変形例による、データ・ブロックの第1のパーティションの構成およびデータ・ブロックの第2のパーティションの構成を示す図である。 RDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングするためのコンピュータ実装方法のフローチャートである。
本開示は、データベース技術の分野に関し、より詳細にはリレーショナル・データベース・システムのデータのデータ・セットにアクセスするためのクエリをスケジューリングするための方法に関する。例示を目的として本開示の様々な実施形態の説明を提示するが、網羅的であること、または開示される実施形態に限定することは意図されていない。説明される実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者にとって明らかとなろう。本明細書において使用される用語法は、実施形態の原理、実践的な用途もしくは市場で見られる技術より優れた技術的な改善を最良に説明するため、または当業者の他の者が本明細書において開示される実施形態を理解できるように選ばれたものである。
リレーショナル・データベース・システム(RDBS)という用語は、本明細書で使用される場合、リレーショナル・データベース管理システム(RDBMS)としても知られる。加えて、第1のクエリ実行計画および第2のクエリ実行計画という用語は、以下ではそれぞれ第1の計画および第2の計画とも称される場合がある。さらには、第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションは、以下では共通パーティションとも称される場合がある。共通パーティションが存在するかどうかの検査は、検査とも称される場合がある。
第1のデータ・セットが第1のクエリに従って満たさなければならない条件は、以下では第1の条件とも称される。同様に、第2のデータ・セットが第2のクエリに従って満たさなければならない条件は、以下では第2の条件とも称される。第1の計画は、第1のデータ・セットにアクセスするための、すなわち読み取るためのコマンド、または第1のデータ・セットを変更するためのコマンド、あるいはその両方を含む。同様に、第2の計画は、第2のデータ・セットにアクセスするための、すなわち読み取るためのコマンド、または第2のデータ・セットを変更するためのコマンド、あるいはその両方を含む。第1および第2の計画は、それぞれ第1のクエリおよび第2のクエリに基づいて、RDBSのクエリ・コンパイラを使用して、生成することができる。第1および第2のクエリは、それぞれ、第1の条件を含む第1のステートメント、および第2の条件を含む第2のステートメントを含む。
検査の結果に基づいて第1の計画および第2の計画をスケジューリングすることには、次の利点がある。まず、共通パーティションがない場合、RDBSで第1の計画を実行すること、または第2の計画を実行することのいずれかによって、データの単一のデータ・セットのみがアクセスされ得る。換言すると、1つのデータ・セットは、第1の計画を実行することによって第1の時間にアクセスされることはできず、このとき第2の計画を実行することによって第2の時間にアクセスされ、その逆も可である。したがって、共通パーティションがないと述べることは、第1の計画の実行時にアクセスすることができ、同じように第2の計画の実行時にアクセスすることができるデータ・セットは存在しないと述べることに等価であることができる。このことは、第1の計画および第2の計画の実行は、共通パーティションがない場合、データのデータ・セットの点で互いに分離されているという意味である。
例えば、第1の計画は、第2の計画を実行することによって読み取ることができるデータのデータ・セットの1つを更新させることができず、その逆も可である。この理由のため、共通パーティションが存在するかどうか検査を実施することは、共通パーティションがない場合のデータのデータ・セットを考慮すると、第2の計画に対する第1の計画の分離を保証することができる。このことは、第1および第2の計画を並列に実行する場合、RDBSの計算コストを低減することができる。
例えば、データ・ブロックの第1のパーティションまたはデータ・ブロックの第2のパーティションあるいはその両方の少なくとも一部をロックして、これらのデータ・ブロックが、ある瞬間に単一のクエリ実行計画の実行によってのみアクセスされ得るようにするためのRDBSのロック機構は、共通パーティションがない場合、RDBSで第1の計画および第2の計画の異なる実行を引き起こしてもよい。例えば、ロック機構は、共通パーティションがない場合に第1の計画および第2の計画が並列に実行されるとき、データ・ブロックの第1のパーティションまたは第2のパーティションあるいはその両方をロックしなくてもよい。
しかしながら、ロック機構は、共通パーティションが存在する場合に第1の計画および第2の計画が並列に実行されるとき、データ・ブロックの第1のパーティションまたは第2のパーティションあるいはその両方をロックする場合がある。したがって、共通パーティションがない場合、データ・ブロックの第1のパーティションまたは第2のパーティションあるいはその両方をロックするために必要とされる計算負荷を、低減することができる。このことは、第1の計画および第2の計画がRDBSの同一データ・テーブルにアクセスする場合に、有利であり得る。
典型的には、ロック機構は、第1の計画および第2の計画が同一データ・テーブルにアクセスする場合に、アクティブ化される。しかしながら、本開示の実施形態は、この欠点を克服することができ、共通パーティションがない場合に第1の計画および第2の計画が同一データ・テーブルにアクセスするとき、ロック機構を非アクティブ化することができるようになる。共通パーティションがアクセスされない場合、アクセス分離が保証される。
いくつかの実施形態では、第1のパーティションおよび第2のパーティションによってアクセスされるデータ・ブロックを決定することは、メタデータに基づいて実行される。加えて、検査の結果に基づいて、スケジューリングが実施されてもよい。データについての検査からの情報は、スケジューリングに使用することもできる。この情報は、第1または第2あるいはその両方の計画の実行に対する制限を低減するために使用することができる。制限の低減によって、第1または第2あるいはその両方のパーティションのロックを、非アクティブ化することができる。制約の低減は、一般的に計算リソースと時間を低減することができる。
さらには、計画同士に共通パーティションが存在しない場合、第1の計画および第2の計画を、これら計画がそれぞれの実行時間に関して重複しないように、スケジュールする必要はない。通常、これは、例えば第1の計画および第2の計画が同一データ・テーブルにアクセスする場合に、ロック機構がアクティブ化されるのを防止するために行われる場合がある。したがって、共通パーティションがない場合のスケジューリングに関する制約が、低減または破棄され得る。この場合では、クエリ実行計画のセットのスケジューリングの最適化は、いくつかの制約として簡略化することができ、このような制約は、計画のスケジューリングを最適化するための境界条件として考えてもよい。
また、共通パーティションが存在する場合、第1の計画の結果は、第2の計画に使用されてもよく、その逆も可である。その結果、第1および第2の計画の実行時にアクセスされるデータ・セットの数を低減することができる。それにより、計算コストが低減される可能性がある。
いくつかの実施形態では、メタデータに基づいて、第1のデータ・セットが第1のクエリに従って満たさなければならないような第1の条件を用いて、第1のパーティションがデータ・ブロックの第1のコンプリメンタリ・パーティション(complementary partition)を破棄することを含むかどうかが判定される。データ・ブロックの第1のコンプリメンタリ・パーティションは、RDBSで第1のクエリ実行計画が実行されるとき、アクセスされていないデータのデータ・ブロックを表現することができる。さらには、いくつかの実施形態では、メタデータと、第2のデータ・セットが第2のクエリに従って満たさなければならない第2の条件とを使用して、第2のパーティションがデータ・ブロックの第2のコンプリメンタリ・パーティションを破棄することを含むかどうかが判定される。データ・ブロックの第2のコンプリメンタリ・パーティションは、RDBSで第2のクエリ実行計画が実行されるとき、アクセスされていないデータのデータ・ブロックを表現することができる。第1のコンプリメンタリ・パーティションは、第1のパーティションへの補足として考えられ、その逆も可である。このことは、第1のパーティションと第1のコンプリメンタリ・パーティションとは、互いに素であり、共にデータを構築できることを意味している。同様に、第2のコンプリメンタリ・パーティションは、第2のパーティションへの補足として考えられ、その逆も可である。このことは、第2のパーティションと第2のコンプリメンタリ・パーティションとは、互いに素であり、やはり共にデータを構築することを意味している。
第1のコンプリメンタリ・パーティションを作成するために第1の計画の実行時にアクセスされないすべてのデータ・ブロックを見つける必要がないため、第1のパーティションが第1のコンプリメンタリ・パーティションを破棄するかどうかを判定することは有利である。反対に、第1のコンプリメンタリ・パーティションが、第1のコンプリメンタリ・パーティションを破棄することによって決定されない場合、検査の結果により共通パーティションがないと示唆される場合、そうであると安全に述べるために、第1の計画が実行される場合にアクセスされる可能性があるすべての可能なデータ・ブロックを見つける必要がある。これを実現するべく、データのすべての個々のデータ・ブロックのメタデータを、第1の条件に対してチェックする必要がある。特にデータ・ブロックが非常に小さく多数である場合、この種のルーチンを完了するには時間がかかる場合がある。
しかしながら、第1のコンプリメンタリ・パーティションの生成は、いつでも中断される可能性があり、完了する必要はない。この場合、第1のパーティションが第1のコンプリメンタリ・パーティションの補足であると判定された場合、検査の結果が、共通パーティションがないというものであれば、その結果が確かであると考えることができる。結果的に、この実施形態は第1のパーティションの生成をスピード・アップすることができる。同様に、第2のコンプリメンタリ・パーティションを破棄することによって第2のパーティションを決定することは、第2のパーティション、第2の条件、および第2のコンプリメンタリ・パーティションに適用される同じ理由付けから同一の利点を与えることができる。メタデータは、例えばデータの各データ・セットをインデックス付けするインデックスと比較して、データについてのずっとコンパクトな情報と考えることができる。このようなコンパクトな情報は、データのデータ・セットのうちの1つが第1の条件または第2の条件を満たし得る場合、検査にあまり適していない場合がある。しかしながら、メタデータの形態のこのコンパクトな情報は、データ・セットのデータ・ブロックを破棄するために非常に有用な場合があり、このデータ・セットのデータ・ブロックは、これらのデータ・セットに対して第1の条件または第2の条件を試すためにアクセスされなくてもよい。この効果は、スケジューリングに使用されてもよい。
いくつかの実施形態では、方法はまた、第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがある場合、第1のクエリ実行計画の結果が、第2のクエリ実行計画の利用のためにRDBSのキャッシュ・メモリ内で利用可能となるように、第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることも含む。例えば、第1の計画および第2の計画は、第1の計画の結果の少なくとも一部が、RDBSで第2の計画が実行されるときにキャッシュ・メモリに記憶されるようにスケジュールしてもよい。共通パーティションが存在する場合、その逆も可である。この実施形態は、第1の計画の結果の少なくとも一部が、第2の計画の実行に使用できることを保証することができる。共通パーティションが存在する場合、その逆も可である。スケジューリングは、キャッシュ・メモリで利用可能な実際の空間、および第1の計画または第2の計画の結果または結果の一部を記憶するためのキャッシュの推定される必要なサイズの関数として実施することができる。
いくつかの実施形態では、方法はまた、共通パーティションのデータ・ブロックをロックするためのRDBSのロック機構をアクティブ化することを含み、それによって、これらのデータ・ブロックは、ある瞬間において単一のクエリ実行計画の実行によってのみアクセスされ得る。ロック機構は、共通パーティションが存在する場合、アクティブ化することができる。単一の実行計画は、第1の計画または第2の計画のいずれかであり得る。この変形例は、データの分離を保証し、第1および第2の計画の実行時は保存される。本明細書で使用される場合、「データの分離」という用語は、セットのクエリ実行計画の同時実行が、データを、これらの計画が順序良く実行された場合に得られるのと同一状態にしておくことを意味する。
いくつかの実施形態では、方法はまた、第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがない場合、第1のクエリ実行計画および第2のクエリ実行計画がRDBSで並列に実行されるように、第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることも含む。第1および第2の計画の並列実行は、クエリ実行計画のセットの実行をスピード・アップすることができる。共通パーティションが存在しない事例では、第1および第2の計画は並列に実行されてもよく、データ・ブロックの第1のパーティションまたは第2のパーティションあるいはその両方をロックするために必要な計算負荷は、非常に低いか、ゼロの場合もある。したがって、クエリ実行計画のセットの実行の得られるスピード・アップは、ロック機構によって損なわれない場合がある。共通パーティションが存在しない場合、すなわち共通パーティションのサイズがゼロである場合、第1および第2の計画は、データの分離が失われるリスクなく並列に実行される。ほとんどの場合で、ロック機構は、共通パーティションがない場合、第1または第2あるいはその両方のパーティションに対してアクティブ化されない。
いくつかの実施形態では、方法は、データ・ブロックの第1のパーティションおよびデータ・ブロックの第2のパーティションの少なくとも一部をロックするためのRDBSのロック機構を非アクティブ化することを含む。ロック機構は、これらのデータ・ブロックが、ある瞬間に単一のクエリ実行計画の実行によってのみアクセスされることを確実にする。実施形態によると、ロック機構は、共通パーティションがない場合、非アクティブ化されてもよい。第1の計画および第2の計画が並列に実行される場合、ロック機構の非アクティブ化が実施されてもよい。ロック機構に応じて、ロック機構は、共通パーティションがない場合でも、第1および第2の計画の実行時に、計算リソースを割り当てることができる。例えば、ロック機構は、共通パーティションが存在するかどうかをチェックするための機能を含む。この場合、ロック機構を非アクティブ化することは、共通パーティションがない場合に計算コストを低減することができる。
いくつかの実施形態では、個々のデータ・ブロックのデータ・セットのプロパティに関する情報は、個々のデータ・ブロックのデータ・セットのデータ値が存在する範囲である。範囲は、個々のデータ・ブロックにおける最小データ値と、個々のデータ・ブロックにおける最大データ値とによって定めることができる。範囲を個々のデータ・ブロックのデータ・セットのプロパティについての個々の情報として使用すること、つまり範囲をメタデータとして使用することには、最小および最大データ値という2つの値だけを用いて、これらのデータ・セットの重要な情報が与えられ、それにより第1または第2の計画の実行時間が短縮され得るという利点がある。例えば、範囲に基づいて、これらのブロックのデータ・セットが第1または第2の条件に一致しない場合、1つまたは複数の個々のデータ・ブロックが破棄される。個々のデータ・ブロックのデータ・セットのデータ値が存在する範囲は、これらのデータ・セットの最もコンパクトな情報のうちの1つを表現することができ、第1および第2の計画の実行時間の短縮を支援することもできる。
いくつかの実施形態では、RDBSのデータは、データ・テーブルを使用して記憶される。範囲は、その個々のデータ・ブロック内のデータ・テーブルの列にある最小データ値と、その個々のデータ・ブロック内のデータ・テーブルの列にある最大データ値とによって定められる。個々のデータ・ブロックは、データ・テーブルの行の個々のブロックを示すことができる。範囲が、テーブルの列のデータ値を指している場合、第1および第2のパーティションを決定すること、特に第1および第2のコンプリメンタリ・パーティションを破棄することを、より細かいレベルで実行することができる。このことにより、第1または第2あるいはその両方のコンプリメンタリ・パーティションを増幅する、および第1または第2あるいはその両方のパーティションのサイズを縮小する結果をもたらすことができる。そのため、第1または第2あるいはその両方の計画を実行するための計算コストを低減することができる。
いくつかの実施形態では、データ・セットのプロパティは、個々のデータ・ブロック内のデータ値の分布であることができる。個々のデータ・ブロックのデータ・セットのプロパティについての個々の情報は、データ値の分布を説明することができる。個々のデータ・ブロック内のデータ値の分布は、個々のブロックのデータ・セットについてのさらなる情報を含む場合があり、特に第1および第2のコンプリメンタリ・パーティションの破棄を実行する間、第1および第2のパーティションの決定を可能にすることができる。上述と同様の理由付けにより、このことは第1または第2あるいはその両方の計画を実行するための計算コストを低減することができる。分布を説明する情報は、上述の範囲を等しい長さの部分に分割するいくつかのインターバルを含む。分布を説明する情報は、各インターバルに対応するデータ・セットのそれぞれの数をさらに含んでもよく、データ・セットのそれぞれの数は、個々のインターバルに存在するデータ値を含む個々のデータ・ブロックのデータ・セットの数を示す。あるいは、または加えて、分布を説明する情報は、データ・セットのデータ値の分布のタイプを含む。
いくつかの実施形態では、RDBSのデータは、個々のデータ・ブロック内のデータ・テーブルの列中のデータ値の分布を参照する分布を有するデータ・テーブルを使用して記憶される。個々のデータ・ブロックのデータ・セットのプロパティに関する個々の情報は、個々のデータ・ブロック内のデータ・テーブルの列中のデータ値の分布を説明する。個々のデータ・ブロックは、データ・テーブルの行の個々のブロックを示すことができる。これにより、第1または第2あるいはその両方の計画の実行時に精緻化のレベルを上げることができる。同様に、精緻化の向上により、第1または第2あるいはその両方の計画を実行するための計算コストを低減することができる。
いくつかの実施形態では、分布は密度ベクトルによって表現される。ベクトルは、各インターバルに相当するデータ・セットのそれぞれの数のコンパクトな形態を表現することができる。
いくつかの実施形態では、2つのクエリ実行計画のうちの1つ、すなわち第1または第2のクエリ実行計画は、実際のある瞬間に実行することができ、2つのクエリ実行計画のうちのもう1つは、将来的なある瞬間に開始されるようにスケジュールすることができる。これは、クエリ実行計画のうちの1つ、すなわち第1または第2の計画が、現在RDBSで実行中であり、もう1つが現在実行中ではないが将来実行されるようにスケジュールされる場合に、提案される方法の利用を説明している。したがって、本開示の実施形態は、実際の瞬間を、スケジューリングが実施される瞬間として考えると、第1および第2の計画が将来的に実行される用途に限定されない。
いくつかの実施形態では、第1のクエリ実行計画および第2のクエリ実行計画は、互いの直後に実行されるようにスケジュールされる。これにより、第1の計画の結果が、第2の計画の利用のためにRDBSのキャッシュ・メモリ内で利用可能となる確率が高まる場合があり、その逆も可である。この実施形態は、共通パーティションがある場合に有利である。
いくつかの実施形態では、方法はRDBSのクエリ・オプティマイザからメタデータを受信することを含む。クエリ・オプティマイザは、自身の目的のために、つまり第1または第2あるいはその両方の計画を最適化するために、メタデータを使用することができる。この理由のため、クエリ・オプティマイザは、データ・ブロックの個々のデータ・ブロックを参照するメタデータを、メタデータ・データベースからクエリ・オプティマイザのキャッシュ・メモリに既にロードしてある。RDBSのワークロード・マネージャは、クエリ・オプティマイザのキャッシュ・メモリからメタデータを読み取ることによって、スケジューリングを実施することができる。これは、メタデータ・データベースから再度メタデータを読み取るよりも高速である場合がある。
いくつかの実施形態では、方法は、RDBSのクエリ・オプティマイザから、第1のパーティションおよび第2のパーティションを指定するための情報を受信することを含む。クエリ・オプティマイザは、第1のクエリおよび第2のクエリの、第1および第2のステートメントを、メタデータとそれぞれ突き合わせることができる。このようにして、クエリ・オプティマイザは、第1のパーティションおよび第2のパーティションを指定するための情報を検索することができる。換言すると、このことは、クエリ・オプティマイザによって既に計算された情報の効率的な利用を説明している。
いくつかの実施形態では、方法は、共通パーティションがなくなるように、RDBSのクエリ・オプティマイザを実行するための境界条件をセットすることを含む。クエリ・オプティマイザが、共通パーティションが存在しないように、第1および第2の計画を生成する場合、上述の利点を生ずることができる。これは、第1または第2あるいはその両方の計画を単一のクエリ実行計画そのものとして考えると、効率が悪くなる場合がある。しかしながら、共通パーティションが空の場合、計算負荷の低減は、このような効率の低下を克服することができる。
本開示の実施形態は、コンピュータ・システム、クライアント、またはサーバとも称され得るコンピューティング・デバイスを使用して実装することができる。次に図1を参照すると、コンピュータ・システム10の例の概略が示されている。コンピュータ・システム10は、好適なコンピュータ・システムの単なる一例であることができ、本明細書で説明される本開示の実施形態の使用または機能性の範囲に関して、いかなる制限を示唆するように意図されていない場合がある。それとは関係なく、コンピュータ・システム10は、本明細書で上述される機能性セットのいずれも、実装または実施することあるいはその両方が可能である。
コンピュータ・システム10は、多くの他の汎用または専用の、コンピューティング・システム環境または構成で動作可能なコンピュータ・システム/サーバ12を含む。コンピュータ・システム/サーバ12での使用に適切であり得る、よく知られているコンピューティング・システム、環境、または構成あるいはそれらの組合せの例は、図3に示されるリレーショナル・データベース・システム300、RDBS300のスタック303、RDBS300のクエリ・コンパイラ302、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップのデバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型コンピューティング環境などを含むがそれに限定しない。
一例では、コンピュータ・システム/サーバ12は、図3に示されるRDBS300のワークロード・マネージャ301の形態で設計されてもよい。RDBS300は、第1のクエリ311および第2のクエリ312などのクエリを、以下では第1の計画321とも称される第1のクエリ実行計画321、および以下では第2の計画322とも称される第2のクエリ実行計画322などのクエリ実行計画にコンパイルするための、クエリ・コンパイラ302を含む。
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されているプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで説明され得る。一般的に、プログラム・モジュールは、特定のタスクを実施するか、または特定の抽象的なデータ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム/サーバ12は、タスクが通信ネットワークを通じてリンクされたリモート処理デバイスによって実施される分散型コンピューティング環境において実用化することができる。分散型コンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含む、ローカルおよびリモート両方のコンピュータ・システム記憶媒体に配置することができる。リモートの処理デバイスの一例は、ワークロード・マネージャ301のためのタスクを実行することができる、クエリ・コンパイラ302であってもよい。
図1に示されるように、コンピュータ・システム10におけるコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12のコンポーネントとしては、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に連結するバス18を挙げることができるが、それに限定されない。バス18は、バス構造のいくつかのタイプのうちの任意の1つまたは複数を表しており、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたは様々なバス・アーキテクチャの任意のものを使用するローカル・バスを含む。限定ではなく例として、そのようなアーキテクチャとしては、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、Peripheral Component Interconnect(PCI)バス、およびPeripheral Component Interconnect Express(PCIe)バスが挙げられる。
コンピュータ・システム/サーバ12は、典型的には様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセス可能なあらゆる利用可能な媒体であることができ、揮発性および非揮発性の媒体、リムーバブルおよび非リムーバブルの媒体の両方を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30、ソリッドステート・ドライブ(SSD)、またはキャッシュ・メモリ32あるいはその組合せなど、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他のリムーバブル/非リムーバブルの、揮発性/非揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。単なる例として、非リムーバブル、非揮発性の磁気媒体(典型的には「ハード・ドライブ」と称され、図示せず)からの読み取りおよびそれへの書き込みのためのストレージ・システム34を設けることができる。図示していないが、リムーバブル、非揮発性の磁気ディスク(例えば、「フロッピ・ディスク」)からの読み取りおよびそれへの書き込みのための磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROMまたは他の光学媒体などのリムーバブル、非揮発性の光学ディスクからの読み取りまたはそれへの書き込みのための光学ディスク・ドライブを設けることができる。そのような事例では、それぞれは1つまたは複数のデータ媒体インターフェースによってバス18へ接続することができる。以下でさらに描写され説明されるように、メモリ28は、本開示の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
プログラム・モジュール50のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、メモリ28に記憶することができ、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも同様である。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、あるいはそのいくつかの組合せのそれぞれは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール50は、一般的に、本明細書において説明されるような本開示の実施形態の、機能または方法あるいはその両方を実行するように構成されてもよい。
本明細書で使用される場合、「プログラム」または「プログラム・モジュール」という用語は、プロセッサ16がコマンドを読み出すことができる場合、プロセッサ16によって実行されるアクションを引き起こすコマンドを含む命令のセットを称する。命令のセットは、プロセッサ16によって実行することが可能な、またはプロセッサ16によって実行されているさらなるプログラムによって呼び出し可能な、あるいはその両方の、コンピュータ可読のプログラム、ルーチン、サブルーチン、またはライブラリの一部の形態であってもよい。好ましくは、プログラム・モジュール50は、コンピュータ・システム/サーバ12のハードウェア・プラットフォームのタイプに応じてコンパイルされる実行可能なプログラムであってもよい。
コンピュータ・システム/サーバ12はまた、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話できるようにする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信できるようにするあらゆるデバイス(例えば、ネットワーク・カード、モデムなど)あるいはその組合せと通信することができる。そのような通信は入力/出力(I/O)インターフェース22を介して行うことができる。さらになお、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはネットワーク・アダプタ20を介するパブリック・ネットワーク(例えば、インターネット)あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。描かれるように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信することができる。図示していないが、他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントが、コンピュータ・システム/サーバ12と併せて使用することができることが理解されるべきである。例として、マイクロコード、デバイス・ドライバ、冗長化処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、それに限定されない。
図1に示されるコンピュータ・システム10などのコンピュータ・システムは、第1の、第2の、第3の、第4の、第5の、および第6の動作など、本明細書で開示される動作を実行するために使用することができる。例えば、プロセッサ16は、第1の、第2の、第3の、第4の、第5の、および第6の動作を実行することができる。
コンピュータ・システム10は、図3のクエリ実行計画331のセットをスケジューリングするために構成されてもよい。クエリ実行計画331のセットは、図4におけるRDBS300のデータ400の第1のデータ・セット411にアクセスするための、第1のクエリ311を実行するための少なくとも第1のクエリ実行計画321を含む。さらには、セット331は、データ400の第2のデータ・セット412にアクセスするための、第2のクエリ312を実行するための第2のクエリ実行計画322を含む。データ400は、データ400のデータ・セットのデータ・ブロック410に分割することができる。RDBS300のメタデータ304は、個々のデータ・ブロック410のデータ・セットの少なくとも1つのプロパティについての個々の情報を含む。データ・ブロック410は、例えば、第1のデータ・ブロック410-1、第2のデータ・ブロック410-2、第3のデータ・ブロック410-3、第4のデータ・ブロック410-4、第5のデータ・ブロック410-5、および第6のデータ・ブロック410-6を含むことができる。データ・ブロック410のデータ・セットは、図4では四角形で示される。
第1の動作は、第1のクエリ実行計画321がRDBS300で実行される場合にアクセスされる可能性があるデータ・ブロック410の第1のパーティション401を、メタデータ304と、以下では第1の条件と称される第1のクエリ311に従って第1のデータ・セット411が満たさなければならない条件とに基づいて、決定することを含む。
第2の動作は、第2のクエリ実行計画322がRDBS300で実行される場合にアクセスされる可能性があるデータ・ブロック410の第2のパーティション402を、メタデータ304と、以下では第2の条件と称される第2のクエリ312に従って第2のデータ・セット412が満たさなければならない条件とに基づいて、決定することを含む。
第3の動作は、第1のパーティション401と第2のパーティション402のデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することを含む。
この第4の動作は、第1のクエリ実行計画321および第2のクエリ実行計画322を、検査の結果に基づいてRDBS300でスケジューリングすることを含む。
第5の動作は、メタデータ304および第1の条件に基づいて、データ・ブロック410の第1のコンプリメンタリ・パーティション701を破棄することによって、第1のパーティション401を決定することを含む。
第6の動作は、メタデータ304および第2の条件に基づいて、データ・ブロック410の第2のコンプリメンタリ・パーティション702を破棄することによって、第2のパーティション402を決定することを含む。
プロセッサ16は、第1のプログラム・モジュール41、第2のプログラム・モジュール42、第3のプログラム・モジュール43、第4のプログラム・モジュール44、第5のプログラム・モジュール45、および第6のプログラム・モジュール46をそれぞれ実行することによって、第1の、第2の、第3の、第4の、第5の、および第6の動作を実行することができる。第1のプロセッサ102は、メイン・プログラム51を実行することができる。メイン・プログラム51は、プロセッサ16でプログラム・モジュール41、42、43、44、45、46の実行を開始することができる。
コンピュータ・システム10は、ローカルのインターフェースを通じて、第1の計画321および第2の計画322などの処理対象のデータを受信することができる、ネットワーク接続を持たないスタンドアロンのコンピュータであってもよい。しかしながら、そのような動作は、通信ネットワークまたはコンピューティング・ネットワークあるいはその両方などのネットワークに接続されたコンピュータ・システムを使用して、同じように実行することができる。
図2は、例えばネットワーク・アダプタ20を使用して、コンピュータ・システム10などのコンピュータ・システムがネットワーク200に接続される、例示のコンピューティング環境を示す。RDBS300は、ネットワーク200を含み、コンピュータ・システム10などのコンピュータ・システムとして考えることもできる。RDBS300、好ましくはクエリ・コンパイラ302などのRDBS300のコンポーネントは、プロセッサ16のような1つまたは複数のプロセッサまたは処理ユニット、システム・メモリ28などのシステム・メモリ、および様々なコンポーネントを結合するバス18などのバスなど、コンピュータ・システム10のコンポーネントに類似のコンポーネントを含む。限定はしないが、ネットワーク200は、インターネット、ローカル・エリア・ネットワーク(LAN)、モバイル通信ネットワークなどの無線ネットワークなどの通信ネットワークであってもよい。ネットワーク200は、クラウド・コンピューティング・ネットワークなどのコンピューティング・ネットワークを含む。コンピュータ・システム10は、第1の計画321および第2の計画322などの処理対象のデータを、ネットワーク200から受信することができる、または少なくとも第1の計画321および第2の計画322の実行順を含むスケジュール600などの計算結果を、ネットワーク200を介してコンピュータ・システム10に接続された別のコンピューティング・デバイスに提供することができる、あるいはその両方である。
コンピュータ・システム10は、第1の、第2の、第3の、第4の、第5の、および第6の動作などの本明細書で説明される動作を、ネットワーク200を介して受信される要求に応答して、全体的にまたは部分的に実行することができる。特に、コンピュータ・システム10は、ネットワーク200を介してコンピュータ・システム10に接続することができる1つまたは複数のさらなるコンピュータ・システムと共に、そのような動作を分散型の計算で実行することができる。この目的のため、コンピュータ・システム10またはさらに関与するあらゆるコンピュータ・システムあるいはその組合せは、ネットワーク200を使用して、専用または共有メモリなどのさらなるコンピューティング・リソースにアクセスすることができる。
図4に示される例によると、データ400は、データ・テーブル420の形態で記憶することができる。データ・テーブル420は、行および列430を含む。行は、それぞれ、データ400のデータ・レコードとも称されることが多い、単一のデータ・セットを示すことができる。したがって、行の番号は、図4の垂直矢印421に従ってデータ・セットごとに1つずつ増加することができる。しかしながら、図4の例では、テーブル420は、行のインデックスを有していない場合がある。列430は、それぞれ、異なる特徴を指定することができる。例えば、個々の行に関して、第1の列431は各人の生年月日を指定することができ、第2の列432は各人の姓を指定することができ、第3の列433は各人の名を指定することができ、第4の列434は各人のクレジット口座の残高を指定することができる。故に、この例によると、テーブル420は、銀行口座データベースを表現することができる。各データ・セットは、列430の数と一致するいくつかのエントリを含む。データ・セットの1つのそれぞれのエントリは、図4では四角形で示される。各人の生年月日は、生まれた月、それに続いて各人の生まれた日付で与えられ得る。
以下では、個々のデータ・ブロック410のデータ・セットのプロパティについての個々の情報が、個々のデータ・ブロック410のデータ・セットのデータ値が存在する範囲を示す個々のデータ・ブロック410の範囲であることができる、一例が提示され得る。個々の範囲は、個々のデータ・ブロック410-1におけるそれぞれの最小データ値と、個々のデータ・ブロック410-Nにおけるそれぞれの最大データ値とによって定めることができる。
さらには、提示される図面による例は、個々のデータ・ブロック410-Nの範囲が、個々のデータ・ブロック410-N内のデータ・テーブル420の第1の列431のそれぞれの最小データ値と、個々のデータ・ブロック410-N内のデータ・テーブル420の第1の列431のそれぞれの最大データ値とによって定められる変形例を表現することができる。個々のデータ・ブロック410-Nは、データ・テーブル420の行の個々のブロック、つまり例によると、データ・テーブル420のデータ・レコードの個々のブロックを示すことができる。
メタデータ304は、個々のデータ・ブロック410-Nの範囲を含む。メタデータ304は、テーブル形式で記憶することができ、図5に示されるテーブル500に与えられる値を含む。6つのデータ・ブロックを含むデータ・テーブル420に従って、テーブル500は6行を含む。テーブル500の各行では、個々のデータ・ブロック410-Nのデータ・セットによって与えられる、最も早い生年月日および最も遅い生年月日が記憶され得る。簡潔のため、生年月日の月と日付のみを考える。テーブル500によって与えられるメタデータ304は、第1の列431のデータ値、つまり人物の生年月日に関してデータ・セットを並べることができる一例に相当し得る。しかしながら、このことは、さらなる用途では当てはまらない場合がある。一般に、上記で示された、生年月日および氏名などのデータのタイプの選択は、単純な態様で提示される方法を説明するためだけに機能する。もちろん、他の可能な用途に関して、データ400は、材料プロパティの係数もしくは化学元素を特定するデータ、それらの振る舞い、または化学反応などの、技術的なデータ値を対象とする場合がある。
提示される方法の第1の単純な用途は、乱数生成器の利用を含む宝くじを対象とすることができる。乱数生成器は、ランダムな生年月日の第1のセットを指定するためのデータ値を生成することができる。第1のセットは、第1の生年月日および第2の生年月日を含む。生年月日が、第1のセットのランダムな生年月日のうちの1つに等しい人物は、100$に当選することができる。ランダムな生年月日の第1のセットが与えられた人物のクレジット口座で当選を実現するために、第1のクエリ311は、次のようにSQL言語で定式化することができる:
“Update data table 420
Set balance of credit account = balance of credit account + 100$
Where birth date = ‘first birth date’ OR ‘second birth date’“
第1の述語「birth date = ‘first birth date’ OR ‘second birth date’」は、第1のクエリ311に従って第1のデータ・セット411が満たさなければならない第1の条件を表現することができる。
宝くじには、乱数生成器を使用してランダムな生年月日の第2のセットを作成することが伴う場合がある。第2のセットは、第3の生年月日および第4の生年月日を含む。生年月日が、第2のセットのランダムな生年月日のうちの1つに等しい人物は、100$に当選することができる。ランダムな生年月日の第2のセットが与えられた人物のクレジット口座で当選を実現するために、第2のクエリ312は、次のようにSQL言語で定式化することができる:
“Update data table 420
Set balance of credit account = balance of credit account + 100$
Where birth date = ‘third birth date’ OR ‘fourth birth date’“
第2の述語「birth date = ‘third birth date’ OR ‘fourth birth date’」は、第1のクエリ311に従って第2のデータ・セット412が満たさなければならない第2の条件を表現することができる。
クエリ・コンパイラは、第1および第2のクエリ311、312を、それぞれ第1の計画321および第2の計画322にコンパイルすることができる。第1の計画321は、第1および第2のランダムな生年月日を指定するための値、ならびに第1の条件を満たすデータ・セット、すなわち第1のデータ・セット411を更新するための命令を含む第1の実行可能プログラムを含む。これらの命令は、例えば、第1のパーティション401のすべてのデータ・セットをロードする第1のロード・コマンド、および第1のパーティション401のデータ・ブロックのデータ・セットに対する第1の条件を試験するべく比較を開始する第1の比較コマンドを含む。
同様に、第2の計画322は、第3および第4のランダムな生年月日を指定するための値、ならびに第2の条件を満たすデータ・セット、すなわち第2のデータ・セット412を更新するための命令を含む第2の実行可能プログラムを含む。これらの命令は、例えば、第2のパーティション402のすべてのデータ・セットをロードする第2のロード・コマンド、および第2のパーティション402のデータ・ブロックのデータ・セットに対する第2の条件を試験するべく比較を開始する第2の比較コマンドを含む。
提示される方法の第1のユース・ケースでは、第1のランダムな生年月日は「02.02.」であり、第2のランダムな生年月日は「01.07.」であり、第3のランダムな生年月日は「02.10.」であり、第4のランダムな生年月日は「10.12.」である。
クエリ・コンパイラ302は、メタデータ304、この事例ではテーブル500、別の事例ではテーブル1000、第1および第2のランダムな生年月日、ならびに第1の述語を使用して、第1のパーティション401のすべてのデータ・セットをロードするために、第1のロード・コマンドを生成することができる。クエリ・コンパイラ302は、第1および第2のランダムな生年月日ならびにメタデータ304を使用して、第1のデータ・セット411が、第1のデータ・ブロック410-1および第3のデータ・ブロック410-3に記憶されているだけであり得ることを推測することができる。同様に、クエリ・コンパイラ302は、メタデータ304、第3および第4のランダムな生年月日、ならびに第2の述語を使用して、第2のパーティション402のすべてのデータ・セットをロードするために、第2のロード・コマンドを生成することができる。クエリ・コンパイラ302は、第3および第4のランダムな生年月日ならびにメタデータ304を使用して、第2のデータ・セット412が、第5のデータ・ブロック410-5および第6のデータ・ブロック410-6に記憶されているだけであり得ることを推測することができる。第1の計画321および第2の計画322は、クエリ・コンパイラ302からスタック303に転送することができる。
第1のユース・ケースによると、第1の計画321が実行される場合にアクセスされる可能性があり得るデータ・セットの第1のパーティション401は、第1のデータ・ブロック410-1および第3のデータ・ブロック410-3を含む。さらには、第1のユース・ケースを考慮すると、第2の計画322が実行される場合にアクセスされる可能性があり得るデータ・セットの第2のパーティション402は、第5のデータ・ブロック410-5および第6のデータ・ブロック410-6を含む。したがって、第1のユース・ケースは、第1のパーティション401と第2のパーティション401とが互いに素な事例を表現することができる。図4は、第1のユース・ケースについて、第1のデータ・セット411および第2のデータ・セット412の可能な分布、ならびに第1のパーティション401および第2のパーティション402の可能な構成を示す。
ワークロード・マネージャ301は、第1のパーティション401および第2のパーティション402を指定するための情報を、クエリ・オプティマイザ302から受信することができる。この例では、第1および第2のパーティション401、402を決定することは、リモート・デバイス、ここではクエリ・コンパイラ302によって、ワークロード・マネージャ301に関して、実施することができる。ワークロード・マネージャ301は、第1のパーティション401と第2のパーティション402のデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することができる。第1のユース・ケースを考慮すると、この検査の結果は、共通パーティションがないということであり得る。この事例では、ワークロード・マネージャ301は、第1の計画321および第2の計画322がRDBS300で並列に実行されるように、第1の計画321および第2の計画322をスケジュールすることができる。これを実現するために、ワークロード・マネージャ301は、図6に示されるように第1の計画321および第2の計画322が並列に実行するようにスケジュールされるように、スケジュール600を生成することができる。スケジュール600は、RDBS300の計算ユニット340のラックのうち、どの計算ユニットが、実行計画のセット331のうち、どの実行計画を実行することができるかを、決定することができる。ラック340は、例えば、第1の計算ユニット341、第2の計算ユニット342、第3の計算ユニット343、第4の計算ユニット344、および第5の計算ユニット345を含む。スケジュールは、ラック340の計算ユニットごとに1つのキュー、つまり第1の計算ユニット341には第1のキュー601、第2の計算ユニット342には第2のキュー602を含み、以降同様である。
第1および第2の計画321、322は、計算ユニット用の計算ジョブと考えることができ、これらの計画は図6では四角形で示される。図6中のラベルが付けられていない四角は、ワークロード・マネージャ301によって同じようにスケジュールすることができる、さらなる計算ジョブを示すことができる。第1のユース・ケースでは、スケジュール600は、第1の計画321が第1の計算ユニット341によって実行される予定であり、第2の計画322が第2の計算ユニット342によって実行される予定であり、計画321、322両方が少なくとも部分的に並列にスケジュールされていることを判定することができる。したがって、第1のユース・ケースでは、スケジュール600は、第1の計画321と第2の計画322とに時間的な重複があるように設計される。一例では、第1の計画321および第2の計画322は、同時に開始するようにスケジュールされてもよい。
個々のキューの1つの左部分は、この個々のキューに割振られた個々の計算ユニットで実行中の、実際の計算ジョブを示す。キューは、個々の計算ユニットによって実行されるジョブを示して左から右に時間の順で拡がり、各計算ユニットのそれぞれ最後のジョブがそれぞれ個々のキューの右側に示されている。
ラック340の計算ユニットは、第1の計画321および第2の計画322が含まれる、セット331の実行計画を実行するための、データ・テーブル420を含む様々なデータ・テーブルを含む、RDBS300のデータベース・サーバ306にアクセスすることができる。
一例では、ワークロード・マネージャ301は、第1のパーティション401および第2のパーティション402が互いに素であるか否かの情報を、クエリ・オプティマイザ302から受信することができる。この例では、ワークロード・マネージャ301は、スケジュール600の生成を実施するだけでよく、クエリ・コンパイラ302は提示される方法の他のステップを実施してもよい。
第1のユース・ケースでは、ワークロード・マネージャ301は、RDBSのロック機構を非アクティブ化してもよい。ロック機構は、データ・ブロックの第1のパーティション401またはデータ・ブロックの第2のパーティション402あるいはその両方の少なくとも一部をロックするために構成されてもよい。これらのデータ・ブロックのロックによって、これらのデータ・ブロックは、ある瞬間において単一のクエリ実行計画、例えば第1の計画321または第2の計画322の実行によってのみアクセスすることができる。
提示される方法の第2のユース・ケースでは、第1のランダムな生年月日は「02.02.」であり、第2のランダムな生年月日は「01.07.」であり、第3のランダムな生年月日は「10.07.」であり、第4のランダムな生年月日は「10.12.」である。
第2のユース・ケースによると、第1の計画321が実行される場合にアクセスされる可能性があり得るデータ・セットの第1のパーティション401は、第1のデータ・ブロック410-1および第3のデータ・ブロック410-3を含む。さらには、第1のユース・ケースを考慮すると、第2の計画322が実行される場合にアクセスされる可能性があり得るデータ・セットの第2のパーティション402は、第3のデータ・ブロック410-3および第6のデータ・ブロック410-6を含む。したがって、第2のユース・ケースは、第1のパーティション401と第2のパーティション402とが互いに素でない事例を表現することができる。図7は、第2のユース・ケースについて、第1のデータ・セット411および第2のデータ・セット412の可能な分布、ならびに第1のパーティション401および第2のパーティション402の可能な構成を示す。
第1のユース・ケースと同様に、第2のユース・ケースでは、ワークロード・マネージャ301は、第1のパーティション401と第2のパーティション402のデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することができる。第2のユース・ケースを考慮すると、この検査の結果は、共通パーティションがあるということであり得る。共通パーティションは、第3のデータ・ブロック410-3を含む。この事例では、第1の変形例に従って、ワークロード・マネージャ301は、第1の計画321の結果が第2の計画322の利用のためにRDBS300のキャッシュ・メモリ内で利用可能となるように、第1の計画321および第2の計画322をスケジュールすることができる。これを実現する1つの態様は、第2の計画322が、例えば第1の変形例の第1の例によると第1の計画321と同一キュー、第1のキュー601にスケジュールされるように、ワークロード・マネージャ301がスケジュール600を生成することであってもよい。これは、第1の計算ユニット341が第1の計画321を実行した後、第1の計算ユニット341が第2の計画322を実行すると、第1のパーティション401のデータ・ブロックのデータ・セットを、第1の計算ユニット341のキャッシュに記憶できるようにする。図8は、第2のユース・ケースの第1の変形例の第1の例による、ワークロード・マネージャ301によって生成されたスケジュール600を示す。
同様に、計画321、322両方が第2のキュー602にスケジュールされた場合、こうすることで、第2の計算ユニット342が第1の計画321を実行した後、第2の計算ユニット342が第2の計画322を実行すると、第1のパーティション401のデータ・ブロックのデータ・セットが、第2の計算ユニット342のキャッシュに記憶され得ることを可能にしてもよい。
第2のユース・ケースの第1の変形例の第2の例によると、ワークロード・マネージャ301は、第1の計画321および第2の計画322が互いの直後に実行されるようにスケジュールされるように、第1の計画321および第2の計画322をスケジュールすることができる。これを実現する1つの態様は、第2の計画322が、第1の計画321の直後に続いて第1の計画321と同一キュー、例えば第1のキュー601にスケジュールされるように、ワークロード・マネージャ301がスケジュール600を生成することであってもよい。図9は、第2のユース・ケースの第1の変形例の第2の例による、ワークロード・マネージャ301によって生成されたスケジュール600を示す。さらには、図9は、第1の計画321が、実際のある瞬間に実行中であり、第2の計画322が、将来的な瞬間に開始するようにスケジュールされる、スケジュール600の例を描いている。しかしながら、別の例によると、第2のユース・ケースの第1の変形例の第2の例の適用を表現するために、第1の計画321は必ずしも実際のある瞬間に実行される必要はない。
一般的に、上述のユース・ケース、変形例、および例のすべてを考慮すると、ワークロード・マネージャ301は、一例では、スケジュール600をラック340においてジョブ・マネージャに送信することができる。別の例では、ワークロード・マネージャ301は、スケジュール600を使用して、計算ジョブ、例えば第1の計画321または第2の計画322あるいはその両方を、ラック340において開始することができる。一例では、ラック340は、ワークロード・マネージャ301を含む。この事例では、ワークロード・マネージャ301は、ラック340での計算ジョブを制御およびログ記録することができる。
以下では、データ・セットが上述のように生年月日によって並べ替えされない、さらなる変形例を説明する。この事例では、第1の列に関するメタデータ304は、図10に示されるテーブル1000に与えられる値を含むことができる。6つのデータ・ブロックを含むデータ・テーブル420に従って、テーブル1000は6行を含む。テーブル500の各行では、個々のデータ・ブロック410-Nのデータ・セットによって与えられる、最も早い生年月日および最も遅い生年月日が記憶され得る。
さらなる変形例では、また第1のユース・ケース、すなわち第1のランダムな生年月日が「02.02.」であり、第2のランダムな生年月日が「01.07.」であり、第3のランダムな生年月日が「02.10.」であり、第4のランダムな生年月日が「10.12.」であるケースによると、第1の計画321が実行される場合にアクセスされる可能性があり得るデータ・セットの第1のパーティション401は、第1のデータ・ブロック410-1、第2のデータ・ブロック410-2、および第3のデータ・ブロック410-3を含む。さらには、さらなる変形例および第1のユース・ケースを考慮すると、第2の計画322が実行される場合にアクセスされる可能性があり得るデータ・セットの第2のパーティション402は、第4のデータ・ブロック410-4、第5のデータ・ブロック410-5および第6のデータ・ブロック410-6を含む。したがって、さらなる変形例を考慮すると、第1のユース・ケースは、同じように第1のパーティション401と第2のパーティション402とが互いに素である事例を表現することができる。図11は、さらなる変形例および第1のユース・ケースを考慮すると、第1のデータ・セット411および第2のデータ・セット412の可能な分布、ならびに第1のパーティション401および第2のパーティション402の可能な構成を示す。
さらなる変形例では、第1のパーティション401を決定することは、メタデータ304および第1の条件に基づいて、データ・ブロック410の第1のコンプリメンタリ・パーティション701を破棄することを含む。第1のコンプリメンタリ・パーティション701は、第1の計画321がRDBS300で実行される場合にアクセスされていないデータ・ブロック410のデータ・ブロックを表現することができる。さらには、第2のパーティション402を決定することは、メタデータ304および第2の条件に基づいて、データ・ブロック410の第2のコンプリメンタリ・パーティション702を破棄することを含む。第2のコンプリメンタリ・パーティション702は、RDBS300で第2の計画322が実行される場合に、アクセスされていないデータ・ブロック410のデータ・ブロックを表現することができる。
ワークロード・マネージャ301またはクエリ・コンパイラ302は、テーブル1000、第1および第2のランダムな生年月日、ならびに第1の述語によって与えられるメタデータ304を使用して、第1のコンプリメンタリ・パーティション701の破棄を実行することができる。同様に、ワークロード・マネージャ301またはクエリ・コンパイラ302は、テーブル1000、第3および第4のランダムな生年月日、ならびに第2の述語によって与えられるメタデータ304を使用して、第2のコンプリメンタリ・パーティション702の破棄を実行することができる。例えば、第1および第2のランダムな生年月日が、テーブル1000によって与えられる個々のデータ・ブロック410-Nの範囲に存在しない場合、このデータ・ブロック410-Nは、第1のパーティション401を決定するために破棄されてもよい。第1のユース・ケースによると、第1のコンプリメンタリ・パーティション701は、第4のデータ・ブロック410-4、第5のデータ・ブロック410-5、および第6のデータ・ブロック410-6を含む。次いで、第1のパーティション401は、第1のコンプリメンタリ・パーティション701を持たない、データ・ブロック410を含むデータ・ブロックのセットとして決定することができる。同様に、第2のコンプリメンタリ・パーティション702を決定することができ、第2のパーティション402は第2のコンプリメンタリ・パーティション702に基づいている。
第1のユース・ケースのさらなる変形例におけるように、第1のパーティション401および第2のパーティション402は互いに素である。つまり、第1のパーティション401と第2のパーティション402との共通パーティションは存在せず、ワークロード・マネージャ301は、データ・セットが生年月日に関して並べられる第1のユース・ケースの変形例と同じようにスケジューリングを実施することができる。
さらなる変形例および第2のユース・ケース、すなわち第1のランダムな生年月日が「02.02.」であり、第2のランダムな生年月日が「01.07.」であり、第3のランダムな生年月日が「10.07.」であり、第4のランダムな生年月日が「10.12.」であるケースを考慮すると、第1の計画321が実行される場合にアクセスされる可能性があり得るデータ・セットの第1のパーティション401は、第1のデータ・ブロック410-1、第2のデータ・ブロック410-2、および第3のデータ・ブロック410-3を含む。さらには、さらなる変形例および第2のユース・ケースを考慮すると、第2の計画322が実行される場合にアクセスされる可能性があり得るデータ・セットの第2のパーティション402は、すべてのデータ・ブロック410を含む。したがって、さらなる変形例を考慮すると、第2のユース・ケースは、同じように第1のパーティション401と第2のパーティション402とが互いに素である事例を表現することができる。図12は、さらなる変形例および第2のユース・ケースを考慮すると、第1のデータ・セット411および第2のデータ・セット412の可能な分布、ならびに第1のパーティション401および第2のパーティション402の可能な構成を示す。
第2のユース・ケースのさらなる変形例におけるように、第1のパーティション401および第2のパーティション402は互いに素ではない。つまり、第1のパーティション401と第2のパーティション402との共通パーティションが存在し、ワークロード・マネージャ301は、データ・セットが生年月日に関して並べられる第2のユース・ケースの変形例と同じようにスケジューリングを実施することができる。
図13は、クエリ実行計画のセット331をスケジューリングするためのコンピュータ実装方法のフローチャートを示す。
ステップ1001では、第1のクエリ実行計画321がRDBS300で実行される場合にアクセスされる可能性があるデータ・ブロックの第1のパーティション401は、メタデータ304および第1の条件に基づいて決定することができる。
ステップ1002では、第2のクエリ実行計画322がRDBS300で実行される場合にアクセスされる可能性があるデータ・ブロックの第2のパーティション402は、メタデータ304および第2の条件に基づいて決定することができる。
ステップ1003では、第1のパーティション401と第2のパーティション402のデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することができる。
ステップ1004では、第1のクエリ実行計画321および第2のクエリ実行計画322を、検査の結果に基づいてRDBS300でスケジュールすることができる。
本開示は、統合のあらゆる可能な技術的詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。
コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは前述のあらゆる好適な組合せであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙としては、以下が挙げられる:ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、命令が記録されたパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる好適な組合せ。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を介して伝送される電気的信号など、一過性の信号そのものであると解釈されてはならない。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、個別のコンピューティング/処理デバイスに、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せなどのネットワークを介して、外部のコンピュータまたは外部のストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅の送信ケーブル、光学送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含む。それぞれのコンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
本開示の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための設定データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語などの手続き型プログラミング言語もしくは類似するプログラミング言語、を含む1つまたは複数のプログラミング言語のあらゆる組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、すべてユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして、一部はユーザのコンピュータ上で一部はリモートのコンピュータ上で、またはすべてリモートのコンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオでは、リモートのコンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は(例えば、インターネット・サービス・プロバイダを使用するインターネットを介して)外部のコンピュータに対してなされてもよい。一部の実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路をカスタマイズすることができる。
本開示の態様は、本開示の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装する手段を作成すべく、コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実装する命令を含む製造品を備えるべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の態様で機能するように指示することができるものであってもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実施させるものであってもよい。
図面中のフローチャートおよびブロック図は、本開示の様々な実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フローチャートまたはブロック図のそれぞれのブロックは、指定される論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。いくつかの代替的な実装形態において、ブロックにおいて示した機能は図面で示した順とは異なって発生してもよい。例えば、連続して示される2つのブロックは、実際には1つのステップとして遂行されてもよく、同時に、実質的に同時に、部分的もしくは全体的に時間的に重なる態様で実行されてもよく、またはブロックは関与する機能性によっては、時に逆の順で実行されてもよい。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実施する、または専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
以下では、本明細書で開示される特徴の、いくつかの可能で非排他的な組合せを強調する条項のリストによって、再度本開示を説明する。
クエリ実行計画のセットをスケジューリングするためのコンピュータ実装方法であって、クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム、RDBSのデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、データが、データのデータ・セットのデータ・ブロックに分割されており、RDBSのメタデータが、データ・ブロックの個々のデータ・ブロックのデータ・セットの少なくとも1つのプロパティについての個々の情報を含み、方法が、
第1のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第1のパーティションを、メタデータと、第1のデータ・セットが第1のクエリに従って満たさなければならない条件とに基づいて、決定することと、
第2のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第2のパーティションを、メタデータと、第2のデータ・セットが第2のクエリに従って満たさなければならない条件とに基づいて、決定することと、
第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することと、
検査の結果に基づいてRDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることと
を含む、コンピュータ実装方法。
第1のパーティションを決定することが、メタデータと、第1のデータ・セットが第1のクエリに従って満たさなければならない条件とに基づいてデータ・ブロックの第1のコンプリメンタリ・パーティションを破棄することを含み、データ・ブロックの第1のコンプリメンタリ・パーティションが、第1のクエリ実行計画がRDBSで実行される場合にアクセスされていないデータのデータ・ブロックを表現しており、第2のパーティションを決定することが、メタデータと、第2のデータ・セットが第2のクエリに従って満たさなければならない条件とを使用してデータ・ブロックの第2のコンプリメンタリ・パーティションを破棄することを含み、データ・ブロックの第2のコンプリメンタリ・パーティションが、第2のクエリ実行計画がRDBSで実行される場合にアクセスされていないデータのデータ・ブロックを表現している、条項1に記載の方法。
方法が、第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがない場合、第1のクエリ実行計画および第2のクエリ実行計画がRDBSで並列に実行されるように、第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることをさらに含む、条項1または2に記載の方法。
方法が、第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがある場合、第1のクエリ実行計画の結果が、第2のクエリ実行計画の利用のためにRDBSのキャッシュ・メモリ内で利用可能となるように、第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることをさらに含む、条項1または2に記載の方法。
方法が、データ・ブロックの第1のパーティションおよびデータ・ブロックの第2のパーティションの少なくとも一部をロックするためのRDBSのロック機構を非アクティブ化することであって、ロック機構が、これらのデータ・ブロックが、ある瞬間に単一のクエリ実行計画の実行によってのみアクセスでされ得るようにし、ロック機構が、第1のパーティションと第2のパーティションのデータ・ブロック同士に共通パーティションがない場合、非アクティブ化される、非アクティブ化することをさらに含む、条項1、2または3に記載の方法。
方法が、共通パーティションのデータ・ブロックをロックするためのRDBSのロック機構を、これらのデータ・ブロックが、ある瞬間に単一のクエリ実行計画の実行によってのみアクセスされ得るようにアクティブ化することであって、ロック機構が、第1のパーティションと第2のパーティションのデータ・ブロック同士に共通パーティションが存在する場合にアクティブ化される、アクティブ化することをさらに含む、条項1、2または4に記載の方法。
個々のデータ・ブロックのデータ・セットのプロパティに関する個々の情報が、個々のデータ・ブロックのデータ・セットのデータ値が存在する範囲であり、範囲が、個々のデータ・ブロックにおける最小データ値と、個々のデータ・ブロックにおける最大データ値とによって定められる、条項1ないし6のうちの一項に記載の方法。
RDBSのデータが、データ・テーブルを使用してRDBSに記憶され、範囲が、個々のデータ・ブロック内のデータ・テーブルの列にある最小データ値と、個々のデータ・ブロック内のデータ・テーブルの列にある最大データ値とによって定められ、個々のデータ・ブロックが、データ・テーブルの行の個々のブロックを示す、条項7に記載の方法。
データ・セットのプロパティが、個々のデータ・ブロック内のデータ・セットのデータ値の分布であり、個々のデータ・ブロックのデータ・セットのプロパティについての個々の情報が、データ値の分布を説明している、条項1ないし6のうちの一項に記載の方法。
RDBSのデータが、データ・テーブルを使用してRDBSに記憶され、分布が、個々のデータ・ブロック内のデータ・テーブルの列にあるデータ値の分布を指し、個々のデータ・ブロックのデータ・セットのプロパティについての個々の情報が、個々のデータ・ブロック内のデータ・テーブルの列にあるデータ値の分布を説明しており、個々のデータ・ブロックが、データ・テーブルの行の個々のブロックを示す、条項9に記載の方法。
分布が密度ベクトルによって表現される、条項9または10に記載の方法。
2つのクエリ実行計画のうちの1つ、すなわち第1または第2のクエリ実行計画が、実際のある瞬間に実行中であり、2つのクエリ実行計画のうちのもう1つが、将来的なある瞬間に開始されるようにスケジュールされる、条項1ないし11のうちの一項に記載の方法。
第1のクエリ実行計画および第2のクエリ実行計画が、互いの直後に実行されるようにスケジュールされる、条項1、2、4、6、7、8、9、10、11または12に記載の方法。
方法が、RDBSのクエリ・オプティマイザからメタデータを受信することをさらに含む、条項1ないし13のうちの一項に記載の方法。
方法が、RDBSのクエリ・オプティマイザから、第1のパーティションおよび第2のパーティションを指定するための情報を受信することをさらに含む、条項1ないし14のうちの一項に記載の方法。
方法が、共通パーティションがなくなるように、RDBSのクエリ・オプティマイザを実行するための境界条件をセットすることをさらに含む、条項1ないし15のうちの一項に記載の方法。
条項1ないし16のうちの一項による方法を実装するように構成されたコンピュータ可読プログラム・コードが具体化されたコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
クエリ実行計画のセットをスケジューリングするためのコンピュータ・システムであって、クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム、RDBS、のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、データが、データのデータ・セットのデータ・ブロックに分割されており、RDBSのメタデータが、データ・ブロックの個々のデータ・ブロックのデータ・セットの少なくとも1つのプロパティについての個々の情報を含み、コンピュータ・システムが、第1のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第1のパーティションを、メタデータと、第1のデータ・セットが第1のクエリに従って満たさなければならない条件とに基づいて、決定することと、第2のクエリ実行計画がRDBSで実行される場合にアクセスされる可能性があるデータ・ブロックの第2のパーティションを、メタデータと、第2のデータ・セットが第2のクエリに従って満たさなければならない条件とに基づいて、決定することと、第1のパーティションと第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査を実施することと、検査の結果に基づいてRDBSで第1のクエリ実行計画および第2のクエリ実行計画をスケジューリングすることとのために構成される、コンピュータ・システム。

Claims (20)

  1. クエリ実行計画のセットをスケジューリングするためのコンピュータ実装方法であって、前記クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム(RDBS)のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、前記データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、前記データが、前記データのデータ・セットのデータ・ブロックに分割されており、前記RDBSのメタデータが、前記データ・ブロックの個々のデータ・ブロックの前記データ・セットの少なくとも1つのプロパティについての個々の情報を含み、前記方法が、
    前記第1のクエリ実行計画が前記RDBSで実行されるとアクセスされる前記データ・ブロックの第1のパーティションを、前記メタデータと、前記第1のデータ・セットが前記第1のクエリに従って満たさなければならない条件とに基づいて、決定することと、
    前記第2のクエリ実行計画が前記RDBSで実行されるとアクセスされる前記データ・ブロックの第2のパーティションを、前記メタデータと、前記第2のデータ・セットが前記第2のクエリに従って満たさなければならない別の条件とに基づいて、決定することと、
    前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査することと、
    検査に基づいて前記RDBSで前記第1のクエリ実行計画および前記第2のクエリ実行計画をスケジューリングすることと
    を含む、コンピュータ実装方法。
  2. 前記第1のパーティションを決定することが、前記メタデータと、前記第1のデータ・セットが前記第1のクエリに従って満たさなければならない前記条件とに基づいて前記データ・ブロックの第1のコンプリメンタリ・パーティションを破棄することを含み、前記データ・ブロックの前記第1のコンプリメンタリ・パーティションが、前記第1のクエリ実行計画が前記RDBSで実行される場合にアクセスされていない前記データのデータ・ブロックを表現しており、前記第2のパーティションを前記決定することが、前記メタデータと、前記第2のデータ・セットが前記第2のクエリに従って満たさなければならない前記条件とを使用して前記データ・ブロックの第2のコンプリメンタリ・パーティションを破棄することを含み、前記データ・ブロックの前記第2のコンプリメンタリ・パーティションが、前記第2のクエリ実行計画が前記RDBSで実行される場合にアクセスされていない前記データのデータ・ブロックを表現している、請求項1に記載の方法。
  3. 前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士の共通パーティションがない場合、前記第1のクエリ実行計画および前記第2のクエリ実行計画が前記RDBSで並列に実行されるように、前記第1のクエリ実行計画および前記第2のクエリ実行計画をスケジューリングすること
    をさらに含む、請求項1に記載の方法。
  4. 前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士の共通パーティションがある場合、前記第1のクエリ実行計画の結果が、前記第2のクエリ実行計画の利用のために前記RDBSのキャッシュ・メモリ内で利用可能となるように、前記第1のクエリ実行計画および前記第2のクエリ実行計画をスケジューリングすること
    をさらに含む、請求項1に記載の方法。
  5. 前記データ・ブロックの前記第1のパーティションおよび前記データ・ブロックの前記第2のパーティションの少なくとも一部をロックするための前記RDBSのロック機構を非アクティブ化することであって、前記ロック機構が、前記データ・ブロックが、ある瞬間に単一のクエリ実行計画の実行によってのみアクセスできるようにし、前記ロック機構が、前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士に共通パーティションがない場合、非アクティブ化される、前記非アクティブ化すること
    をさらに含む、請求項1に記載の方法。
  6. 前記共通パーティションの前記データ・ブロックをロックするための前記RDBSのロック機構を、前記データ・ブロックが、ある瞬間に単一のクエリ実行計画の実行によってのみアクセスされるようにアクティブ化することであって、前記ロック機構が、前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士に共通パーティションがある場合にアクティブ化される、前記アクティブ化すること
    をさらに含む、請求項1に記載の方法。
  7. 前記個々のデータ・ブロックの前記データ・セットの前記プロパティに関する前記個々の情報が、前記個々のデータ・ブロックの前記データ・セットのデータ値が存在する範囲であり、前記範囲が、前記個々のデータ・ブロックにおける最小データ値と、前記個々のデータ・ブロックにおける最大データ値とによって定められる、請求項1に記載の方法。
  8. 前記RDBSの前記データが、データ・テーブルを使用して前記RDBSに記憶され、前記範囲が、前記個々のデータ・ブロック内の前記データ・テーブルの列にある最小データ値と、前記個々のデータ・ブロック内の前記データ・テーブルの前記列にある最大データ値とによって定められ、前記個々のデータ・ブロックが、前記データ・テーブルの行の個々のブロックを示す、請求項7に記載の方法。
  9. 前記データ・セットの前記プロパティが、前記個々のデータ・ブロック内の前記データ・セットのデータ値の分布であり、前記個々のデータ・ブロックの前記データ・セットの前記プロパティについての前記個々の情報が、前記データ値の前記分布を説明している、請求項1に記載の方法。
  10. 前記RDBSの前記データが、データ・テーブルを使用して前記RDBSに記憶され、前記分布が、前記個々のデータ・ブロック内の前記データ・テーブルの列にある前記データ値の分布を指し、前記個々のデータ・ブロックの前記データ・セットの前記プロパティについての前記個々の情報が、前記個々のデータ・ブロック内の前記データ・テーブルの前記列にある前記データ値の前記分布を説明しており、前記個々のデータ・ブロックが、前記データ・テーブルの行の個々のブロックを示す、請求項9に記載の方法。
  11. 前記分布が密度ベクトルによって表現される、請求項9に記載の方法。
  12. 前記2つのクエリ実行計画のうちの1つ、すなわち前記第1または前記第2のクエリ実行計画が、実際のある瞬間に実行中であり、前記2つのクエリ実行計画のうちのもう1つが、将来的なある瞬間に開始されるようにスケジュールされる、請求項1に記載の方法。
  13. 前記第1のクエリ実行計画および前記第2のクエリ実行計画が、互いの直後に実行されるようにスケジュールされる、請求項4に記載の方法。
  14. 前記方法が、前記RDBSのクエリ・オプティマイザから前記メタデータを受信することをさらに含む、請求項1に記載の方法。
  15. 前記方法が、前記RDBSのクエリ・オプティマイザから、前記第1のパーティションおよび前記第2のパーティションを指定するための情報を受信することをさらに含む、請求項1に記載の方法。
  16. 前記方法が、前記共通パーティションがなくなるように、前記RDBSのクエリ・オプティマイザを実行するための境界条件をセットすることをさらに含む、請求項1に記載の方法。
  17. クエリ実行計画のセットをスケジューリングするためのコンピュータ・プログラム製品であって、前記クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム(RDBS)のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、前記データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、前記データが、前記データのデータ・セットのデータ・ブロックに分割されており、前記RDBSのメタデータが、前記データ・ブロックの個々のデータ・ブロックの前記データ・セットの少なくとも1つのプロパティについての個々の情報を含み、前記コンピュータ・プログラム製品が、
    1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令とを備え、前記プログラム命令が、
    前記第1のクエリ実行計画が前記RDBSで実行されるとアクセスされる前記データ・ブロックの第1のパーティションを、前記メタデータと、前記第1のデータ・セットが前記第1のクエリに従って満たさなければならない条件とに基づいて、決定するためのプログラム命令と、
    前記第2のクエリ実行計画が前記RDBSで実行されるとアクセスされる前記データ・ブロックの第2のパーティションを、前記メタデータと、前記第2のデータ・セットが前記第2のクエリに従って満たさなければならない別の条件とに基づいて、決定するためのプログラム命令と、
    前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査するためのプログラム命令と、
    検査に基づいて前記RDBSで前記第1のクエリ実行計画および前記第2のクエリ実行計画をスケジューリングするためのプログラム命令と
    を含む、コンピュータ・プログラム製品。
  18. クエリ実行計画のセットをスケジューリングするためのコンピュータ・システムであって、前記クエリ実行計画のセットが、少なくとも、リレーショナル・データベース・システム(RDBS)のデータの第1のデータ・セットにアクセスするための第1のクエリを実行するための第1のクエリ実行計画と、前記データの第2のデータ・セットにアクセスするための第2のクエリを実行するための第2のクエリ実行計画とを含み、前記データが、前記データのデータ・セットのデータ・ブロックに分割されており、前記RDBSのメタデータが、前記データ・ブロックの個々のデータ・ブロックの前記データ・セットの少なくとも1つのプロパティについての個々の情報を含み、前記コンピュータ・システムが、
    前記第1のクエリ実行計画が前記RDBSで実行されるとアクセスされる前記データ・ブロックの第1のパーティションを、前記メタデータと、前記第1のデータ・セットが前記第1のクエリに従って満たさなければならない条件とに基づいて、決定することと、
    前記第2のクエリ実行計画が前記RDBSで実行されるとアクセスされる前記データ・ブロックの第2のパーティションを、前記メタデータと、前記第2のデータ・セットが前記第2のクエリに従って満たさなければならない別の条件とに基づいて、決定することと、
    前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士の共通パーティションがあるかどうか検査することと、
    検査に基づいて前記RDBSで前記第1のクエリ実行計画および前記第2のクエリ実行計画をスケジューリングすることと
    のために構成される、コンピュータ・システム。
  19. 前記第1のパーティションを決定することが、前記メタデータと、前記第1のデータ・セットが前記第1のクエリに従って満たさなければならない前記条件とに基づいて前記データ・ブロックの第1のコンプリメンタリ・パーティションを破棄することを含み、前記データ・ブロックの前記第1のコンプリメンタリ・パーティションが、前記第1のクエリ実行計画が前記RDBSで実行される場合にアクセスされていない前記データのデータ・ブロックを表現しており、前記第2のパーティションを前記決定することが、前記メタデータと、前記第2のデータ・セットが前記第2のクエリに従って満たさなければならない前記条件とを使用して前記データ・ブロックの第2のコンプリメンタリ・パーティションを破棄することを含み、前記データ・ブロックの前記第2のコンプリメンタリ・パーティションが、前記第2のクエリ実行計画が前記RDBSで実行される場合にアクセスされていない前記データのデータ・ブロックを表現している、請求項18に記載のコンピュータ・システム。
  20. 前記第1のパーティションと前記第2のパーティションのデータ・ブロック同士の共通パーティションがない場合、前記第1のクエリ実行計画および前記第2のクエリ実行計画が前記RDBSで並列に実行されるように、前記第1のクエリ実行計画および前記第2のクエリ実行計画をスケジューリングすること
    のためにさらに構成される、請求項18に記載のコンピュータ・システム。
JP2023534179A 2020-12-08 2021-12-07 リレーショナル・データベースにおけるクエリ実行計画のスケジューリング Pending JP2024500058A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/114,786 2020-12-08
US17/114,786 US20220179861A1 (en) 2020-12-08 2020-12-08 Scheduling query execution plans on a relational database
PCT/IB2021/061407 WO2022123437A1 (en) 2020-12-08 2021-12-07 Scheduling query execution plans on a relational database

Publications (2)

Publication Number Publication Date
JP2024500058A true JP2024500058A (ja) 2024-01-04
JPWO2022123437A5 JPWO2022123437A5 (ja) 2024-01-12

Family

ID=81850509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023534179A Pending JP2024500058A (ja) 2020-12-08 2021-12-07 リレーショナル・データベースにおけるクエリ実行計画のスケジューリング

Country Status (6)

Country Link
US (1) US20220179861A1 (ja)
JP (1) JP2024500058A (ja)
CN (1) CN116569163A (ja)
DE (1) DE112021006377T5 (ja)
GB (1) GB2615505B (ja)
WO (1) WO2022123437A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116303575B (zh) * 2023-03-22 2023-12-12 本原数据(北京)信息技术有限公司 数据库数据查询方法、装置及非易失性存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014655A (en) * 1996-03-13 2000-01-11 Hitachi, Ltd. Method of retrieving database
CA2306968C (en) * 2000-04-28 2004-11-30 Ibm Canada Limited-Ibm Canada Limitee Efficient index-data fetch via callback for a table data
US20070226176A1 (en) * 2006-03-23 2007-09-27 International Business Machines Corporation Apparatus and method for optimizing a query to a partitioned database table using a virtual maintained temporary index that spans multiple database partitions
US9147272B2 (en) * 2006-09-08 2015-09-29 Christopher Allen Ingrassia Methods and systems for providing mapping, data management, and analysis
US20080104008A1 (en) * 2006-10-31 2008-05-01 Brantley David L Common data broker method, system, and program product
US9251207B2 (en) * 2007-11-29 2016-02-02 Microsoft Technology Licensing, Llc Partitioning and repartitioning for data parallel operations
US20090235356A1 (en) * 2008-03-14 2009-09-17 Clear Blue Security, Llc Multi virtual expert system and method for network management
US8386508B2 (en) * 2008-04-28 2013-02-26 Infosys Technologies Limited System and method for parallel query evaluation
CN102262636B (zh) * 2010-05-25 2012-10-10 中国移动通信集团浙江有限公司 生成数据库分区执行计划的方法及装置
US8918793B2 (en) * 2011-12-07 2014-12-23 Sap Se Resolving resource contentions
US9495411B2 (en) * 2012-09-24 2016-11-15 Salesforce.Com, Inc. Increased parallelism performance of batch requests
CN104216893B (zh) * 2013-05-31 2018-01-16 中国电信股份有限公司 多租户共享数据表的分区管理方法、服务器与系统
US20160371329A1 (en) * 2015-06-22 2016-12-22 Sap Se Prepared execution plans for joins with partitioned tables
EP3443471B1 (en) * 2016-06-30 2021-12-01 Huawei Technologies Co., Ltd. Systems and methods for managing databases
US11468060B2 (en) * 2018-06-25 2022-10-11 Oracle International Corporation Automatic query offloading to a standby database

Also Published As

Publication number Publication date
CN116569163A (zh) 2023-08-08
GB2615505B (en) 2024-01-03
GB2615505A (en) 2023-08-09
US20220179861A1 (en) 2022-06-09
WO2022123437A1 (en) 2022-06-16
GB202308020D0 (en) 2023-07-12
DE112021006377T5 (de) 2023-10-05

Similar Documents

Publication Publication Date Title
US20210374610A1 (en) Efficient duplicate detection for machine learning data sets
US11544623B2 (en) Consistent filtering of machine learning data
US11379755B2 (en) Feature processing tradeoff management
US10943024B2 (en) Querying in big data storage formats
CA2953817C (en) Feature processing tradeoff management
US20170286566A1 (en) Optimizing sparse schema-less data in data stores
US9189524B2 (en) Obtaining partial results from a database query
US9128991B2 (en) Techniques to perform in-database computational programming
WO2019003069A1 (en) ADAPTIVE EVALUATION OF META-RELATIONS IN SEMANTIC GRAPHICS
GB2508503A (en) Batch evaluation of remote method calls to an object oriented database
US11163792B2 (en) Work assignment in parallelized database synchronization
JP2024500058A (ja) リレーショナル・データベースにおけるクエリ実行計画のスケジューリング
Huang et al. Performance evaluation of enabling logistic regression for big data with R
Hwang et al. Statistical strategies for the analysis of massive data sets
US20220027410A1 (en) Methods for representing and storing data in a graph data structure using artificial intelligence
US10891274B2 (en) Data shuffling with hierarchical tuple spaces
US10628452B2 (en) Providing multidimensional attribute value information
US11874830B2 (en) Efficient job writing for database member
Dymora et al. Performance Analysis of a Real-Time Data Warehouse System Implementation Based on Open-Source Technologies
US10235394B2 (en) Managing relational databases
Davidson et al. Boolean Logical Operator Driven Selective Data Filtering For Large Datasets
US20220309384A1 (en) Selecting representative features for machine learning models
US20200073985A1 (en) Correlation of input and output parameters for a function in a database management system
Wen et al. EpiTopics: A dynamic machine learning model to predict and inform non-pharmacological public health interventions from global news reports
Elisseev et al. Scalable in-memory processing of omics workflows

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231227