JP6929388B2 - クエリリソースキャッシングのためのシステムおよび方法 - Google Patents

クエリリソースキャッシングのためのシステムおよび方法 Download PDF

Info

Publication number
JP6929388B2
JP6929388B2 JP2019563840A JP2019563840A JP6929388B2 JP 6929388 B2 JP6929388 B2 JP 6929388B2 JP 2019563840 A JP2019563840 A JP 2019563840A JP 2019563840 A JP2019563840 A JP 2019563840A JP 6929388 B2 JP6929388 B2 JP 6929388B2
Authority
JP
Japan
Prior art keywords
execution
query
queries
resource
threshold
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
JP2019563840A
Other languages
English (en)
Other versions
JP2020522781A5 (ja
JP2020522781A (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 JP2020522781A publication Critical patent/JP2020522781A/ja
Publication of JP2020522781A5 publication Critical patent/JP2020522781A5/ja
Application granted granted Critical
Publication of JP6929388B2 publication Critical patent/JP6929388B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Description

技術分野
本発明は、リソースキャッシングに関する。特に、本発明は、クエリによってアクセスされたリソースを選択的にキャッシングすることに関する。
優先権
この出願は、2017年5月19日に提出された米国仮出願第15/600,518号の利益と優先権を主張する。
背景
キャッシュとは、データを格納するためのハードウェアおよび/またはソフトウェアを指し得る。キャッシュからデータを取得することは、ハードディスクまたは実行環境に対してリモートにある任意のストレージシステムからデータを取得することよりも典型的に速い。最も一般的に、キャッシュは、最近使用されたデータを格納する。キャッシュは、別の場所において格納されたデータのコピーを格納し得、および/または計算の結果を格納し得る。ウェブに基づくキャッシングはまた一般的であり、サーバとクライアントとの間のウェブキャッシュは、データを格納する。クライアントは、ウェブキャッシュからのデータにサーバ内のデータよりも速くアクセスし得る。
クエリは、データベースから特定されたデータをフェッチする。一般的に、データは、リレーショナルデータベース内に格納される。リレーショナルデータベースは、データを1つまたは複数のテーブル内に格納する。テーブルは、フィールドまたは列へと組織化されたデータの行で構成される。たとえば”FirstName”および”LastName”は、データテーブルのフィールドであり、その内部の行の数は、テーブルに格納された名前の数である。
Structured Query Language(SQL)は、リレーショナルデータベース内のデータを管理するための言語である。SQLクエリは、特定された条件に基づきデータを取得する。多くのSQLクエリは、データを取得するSELECTステートメントを使用する。SQLクエリはそして、FROM−どのテーブルがデータを包含するか、JOIN−テーブルを結合するためのルールを特定する、WHERE−クエリによって返された行を制限する、GROUP BY−重複行を集約する、Order BY−データをソートするための順序を特定する、といった条件を特定する。たとえば、”SELECT breed, age, Name FROM Dogs WHERE age < 3 ORDER BY breed”というSQLクエリは、”Dogs”というテーブルから3歳未満の犬のリストを、品種ごとにアルファベット順に、各犬の品種、年齢、名前を取得して返却する。出力は、”Bulldog 1 Max | Cocker Spaniel 2 Joey | Golden Retriever 1.5 Belinda”のようになる。
ますます、データベースは、マルチテナントクラウドアーキテクチャを使用して格納される。マルチテナントクラウドアーキテクチャでは、異なるテナントからのデータは、共有されたリソースを使用して格納される。共有されたリソースは、サーバ、データベース、および/またはテーブルのうちのいくつかの全体的なまたは部分的な組み合わせであり得る。マルチテナント化は、データを格納するために必要とされたリソース量を減らし、コストを削減する。
このセクションにおいて記載されたアプローチは、特許請求可能なアプローチであり、既知のまたは特許請求されたアプローチとはかぎらない。したがって、特に明記しない限り、このセクションに記載されたアプローチのいずれかが、単にこのセクションに含まれているという理由だけで、先行技術として認められると想定されるべきではない。
図面の簡単な説明
実施形態は、添付の図面の図において限定ではなく例として示される。本開示における「ある」または「1つ」の実施形態への言及は、必ずしも同じ実施形態への言及ではなく、少なくとも1つを意味することに留意されたい。
1つまたは複数の実施形態に従うリソースキャッシングシステムを示す。 1つまたは複数の実施形態に従うクエリによる選択的キャッシングのための例示的な動作の組を示す。 1つまたは複数の実施形態に従うリソースによる選択的キャッシングのための例示的な動作の組を示す。 1つまたは複数の実施形態に従うJOINによる選択的キャッシングのための例示的な動作の組を示す。 1つまたは複数の実施形態に従うシステムのブロック図を示す。
詳細な説明
以下の説明では、説明の目的で、完全な理解を提供するために多くの特定の詳細が述べられる。1つまたは複数の実施形態は、これらの特定の詳細なしで、実施されることができる。1つの実施形態で説明される特徴は、異なる実施形態で説明される特徴と組み合わせることができる。いくつかの例では、本発明を不必要に不明瞭にすることを避けるために、ブロック図形式を参照して既知の構造およびデバイスを説明する。
1. 一般概要
2. リソースキャッシングシステム
3. クエリに基づくリソースキャッシング
4. リソース使用に基づくリソースキャッシング
5. 動作に基づくリソースキャッシング
6. 例示的実施形態−集約クエリ
7. その他、拡張
8. ハードウェア概要
1. 一般概要
1つまたは複数の実施形態は、クエリによってアクセスされたリソースを選択的にキャッシングすることを含む。キャッシュされたリソースは、更新されているリソースの元のコピーに応答して継続的または定期的に更新され得る。キャッシュ内に最新のリソースを維持することは、ディスクまたは他のプライマリストレージからリソースにアクセスする代わりに、キャッシュ内のリソースにアクセスすることによりクエリの実行を可能とする。リソースは、対応するクエリの実行時間に少なくとも基づくキャッシングのために選択され得る。例では、クエリの実行の実行時間が閾値を超える場合、クエリによってアクセスされたリソースは、同じクエリの将来の実行のためにキャッシュされる。
1つまたは複数の実施形態は、クエリの実行の累積実行時間に基づきクエリによってアクセスされたリソースをキャッシングすることを含む。キャッシングエンジンは、初期期間中のクエリの実行のための累積実行時間を決定し得る。キャッシングエンジンは、クエリの実行のための累積実行時間に基づき、クエリの実行中にアクセスされるべきリソースがキャッシュされるべきかどうかをさらに決定する。リソースは、初期期間の後の別の時間の間キャッシュされ得る。
キャッシングエンジンは、どのリソースをキャッシュするかを対応するクエリの累積実行時間に基づき決定するために任意の方法論を使用し得る。ある例では、初期期間中のクエリのための累積実行時間が閾値を超える場合、クエリによってアクセスされたリソースは、その後の期間キャッシュされる。別の例では、クエリは、累積実行時間に基づきランク付けされる。最も長い累積実行時間を有するn個のクエリのためのリソースは、キャッシュされる。
1つまたは複数の実施形態は、クエリの実行のサブセットの実行時間に少なくとも基づき、クエリによってアクセスされたリソースをキャッシングすることを含む。初期期間中のクエリの各実行のための実行時間は、閾値と比較される。任意の特定の実行のための実行時間が閾値を超える場合、特定の実行は、計算コストが高い実行と決定される。計算コストが高いクエリの実行の数が閾値を超える場合、クエリのためのリソースは、その後の期間キャッシュされる。
本明細書に記載されおよび/または特許請求の範囲に記載される1つまたは複数の実施形態は、この一般概要セクションに含まれていない場合がある。
2. リソースキャッシングシステム
図1は、1つまたは複数の実施形態に従うリソースキャッシングシステム100を示す。リソースキャッシングシステム100は、クエリの実行のためにアクセスされるリソース(ここではクエリによってアクセスされたリソースとも称され得る)を選択しキャッシングするためのシステムである。リソースキャッシングシステム100は、クエリインターフェース102、キャッシングエンジン104、キャッシュ124、クエリ実行エンジン122、およびデータリポジトリ110を含む。1つまたは複数の実施形態では、リソースキャッシングシステム100は、図1において示されたコンポーネントよりも多いまたは少ないコンポーネントを含み得る。図1において示されたコンポーネントは、互いにローカルまたは互いからリモートにあり得る。図1に示されたコンポーネントは、ソフトウェアおよび/またはハードウェア内に実装され得る。各コンポーネントは、複数のアプリケーションおよび/またはマシンにわたって分散され得る。複数のコンポーネントは、1つのアプリケーションおよび/またはマシンへと組み合わされ得る。1つのコンポーネントに対して記載された動作は、代わりに別のコンポーネントによって行われ得る。
1つまたは複数の実施形態では、クエリインターフェース102は、クエリを規定する入力を受け入れる機能を含むインターフェイスである。クエリインターフェース102は、グラフィカルユーザインターフェース(GUI)といったユーザインターフェース(UI)であり得る。クエリインターフェースは、クエリを記述するクエリプロファイルを受け入れる、ユーザが変更可能なフィールドを提示し得る。クエリインターフェース102は、1つまたは複数のクエリを規定するファイルを受け入れパースするための機能を含む。クエリインターフェースは、クエリの実行の後のクエリ出力データを表示し得る。
実施形態では、クエリ実行エンジン122は、クエリを実行するためのハードウェアおよび/またはソフトウェアコンポーネントを含む。クエリ実行エンジン122は、クエリインターフェースから取得されたクエリプロファイルをパースし得る。クエリ実行エンジン122は、パースされたクエリプロファイルをSQLクエリにマッピングし得る。クエリ実行エンジン122は、クエリ結果を取得するためにSQLクエリを適切なデータベース(複数可)に送信し得る。クエリ実行エンジン122は、データを合計し、データを平均し、テーブル全体または一部を結合し得る。
実施形態では、キャッシュ124は、データを格納するハードウェアおよび/またはソフトウェアコンポーネントに対応する。キャッシュ124内に格納されたデータは典型的に、ディスク上に、メインメモリ上に、または実行環境からリモートに格納されたデータよりも速くアクセスされ得る。ある例では、キャッシュ124は、クエリの実行のために、ディスクおよび/またはメインメモリから以前に取得された(ここで「キャッシュされたリソース126」とも称される)リソースを格納する。キャッシュ内にリソースを格納することは、ディスクからリソースにアクセスすることなく同じクエリの追加的な実行を可能とする。具体的には、クエリによって必要とされるリソースは、ディスクからの代わりにキャッシュからアクセスされる。キャッシュは、ディスク内に格納されたデータの元のコピーが更新されていることに応答して継続的または定期的に更新され得る。キャッシュ124内の各データセットまたはリソースは、データが最新のものであるか古いものであるかを示すフラグを用いて維持され得る。キャッシュされたリソースは、たとえば、データテーブル、データフィールド、および/または計算の結果であり得る。例として、キャッシュされたリソース126は、2つの既存のテーブル上のJOIN動作を介して作成された新たなテーブルであり得る。
実施形態では、データリポジトリ110は、データを格納するための任意の種類のストレージユニットおよび/またはデバイス(たとえば、ファイルシステム、データベース、テーブルの集合、または任意の他のストレージ機構)である。さらに、データリポジトリ110は、多数の異なるストレージユニットおよび/またはデバイスを含み得る。多数の異なるストレージユニットおよび/またはデバイスは、同じ種類であってもなくても、同じ物理サイトにあってもなくてもよい。 さらに、データリポジトリ110は、キャッシングエンジン104、キャッシュ124、クエリインターフェース102、およびクエリ実行エンジン122と同じ計算システム上で実装されまたは実行し得る。代替的にまたは追加的に、データリポジトリ110は、キャッシングエンジン104、キャッシュ124、クエリインターフェース102、およびクエリ実行エンジン122とは別個の計算システム上で実装されまたは実行し得る。データリポジトリ110は、キャッシングエンジン104、キャッシュ124、クエリインターフェース102、およびクエリ実行エンジン122と直接接続を介してまたはネットワークを介して通信可能に結合され得る。
実施形態では、データリポジトリ110は、クエリプロファイル112を格納する。クエリプロファイル112は、クエリについての情報を備える。クエリプロファイルは、クエリ属性114、クエリ実行時間116、およびクエリリソース118を含むがこれに限定されない。クエリプロファイルは、クエリパフォーマンスに基づき選択され得る。クエリプロファイル112は、ある個々の閾値を上回る個々の実行時間を有する選択されたクエリのために格納され得る。
実施形態では、クエリ属性114は、クエリ内で実行されたまたは実行されるべき1つまたは複数の動作を含み得る。たとえば、”SELECT Customers.CustomerName, Customers.CustomerID FROM Customers”というクエリにおいて、SELECT動作は、クエリ属性114である。クエリ属性114のその他の例は、一連の動作が実行される順序、クエリが実行される時刻を含む。
実施形態では、クエリのためのクエリプロファイル内部のクエリリソース118は、対応するクエリの実行のために使用される1つまたは複数のリソース120を識別する。クエリリソース118は、クエリ内で特定された任意のデータセットを含み得る。クエリリソースは、フィールドに対応し得る。たとえば、”SELECT Customers.CustomerName, Customers.CustomerID FROM Customers”というクエリにおいて、クエリリソース114は、CustomerNameおよびCustomerID というフィールドを含む。CustomerNameおよびCustomerID というフィールドは、クエリリソース118の例である。クエリリソース118は、データを取得するために使用されるクエリ内でリクエストされたデータベース内のテーブルを含み得る。たとえば、上述のクエリでは、Customersというテーブルは、クエリリソース118である。クエリリソース118は、上記のキャッシュ124内にキャッシュされ得、キャッシュされたリソース126とも称される。
実施形態では、クエリ実行時間116は、クエリの特定の実行に対応する時間である。クエリ実行時間116は、特定のクエリを実行するためにリクエストを送信することと特定のクエリの実行から結果を受信することとの間の期間であり得る。クエリ実行時間の例は、1m秒、10秒、16分、および6時間を含む。同じクエリの実行時間は、異なる時間において実行される異なる実行に対して異なり得る。たとえば、他の同時アクセス動作による入力/出力時間遅延は、他の同時アクセス動作が無かった間の同じクエリの以前の実行の実行時間を大きく超える1つのクエリの実行の実行時間を引き起こし得る。クエリは、多数のユーザをサポートするマルチテナントクラウドアーキテクチャ上で実行され得る。システムは、システムリソースが多数のユーザからリクエストを受信するピーク時間中にオーバーロードされ得る。クエリは、システムがオーバーロードされないピーク時間外よりもピーク時間中に実行するためにより長い時間を費やす。クエリ実行時間はまた、クエリ内の動作およびクエリのためのデータを取得するために使用されるデータテーブルの数といった要因に依存し得る。
1つまたは複数の実施形態では、キャッシングエンジン104は、リソースをキャッシングするためのハードウェアおよび/またはソフトウェアコンポーネントを含む。キャッシングエンジンは、データのコピーおよび/または計算の結果をキャッシュ124に格納する機能を含む。キャッシングエンジン104は、対応するクエリの実行時間に基づきリソースを選択的にキャッシュし得る。キャッシングエンジン104は、最近使用されたデータをキャッシングすることによって等、標準的なキャッシング技法に従いリソースをキャッシュし得る。
実施形態では、クエリアナライザ106は、クエリを分析するためのハードウェアおよび/またはソフトウェアコンポーネントを含む。クエリアナライザ106は、クエリ実行時間、クエリ属性、および/またはクエリリソースを分析して、特定のクエリについての情報を識別し得る。
クエリアナライザ106は、クエリをパースしてクエリ内に含まれたデータフィールド、クエリ内に含まれたSQL動作、および/またはリクエストされたデータを取得する際に使用されたストレージシステム内のデータテーブルを分離するための機能を含む。クエリアナライザ106は、クエリの組を分析して1または複数のクエリ実行が同じクエリを構成するかどうかを決定するための機能を含む。たとえば、時間1において、システムは、ユーザ1から、クエリQ=(f,f,f)を受信し、ここで、fは、クエリ内で取得されるべきデータフィールドである。時間2において、システムは、ユーザ2からクエリQ=(f,f,f)を受信する。要素は、異なる時間において異なる順序であるが、QおよびQは、取得されたデータの面では同じである。クエリ属性114およびクエリリソース118を分析することによって、リソースキャッシングシステム100は、同じクエリの多数の実行を識別することができる。
クエリアナライザ106は、クエリの実行時間を計算する機能を含み得る。クエリアナライザは、クエリの単一の実行のための実行時間を計算し得る。クエリアナライザは、特定の期間中の同じクエリの多数の実行のための累積実行時間を計算し得る。クエリアナライザ106は、各個々のクエリの実行のための実行時間を集計することによって同じクエリの多数の実行のための累積実行時間を計算し得る。
実施形態では、リソースアナライザ108は、リソースを分析するためのハードウェアおよび/またはソフトウェアコンポーネントを含む。リソースアナライザ108は、クエリ実行時間、クエリ属性、および/またはクエリリソースを分析して、特定のリソースについての情報を識別し得る。
リソースアナライザ108は、クエリをパースして、クエリ内に含まれたデータフィールド、クエリ内に含まれたSQL動作、および/またはリクエストされたデータを取得する際に使用されたストレージシステム内のデータテーブルを分離するための機能を含む。クエリアナライザ106は、クエリを分析して1つまたは複数のクエリ実行が同じリソースを使用するかどうかを決定するためのするための機能を含む。たとえば、時間1において、システムは、ユーザ1から”SELECT Dog. Breed, Dog. Age FROM Dogs”というクエリQを受信する。時間2において、システムは、ユーザ2から”SELECT Dog.Name, Dog.Breed Name, DogAquisitionDate FROM Dogs”というクエリQを受信する。リソースアナライザは、QおよびQの両方がDogsというテーブルをクエリすると決定することができる。
リソースアナライザ108は、期間中に特定のリソースへのアクセスが必要とされる時間量を計算する機能を含み得る。リソースアナライザ108は、期間中に特定のリソースを使用するクエリの各々の実行時間を決定し得る。リソースアナライザ108は、各個々のクエリのための実行時間を集計することによって特定のリソースを使用する多数のクエリのための累積実行時間を計算し得る。
3. クエリに基づくリソースキャッシング
図2は、1つまたは複数の実施形態に従い同じクエリに基づき1つまたは複数のリソースを選択的にキャッシングするための例示的動作の組を示す。図2において示された1つまたは複数の動作は、変更、再配置、または完全に省略され得る。従って、図2において示された特定の動作のシーケンスは、1つまたは複数の実施形態の範囲を限定するものと解釈されるべきではない。
実施形態では、クエリアナライザは、個々の閾値を上回る実行時間を有するクエリを識別する(動作202)。クエリアナライザは、個々のクエリの実行時間との比較のための個々の閾値Kを確立し得る。Kの値は、たとえば、クエリの複雑性、ユーザプリファレンス、および利用できるシステムリソースに基づき確立され得る。クエリアナライザは、クエリの実行時間をKと比較して、クエリの実行時間がKを超えるかどうかを決定する。
リソースキャッシングシステムは、個々の閾値を上回る実行時間を有するクエリのためのクエリログを格納し得る。リソースキャッシングシステムは、SELECTクエリ動作を含むクエリといった個々の閾値を上回る実行時間を有するクエリのサブセットのためのクエリログを格納し得る。
動作202は、動作204において分析されるべき候補のクエリを識別するために使用され得る。代替的に、動作202は、とばされ得、すべてのクエリは、動作204において分析され得る。
実施形態では、リソースキャッシングシステムは、初期期間中の同じクエリの1つまたは複数の実行を識別する(動作204)。クエリアナライザは、多数のクエリのクエリ属性を比較して、クエリが同じかどうかを決定し得る。たとえば、クエリ実行エンジンは、SELECTクエリ動作を使用して1ヶ月の間に以下のクエリQ−Qを実行した。
Figure 0006929388
フィールドf−fは、クエリ内で選択されたデータフィールドである。クエリアナライザは、データフィールド値を比較して同じクエリを識別する。同じクエリは、同じデータフィールドを選択するが、必ずしも同じ順序ではない。リソースキャッシングシステムは、Q=Q=Qが月間に発生した同じクエリの3つの実行であると識別する。
実施形態では、特定の格納されたクエリの実行は、ログを介して決定される。具体的には、キャッシングシステムは、ログを維持して、格納されたクエリのすべての実行を追跡する。各クエリは、プロファイルと関連付けられる。プロファイルは、各クエリの実行の特徴を含む。プロファイルは、各クエリの実行のための実行時間を格納し得る。
実施形態では、キャッシングエンジンは、多数のクエリの実行の実行時間を集約して、初期期間中のクエリのための累積実行時間を計算する(動作206)。たとえば、クエリは、1日6時間実行されている。システムは、6個の対応する実行時間、T=2分、T=1時間、T=20分、T=5分、T=1時間22分、およびT=30秒を格納した。システムは、期間中のクエリのための累積実行時間を計算する。
tot=T+T+T+T+T+T
=2分+1時間+20分+5分+1時間22分+30秒
=2時間49分30秒
1日間のクエリのための累積実行時間は、Ttot=2時間49分30秒である。
クエリアナライザは、上述のように、期間中に発生した同じクエリの実行を使用して累積実行時間を計算し得る。代替的に、クエリアナライザは、期間中に発生した同じクエリの実行のサブセットを使用して累積実行時間を計算し得る。たとえば、クエリアナライザは、閾値クエリ実行時間Kを超える実行時間を有するクエリを含むようにクエリ実行をフィルタする。K=15分を用いて、システムは、15分を超えるクエリ時間を有する実行インスタンスT、T、およびTを格納する。システムはそして、フィルタされたクエリを使用して累積クエリ時間を計算する。
K1=T+T+T
=1時間+20分+1時間22分
=2時間44分
1日間の対象のクエリのための累積実行時間は、ΤK1=2時間44分である。
実施形態では、キャッシングエンジンは、累積実行時間が累積閾値を超えるかどうかを決定する(動作208)。たとえば、累積閾値は、K=2時間である。上述のΤK1に対して、累積実行時間は、2時間44分である。この場合では、TK1>Kであり累積実行時間は、累積閾値を超える。
累積実行時間が閾値を超える場合、キャッシングエンジンは、初期期間の後の別の期間の間にクエリによって必要とされるリソース(複数可)をキャッシュする(動作210)。たとえば、キャッシングエンジンは、クエリ内で選択されたフィールドを包含するすべてのテーブルをキャッシュし得る。キャッシングエンジンは、クエリの出力をキャッシュし得る。たとえば、クエリは、テーブルから4つのフィールドを選択する。キャッシングエンジンは、4つの選択されたフィールド内のデータをキャッシュし得る。キャッシングエンジンは、特定の時間量の間リソース(複数可)を保持し得、または特定のイベントの発生を検出することに応答してリソース(複数可)を上書きし得る。
累積実行時間が閾値を超えない場合、キャッシングエンジンは、クエリによって必要とされるリソース(複数可)のキャッシングを控え得る(動作212)。高速で実行するクエリによって必要とされるリソースをキャッシングすることを控えることによって、リソースキャッシングシステムは、キャッシュ内のメモリを節約し不要な動作を避ける。
実施形態では、動作212は、動作のシーケンスから省略され得る。たとえば、特定のリソースが上述のリソースキャッシングシステムによるキャッシングのために選択されなくとも、システムは、別のキャッシング手法論に基づきリソースをキャッシュし得る。システムは、最後の30秒間に使用されたリソースのキャッシングを含む標準的キャッシング技法に従って使用直後にリソースをキャッシュし得る。
例として、リソースキャッシングシステムは、SELECT動作および1分を上回る実行時間を有する1年間に実行されたクエリを識別する。年間に実行された10,000個のクエリのうち、10個は、SELECT動作を含み、実行するために1分以上かかる。これら10個のクエリのためのクエリログは、テーブル1というテーブル内に捕捉される。
テーブル1内の各クエリに対して、リソースキャッシングシステムは、SELECTクエリ動作を使用して選択されたデータフィールドを捕捉する。これらのフィールドは、fであり、ここでi=1、...、nであり、nは、テーブル1からのクエリ内に少なくとも1度出現したデータフィールドの総数である。ここで、テーブル1は、以下の10個のクエリのためのクエリログを格納する。
Figure 0006929388
リソースキャッシングシステムは、テーブル1内の少なくとも1つのクエリに対応するQ=(fk1,... ,fkl)という固有の組み合わせを識別する。リソースキャッシングシステムは、Q=(fk1、...fkl)というデータフィールドの同じ組み合わせを包含するクエリの組Sを識別する。テーブル1は、6個の固有の組み合わせを包含する。
Figure 0006929388
組1は、Q、Q、Q、およびQを含み、その理由は、これらのクエリが、同じ5つのデータフィールドを選択するが必ずしも同じ順序ではないためである。組2は、クエリQおよびQを含み、その理由は、これらのクエリが、同じ3つのデータフィールドを選択するためである。組S−Sは各々、1つの固有のクエリを包含し、対象の1年の間にQ、Q、Q、またはQ10の繰り返しは存在しなかった。
各組Sについて、リソースキャッシングシステムは、組Sからのクエリの累積実行時間を計算する。Sについて、実行時間は、以下の通りである。
:t=2分
:t=1時間
:t=30分
:t=3分
リソースキャッシングシステムは、組Sのための累積実行時間を計算する。
=t+t+t+t
=2分+1時間+30分+3分
=1時間35分
同様に、リソースキャッシングシステムは、組S−Sのための累積実行時間を計算する。
次に、リソースキャッシングシステムは、特定のクエリ組のための累積実行時間が累積閾値K=1時間を超えるかどうかを決定する。Sについて、累積実行時間は、1時間35分であり、これは、1時間の累積閾値を超える。
累積実行時間がSのための閾値を超えると決定すると、キャッシングエンジンは、クエリによって必要とされるリソースをキャッシュする。キャッシングエンジンは、キャッシュテーブルAをキャッシュ内に作成し” SELECT f1, f2, f3, f4, f5. FROM Ζ1”というSQLコマンドの実行のために必要とされるリソースをキャッシングする。リソースキャッシングシステムは、すべての固有の組み合わせQおよびそれらの対応する組Sのについて、組内の総実行時間に基づきリソースを選択的にキャッシングするプロセスを繰り返す。
4. リソース使用に基づくリソースキャッシング
図3は、1つまたは複数の実施形態に従いリソースの使用に基づきリソースを選択的にキャッシングするための例示的動作の組を示す。図において示された1つまたは複数の動作は、変形され、再配置され、またはすべて削除され得る。従って、図に示される特定の動作シーケンスは、1つまたは複数の実施形態の範囲を限定するものとして解釈されるべきではない。
実施形態では、リソースアナライザは、初期期間中の同じリソース上のクエリの実行を識別する(動作302)。リソースアナライザは、初期期間にクエリ実行エンジンによって実行されたクエリを監視し得る。リソースアナライザは、クエリ実行エンジンからデータをプルするためのプル方法を使用して、クエリの実行を識別し得る。クエリ実行エンジンは、クエリ実行エンジンからリソースアナライザへとデータをプッシュするためにプッシュ方法を使用し得る。リソースアナライザは、初期期間中にアクセスされた各リソースを、初期期間中に実行された1つまたは複数のクエリにマッピングし得る。
実施形態では、リソースアナライザは、期間中の各特定のリソースを使用してクエリのための実行時間を集約して、期間中の各特定のリソースのための累積実行時間を計算する(動作304)。たとえば、特定の日に、100個のクエリが実行された。これらのクエリのうちの5つは、特定のテーブルから情報をリクエストする。システムは、5つのクエリに対応する5つの実行時間、t=2分、t=1時間、t=20分、t=5分、およびt=1時間22分を格納した。システムは、初期期間中にリソースを使用したクエリのための累積実行時間を計算する。
tot=T+T+T+T+T
=2分+1時間+20分+5分+1時間22分
=2時間49分
1日間にリソースを使用したクエリのための累積実行時間は、Ttot=2時間49分である。
上述のように、リソースアナライザは、初期期間中のすべての同じリソース上のクエリの実行の累積実行時間を計算し得る。代替的に、リソースアナライザは、期間中の同じリソース上のクエリの実行のサブセットを使用して累積実行時間を計算し得る。たとえば、リソースアナライザは、個々の閾値Kを超える実行時間を有する実行を含むように、クエリ実行をフィルタする。
実施形態では、リソースアナライザは、累積実行時間が累積閾値を超えるかどうかを決定する(動作306)。累積実行時間が閾値を超える場合、キャッシングエンジンは、リソースをキャッシュする(動作308)。累積実行時間が閾値を超えない場合、キャッシングエンジンは、リソースのキャッシングを控え得る(動作310)。動作306、308、および310は、上述の動作208、210、および212それぞれと同様である。
例として、リソースキャッシングシステムは、24時間の間にクエリ実行エンジンによって実行されたクエリを監視する。リソースキャッシングシステムは、テーブル2というテーブルを作成し、その中にそれは”Ingredients”というテーブルにアクセスするクエリの記録を格納する。リソースキャッシングシステムは、6つのクエリが対象の24時間の間にIngredientsというテーブルにアクセスしたと決定する。リソースキャッシングシステムは、6つのクエリの記録を、6つのクエリの各々のためのそれぞれの実行時間とともに、テーブル2に格納する。Q,t=10分、Q12,t12=1分、Q30,t30=4分、Q16,t16=8分、Q27,t27=80分、Q,t=5分。
次に、リソースキャッシングシステムは、24時間の間にIngredientsというリソースを使用したテーブル2内の6つのクエリのための実行時間を集約する。6つの実行時間を加算することで、システムは、期間中のIngredientsのための累積実行時間を計算する。t+t12+t30+t16+t27+t=10分+1分+4分+8分+80分+5分=108分
リソースキャッシングシステムは、累積実行時間を60分の累積閾値と比較する。108分の累積実行時間が60分の累積閾値を超えるので、リソースキャッシングシステムは、リソースをキャッシュする。キャッシングエンジンは、Ingredientsというテーブルをキャッシュにキャッシュする。
5. 動作に基づくリソースキャッシング
図4は、1つまたは複数の実施形態に従う動作の結果を選択的にキャッシングするための例示的動作の組を示す。特に、図4は、JOIN動作の結果がキャッシュされる例を示す。しかし他の実施形態は、別の動作の結果をキャッシングすることに同様に適用可能であり得る。図4において示された1つまたは複数の動作は、変更、再配置、または完全に省略され得る。従って、図4において示された特定の動作のシーケンスは、1つまたは複数の実施形態の範囲を限定するものと解釈されるべきではない。
実施形態では、キャッシングエンジンは、初期期間中にリソースの特定の組のJOINを必要とするクエリの実行を識別する(動作402)。キャッシングエンジンは、実行されたJOIN動作において使用されたデータフィールドを比較して、データの同じ特定の組をJOINするすべてのクエリの実行を識別し得る。
実施形態では、リソースキャッシングシステムは、動作402において識別された実行の実行時間を集約して、リソースの同じ特定の組のJOINを要するクエリの累積実行時間を計算する(動作404)。リソースキャッシングシステムは、初期期間中に実行されたクエリの実行時間tを集約し得る。代替的に、リソースキャッシングシステムは、期間中のリソースの組のJOINについてのクエリのサブセットの実行時間tを集約し得る。たとえば、リソースキャッシングシステムは、個々の閾値Kを超える実行時間tを集約し得る。
実施形態では、キャッシングエンジンは、累積実行時間が累積閾値を超えるかどうかを決定する(動作406)。累積閾値は、たとえば、K=30分であり得る。リソースキャッシングシステムは、計算された累積実行時間を累積閾値Kと比較する。
累積実行時間が閾値を超える場合、キャッシングエンジンは、リソースの組のJOINをキャッシュする、またはリソースの組の各々をキャッシュする(動作408)。キャッシングエンジンは、キャッシュテーブルを作成し得、2つのテーブルのJOINをキャッシュし得る。たとえば、リソースキャッシングシステムは、キャッシュテーブルを作成し得、および”SELECTf1, f2, f3, FROM Z1, INNER JOIN Z2 ON g1=g2”というSQLロジックをキャッシュして、SQLクエリの結果をキャッシングし得る。代替的に、リソースキャッシングシステムは、クエリ内のJOIN動作において使用されたリソースをキャッシュし得る。たとえば、システムは、テーブルZおよびZをキャッシュする。
累積実行時間が閾値を超えない場合、キャッシングエンジンは、リソースの組のJOINのキャッシングを控え得、リソースの特定の組の各々のキャッシングを控え得る(動作410)。リソースをキャッシングすることを控えることによって、リソースキャッシングシステムは、キャッシュ内のメモリを節約しおよび不要な動作を避ける。
実施形態では、動作410は、動作のシーケンスから省略され得る。たとえば、リソースは、リソースキャッシングシステムによるキャッシングのために選択されないが、システムは、それでもリソースをキャッシュし得る。システムは、最後の30秒間に使用されたリソースのキャッシュなど標準的キャッシング手法に従いリソースをキャッシュし得る。
例として、リソースキャッシングシステムは、SELECTクエリ動作を要し、5分を上回る実行時間を有する、1週間に実行されたクエリの実行を識別する。週間に実行された1,000個のクエリのうち、10個は、SELECTクエリ動作を必要とし、実行するために5分以上を費やした。これら10個のクエリのためのクエリログは、テーブル3というテーブルに捕捉される。
テーブル3内の各クエリに対して、リソースキャッシングシステムは、SELECTクエリ動作を使用して選択されたデータフィールドを捕捉する。これらのフィールドは、fであり、ここでi=1、...、n、であり、nは、テーブル3からのクエリ内に少なくとも1度出現したデータフィールドの総数である。テーブル3内の各クエリに対して、リソースキャッシングシステムはまた、JOIN動作gk1およびgk2において使用された2つのデータフィールドを捕捉する。テーブル3からの各クエリは、記録Q=(fk1...fkl,gk1,gk2)として表される。リソースキャッシングシステムはまた、各クエリのための実行時間tを格納する。
クエリ実行エンジンは”SELECT Customers. CustomerName, Orders. OrderID from Customers INNER JOIN Orders ON Customers. CustomerID = Orders. CustomerID ORDER BY Customers. CustomerName”というクエリを実行する。リソースキャッシングシステムは、上記のクエリを組み合わせ(fk1,fk2,gk1,gk2)として提示し、ここで、fk1=Customers.CustomerName、fk2=Orders.OrderID、gk1=Customers.CustomerIDであり、gk2=Orders.CustomerIDである。
リソースキャッシングシステムは、テーブル3から同じ固有の組み合わせ(fk1,fk2,gk1,gk2)を包含するクエリQ、Q10、Q17、およびQ26を識別する。リソースキャッシングシステムは、テーブル3から同じ固有の組み合わせである組S={Q、Q10、Q17、Q26}を包含するクエリの組を識別する。リソースキャッシングシステムは、組S内の各クエリのための対応する実行時間、t=10分、t10=15分、t17=20分、およびt26=10分を識別する。
リソースキャッシングシステムは、組S内のクエリのための実行時間を集約して、累積実行時間を計算する。T=t+t10+t17+t26=10分+15分+20分+10分=55分。
次に、リソースキャッシングシステムは、計算された累積実行時間が累積閾値K=30分を超えるかどうかを決定する。Sについて、累積実行時間は、55分であり、これは、累積閾値K=30分を超える。
累積実行時間がS1のための閾値を超えると決定すると、キャッシングエンジンは、リソースの組のジョインをキャッシュする。キャッシングエンジンは、キャッシュテーブルCをキャッシュ内に作成し”SELECT Customers. CustomerName, Orders. OrderID from Customers INNER JOIN Orders ON Customers. CustomerID = Orders. CustomerID ORDER BY Customers. CustomerName”というSQLロジックをキャッシングする。リソースキャッシングシステムは今度は、キャッシュテーブルCからの結果を使用して、上述のSQLロジックステップをこのロジックを包含する将来のクエリに対して完了することができる。
6. 例示的実施形態−集約クエリ
実施形態では、リソースキャッシングシステムは、個々の閾値K=1分を超える実行時間クエリを有するクエリのためのクエリログを格納する。クエリログを格納するための他の基準は、クエリが、GROUP BY動作の結果として取得されたデータに適用された集約動作を必要とすることである。SQL集約動作の例は、AVG、MAX、およびMUSTを含む。システムは、テーブル4というテーブルに1分を超える実行時間を有する集約動作のためのクエリログを格納し得る。
テーブル4内のクエリについて、システムは、SELECTクエリ動作を使用して選択されたデータフィールド(f)およびGROUP BYクエリ動作(g)によって使用されたデータフィールドを捕捉する。インデックスは、i=1、...、nのように規定され、nは、テーブル4からのクエリ内に少なくとも1度出現したデータフィールドの総数であり、j=1、..、mであり、mは、テーブル4からのGROUP BYクエリ内に少なくとも1度出現したデータフィールドの総数である。たとえば、テーブル4は、クエリ1を提示する記録Q=(f,f,f,g,g)を含む。記録Qは、クエリ1において”SELECT f1,f2,f3 GROUPBY g1,g2”というSQLロジックが適用されたということを意味する。テーブル4内の各クエリに対して、システムは、記録Q=(fk1,..fkl,gk1...gkm)を、クエリQの実行時間tとともに提示する。別の閾値Kは、規定される。Kは、30分の累積クエリ閾値である。
クエリ実行エンジンは”SELECT f1,f2,f3,GROUPBY f2,f3”というSQLロジックを用いてクエリQ=(f,f,f,g=f,g=f)を実行する。リソースキャッシングシステムは、テーブル4からのクエリQ、Q12、Q15およびQ23が固有の組み合わせ(f,f,f,g=f,g=f)を包含すると識別する。リソースキャッシングシステムは、クエリの組、S={Q,Q12,Q15,Q23}を識別する。S内のクエリのための実行時間は、t=20分、t12=10分、t15=25分、およびt23=15分である。
リソースキャッシングシステムは、S1内のクエリの累積実行時間を計算する。T=t+t12+t15+t23=20分+10分+25分+15分=70分。リソースキャッシングシステムは、累積実行時間が30分を超えるのでT>Kであると決定する。したがって、リソースキャッシングシステムは、キャッシュテーブルDを作成して”SELECT f1, f2, f3, GROUPBY f2, f3”というSQLロジックに従いデータを補足する。システムは、キャッシュテーブルDからの結果を使用して、将来のクエリにおいて” SELECT f1, f2, f3, GROUPBY f2, f3”というSQLロジックステップを完了する。たとえば、f=”revenue”、f=g=”region”、f=g=”vertical”である。キャッシングエンジンは、”SELECT revenue, region, vertical GROUP BY region vertical”というクエリの結果をキャッシュする。システムが上述のSQLロジックを要するクエリを次回実行するとき、クエリ実行エンジンは、キャッシュされたテーブルDからの結果を使用して、必要とされるSQLロジックを実行し、結果を迅速にもたらす。
5. その他、拡張
実施形態は、ハードウェアプロセッサを含み、本明細書に記載および/または添付の特許請求の範囲のいずれかに列挙される動作のいずれかを実行するように構成される1つまたは複数のデバイスを有するシステムに向けられる。
実施形態では、非一時的なコンピュータ可読記憶媒体は、1つまたは複数のハードウェアプロセッサによって実行されると、本明細書に記載されたおよび/または請求項のいずれかに記載された動作を実行させる命令を含む。
本明細書で説明される特徴および機能の任意の組み合わせは、1つまたは複数の実施形態に従って使用され得る。上述の明細書において、実施形態は、実装ごとに異なり得る多数の特定の詳細を参照して説明されてきた。したがって、明細書および図面は、限定的な意味ではなく、例示的な意味で考えられるべきである。本発明の範囲の唯一かつ排他的な指標および本出願人が本発明の範囲とすることを意図するものは、本出願から発行される特許請求の範囲の文言通りおよび均等の範囲であり、そのような特許請求の範囲は、特定の形式において後の訂正を含む。
6.ハードウェア概要
1つの実施形態に従って、ここで説明される技法は、1つまたは複数の特定用途のコンピューティングデバイスによって実装される。特定用途コンピューティングデバイスは、技法を実行するために有ラインであり得、または技法を実行するために永続的にプログラムされた1つまたは複数の特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはネットワーク処理ユニット(NPU)といったデジタル電子デバイスを含み得、またはファームウェア、メモリ、他のストレージ、または組み合わせにおけるプログラム命令に従って技法を実行するようにプログラムされた1つまたは複数の汎用ハードウェアプロセッサを含み得る。そのような特定用途コンピューティングデバイスは、カスタム有ラインロジック、ASIC、FPGA、またはNPUをカスタムプログラミングと組み合わせて、技法を実現し得る。特定用途コンピューティングデバイスは、であるクトップコンピュータシステム、ポータブルコンピューターシステム、ハンドヘルドデバイス、ネットワークデバイス、または技法を実装するための有ラインおよび/またはプログラムロジックを組み込んだ任意の他のデバイスであり得る。
たとえば、図5は、本発明の実施形態がその上に実装され得るコンピュータシステム500を示すブロックダイアグラムである。コンピュータシステム500は、情報を通信するためのバス502または他の通信機構、および情報を処理するためにバス502と結合されたハードウェアプロセッサ504を含む。ハードウェアプロセッサ504は、たとえば、汎用マイクロプロセッサであり得る。
コンピュータシステム500はまた、プロセッサ504によって実行される情報および命令を格納するためにバス502に結合されたランダムアクセスメモリ(RAM)または他の動的ストレージデバイスなどのメインメモリ506を含む。メインメモリ506はまた、プロセッサ504によって実行される命令の実行中に一時変数または他の中間情報を格納するために使用され得る。そのような命令は、プロセッサ504がアクセス可能な非一時的記憶媒体に格納されると、コンピュータシステム500を、命令において特定された動作を実行するようにカスタマイズされた特定用途マシンにする。コンピュータシステム500は、プロセッサ504に対する静的情報および命令を格納するためにバス502に結合された読み出し専用メモリ(ROM)508または他の静的ストレージデバイスをさらに含む。磁気ディスクまたは光ディスクなどの記憶装置510が提供され、情報および命令を格納するためにバス502に結合される。
コンピュータシステム500は、情報をコンピュータユーザに表示するために、バス502を介して陰極ライン管(CRT)などのディスプレイ512に結合され得る。英数字および他のキーを含む入力デバイス514は、情報およびコマンド選択をプロセッサ504に伝達するためにバス502に結合される。別の種類のユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ504に伝達し、ディスプレイ512上のカーソル移動を制御するためのマウス、トラックボール、またはカーソル方向キーなどのカーソル制御516である。この入力デバイスは典型的に、第1軸(xなど)および第2軸(yなど)の2つの軸において2つの自由度があり、デバイスが平面内の位置を特定可能にする。
コンピュータシステム500は、カスタマイズされた有ラインロジック、1つまたは複数のASICまたはFPGA、ファームウェアおよび/またはプログラムロジックを使用して本明細書に記載の技法を実装し、これらはコンピュータシステムと組み合わせてコンピュータシステム500を特定用途マシンにするまたはプログラムする。一実施形態によれば、本明細書の技法は、プロセッサ504がメインメモリ506に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行したことに応答して、コンピュータシステム500によって実行される。そのような命令は、ストレージデバイス510などの別の記憶媒体からメインメモリ506に読み込まれ得る。メインメモリ506に含まれる命令のシーケンスの実行により、プロセッサ504は本明細書に記載の処理ステップを実行する。代替実施形態では、ソフトウェア命令の代わりに、またはそれと組み合わせて、有ライン回路を使用することができる。
本明細書で使用される「記憶媒体」という用語は、マシンを特定の方法で動作させるデータおよび/または命令を記憶する任意の非一時的媒体を指す。そのような記憶媒体は、不揮発性媒体および/または揮発性媒体を含み得る。不揮発性媒体は、たとえば、ストレージデバイス510などの光ディスクまたは磁気ディスクが含まれる。揮発性媒体は、メインメモリ506などの動的メモリを含む。記憶媒体の一般的な形態は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または他の磁気データ記憶媒体、CD−ROM、その他の光学データ記憶媒体、穴のパターンを備えた物理媒体、RAM、PROM、およびEPROM、フラッシュEPROM、NVRAM、その他のメモリチップまたはカートリッジ、連想メモリ(CAM)、およびTernary Content−addressable Memory(TCAM)を含む。
記憶媒体は、伝送媒体と別のものであるが、これと組み合わせて使用されることができる。伝送メディアは、記憶媒体間の情報の送信に関与する。たとえば、伝送媒体は、バス502を構成するワイヤを含む同軸ケーブル、銅ライン、光ファイバーを含む。伝送媒体は、電波および赤外ラインデータ通信中に生成される音波などの音響波または光波の形態を取ることができる。
さまざまな形態の媒体が、実行のためにプロセッサ504に1つまたは複数の命令の1つまたは複数のシーケンスを運ぶことに関与し得る。たとえば、命令は、初期的にリモートディスクの磁気ディスクまたはソリッドステートドライブで実行されることができる。リモートコンピュータは、命令を動的メモリにロードし、モデムを使用して電話回線で命令を送信することができる。コンピュータシステム500に対してローカルなモデムは、電話ラインでデータを受信し、赤外ライン送信機を使用してデータを赤外ライン信号に変換することができる。赤外ライン検出器は、赤外ライン信号で運ばれるデータを受信でき、適切な回路は、データをバス502に配置することができる。バス502は、データをメインメモリ506に運び、プロセッサ504は、そこから命令を取り出して実行する。メインメモリ506によって受信された命令は、プロセッサ504による実行の前または後のいずれかに、ストレージデバイス510に任意に格納され得る。
コンピュータシステム500はまた、バス502に結合された通信インターフェイス518を含む。通信インターフェイス518は、ローカルネットワーク522に接続されたネットワークリンク520に結合する双方向データ通信を提供する。例えば、通信インターフェイス518は、統合サービスデジタルネットワーク(ISDN)カード、ケーブルモデム、衛星モデム、または対応する種類の電話回線へのデータ通信接続を提供するモデムであり得る。別の例として、通信インターフェイス518は、互換性のあるLANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであり得る。無ラインはまた、実装され得る。そのような実装では、通信インターフェイス518は、さまざまな種類の情報を表すデジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を送受信する。
ネットワークリンク520は、典型的に、1つまたは複数のネットワークを介して他のデータデバイスへのデータ通信を提供する。たとえば、ネットワークリンク520は、ローカルネットワーク522を介してホストコンピューター524またはインターネットサービスプロバイダ(ISP)526によって運営されるデータ機器への接続を提供することができる。ISP526は、今日一般に「インターネット」528と呼ばれる世界規模のパケットデータ通信ネットワークを通じてデータ通信サービスを次いで提供する。ローカルネットワーク522およびインターネット528は両方とも、デジタルデータストリームを運ぶ電気信号、電磁信号または光信号を使用する。コンピュータシステム500へとまたはそこへとデジタルデータを搬送する、さまざまなネットワークを介した信号、およびネットワークリンク520および通信インターフェイス518を介した信号は、伝送媒体の例示的な形態である。
コンピュータシステム500は、ネットワーク(複数可)、ネットワークリンク520、および通信インターフェイス518を通じて、メッセージを送信し、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ530は、インターネット528、ISP526、ローカルネットワーク522、および通信インターフェイス518を介して、アプリケーションプログラムにリクエストされたコードを送信する。
受信されたコードは、プロセッサ504が受信されたときにそれによって実行され、および/または後で実行するためにストレージデバイス510または他の不揮発性ストレージに格納され得る。
上述の明細書では、本発明の実施形態は、実装ごとに異なり得る多数の特定の詳細を参照して説明されてきた。したがって、明細書と図面は、限定的な意味ではなく、例示的な意味で考えられるべきである。本発明の範囲の唯一かつ排他的な指標および本出願人が本発明の範囲とすることを意図するものは、本出願から発行される特許請求の範囲の文言通りおよび均等の範囲であり、そのような特許請求の範囲は、特定の形式において後の訂正を含む。

Claims (15)

  1. 1つまたは複数のハードウェアプロセッサによって実行されると、動作の実行を引き起こす命令を含むコンピュータ可読プログラムであって、前記動作は、
    第1の期間中の同じ特定のクエリの複数の実行を識別することと、
    前記複数の実行の各実行の実行時間を集計することによって前記第1の期間中の前記特定のクエリの前記複数の実行のための累積実行時間を計算することと、
    前記第1の期間中の前記特定のクエリのための前記累積実行時間が第1の閾値を超えると決定することと、
    前記決定の動作に応答して、前記特定のクエリの実行のために使用されたリソースを第2の期間中キャッシングすることを備える、コンピュータ可読プログラム
  2. 前記リソースは、テーブルである、請求項1に記載のコンピュータ可読プログラム
  3. 前記動作は、
    前記特定のクエリの前記実行の少なくともサブセットのための前記実行時間が第2の閾値を超えると決定することであって、前記計算の動作は、前記特定のクエリの前記実行の少なくともサブセットのための前記実行時間が、前記第2の閾値を超えると決定することに応答して行われる、決定すること、または、
    第2の閾値を超える前記特定のクエリの前記実行のサブセットの数を決定することであって、前記計算の動作は、前記第2の閾値を超える前記特定のクエリの前記実行の前記サブセットの前記数に基づき行われる、決定することのうちの1つまたは複数を備える、請求項1または2に記載のコンピュータ可読プログラム
  4. 前記動作は、
    前記決定の動作に応答して、前記キャッシュされたリソースを保持すること、または、
    前記特定のクエリの前記実行の少なくともサブセットのための前記実行時間が、第2の閾値を超えると決定することと、
    前記特定のクエリの前記実行の少なくともサブセットのための前記実行時間が前記第2の閾値を超えると決定されたことに応答して、データテーブルに、前記第2の閾値を超える前記特定のクエリの前記実行の前記サブセットの各実行のためのログを格納することと、
    前記計算の動作を前記データテーブルから前記同じ特定のクエリの実行を使用して実行することと、のうちの1つまたは複数を備える、請求項1または2に記載のコンピュータ可読プログラム
  5. 前記特定のクエリの第1の実行のための前記実行時間を決定することは、
    前記特定のクエリを実行するためにリクエストを送信することと前記特定のクエリの実行から結果を受信することとの間の期間を決定することを備える、請求項1〜4のいずれか1項に記載のコンピュータ可読プログラム
  6. 前記同じ特定のクエリは、クエリデータフィールドの格納されたテーブルを介して識別される、請求項1〜5のいずれか1項に記載のコンピュータ可読プログラム
  7. 1つまたは複数のハードウェアプロセッサによって実行されると、動作の実行を引き起こす命令を含むコンピュータ可読プログラムであって、前記動作は、
    第1の期間中の特定のリソース上の複数のクエリの1つまたは複数の実行を識別することと、
    前記複数のクエリの1つまたは複数の実行を集計することによって前記第1の期間中の前記特定のリソースのための実行時間の累積実行時間を計算することと、
    前記第1の期間中の前記特定のリソースのための累積実行時間が第1の閾値を超えると決定することと、
    前記決定の動作に応答して、前記特定のリソースを第2の期間中キャッシングすることとを備える、コンピュータ可読プログラム
  8. 前記リソースは、テーブルである、請求項7に記載のコンピュータ可読プログラム
  9. 前記動作は、
    前記特定のリソース上の前記複数のクエリの前記実行の少なくともサブセットのための前記実行時間が第2の閾値を超えると決定することであって、前記計算の動作は、前記特定のリソース上の前記複数のクエリの前記実行の少なくともサブセットのための前記実行時間が前記第2の閾値を超えると決定することに応答して行われる、決定すること、または、
    第2の閾値を超える前記特定のリソース上の前記複数のクエリの前記実行のサブセットの数を決定することであって、前記計算の動作は、前記第2の閾値を超える前記特定のリソース上の前記複数のクエリの前記実行の前記サブセットの前記数に基づき行われる、決定することのうちの1つまたは複数を備える、請求項7または8に記載のコンピュータ可読プログラム
  10. 前記動作は、
    前記決定の動作に応答して、前記キャッシュされたリソースを保持すること、または
    前記特定のクエリの前記実行の少なくともサブセットのための前記実行時間が、第2の閾値を超えると決定することと、
    前記特定のクエリの前記実行の少なくともサブセットのための前記実行時間が前記第2の閾値を超えると決定されたことに応答して、データテーブルに、前記第2の閾値を超える前記特定のクエリの前記実行の前記サブセットの各実行のためのログを格納することと、
    前記データテーブルから選択された前記同じ特定のクエリの実行を使用する前記計算の動作を実行することとのうちの1つまたは複数を備える、請求項7または8に記載のコンピュータ可読プログラム
  11. 前記特定のリソース上の前記複数のクエリの第1の実行のための前記実行時間を決定することは、
    前記特定のリソース上の前記複数のクエリを実行するためにリクエストを送信することと前記特定のリソース上の前記複数のクエリの実行から結果を受信することとの間の期間を決定することを備える、請求項7〜10のいずれか1項に記載のコンピュータ可読プログラム
  12. 1つまたは複数のハードウェアプロセッサによって実行されると、動作の実行を引き起こす命令を含むコンピュータ可読プログラムであって、前記動作は、
    第1の期間中の少なくとも2つのテーブルに関連付けられたジョイン動作を備える1つまたは複数のクエリの1つまたは複数の実行を識別することと、
    前記1つまたは複数のクエリの各実行の実行時間を集計することによって前記第1の期間中の前記1つまたは複数のクエリのための累積実行時間を計算することと、
    前記第1の期間中の前記1つまたは複数のクエリのための前記累積実行時間が第1の閾値を超えると決定することと、
    前記決定の動作に応答して、(a)前記ジョイン動作の結果または(b)前記少なくとも2つのテーブルの各々をキャッシングすることを備える、コンピュータ可読プログラム
  13. 前記動作は、
    前記1つまたは複数のクエリの前記実行の少なくともサブセットのための前記実行時間が第2の閾値を超えると決定することであって、前記計算の動作は、前記1つまたは複数のクエリの前記実行の少なくともサブセットのための前記実行時間が前記第2の閾値を超えると決定することに応答して行われる、決定すること、または、
    第2の閾値を超える前記1つまたは複数のクエリの前記実行のサブセットの数を決定することであって、前記計算の動作は、前記第2の閾値を超える前記1つまたは複数のクエリの前記実行の前記サブセットの前記数に基づき行われる、決定することのうちの1つまたは複数を備える、請求項12に記載のコンピュータ可読プログラム
  14. 前記動作は、
    前記決定の動作に応答して、前記キャッシュされた(a)前記ジョイン動作の結果または(b)前記少なくとも2つのテーブルの各々を保持することをさらに備える、請求項12または13に記載のコンピュータ可読プログラム
  15. 前記1つまたは複数のクエリの第1の実行のための前記実行時間を決定することは、
    前記1つまたは複数のクエリを実行するためにリクエストを送信することと前記1つまたは複数のクエリの実行から結果を受信することとの間の期間を決定することとを備える、請求項12〜14のいずれか1項に記載のコンピュータ可読プログラム
JP2019563840A 2017-05-19 2017-12-28 クエリリソースキャッシングのためのシステムおよび方法 Active JP6929388B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/600,518 US11803547B2 (en) 2017-05-19 2017-05-19 System and method for query resource caching
US15/600,518 2017-05-19
PCT/US2017/068651 WO2018212791A1 (en) 2017-05-19 2017-12-28 System and method for query resource caching

Publications (3)

Publication Number Publication Date
JP2020522781A JP2020522781A (ja) 2020-07-30
JP2020522781A5 JP2020522781A5 (ja) 2021-01-14
JP6929388B2 true JP6929388B2 (ja) 2021-09-01

Family

ID=61148473

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019563840A Active JP6929388B2 (ja) 2017-05-19 2017-12-28 クエリリソースキャッシングのためのシステムおよび方法

Country Status (5)

Country Link
US (2) US11803547B2 (ja)
EP (1) EP3625701B1 (ja)
JP (1) JP6929388B2 (ja)
CN (2) CN110637292B (ja)
WO (1) WO2018212791A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109953B (zh) * 2018-01-19 2023-12-19 阿里巴巴集团控股有限公司 一种数据查询方法、装置及设备
US11157514B2 (en) * 2019-10-15 2021-10-26 Dropbox, Inc. Topology-based monitoring and alerting
US11550789B2 (en) * 2020-07-02 2023-01-10 Oracle International Corporation Capturing query execution statistics
US20230141891A1 (en) * 2021-11-10 2023-05-11 Google Llc Autonomous Column Selection for Columnar Cache

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763359B2 (en) * 2001-06-06 2004-07-13 International Business Machines Corporation Learning from empirical results in query optimization
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US7146360B2 (en) * 2002-12-18 2006-12-05 International Business Machines Corporation Method and system for improving response time for database query execution
JP2004272747A (ja) * 2003-03-11 2004-09-30 Hitachi Information Systems Ltd データベースのデータ取得方法及び取得システム
CA2425046C (en) 2003-04-08 2009-10-06 Ibm Canada Limited - Ibm Canada Limitee Method and system for caching database query statements
US7636707B2 (en) * 2004-04-06 2009-12-22 Microsoft Corporation Query selectivity estimation with confidence interval
US20050283494A1 (en) * 2004-06-22 2005-12-22 International Business Machines Corporation Visualizing and manipulating multidimensional OLAP models graphically
US7574424B2 (en) * 2004-10-13 2009-08-11 Sybase, Inc. Database system with methodology for parallel schedule generation in a query optimizer
US20070143246A1 (en) * 2005-12-15 2007-06-21 International Business Machines Corporation Method and apparatus for analyzing the effect of different execution parameters on the performance of a database query
US7743052B2 (en) * 2006-02-14 2010-06-22 International Business Machines Corporation Method and apparatus for projecting the effect of maintaining an auxiliary database structure for use in executing database queries
US8285707B2 (en) 2006-11-08 2012-10-09 International Business Machines Corporation Method of querying relational database management systems
US7627618B2 (en) * 2007-02-21 2009-12-01 At&T Knowledge Ventures, L.P. System for managing data collection processes
US8255411B1 (en) * 2008-06-19 2012-08-28 Boopsie, Inc. Dynamic menus for multi-prefix interactive mobile searches
US8046768B2 (en) 2007-07-31 2011-10-25 Hewlett-Packard Development Company, L.P. Apparatus and method for detecting resource consumption and preventing workload starvation
US8566476B2 (en) * 2008-02-01 2013-10-22 Mandiant Corporation Method and system for analyzing data related to an event
US9910892B2 (en) * 2008-07-05 2018-03-06 Hewlett Packard Enterprise Development Lp Managing execution of database queries
US8762367B2 (en) * 2008-12-08 2014-06-24 Teradata Us, Inc. Accurate and timely enforcement of system resource allocation rules
JP5304950B2 (ja) * 2010-08-04 2013-10-02 株式会社日立製作所 データベース管理方法、データベース管理装置及びデータベース管理プログラム
US8290937B2 (en) * 2010-08-30 2012-10-16 International Business Machines Corporation Estimating and monitoring query processing time
US9703706B2 (en) 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system
JP2012203792A (ja) * 2011-03-28 2012-10-22 Nippon Telegr & Teleph Corp <Ntt> 有効期限算出装置、有効期限算出方法及び有効期限算出プログラム
JP5597623B2 (ja) * 2011-12-02 2014-10-01 株式会社日立システムズ データベース処理方法
US9158814B2 (en) * 2012-03-30 2015-10-13 International Business Machines Corporation Obtaining partial results from a database query
US20140025441A1 (en) * 2012-07-19 2014-01-23 Sap Ag Peer support gamification by application knowledge scoring in social networks
CN103020175B (zh) * 2012-11-28 2016-06-22 深圳市华为技术软件有限公司 一种获取聚合数据的方法和装置
US9251210B2 (en) 2013-04-19 2016-02-02 Oracle International Corporation Caching external data sources for SQL processing
US10108622B2 (en) * 2014-03-26 2018-10-23 International Business Machines Corporation Autonomic regulation of a volatile database table attribute
US9575864B2 (en) * 2014-06-02 2017-02-21 Microsoft Technology Licensing, Llc Function-level dynamic instrumentation
US10366083B2 (en) 2015-07-29 2019-07-30 Oracle International Corporation Materializing internal computations in-memory to improve query performance
CN106708833B (zh) 2015-08-03 2020-04-07 腾讯科技(深圳)有限公司 基于位置信息获取数据的方法和装置
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9678794B1 (en) * 2015-12-02 2017-06-13 Color Genomics, Inc. Techniques for processing queries relating to task-completion times or cross-data-structure interactions
US10482072B2 (en) * 2016-02-02 2019-11-19 Servicenow, Inc. Cloud-based platform instrumentation and monitoring system for maintenance of user-configured programs
US10067874B2 (en) * 2016-06-07 2018-09-04 International Business Machines Corporation Optimizing the management of cache memory
US10860579B2 (en) * 2017-01-30 2020-12-08 Sap Se Query planning and execution with reusable memory stack
US10423620B2 (en) * 2017-04-22 2019-09-24 International Business Machines Corporation Runtime creation of remote derived sources for query offload

Also Published As

Publication number Publication date
US20180336199A1 (en) 2018-11-22
CN110637292B (zh) 2023-10-10
WO2018212791A1 (en) 2018-11-22
CN110637292A (zh) 2019-12-31
US11803547B2 (en) 2023-10-31
CN117235101A (zh) 2023-12-15
EP3625701A1 (en) 2020-03-25
EP3625701B1 (en) 2021-11-03
US20240004881A1 (en) 2024-01-04
JP2020522781A (ja) 2020-07-30

Similar Documents

Publication Publication Date Title
US11500875B2 (en) Multi-partitioning for combination operations
US11288231B2 (en) Reproducing datasets generated by alert-triggering search queries
US11397722B2 (en) Applications of automated discovery of template patterns based on received requests
JP6929388B2 (ja) クエリリソースキャッシングのためのシステムおよび方法
CN104903894B (zh) 用于分布式数据库查询引擎的系统和方法
US11409756B1 (en) Creating and communicating data analyses using data visualization pipelines
US7644107B2 (en) System and method for batched indexing of network documents
US11768776B1 (en) Evicting data associated with a data intake and query system from a local storage
US11681690B2 (en) Systems and methods for accessing federated data
US10108669B1 (en) Partitioning data stores using tenant specific partitioning strategies
US10997171B2 (en) Database performance analysis based on a random archive
US11604789B1 (en) Bi-directional query updates in a user interface
US11860726B2 (en) Recommending remediation actions for incidents identified by performance management systems
US11922222B1 (en) Generating a modified component for a data intake and query system using an isolated execution environment image
US11899670B1 (en) Generation of queries for execution at a separate system
US20240143612A1 (en) Generation of modified queries using a field value for different fields
US11914558B2 (en) System and methods for object version tracking and read-time/write-time data federation
US11461355B1 (en) Ontological mapping of data
JP2023152910A (ja) コンピュータ実装方法、コンピュータプログラム、システム(データベース監査の精度及び効率を改善するための構造化監査ログの活用)
WO2021217119A1 (en) Analyzing tags associated with high-latency and error spans for instrumented software
Vasbinder Towards a distributed implementation of a data extraction system for monitoring the processing of video clips

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201125

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210630

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210810

R150 Certificate of patent or registration of utility model

Ref document number: 6929388

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150