TOP
|
特許
|
意匠
|
商標
特許ウォッチ
Twitter
他の特許を見る
10個以上の画像は省略されています。
公開番号
2025118512
公報種別
公開特許公報(A)
公開日
2025-08-13
出願番号
2024203211
出願日
2024-11-21
発明の名称
パラメータ化クエリのための自動再コンパイル
出願人
エスアーペー エスエー
代理人
個人
,
個人
,
個人
主分類
G06F
16/2453 20190101AFI20250805BHJP(計算;計数)
要約
【課題】ランタイムパラメータ化クエリ管理のためのシステム及び方法を提供する。
【解決手段】方法は、パラメータ化クエリを入力パラメータセットとともに受信することと、パラメータ化クエリを入力パラメータセットとともにコンパイルして実行するための、推定されたコンパイル+実行時間を決定することと、プランキャッシュ中に記憶されたクエリプランを使用することによって、パラメータ化クエリを入力パラメータセットとともに実行するための、推定された実行時間を決定することと、推定されたコンパイル+実行時間及び推定された実行時間に少なくとも部分的に基づいて、キャッシュ利得を決定することと、キャッシュ利得が正である場合、クエリプランを使用することによって、パラメータ化クエリを入力パラメータセットとともに実行することと、正ではない場合、パラメータ化クエリを入力パラメータセットとともにコンパイル及び実行することと、を含む。
【選択図】図4
特許請求の範囲
【請求項1】
コンピュータ実装方法であって、
パラメータ化クエリを、前記パラメータ化クエリのための入力パラメータセットとともに受信するステップであって、前記パラメータ化クエリが、プランキャッシュ中に記憶されたクエリプランを有し、前記パラメータ化クエリが、前記パラメータ化クエリを第1の複数の一意のパラメータセットとともにコンパイルおよび実行するためのコンパイル+実行時間を備えるコンパイル履歴に関連付けられ、前記クエリプランが、前記クエリプランを使用することによって、前記パラメータ化クエリを第2の複数の一意のパラメータセットとともに実行するための実行時間を備える実行履歴に関連付けられる、ステップと、
前記パラメータ化クエリに関連付けられた前記コンパイル履歴に基づいて、前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための、推定されたコンパイル+実行時間を決定するステップと、
前記クエリプランに関連付けられた前記実行履歴に基づいて、前記クエリプランを使用することによって、前記パラメータ化クエリを前記入力パラメータセットとともに実行するための、推定された実行時間を決定するステップと、
前記推定されたコンパイル+実行時間および前記推定された実行時間に少なくとも部分的に基づいて、キャッシュ利得を決定するステップと、
前記キャッシュ利得が正であるとの発見に応答して、前記クエリプランを使用することによって、前記パラメータ化クエリを前記入力パラメータセットとともに実行するステップと、
前記キャッシュ利得が正ではないとの発見に応答して、前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するステップと
を含む、コンピュータ実装方法。
続きを表示(約 3,600 文字)
【請求項2】
前記キャッシュ利得が正であるとの発見に応答して、第1のカウンタを増加させるステップと、
前記キャッシュ利得が正ではないとの発見に応答して、第2のカウンタを増加させるステップと、
前記プランキャッシュにおける前記クエリプランが更新される必要があるか否かの最後の評価からの、前記パラメータ化クエリの実行の数を決定するステップと、
最後の評価からの前記パラメータ化クエリの実行の前記数が、あらかじめ決定された数に達するとの発見に応答して、前記第1のカウンタと前記第2のカウンタの比を決定するステップと、
前記第1のカウンタと前記第2のカウンタの前記比が、あらかじめ決定されたしきい値を下回るとの発見に応答して、前記入力パラメータセットを伴う前記パラメータ化クエリのコンパイルによって生成された新しいクエリプランを用いて、前記プランキャッシュにおける前記クエリプランを更新するステップと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記方法が、前記プランキャッシュにおける前記クエリプランを更新した後、前記パラメータ化クエリに関連付けられた前記コンパイル履歴を更新するステップをさらに含み、前記コンパイル履歴を更新する前記ステップが、
前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための、新しいコンパイル+実行時間を決定するステップと、
前記入力パラメータセットが、前記コンパイル履歴中に記憶された前記第1の複数の一意のパラメータセットのうちの1つであるか否かを決定するステップと、
前記入力パラメータセットが、前記コンパイル履歴中に記憶された前記第1の複数の一意のパラメータセットのうちの1つであるとの発見に応答して、前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための前記新しいコンパイル+実行時間に少なくとも部分的に基づいて、前記コンパイル履歴において、前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための前記コンパイル+実行時間を更新するステップと、
前記入力パラメータセットが、前記コンパイル履歴中に記憶された前記第1の複数の一意のパラメータセットのうちの1つではないとの発見に応答して、前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための前記新しいコンパイル+実行時間を、前記コンパイル履歴に挿入するステップと
を含む、請求項2に記載の方法。
【請求項4】
前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための前記新しいコンパイル+実行時間を、前記コンパイル履歴に挿入する前記ステップが、
前記コンパイル履歴中に記憶された前記第1の複数の一意のパラメータセットのカウントを決定するステップと、
前記コンパイル履歴中に記憶された前記第1の複数の一意のパラメータセットの前記カウントが、前記コンパイル履歴のあらかじめ定義されたサイズに等しいとの発見に応答して、前記パラメータ化クエリを前記第1の複数の一意のパラメータセットのうちの1つとともにコンパイルおよび実行するための前記コンパイル+実行時間を、前記コンパイル履歴から削除するステップと
を含む、請求項3に記載の方法。
【請求項5】
前記方法が、前記パラメータ化クエリに関連付けられた前記コンパイル履歴を更新した後、前記クエリプランに関連付けられた前記実行履歴を更新するステップをさらに含み、前記実行履歴を更新する前記ステップが、反復動作において、
前記プランキャッシュにおける前記更新されたクエリプランを使用して、前記パラメータ化クエリを、前記パラメータ化クエリのための新しいパラメータセットとともに実行するステップと、
前記パラメータ化クエリを、前記パラメータ化クエリのための前記新しいパラメータセットとともに実行するための、新しい実行時間を決定するステップと、
前記新しいパラメータセットが、前記実行履歴中に記憶された前記第2の複数の一意のパラメータセットのうちの1つであるか否かを決定するステップと、
前記新しいパラメータセットが、前記実行履歴中に記憶された前記第2の複数の一意のパラメータセットのうちの1つであるとの発見に応答して、前記パラメータ化クエリを前記新しいパラメータセットとともに実行するための前記新しい実行時間に少なくとも部分的に基づいて、前記実行履歴において、前記パラメータ化クエリを前記新しいパラメータセットとともに実行するための前記実行時間を更新するステップと、
前記新しいパラメータセットが、前記実行履歴中に記憶された前記第2の複数の一意のパラメータセットのうちの1つではないとの発見に応答して、前記パラメータ化クエリを前記新しいパラメータセットとともに実行するための前記新しい実行時間を、前記実行履歴に挿入するステップと
を含み、
前記実行履歴中に記憶された前記第2の複数の一意のパラメータセットのカウントが、前記実行履歴のあらかじめ定義されたサイズに等しくなるまで、前記反復動作が継続する、請求項3に記載の方法。
【請求項6】
前記パラメータ化クエリを前記入力パラメータセットとともにコンパイルおよび実行するための、前記推定されたコンパイル+実行時間を決定する前記ステップが、
前記入力パラメータセットに最も類似する、前記コンパイル履歴中に記憶された前記第1の複数の一意のパラメータセットの中の1つの一意のパラメータセットを決定するステップ
を含み、
前記クエリプランを使用することによって、前記パラメータ化クエリを前記入力パラメータセットとともに実行するための、前記推定された実行時間を決定する前記ステップが、
前記入力パラメータセットに最も類似する、前記実行履歴中に記憶された前記第2の複数の一意のパラメータセットの中の1つの一意のパラメータセットを決定するステップ
を含む、請求項1に記載の方法。
【請求項7】
前記入力パラメータセットに最も類似する、前記第1の複数の一意のパラメータセットまたは前記第2の複数の一意のパラメータセットの中の1つの一意のパラメータセットを決定する前記ステップが、
前記入力パラメータセットと、前記第1の複数の一意のパラメータセットまたは前記第2の複数の一意のパラメータセットとの間の距離を測定するステップと、
前記測定された距離の中の最小の距離を識別するステップと
を含む、請求項6に記載の方法。
【請求項8】
前記入力パラメータセットに最も類似する、前記第1の複数の一意のパラメータセットまたは前記第2の複数の一意のパラメータセットの中の1つの一意のパラメータセットを決定する前記ステップが、
前記入力パラメータセットの選択性値と、前記第1の複数の一意のパラメータセットまたは前記第2の複数の一意のパラメータセットの選択性値とを決定するステップと、
前記入力パラメータセットの前記選択性値に最も近い、前記第1の複数の一意のパラメータセットまたは前記第2の複数の一意のパラメータセットのうちの1つの選択性値を識別するステップと
を含む、請求項6に記載の方法。
【請求項9】
前記クエリプランが、前記プランキャッシュ中に記憶された前記パラメータ化クエリのための複数のクエリプランのうちの1つであり、前記実行履歴が、前記複数のクエリプランにそれぞれ関連付けられた複数の実行履歴のうちの1つであり、前記推定された実行時間が、前記複数のクエリプランのためにそれぞれ決定された複数の推定された実行時間のうちの1つであり、前記キャッシュ利得が、前記推定されたコンパイル+実行時間を前記複数の推定された実行時間と比較することに基づいて決定される、請求項1に記載の方法。
【請求項10】
前記キャッシュ利得を決定する前記ステップが、
前記複数の推定された実行時間の中の最小の推定された実行時間を決定するステップと、
前記推定されたコンパイル+実行時間と前記最小の推定された実行時間との間の差を決定するステップと
を含む、請求項9に記載の方法。
(【請求項11】以降は省略されています)
発明の詳細な説明
【背景技術】
【0001】
クエリプラン(「クエリ実行プラン」とも呼ばれる)は、データベース管理システム(DBMS)がクエリを完了させるために実行するステップのシーケンスである。クエリがDBMSにおいて初めて実行されるとき、クエリがクエリオプティマイザによってコンパイルされて、対応するクエリプランが生成され得、対応するクエリプランは、クエリプランキャッシュ、または単に、プランキャッシュと呼ばれるメモリ中に記憶され得る。プランキャッシュ中に記憶されたクエリプランはまた、キャッシュされたクエリプラン、または単に、キャッシュされたプランと呼ばれることもある。したがって、同じクエリが再び実行されるとき、DBMSは、クエリプランを再生成する必要がない。代わりに、DBMSは、クエリプランキャッシュ中に記憶された、キャッシュされたクエリプランを再使用し、それによって、DBMSの効率を向上させることができる。
続きを表示(約 3,700 文字)
【0002】
クエリ最適化は、クエリを実行するために、多数の候補クエリプランの中で、最も効率的なクエリプランを選定しようと試みる、全体的なプロセスを指す。この文脈において、クエリランタイムにおいて供給された値とともに、パラメータのためのプレースホルダーを使用する、パラメータ化クエリ(parameterized query)が有益であり得る。それによって、DBMSがクエリプランをキャッシュし、それによって、繰り返しのクエリコンパイルの必要をなくし、性能を向上させることが可能になる。しかしながら、パラメータ化クエリのためのクエリ最適化は、予想される結果を常に提供するとは限らないことがある。したがって、パラメータ化クエリを処理するための改善の余地が存在する。
【先行技術文献】
【非特許文献】
【0003】
Eskandar, “Exploring Common Distance Measures for Machine Learning and Data Science: A Comparative Analysis,” <URL: https://medium.com/@eskandar.sahel/exploring-common-distance-measures-formachine-learning-and-data-science-a-comparative-analysis-ea0216c93ba3>, 18頁、[アクセス日:2023年12月11日]
Anand, “Gower’s Distance,” Analytics Vidhya, <URL: https://medium.com/analyticsvidhya/gowers-distance-899f9c4bd553>, 15頁、202年6月17日
【図面の簡単な説明】
【0004】
例示的なランタイムパラメータ化クエリ管理システムの全体的なブロック図である。
パラメータ化クエリのための例示的なコンパイル履歴および例示的な実行履歴を示す図である。
推定されたコンパイル+実行時間および推定された実行時間に基づく、キャッシュ利得(cache gain)の決定を示す概略図である。
ランタイムパラメータ化クエリ再コンパイルを実装する例示的な全体的な方法を示すフローチャートである。
パラメータ化クエリのためのコンパイル履歴を更新するための例示的な方法を示すフローチャートである。
パラメータ化クエリのためのクエリプランに関連付けられた実行履歴を更新するための例示的な方法を示すフローチャートである。
実行の数にわたって、キャッシュされたクエリプランのセットとともに実行するとき、有益な場合および有益ではない場合をカウントするための例示的な方法を示すフローチャートである。
キャッシュされたクエリプランが置き換えられる必要があるか否かを決定するための例示的な方法を示すフローチャートである。
パラメータ化クエリが単一のクエリプランを有する場合の、ランタイムパラメータ化クエリ再コンパイルの使用事例を示す概略図である。
パラメータ化クエリが複数のクエリプランを有する場合の、ランタイムパラメータ化クエリ再コンパイルの別の使用事例を示す概略図である。
説明される実施形態が実装され得る、例示的なコンピューティングシステムのブロック図である。
本明細書で説明される技術とともに使用され得る、例示的なクラウドコンピューティング環境のブロック図である。
【発明を実施するための形態】
【0005】
パラメータ化クエリ最適化の概観
本明細書で説明されるように、クエリ最適化は、クエリを実行するために、多数の候補クエリプランの中で、最も効率的なクエリプランを選定しようと試みる、全体的なプロセスを指す。実際には、「最適」および「最適化する」という用語が使用されるにもかかわらず、実際の最良のクエリプランが選択されないことがあるが、選択されたクエリプランは、クエリ処理エンジンにおけるクエリオプティマイザにとって利用可能なデータに基づいて、他のクエリプランよりも良いと見なされる。
【0006】
本明細書で説明されるように、クエリコンパイルは、着信クエリをクエリプランに変換するプロセスを指す。クエリの複雑さ(たとえば、結合されたテーブルの数など)、およびクエリ最適化アルゴリズムに応じて、クエリコンパイル時間が長く(たとえば、数十秒またはそれ以上に)なり得る。したがって、動作効率を向上させるために、着信クエリに対応するコンパイルされたクエリプラン(たとえば、決定された最も最適なクエリプラン)が、同じクエリが将来に再びサブミットされる場合に迅速に取り出され、再使用され得るように、プランキャッシュ中に記憶され得る。
【0007】
クエリ最適化は、パラメータ化クエリにも適用され得る。パラメータ化クエリは、プレースホルダーとして働くパラメータをクエリ文中に入れることを可能にする、構造化クエリ言語(SQL)クエリの1つのタイプである。各パラメータは、パラメータ化クエリが実行されるとき、(たとえば、別個の文において)その値を取ることができ、それによって、パラメータ化クエリが、異なる値とともに、および異なる目的のために再使用されることが可能になる。パラメータ化クエリは、複数のパラメータ化された述語を有し、したがって、複数のパラメータがクエリ実行中にそれらの値を割り当てられることを可能にすることができる。本明細書で説明されるように、パラメータ化クエリのためのパラメータ値のセットは、パラメータセットと呼ばれることもある。パラメータセットにおけるパラメータ値は、整数、フロート、ストリング、ブール、日付、時間など、様々なデータフォーマットを有し得る。
【0008】
パラメータ化クエリを使用する、いくつかの利益がある。一般に、パラメータ化クエリは、非パラメータ化クエリよりも読みやすい。パラメータ化クエリは、事前に準備され、次いで、各場合のために別個のSQLクエリを作成する必要なしに、類似する用途のために再使用され得、したがって、多くのコンピューティングリソースを消費し得る繰り返しのクエリコンパイルを回避することができる。パラメータ化クエリはまた、セキュリティの理由のためにも使用され得る。たとえば、パラメータ化クエリは、機密データへの無許可のアクセスを生じ得る、いわゆるSQLインジェクション攻撃を軽減または回避するために使用され得る。
【0009】
しかしながら、パラメータ化クエリのためのクエリ最適化は、予想される結果を常に提供するとは限らないことがあり、その理由は、クエリパラメータのための値が、クエリ実行時間まで提供されないことがあるからである。さらに、パラメータ化クエリのためのキャッシュされたプランの性能は、入力パラメータに基づいて変動し得る。たとえば、パラメータ化クエリが、入力パラメータのあるセットとともに実行されるとき、キャッシュされたプランは、それらの特定のパラメータに基づくクエリプランの最適化により、優れた性能を生じ得る。しかしながら、入力パラメータが変化する場合、同じキャッシュされたプランがそれほど効率的ではないことがある。この理由は、キャッシュされたプランが、初期パラメータに基づいて最適化されたものであり、異なるパラメータにとって最適ではない場合があるからである。結果として、同じキャッシュされたプランを異なる入力パラメータとともに再使用することによって、準最適な性能が生じ得る。
【0010】
パラメータ化クエリのためのキャッシュされたクエリプランを使用するか、新しいクエリプランを生成するかを決定する際の技術的課題は、クエリ実行の時間におけるパラメータ値の予測不可能性から生じる。この予測不可能性によって、判定実行プロセスが複雑になり、その理由は、判定実行プロセスが、これらのパラメータ値がクエリプランの性能にどのような影響を及ぼすことになるかの正確な予測を必要とするからである。この問題の複雑さは、データベースの動的な性質によってさらに増幅される。たとえば、経時的なデータ分散における変化は、キャッシュされたプランの最適性に影響を及ぼすことがあり、キャッシュされたプランを続けるか、新しいプランに置き換えるかを判定することが、なお一層困難になり得る。このことは、常に進化しているデータベース環境内でパラメータ化クエリを管理する際に必要とされる、複雑なバランスを強調するものである。
(【0011】以降は省略されています)
この特許をJ-PlatPatで参照する
関連特許
エスアーペー エスエー
大規模言語モデルを用いたコード生成のための、言語サーバベースのコンテキスト提供
今日
個人
裁判のAI化
1か月前
個人
工程設計支援装置
7日前
個人
フラワーコートA
15日前
個人
情報処理システム
1か月前
個人
検査システム
1か月前
個人
記入設定プラグイン
1か月前
個人
介護情報提供システム
22日前
個人
携帯情報端末装置
8日前
個人
設計支援システム
28日前
個人
設計支援システム
28日前
個人
結婚相手紹介支援システム
4日前
株式会社サタケ
籾摺・調製設備
1か月前
キヤノン電子株式会社
携帯装置
1か月前
個人
不動産売買システム
1か月前
株式会社カクシン
支援装置
1か月前
個人
備蓄品の管理方法
1か月前
個人
アンケート支援システム
17日前
キヤノン株式会社
情報処理装置
1か月前
キヤノン株式会社
情報処理装置
1か月前
個人
ジェスチャーパッドのガイド部材
21日前
サクサ株式会社
中継装置
1か月前
サクサ株式会社
中継装置
18日前
株式会社BONNOU
管理装置
2か月前
大阪瓦斯株式会社
住宅設備機器
1日前
個人
リテールレボリューションAIタグ
14日前
株式会社アジラ
移動方向推定装置
16日前
ホシデン株式会社
タッチ入力装置
1か月前
アスエネ株式会社
排水量管理方法
1か月前
東洋電装株式会社
操作装置
1か月前
株式会社ワコム
電子消去具
1か月前
東洋電装株式会社
操作装置
1か月前
株式会社東芝
電子機器
1か月前
キヤノン電子株式会社
名刺管理システム
1か月前
株式会社寺岡精工
システム
21日前
株式会社村田製作所
ラック
3日前
続きを見る
他の特許を見る