(57)【特許請求の範囲】
【請求項１】
照会実行を管理するためのコンピュータ実装方法であって、
要求元エンティティから照会を受信すること、
以前に処理された照会からのメモリ使用量履歴データに少なくとも部分的に基づいて、前記受信した照会を実行するために推定メモリ使用量値を計算すること、
前記推定メモリ使用量値と所定のメモリしきい値量とを比較することにより、前記照会の実行がメモリ消費条件を満たすものであるかどうかを判別すること、および
前記照会の実行が前記メモリ消費条件を満たさないものと判別すると、さらに１つまたは複数のコンピュータ・プロセッサの動作によって、前記照会の実行で使用されるメモリの量を削減するように前記照会を最適化すること、
を含む、コンピュータ実装方法。
【請求項２】
前記照会を最適化すると、
照会結果の第１のセットを生成するために、前記最適化された照会を実行すること、および
前記照会結果の第１のセットを前記要求側エンティティに戻すこと、ならびに
前記照会の実行が前記メモリ消費条件を満たすものと判別すると、
照会結果の第２のセットを生成するために、前記照会を実行すること、および
前記照会結果の第２のセットを前記要求側エンティティに戻すこと、
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記照会の最適化が、
前記照会の実行に使用されるメモリ圧縮量を調整すること
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記照会の最適化が、
前記照会の実行に関してメモリ圧縮が実行可能であるかどうかを判別すること、および
メモリ圧縮が実行不可であると判別すると、少なくとも前記受信した照会の前記実行に関してメモリ圧縮を実行可能にすること、
をさらに含む、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記照会の最適化が、
前記受信した照会の実行に関連付けられた圧縮率を、第１の圧縮率から第２の圧縮率へと上げることであって、前記第２の圧縮率は、前記照会の実行に関連付けられたデータを前記第１の圧縮率に対してさらに圧縮すべきであることを指定する、上げること、
をさらに含む、請求項３に記載のコンピュータ実装方法。
【請求項６】
前記照会の実行においてどの程度の遅延が受け入れ可能であるかを記述する、前記受信した照会に関連付けられた優先度値を決定すること、
をさらに含み、
前記照会の実行が前記メモリ消費を満たすかどうかを判別することが、前記受信した照会に関連付けられた前記決定された優先度値にさらに基づくものである、
請求項１に記載のコンピュータ実装方法。
【請求項７】
前記照会の実行が前記メモリ消費条件を満たすかどうかを判別することが、前記所定のメモリしきい値量と前記受信した照会に関連付けられた前記決定された優先度値との間の、相対的優先度にさらに基づくものである、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記照会の最適化が、
前記受信した照会の実行に関する複数の照会実行プランを決定すること、
前記複数の照会実行プランにおける各照会実行プランに関して、推定メモリ使用量値を計算すること、および
前記照会の実行で使用するための特定の照会実行プランを、前記特定の照会実行プランに関する前記推定メモリ使用量値に基づいて選択すること、
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
実際のメモリ使用量値を決定するために前記最適化された照会の前記実行を監視すること、および
前記実際のメモリ使用量値が前記所定のメモリしきい値量を超えるものと判別すると、前記照会の実行で使用される前記メモリの量を削減するように前記照会の実行で使用されるメモリ圧縮量を調整すること、
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１０】
照会実行を管理するためのコンピュータ・プログラムであって、
具体化されたコンピュータ読み取り可能プログラム・コードを有するコンピュータ読み取り可能ストレージ媒体を備え、前記コンピュータ読み取り可能プログラム・コードが、
要求元エンティティから照会を受信するためのコンピュータ読み取り可能プログラム・コードと、
以前に処理された照会からのメモリ使用量履歴データに少なくとも部分的に基づいて、前記受信した照会を実行するために推定メモリ使用量値を計算するためのコンピュータ読み取り可能プログラム・コードと、
前記推定メモリ使用量値と所定のメモリしきい値量とを比較することにより、前記照会の実行がメモリ消費条件を満たすものであるかどうかを判別するためのコンピュータ読み取り可能プログラム・コードと、
前記照会の実行が前記メモリ消費条件を満たさないものと判別すると、前記照会の実行で使用されるメモリの量を削減するように前記照会を最適化するためのコンピュータ読み取り可能プログラム・コードと、
を含む、コンピュータ・プログラム。
【請求項１１】
前記照会を最適化すると、
照会結果の第１のセットを生成するために、前記最適化された照会を実行するため、および
前記照会結果の第１のセットを前記要求側エンティティに戻すため、ならびに
前記照会の実行が前記メモリ消費条件を満たすものと判別すると、
照会結果の第２のセットを生成するために、前記照会を実行するため、および
前記照会結果の第２のセットを前記要求側エンティティに戻すための、
コンピュータ読み取り可能プログラム・コードをさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
前記照会を最適化するための前記コンピュータ読み取り可能プログラム・コードが、
前記照会の実行に使用されるメモリ圧縮量を調整するためのコンピュータ読み取り可能プログラム・コードをさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１３】
前記照会を最適化するための前記コンピュータ読み取り可能プログラム・コードが、
前記照会の実行に関してメモリ圧縮が実行可能であるかどうかを判別するためのコンピュータ読み取り可能プログラム・コードと、
メモリ圧縮が実行不可であると判別すると、少なくとも前記受信した照会の前記実行に関してメモリ圧縮を実行可能にするためのコンピュータ読み取り可能プログラム・コードと、
をさらに含む、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記照会を最適化するための前記コンピュータ読み取り可能プログラム・コードが、
前記受信した照会の実行に関連付けられた圧縮率を、第１の圧縮率から第２の圧縮率へと上げるためのコンピュータ読み取り可能プログラム・コードであって、前記第２の圧縮率は、前記照会の実行に関連付けられたデータを前記第１の圧縮率に対してさらに圧縮すべきであることを指定する、コンピュータ読み取り可能プログラム・コードを、
さらに含む、請求項１２に記載のコンピュータ・プログラム。
【請求項１５】
前記照会の実行においてどの程度の遅延が受け入れ可能であるかを記述する、前記受信した照会に関連付けられた優先度値を決定するためのコンピュータ読み取り可能プログラム・コードをさらに含み、
前記照会の実行が前記メモリ消費を満たすかどうかを判別するための前記コンピュータ読み取り可能プログラム・コードが、
前記受信した照会に関連付けられた前記決定された優先度値と、
前記所定のメモリしきい値量と前記受信した照会に関連付けられた前記決定された優先度値との間の、相対的優先度とに、
さらに基づくものである、請求項１０に記載のコンピュータ・プログラム。
【請求項１６】
前記照会を最適化するための前記コンピュータ読み取り可能プログラム・コードが、
前記受信した照会の実行に関する複数の照会実行プランを決定するためのコンピュータ読み取り可能プログラム・コードと、
前記複数の照会実行プランにおける各照会実行プランに関して、推定メモリ使用量値を計算するためのコンピュータ読み取り可能プログラム・コードと
前記照会の実行で使用するための特定の照会実行プランを、前記特定の照会実行プランに関する前記推定メモリ使用量値に基づいて選択するためのコンピュータ読み取り可能プログラム・コードと、
をさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１７】
実際のメモリ使用量値を決定するために前記最適化された照会の前記実行を監視するためのコンピュータ読み取り可能プログラム・コードと
前記実際のメモリ使用量値が前記所定のメモリしきい値量を超えるものと判別すると、前記照会の実行で使用される前記メモリの量を削減するように前記照会の実行で使用されるメモリ圧縮量を調整するためのコンピュータ読み取り可能プログラム・コードと、
をさらに含む、請求項１０に記載のコンピュータ・プログラム。
【請求項１８】
コンピュータ・プロセッサと、
前記コンピュータ・プロセッサ上で実行された場合、
要求元エンティティから照会を受信すること、
以前に処理された照会からのメモリ使用量履歴データに少なくとも部分的に基づいて、前記受信した照会を実行するために推定メモリ使用量値を計算すること、
前記推定メモリ使用量値と所定のメモリしきい値量とを比較することにより、前記照会の実行がメモリ消費条件を満たすものであるかどうかを判別すること、および
前記照会の実行が前記メモリ消費条件を満たさないものと判別すると、さらに１つまたは複数のコンピュータ・プロセッサの動作によって、前記照会の実行で使用されるメモリの量を削減するように前記照会を最適化すること、
を含む、照会実行を管理するための動作を実行する、プログラムを含むメモリと、
を備える、システム。
【請求項１９】
前記動作が、
前記照会を最適化すると、
照会結果の第１のセットを生成するために、前記最適化された照会を実行すること、および
前記照会結果の第１のセットを前記要求側エンティティに戻すこと、ならびに
前記照会の実行が前記メモリ消費条件を満たすものと判別すると、
照会結果の第２のセットを生成するために、前記照会を実行すること、および
前記照会結果の第２のセットを前記要求側エンティティに戻すこと、
をさらに含む、請求項１８に記載のシステム。
【請求項２０】
前記照会の最適化が、
前記照会の実行に使用されるメモリ圧縮量を調整すること
をさらに含む、請求項１９に記載のシステム。
【請求項２１】
前記照会の最適化が、
前記照会の実行に関してメモリ圧縮が実行可能であるかどうかを判別すること、および
メモリ圧縮が実行不可であると判別すると、少なくとも前記受信した照会の前記実行に関してメモリ圧縮を実行可能にすること、
をさらに含む、請求項２０に記載のシステム。
【請求項２２】
前記照会の最適化が、
前記受信した照会の実行に関連付けられた圧縮率を、第１の圧縮率から第２の圧縮率へと上げることであって、前記第２の圧縮率は、前記照会の実行に関連付けられたデータを前記第１の圧縮率に対してさらに圧縮すべきであることを指定する、上げること、
をさらに含む、請求項２０に記載のシステム。
【請求項２３】
前記動作が、
前記照会の実行においてどの程度の遅延が受け入れ可能であるかを記述する、前記受信した照会に関連付けられた優先度値を決定すること、
をさらに含み、
前記照会の実行が前記メモリ消費を満たすかどうかを判別することが、
前記受信した照会に関連付けられた前記決定された優先度値と、
前記所定のメモリしきい値量と前記受信した照会に関連付けられた前記決定された優先度値との間の、相対的優先度とに、
さらに基づくものである、請求項１８に記載のシステム。
【請求項２４】
前記照会の最適化が、
前記受信した照会の実行に関する複数の照会実行プランを決定すること、
前記複数の照会実行プランにおける各照会実行プランに関して、推定メモリ使用量値を計算すること、および
前記照会の実行で使用するための特定の照会実行プランを、前記特定の照会実行プランに関する前記推定メモリ使用量値に基づいて選択すること、
をさらに含む、請求項１８に記載のシステム。
【請求項２５】
前記動作が、
実際のメモリ使用量値を決定するために前記最適化された照会の前記実行を監視すること、および
前記実際のメモリ使用量値が前記所定のメモリしきい値量を超えるものと判別すると、前記照会の実行で使用される前記メモリの量を削減するように前記照会の実行で使用されるメモリ圧縮量を調整すること、
をさらに含む、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータベース管理に関し、より具体的には、照会ガバナ（query governor）を使用した照会のメモリ使用量の管理に関する。
【背景技術】
【０００２】
データベースは、コンピュータ化された情報の格納および取り出しシステムである。関係データベース管理システムは、データを格納および取り出すために関係技法を使用する、コンピュータ・データベース管理システム（ＤＢＭＳ）である。オブジェクト指向プログラミング・データベースは、オブジェクトのクラスおよびサブクラスで定義されたデータと一致するデータベースである。
【０００３】
特定のアーキテクチャに関係なく、ＤＢＭＳ内の要求側エンティティ（たとえばアプリケーションまたはオペレーティング・システム）は、データベース・アクセス要求を発行することによって、指定されたデータベースへのアクセスを要求する。こうした要求は、たとえば、単純なカタログ検索の要求またはトランザクション、ならびに、データベース内の指定された記録の読み取り、変更、および追加のために動作するトランザクションの組み合わせを含むことができる。これらの要求（すなわち照会）は、しばしば、構造化照会言語（ＳＱＬ）などの高水準照会言語を使用して作成される。こうした要求を受信すると、ＤＢＭＳは対応するデータベースに対して要求を実行し、実行の任意の結果を要求側エンティティに戻すことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データベースのサイズおよび作業負荷が大きくなるにつれて、特定の照会または要求は、実行するためにかなりの時間がかかる可能性がある。したがってデータベース管理者は、データベース・システム上のメモリがどのように使用されるかを制御することを望む場合がある。
【課題を解決するための手段】
【０００５】
本発明の諸実施形態は、照会実行を管理するための方法、製品、およびシステムを提供する。この方法、製品、およびシステムは、要求元エンティティから照会を受信することを含む。方法、製品、およびシステムは、照会を受信すると、受信した照会を実行するための推定メモリ使用量値を計算することを含む。推定メモリ使用量値は、以前に処理された照会からのメモリ使用量履歴データに少なくとも部分的に基づいて計算される。加えて、方法、製品、およびシステムは、推定メモリ使用量値と所定のメモリしきい値量とを比較することにより、照会の実行がメモリ消費条件を満たすものであるかどうかを決定することを含む。方法、製品、およびシステムは、照会の実行がメモリ消費条件を満たさないものと決定すると、照会の実行で使用されるメモリの量を削減するように照会を最適化することを含む。
【０００６】
前述の諸態様が達成され、詳細に理解できるように、上記で簡単に概説した本発明について、添付の図面を参照しながらさらに具体的に説明する。
【０００７】
しかしながら、添付の図面は、本発明の典型的な諸実施形態を単に例示するものであるため、その範囲を制限するものとはみなされず、本発明について、他の等しく効果的な諸実施形態を認めることが可能であることに留意されたい。
【図面の簡単な説明】
【０００８】
【図１】本発明の諸実施形態に従った、メモリ使用量照会ガバナを実行するように構成されたシステムを示す、ブロック図である。
【図２】本発明の諸実施形態に従った、メモリ使用量照会ガバナを実行するように構成されたシステムを示す、ブロック図である。
【図３】本発明の一実施形態に従った、メモリ圧縮の効果を示すブロック図である。
【図４】本発明の一実施形態に従った、照会のメモリ使用量を管理するための方法を示す流れ図である。
【図５】本発明の一実施形態に従った、照会のメモリ使用量を管理するための方法を示す流れ図である。
【図６】本発明の一実施形態に従った、照会のメモリ使用量を管理するための方法を示す流れ図である。
【発明を実施するための形態】
【０００９】
多くのコンピュータの有する、内部でプログラムを実行するためのランダム・アクセス・メモリ（「ＲＡＭ」）の量が限定されていることから、これらの限定されたリソースが効果的に使用されることを保証するためには、適切なメモリ管理が重要である。そのため、データベース・システムでは、データベース管理者が、実行時に特定の照会が消費できるメモリの量を制限することを望む可能性がある。すなわち、特定の照会の実行が大量のシステム・メモリを消費し、そのシステム上での他の照会およびタスクの実行を妨げる場合、データベース管理者は、その照会の実行を拒否することを望む可能性がある。こうした拒否は確定的（たとえば、要求側エンティティに対して、照会の処理が拒否されたことを説明するメッセージが戻される場合がある）であるとするか、または、実行が他の時点まで遅延される（たとえば、システム・リソースがアイドル状態になると、システムは照会を処理できる）ものとすることができる。これにより、単一のデータベース照会がシステムのリソースを独占できないことが保証される。
【００１０】
コンピュータのメモリ・リソースは固定されている可能性があるが、メモリ・リソースを効果的に増加させるための技法の１つは、内部に格納されているデータを圧縮することによるものである。たとえば、ある特定のファイルが１００メガバイトのストレージ・サイズを有すると想定する。この特定ファイルがシステム・メモリに読み取られた場合、メモリ内の１００メガバイト容量を消費することになるが、特定ファイルが５０％の圧縮率で圧縮された場合、圧縮ファイルはメモリ内の５０メガバイト容量のみを消費することになる。こうしたメモリ圧縮技法の一例が、インターナショナル・ビジネス・マシーンズ社（「ＩＢＭ」）によるＰＯＷＥＲ７（ＴＭ）プラットフォームで使用可能な、Ａｃｔｉｖｅ  Ｍｅｍｏｒｙ（ＴＭ）  Ｅｘｐａｎｓｉｏｎコンポーネントである。こうした技法は、圧縮データを使用する要求を処理するのに必要な時間が増える可能性はあるが、データの圧縮および圧縮解除に追加の処理リソースが使用されるため、多くの場合、メモリ容量における利得が処理コストを上回る可能性がある。
【００１１】
本発明の諸実施形態は、要求側エンティティからの処理に関する照会を受信し、この照会の受信に応答して、照会を実行するための推定メモリ使用量値を計算することができる。推定されたメモリ使用量値は、通常、照会の実行に使用されることになるおおよそのシステム・メモリの量を反映する。さらに諸実施形態は、以前の照会の処理から収集されたメモリ使用量履歴データを使用して、この値を推定することができる。次に諸実施形態は、推定メモリ使用量値と所定のメモリしきい値量とを比較することによって、受信した照会を処理するかどうかを決定することができる。推定メモリ使用量値が所定のしきい値量を超えるものと決定すると、諸実施形態は、照会の実行で使用されるメモリ量を削減するように照会を最適化することができる。一実施形態では、最適化は、照会の処理で使用されるメモリ圧縮量を調整することを含む。他の実施形態では、照会に関する複数の実行プランが生成され、それぞれの実行プランについて推定メモリ使用量値が計算される。次に、選択された実行プランに関するそれぞれの推定メモリ使用量値に少なくとも部分的に基づいて、照会の実行で使用する実行プランが選択される。照会が最適化されると、照会が実行されて照会結果が生成され、その後これが要求側エンティティに戻されることが可能である。
【００１２】
以下で、本発明の諸実施形態について言及する。しかしながら、本発明が特定の説明される諸実施形態に限定されるものではないことを理解されたい。代わって、様々な実施形態に関するか否かに関わらず、本発明の実装および実施のための以下の特徴および要素の任意の組み合わせが企図される。さらに、本発明の諸実施形態は、他の可能なソリューション全体、あるいは従来技術全体、またはその両方にわたって、利点を達成できるが、所与の実施形態によって特定の利点が達成されるか否かが本発明を制限することはない。したがって、以下の諸々の態様、特徴、実施形態、および利点は単なる例示的なものであり、特許請求の範囲に明示されている場合を除き、添付の特許請求の範囲の要素または制限とはみなされない。同様に、「本発明」という言及は、本明細書で開示されたいかなる発明的主題の概括として解釈されるべきではなく、特許請求の範囲に明示されている場合を除き、添付の特許請求の範囲要素または制限とみなされるべきでもない。
【００１３】
当業者であれば理解されるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム製品として具体化することができる。したがって、本発明の諸態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、本明細書ではすべてを全体として「回路」、「モジュール」、または「システム」と呼ぶことが可能なソフトウェアおよびハードウェアの態様を組み合わせた諸実施形態の形を取ることができる。さらに、本発明の諸態様は、具体化されたコンピュータ読み取り可能プログラム・コードを有する、１つまたは複数のコンピュータ読み取り可能媒体で具体化される、コンピュータ・プログラム製品の形を取ることができる。
【００１４】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。たとえば、コンピュータ読み取り可能ストレージ媒体は、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいは上記の任意の好適な組み合わせとすることができるが、これらに限定されるものではない。コンピュータ読み取り可能ストレージ媒体のより特定の例（非網羅的リスト）は、１本または複数本の線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または、上記の任意の好適な組み合わせを含む。本明細書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスによって、またはそれらに関して使用するためのプログラムを含むかまたは格納することが可能な、任意の有形媒体とすることができる。
【００１５】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内または搬送波の一部として、内部にコンピュータ読み取り可能プログラム・コードが具体化された伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、電気、またはそれらの任意の好適な組み合わせを含むがこれらに限定されない、任意の多様な形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関して使用するためのプログラムを、通信、伝搬、または移送可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【００１６】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバー・ケーブル、ＲＦなど、または上記の任意の好適な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送することができる。
【００１７】
本発明の諸態様に関する諸動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、あるいは、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、一部はユーザのコンピュータ上および一部はリモート・コンピュータ上で、または、完全にリモート・コンピュータまたはサーバ上で、実行することができる。後者のシナリオでは、リモート・コンピュータを、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続することが可能であるか、または、外部コンピュータに（たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して）接続することが可能である。
【００１８】
本発明の諸態様について、本発明の諸実施形態に従った方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら、以下で説明する。流れ図あるいはブロック図またはその両方の各ブロック、および流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供し、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方の１つまたは複数のブロック内に指定された機能／動作を実施するための手段を作成するように、マシンを製造できることを理解されよう。
【００１９】
これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体内に格納された命令が、流れ図あるいはブロック図またはその両方の１つまたは複数のブロック内に指定された機能／動作を実施する命令を含む製品を製造するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対して、特定の様式で機能するよう命令することが可能な、コンピュータ読み取り可能媒体内に格納することもできる。
【００２０】
コンピュータ・プログラム命令は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上で、一連の動作ステップを実行させるために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードし、コンピュータまたは他のプログラム可能装置上で実行する命令が、流れ図あるいはブロック図またはその両方の１つまたは複数のブロック内に指定された機能／動作を実施するためのプロセスを提供するような、コンピュータ実施プロセスを生成することもできる。
【００２１】
本発明の諸実施形態は、クラウド・コンピューティング・インフラストラクチャを通じて、エンド・ユーザに提供することができる。クラウド・コンピューティングは、一般に、ネットワークを介したサービスとしてスケーラブルなコンピューティング・リソースを提供することを言い表す。より正式に言えば、クラウド・コンピューティングは、コンピューティング・リソースとその基礎となる技術的なアーキテクチャ（たとえば、サーバ、ストレージ、ネットワーク）との間に抽象化を提供し、最小限の管理努力またはサービス・プロバイダ対話を迅速に提供および解除することが可能な構成可能コンピューティング・リソースの共有プールへの、便利なオンデマンド・ネットワーク・アクセスを可能にする、コンピューティング機能として定義することができる。したがって、クラウド・コンピューティングは、ユーザが、「クラウド」内の仮想コンピューティング・リソース（たとえば、ストレージ、データ、アプリケーション、さらには完全な仮想化コンピューティング・システム）へと、コンピューティング・リソースを提供するために使用される基礎となる物理システム（またはそれらのシステムの位置）に関係なく、アクセスできるようにする。
【００２２】
典型的には、クラウド・コンピューティング・リソースは、ユーザが実際に使用したコンピューティング・リソース（たとえば、ユーザによって消費されたストレージ容量、またはユーザによってインスタンス生成された仮想化システムの数）についてのみ課金される、ペイ・パー・ユーズ・ベース（pay-per-use basis）で提供される。ユーザは、いつでも、およびインターネットを介していずれの場所からでも、クラウド内に常駐する任意のリソースにアクセスすることができる。本発明との関連において、ユーザは、クラウド内で使用可能なアプリケーション（たとえば、データベース管理システムすなわち「ＤＢＭＳ」）または関係データにアクセスすることができる。たとえばＤＢＭＳは、クラウド内のコンピューティング・システム上で実行し、ＤＢＭＳによって管理される１つまたは複数のデータベースに関連する照会を受信することができる。こうしたケースでは、メモリ使用量照会ガバナ１８２は、着信する照会を監視し、各照会について、照会を実行するための推定メモリ使用量を計算することができる。メモリ使用照会ガバナ１８２が、特定の照会に関する推定メモリ使用量がメモリしきい値量を超えるものと判別した場合、メモリ使用量照会ガバナ１８２は、照会の実行に使用されるメモリ圧縮量を調整することによって、照会を最適化することができる。このように実行することにより、クラウドに接続されたネットワーク（たとえばインターネット）に接続された任意のコンピューティング・システムから、ユーザに照会をサブミットさせることが可能であり、単一の照会によって実行中に許容を超える量のメモリが消費されることのないように保証するのに役立つ。
【００２３】
次に図１〜図２を参照すると、図１〜図２は、本発明の諸実施形態に従った、メモリ使用照会ガバナを実行するように構成されたシステムを示すブロック図である。より具体的に言えば、図１は、照会処理のためのメモリ使用量を推定および管理するための、ネットワーク化されたシステムを示す。図に示されるように、システム１００は、ネットワーク１５０によって接続された、クライアント・システム１２０およびデータベース・サーバ１７０を含む。一般に、クライアント・システム１２０は、ネットワーク１５０を介して、データベース・サーバ１７０上で実行されているＤＢＭＳへ、要求（すなわち照会）をサブミットすることができる。「照会」という用語は、格納されたデータベースからデータを取り出すためのコマンド・セットを示す。照会は、構造化照会言語（ＳＱＬ）などのコマンド言語の形を取ることが可能であり、プログラマおよびプログラムが、データベース内のデータの位置を選択、挿入、更新、および決定できるようにするものである。
【００２４】
概して、いずれの要求側エンティティ（すなわち様々な照会タイプ）も、データベース内のデータに対して照会を発行することができる。たとえば、ソフトウェア・アプリケーション（クライアント・システム１２０上で実行されているアプリケーションなどによる）、オペレーティング・システム、および最上位でのユーザは、データベースに照会をサブミットすることができる。これらの照会は、事前に定義する（すなわち、アプリケーションの一部としてハード・コーディングする）か、または入力（たとえばユーザ入力）に応答して生成することができる。要求を受信すると、データベース・サーバ１７０上のＤＢＭＳは、要求内に指定されたデータベース上で要求を実行した後、実行された要求の結果を戻すことができる。
【００２５】
本発明の一実施形態によれば、処理のための照会を受信すると、照会ガバナ・システム１７０上の照会ガバナは、受信した照会に関する推定メモリ消費値を計算することができる。推定メモリ消費値は、一般に、受信した照会の実行に使用されることになるシステム・メモリの量（たとえばメガバイト単位）を反映する。照会ガバナは、以前の照会の処理から収集したメモリ使用量履歴データを使用して、推定メモリ消費値を計算することができる。例として、実行時に、１５メガバイト、２０メガバイト、および２５メガバイトのメモリを消費した、ある特定のデータベース・テーブルに関するＳＥＬＥＣＴステートメントを含む、３つの事前照会があるものと想定する。照会ガバナ・システム１７０が、その特定のデータベース・テーブルに関するＳＥＬＥＣＴステートメントを含む別の照会を受信すると、照会ガバナは、その照会が実行時に２０メガバイトのメモリ（すなわち、３つの事前値の平均）を消費することになるものと推定することができる。
【００２６】
推定メモリ消費値が計算されると、照会ガバナは、その照会が実行された場合、許容を超える量のメモリを消費することになるかどうかを判別することができる。照会ガバナは、推定メモリ消費値と所定のメモリしきい値量とを比較することによって、これを判別することができる。推定メモリ消費値がメモリしきい値量を超える場合、照会ガバナは、その照会が許容を超える量のメモリを消費することになるものと判別することができる。こうしたシナリオでは、照会ガバナは、照会に関する諸動作の最適化を実行して、照会の実行に使用されるメモリ圧縮量を調整することができる。メモリ圧縮が使用できない状況では、こうした調整は、少なくとも照会の処理のためにメモリ圧縮を実行可能にすることを含むことができる。メモリ圧縮がすでに実行可能な状況では、調節は、照会の処理で使用される圧縮率を上げる（すなわち、データはさらに圧縮されることになる）ことを含むことができる。照会ガバナが、推定メモリ消費値がしきい値を超えないものと判別した場合、照会ガバナは、照会に関する諸動作の最適化を実行せずに、受信した照会を実行することができる。いかなるイベントでも、照会が実行されると、その照会の実行から生成されたすべての結果を、照会の受信元であった要求側エンティティへと戻すことができる。
【００２７】
他の実施形態では、推定メモリ消費値がメモリしきい値量を超えることが判別されると、照会ガバナは、照会の実行に使用するための複数の実行プランを決定することができる。各実行プランは、一般に、実行された場合、照会によって指定されたアクションを完了するという、１つまたは複数のデータベース動作を含むことができる。複数の実行プランを計算すると、さらに諸実施形態は、各実行プランについて推定メモリ消費値を計算することができる。その後、諸実施形態は、選択された実行プランについて計算された推定メモリ消費値に基づいて、照会の実行に使用するための実行プランのうちの１つを選択することができる。一般に諸実施形態は、推定メモリ消費値が比較的低い実行プランを選択することができるが、他の要素も同様に考慮することができる。たとえば諸実施形態は、推定メモリ消費値に加えて、各実行プランについての推定実行時間を考慮することができる。一例として、諸実施形態が、２つの実行プランがメモリしきい値量を超えない推定メモリ消費値を有するが、第１の実行プランは第２の実行プランの２倍の実行時間がかかるものと判別した場合、諸実施形態は、照会の実行に使用するために第２の実行プランを選択することができる。もちろんこうした例には制限がなく、また単なる例示を目的としており、より一般的に言えば、本明細書で説明された機能と一致するいかなる要素も、前述の例で与えられた推定実行時間に加えて、またはこれに代わって、考慮することができる。
【００２８】
有利なことに本発明の諸実施形態は、これを実行することによって、個々の照会がデータベース・システム上で消費可能なメモリの量を管理することができる。これを実行することにより、諸実施形態は、特定の照会がデータベース・システム上の他の照会およびタスクに損害を与えるほど、システム・メモリのかなりの部分を消費する状況を防ぐことができる。さらに本発明の諸実施形態は、照会の処理を単純に拒否しないように、照会実行を管理することができる。むしろ、本発明の諸実施形態は、照会の処理で使用されるメモリの量を削減するためにメモリの圧縮を使用することによって、その推定メモリ使用量がしきい値を超える照会を依然として処理することができる。他の実施形態では、照会メモリ使用量要件を満たす照会実行プランを選択することができる。諸実施形態は、これを実行することにより、依然としてメモリ使用量制限に従いながらも、受信した照会を処理する。
【００２９】
図２は、本発明の一実施形態に従った、メモリ使用照会ガバナを実行するように構成されたシステムを示すブロック図である。図に示されるように、システム１１０はクライアント・システム１２０およびデータベース・サーバ１７０を含む。クライアント・システム１２０は、コンピュータ・プロセッサ１２２、ストレージ・メディア１２４、Ｉ／Ｏデバイス１２６、メモリ１２８、およびネットワーク・インターフェース・カード１３４を含む。コンピュータ・プロセッサ１２２は、本明細書で説明される諸機能を実行することが可能な、任意のプロセッサとすることができる。クライアント・システム１２０は、ネットワーク・インターフェース・カード１３４を使用して、ネットワーク１５０に接続することができる。さらに、当業者であれば理解されるように、本明細書で説明される諸機能を実行することが可能な任意のコンピュータ・システムを使用することができる。
【００３０】
例示されているように、メモリ１２８はクライアント・アプリケーション１３０およびオペレーティング・システム１３２を含む。メモリ１２８は単一のエンティティとして示されているが、メモリ１２８は、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュ・メモリ、または他のタイプの揮発性あるいは不揮発性またはその両方のメモリなどの、物理アドレスに関連付けられたメモリのブロックを有する１つまたは複数のメモリ・デバイスを含むことができる。クライアント・アプリケーション１３０は、一般に、データベース照会を生成することができる。クライアント・アプリケーション１３０が照会を生成すると、その照会は、ネットワーク１５０を使用して実行のためにサーバ（たとえばＤＢＭＳ１８０）にサブミットされることが可能である。オペレーティング・システム１３２は、本明細書で説明される諸機能を実行することが可能な任意のオペレーティング・システムとすることができる。
【００３１】
データベース・サーバ１７０は、コンピュータ・プロセッサ１７２、ストレージ・メディア１７４、Ｉ／Ｏデバイス１７６、メモリ１７８、およびネットワーク・インターフェース１８６を含む。コンピュータ・プロセッサ１７２は、本明細書で説明される諸機能を実行することが可能な任意のプロセッサとすることができる。図に示されるように、ストレージ・メディア１７４はデータ・ページ１７５を含む。データ・ページ１７５は、一般に、１行または複数行のデータを含む。本発明の一実施形態では、データ・ページ１７５に含まれるデータは、データベース１８４内の１つまたは複数のキー値に関連付けられる。Ｉ／Ｏデバイス１７６は、キーボード、マウス、ビジュアル・ディスプレイ、プリンタなどを含む、多彩な入力および出力のデバイスを表すことができる。データベース・サーバ１７０は、ネットワーク・インターフェース・カード１８６を使用して、ネットワーク１５０に接続することができる。さらに、当業者であれば理解されるように、本明細書で説明される諸機能を実行することが可能な任意のコンピュータ・システムを使用することができる。
【００３２】
図示された実施形態では、メモリ１７８はオペレーティング・システム１８５およびデータベース管理システム（以下、「ＤＢＭＳ」）１８０を含む。メモリ１７８は単一のエンティティとして示されているが、メモリ１７８は、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュ・メモリ、または他のタイプの揮発性あるいは不揮発性またはその両方のメモリなどの、物理アドレスに関連付けられたメモリのブロックを有する、１つまたは複数のメモリ・デバイスを含むことができる。ＤＢＭＳ１８０は、メモリ使用量照会ガバナ１８２およびデータベース１８４を含む。オペレーティング・システム１８５は、本明細書で説明される諸機能を実行することが可能な任意のオペレーティング・システムとすることができる。
【００３３】
前述のように、ＤＢＭＳ１８０が処理する照会を受信した場合、照会ガバナ１８２は照会の処理に関するメモリ消費値を推定する。こうしたメモリ消費値は、たとえばＤＢＭＳ１８０が、照会に関連付けられた動作実行の一部として、ストレージ１７４内のデータ・ページ１７５からどれだけのデータをメモリ１７８へと取り出すことになるかを反映することができる。その後照会ガバナ１８２は、推定されたメモリ消費値を使用して、さらに最適化することなく照会を実行するかどうかを判別することができる。照会ガバナ１８２は、たとえばメモリ消費値と所定のメモリしきい値量とを比較することによって、これを判別することができる。
【００３４】
推定されたメモリ消費値がしきい値を超える場合、照会ガバナ１８２は、照会を最適化して照会の実行で使用されるメモリ圧縮量を調整することができる。こうした最適化は、メモリ圧縮が実行不可である場合、照会を処理するためのメモリ圧縮を実行可能にすることを含むか、または照会の処理で使用される圧縮率を上げることを含むことができる。照会が最適化されると、ＤＢＭＳ１８０は、データベース１８４に対して照会を実行し、照会結果のセットを生成することができる。その後ＤＢＭＳ１８０は、照会結果のセットを、照会の受信元であった要求側エンティティへと戻すことができる。
【００３５】
一実施形態では、照会ガバナ１８２は、照会の処理で消費されるメモリの量がしきい値量またはしきい値量近くとなるように、照会を最適化する。これを実行することによって、照会ガバナ１８２は、照会の処理におけるいかなる不要な遅延も避けながら、照会が許容可能な量のメモリ使用を実行することを保証することができる。すなわち、メモリ圧縮を追加すると、結果としてアクティビティが追加される可能性があるため、高いメモリ圧縮量を使用して実行される照会は、低いメモリ圧縮量を使用するかまたは圧縮を使用せずに実行される照会よりも、長時間かかる可能性がある。したがって、照会の実行がしきい値量またはしきい値量の近似を使用するように照会を最適化することにより、照会ガバナ１８２は、照会処理のいかなる遅延も最小限にしながら、メモリ使用量ポリシーを強化することができる。
【００３６】
一実施形態では、照会ガバナ１８２は、照会の処理で使用可能なメモリしきい値量を決定する場合に、他の要素を考慮することができる。こうした要素は、制限なしに、照会の発信元、照会に関連付けられた優先度値、および照会のクラスを含むことができる。たとえば、優先度値の高いミッション・クリティカルな（mission-critical）リアルタイム・アプリケーションと、優先度値の低いデータベース統計値収集のためのロギング・アプリケーションという、照会をＤＢＭＳ１８０にサブミットする２つのアプリケーションが存在すると想定する。こうした例では、照会ガバナ１８２は、優先度の高いミッション・クリティカル・アプリケーションから受信した照会を処理する際に低いメモリ圧縮を使用し、それに応じてこれらの照会の処理を促進するために、ミッション・クリティカル・アプリケーションから受信した照会が、ロギング・アプリケーションから受信した照会よりも多くのメモリを消費できるようにすることが可能である。すなわち、メモリ圧縮の使用により、照会ガバナ・システム１７０上で追加の処理リソースを消費することができるため、より多くのメモリ圧縮量を使用して処理される照会は、より少ないメモリ圧縮量を使用するかまたは使用しないで処理される照会よりも、処理に長い時間がかかる可能性がある。したがって、より多くのシステム・メモリを使用するために、高優先度アプリケーションから受信した照会の処理を実行可能にすることによって、照会ガバナ１８２はこれらの照会をより迅速に処理することができる。同時に照会ガバナ１８２は、照会の実行時にメモリ圧縮技法を使用することを通じて、たとえ低優先度アプリケーションから受信した照会が許容を超える量のメモリを消費することになる場合であっても、こうした照会の処理を実行可能にする。
【００３７】
図３は、本発明の一実施形態に従った、メモリ圧縮の効果を示すブロック図である。示された例では、メモリ圧縮が実行可能化されていないメモリ１７８１は、メモリ圧縮が実行可能化されたメモリ１７８２と同じ物理データ・ストレージ容量を有することに留意されたい。図に示されるように、メモリ１７８１は、未圧縮メモリ部分２１０１と未使用メモリ部分２４０１とを含む。メモリの未圧縮部分２１０１は、圧縮されていない１つまたは複数のアプリケーションによって使用されるデータを格納することができる。ここで未使用プール２４０１は、現在はいずれのデータも格納されていないメモリ１７８１の未使用データ容量を表す。
【００３８】
これに対してメモリ１７８２は、メモリの未圧縮部分２１０２、圧縮部分２２０２、拡張部分２３０２、および未使用部分２４０２を含む。この例では、メモリ１７８２はメモリ１７８１と同じデータを効果的に含むが、メモリ圧縮を使用する。したがって、示された例では、未圧縮メモリ２１０２は、未圧縮メモリ部分２１０１に関係する。同様に、圧縮メモリ２２０２は、残りの未圧縮メモリ部分２１０１に関係する。すなわち、メモリ圧縮の使用により、組み合わされた場合、未圧縮メモリ２１０１よりもサイズの小さい、未圧縮メモリ２１０２および圧縮メモリ２２０２に、未圧縮メモリ２１０１からのデータ格納することが可能である。
【００３９】
有利なことに本発明の諸実施形態は、メモリ圧縮を使用することによって拡張メモリ・プール２３０２を効果的に作成し、これを使用して圧縮済みまたは未圧縮のいずれの追加のデータも格納することができる。たとえばＤＢＭＳは、拡張メモリ２３０２を使用して、フェッチ中に追加のデータをストレージ・メディア１７４に格納することができる。加えて、こうしたメモリ圧縮は、使用可能なメモリを拡張するだけではなく、拡張メモリ２３０２が他の目的に使用可能であるため、結果としてデータベース・システム上のページングを減らすことも可能である。有利なことに、ページングはしばしば、データの圧縮および圧縮解除よりも大きな遅延につながるため、メモリ圧縮がデータベース・システムの性能を向上させることもできる。さらに、図３はメモリの様々な部分が連続しているように示されているが、実際にはプールに割り振られるメモリ領域は断片化可能である。しかしながら当業者であれば、この例では、不可欠な各部分によって占有されたメモリの量１７８であることを理解されよう。
【００４０】
図４は、本発明の一実施形態に従った、照会のメモリ使用量を管理するための方法を示す流れ図である。図に示されるように、方法３００はステップ３１０で開始され、ここで照会ガバナ１８２は、受信した照会に関する推定メモリ使用量値を計算する。前述のように、推定メモリ使用量値は、一般に、照会の処理で使用されることになるシステム・メモリ（たとえばメモリ１７８）の量を概算する。さらに照会ガバナ１８２は、以前に処理された照会から収集されたメモリ使用量履歴データに基づいて、この値を計算することができる。
【００４１】
推定メモリ使用量値が計算されると、照会ガバナ１８２は、メモリ使用量値がメモリしきい値量を超えるかどうかを判別する（ステップ３２０）。一般にこのしきい値量は、特定の照会の実行がどの程度のメモリ量を消費可能であるかを定義する。こうしたしきい値量は、たとえばデータベース管理者によって設定可能であり、こうした量の値はデータベース環境を反映するものとする。しきい値量が固定値（たとえば１０メガバイトのメモリ）である実施形態では、この値は一般に、データベース・システム内の合計メモリ（たとえば、照会ガバナ・システム１７０におけるメモリ１７８のサイズ）に比例するものとする。他の実施形態では、しきい値量はシステム・メモリのパーセント値（たとえばメモリ１７８のサイズの１０％）とすることができる。しきい値量は、データベース・システムの作業負荷に基づいて定義することもできる。たとえば、固定された期間内にデータベースに対して比較的多数の照会が発行されるシステムでは、いずれかの単一照会によるデータベース・システムのメモリ・リソースの過消費を避けるために、データベース管理者は比較的低いメモリしきい値を設定することができる。第２の例として、同じ固定された期間内にデータベースに対して比較的少数の照会が発行されるシステムでは、データベース管理者は比較的高いメモリしきい値を設定することができる。すなわち、この例では、システム・メモリを消費する照会実行動作がより少ないため、各照会実行動作はシステム・メモリのより大きな部分を使用することができる。
【００４２】
加えて、しきい値量は、照会をサブミットする要求側エンティティの識別などの、１つまたは複数の他の要素に依存して変更することができる。たとえばある特定の環境は、高優先度アプリケーションおよび低優先度アプリケーションという、ＤＢＭＳに照会をサブミットする２つのアプリケーションを含むことができる。こうした環境では、高優先度アプリケーションによってサブミットされた照会に関するメモリしきい値量は、低優先度アプリケーションによってサブミットされた照会に関するメモリしきい値量よりも大きい可能性がある。これを実行することによって、諸実施形態は、高優先度アプリケーションから受信した照会が比較的迅速に処理されること、およびメモリ圧縮の使用により最小限の遅延で処理されることを保証することができる。すなわち、システム・メモリ内の値の圧縮および圧縮解除が追加の処理リソースを消費するため、こうした追加の処理が、結果としてメモリ圧縮を使用して処理される照会に関して処理時間を長くする可能性がある。したがって、高優先度アプリケーションから受信した照会に対してより高いメモリしきい値量を割り振ることによって、諸実施形態は、これらの照会がより迅速に処理されることを保証するために、これらの照会の処理に使用されるメモリ圧縮量を削減することができる。
【００４３】
ＤＢＭＳによって受信された照会は、優先度値に関連付けることもできる。優先度値は、一般に、比較的短い時間内に照会を処理する優先度を示す。一実施形態では、照会自体が、照会に関する優先度値を（たとえば、照会内の特定のＳＱＬタグを使用して）明示的に指定することができる。他の実施形態では、照会ガバナ１８２は、照会の処理でどのデータベース構造がアクセスされるか、および照会のタイプなどの、１つまたは複数の要素に基づいて、特定の照会に関する優先度値を導出することができる。例として、照会がデータベース内の特定のテーブルを参照する場合、照会ガバナ１８２は、照会が比較的高い優先度の照会であるものと決定することができる。
【００４４】
その後、こうした優先度値を使用して、照会の処理で使用されるメモリ圧縮量を調整するかどうかを決定することができる。たとえば、前述の高優先度照会に関して計算された推定メモリ使用量値は、メモリしきい値量を超える場合があるが、それにもかかわらず照会ガバナ１８２は、照会が比較的短い時間で実行することを保証するために、照会がメモリ圧縮なしに実行できるようにすることが可能である。第２の例として、照会ガバナ１８２は、照会の実行で使用されるメモリ圧縮量を調整することができるが、照会の高優先度値により、照会の実行時に依然として少ないメモリ圧縮を使用することができる。これを実行することによって、諸実施形態は、照会の処理におけるいかなる遅延も軽減させながら、依然としてデータベース・システム上のメモリ管理ポリシーを強化することができる。
【００４５】
本発明の一実施形態では、さらに照会ガバナ１８２は、照会に関連付けられた優先度値とメモリしきい値量との間の相対的な優先度を考慮することができる。すなわち、こうした実施形態では、優先度値およびメモリしきい値量に、それぞれの相対的重要度を示す可変重みを割り当てることができる。優先度値がメモリしきい値量よりも重要であるとみなされる一例として、照会ガバナ１８２は、たとえその照会に関する推定メモリ使用量値がしきい値量を大幅に超える場合であっても、メモリ圧縮を使用せずに高優先度照会を実行すべきであるものと決定することができる。優先度値と比較してより高い優先度がメモリしきい値量に与えられる第２の例として、高優先度照会に関する推定メモリ使用量値がメモリしきい値量をわずかな量だけ超える場合、それにもかかわらず照会ガバナ１８２は、しきい値量の方がかなり重要に取り扱われるため、メモリ圧縮を使用して照会を実行すべきであるものと決定することができる。もちろん前述の例は単なる例示であり、当業者であれば、これに代わって任意数の他の要素および要素の組み合わせを使用してしきい値量が決定できることを理解されよう。
【００４６】
推定メモリ使用量値がしきい値量を超えるものと判別されると、照会ガバナ１８２は、受信した照会の処理に関してメモリ圧縮が実行可能であるかどうかを判別する（ステップ３２５）。メモリ圧縮が実行不可であるものと判別されると、照会ガバナ１８２は、照会の処理に関してメモリ圧縮を実行可能にする（ステップ３３０）。メモリ圧縮が実行可能になると、方法３００はステップ３３５〜３４５のループに入り、ここで照会ガバナ１８２は、一般に、メモリしきい値量内で照会が実行できるようになるまで、照会の実行に使用するメモリ圧縮率を調整する。次に照会ガバナは、照会の処理のためにメモリ圧縮を調整する（ステップ３３５）。初めに照会ガバナ１８２は、第１に圧縮率をデフォルトの初期値に設定することができる。しかしながらより一般的には、本明細書で説明される機能と一致する圧縮率を調整するための任意のアルゴリズムを使用することができる。
【００４７】
次に照会ガバナ１８２は、調整された圧縮率を使用して、照会に関する推定メモリ使用量値を計算する（ステップ３４０）。推定メモリ使用量値を計算すると、照会ガバナ１８２は、推定メモリ使用量値がメモリしきい値量を超えるかどうかを判別する（ステップ３４５）。照会ガバナ１８２が、推定メモリ使用量値が依然としてしきい値量を超えると判別した場合、ループはステップ３３５から再度開始され、照会ガバナ１８２は、照会の処理に使用されるメモリ圧縮率を上げる。この代わりに、照会ガバナ１８２が、推定メモリ使用量値がしきい値を超えないと判別した場合、ＤＢＭＳ１８０は、調整されたメモリ圧縮率を使用して照会を実行する（ステップ３５０）。同様に、ステップ３２０で、照会ガバナ１８２が、推定メモリ使用量値がしきい値量を超えないと判別した場合、ＤＢＭＳ１８０は、照会の処理でメモリ圧縮量を調整せずに照会を実行する（ステップ３５０）。ＤＢＭＳ１８０が照会を実行すると、方法３００は終了する。
【００４８】
有利なことに方法３００は、ＤＢＭＳ１８０によって実行される照会が、任意のメモリ使用制限を忠実に守り、データベース・システムのリソースを過消費しないことを保証するために役立つ。言い換えれば方法３００は、個々の照会が他の処理に損害を与えるほど大量のシステム・メモリを消費するのを防ぐ。さらに諸実施形態は、照会をサブミットする要求側エンティティ（たとえば、高優先度ソフトウェア・アプリケーション）の識別などの要素を考慮することによって、ある種の照会の処理が他の照会の処理よりも多くのシステム・リソースを消費できるようにすることができる。これを実行することによって、諸実施形態は、特定の環境に適合し、環境内のアプリケーションまたはユーザ間の任意の異なる処置に対処するように、カスタマイズすることができる。
【００４９】
図５は、本発明の一実施形態に従った、照会のメモリ使用量を管理するための方法を示す流れ図である。図に示されるように、方法４００はステップ４２０で開始され、ここでＤＢＭＳは、データベースに対する特定の照会の実行を開始する。照会実行が開始されると、照会ガバナ１８２は、照会の処理で使用されるメモリ量を決定するために、照会の実行を監視する（ステップ４２５）。次に照会ガバナ１８２は、照会の実行に使用される実際のメモリがメモリしきい値量を超えるかどうかを判別する（ステップ４３０）。照会ガバナ１８２が、実際のメモリ使用量がしきい値量を超えるものと判別した場合、照会ガバナ１８２は、照会の処理に関して現在メモリ圧縮が実行可能であるかどうかを判別する（ステップ４３５）。メモリ圧縮が未だ実行可能でない場合、照会ガバナ１８２はメモリ圧縮を実行可能にする（ステップ４４０）。照会の処理に関してメモリ圧縮が実行可能である場合、照会ガバナ１８２は、照会処理で使用される圧縮率を調整する（ステップ４４５）。一般に、照会ガバナ１８２は、圧縮率を計算された率に設定し、照会の実行で使用される実際のメモリ使用量をメモリしきい値量を下回る値まで削減するはずである。
【００５０】
圧縮率が調整されると、照会ガバナ１８２は、特定の照会が実行を完了したかどうかを判別する（ステップ４５０）。同様に、ステップ４３０で照会ガバナ１８２が、実際のメモリ使用量がしきい値を超えていないものと判別した場合、照会ガバナ１８２は、照会実行が完了したかどうかを判別する（ステップ４５０）。照会がまだ実行を完了していない場合、方法はステップ４２５へ戻り、照会ガバナ１８２は照会の実行の監視を続行する。この代わりに、照会が実行を完了した場合、ＤＢＭＳ１８０は照会の実行によって生じた任意の照会結果を、照会の発信元である要求側エンティティへと戻す（ステップ４５５）。照会結果が戻されると、方法４００は終了する。
【００５１】
図６は、本発明の一実施形態に従った、照会のメモリ使用量を管理するための方法を示す流れ図である。方法５００はステップ５２０で開始され、ここでＤＢＭＳ１８０は、処理のための照会を受信する。照会を受信すると、照会ガバナ１８２は、照会処理で使用されることになる一時ストレージ（たとえばメモリ１７８）の量を推定し（ステップ５２５）、一時ストレージの推定量がメモリしきい値量を超えるかどうかを判別する（ステップ５３０）。照会ガバナ１８２が、一時ストレージの推定量がしきい値量を超えると判別した場合、照会ガバナ１８２は、しきい値量を満たすように照会が最適化可能であるかどうかを判別する（ステップ５３５）。一例として、照会の処理に関してメモリ圧縮がまだ実行可能でない場合、照会ガバナ１８２は、メモリ圧縮を実行可能にすることによってしきい値を満たすように照会を最適化できるものと判別することができる。
【００５２】
照会ガバナ１８２が、しきい値を満たすように照会を最適化できるものと判別した場合、照会ガバナ１８２は、照会の実行に使用されるメモリの量を減らすように照会を最適化する（ステップ５４０）。前述のように、照会最適化は、照会の処理で使用されるメモリ圧縮量を調整することを含むことができる。こうした調整は、メモリ圧縮が初期に実行不可であった場合、メモリ圧縮を実行可能にすることをさらに含み、照会の処理に関連付けられた圧縮率の調整も含むことができる。他の実施形態では、照会ガバナ１８２は、それぞれが照会を実行するように実行可能なデータベースの諸動作の異なるセットを指定する、照会の複数の実行プランを生成することによって、実行のために照会を最適化することが可能である。一般に、少なくとも１つの実行プランは、照会の処理において何らかのメモリ圧縮量を使用することになる。照会ガバナ１８２は、それぞれの実行プランに従って、照会を実行するための推定メモリ使用量値を計算することができる。推定メモリ使用量値が計算されると、照会ガバナ１８２は、計算された推定メモリ使用量値に基づいて、照会の実行に使用するための実行プランのうちの１つを選択することができる。
【００５３】
照会が最適化されると、ＤＢＭＳ１８０は最適化された照会を実行する（ステップ５４５）。複数の実行プランのうちの１つを選択することによって照会が最適化されるイベントでは、ＤＢＭＳ１８０は、選択された実行プランに従って照会を実行する。次に照会ガバナ１８２は、照会の実行に使用される実際のメモリ量がしきい値量を侵害しないことを保証するために、照会の実行を監視することができる（ステップ５５５）。本発明の一実施形態では、こうした監視は図５に示された前述の方法４００に従って実施される。
【００５４】
同様に、メモリ圧縮が実行可能であり、それ以上圧縮率を上げられない場合、照会ガバナ１８２は、メモリしきい値を満たすように照会が最適化できないものと判別することができる。しきい値を満たすように照会が最適化できない場合、照会ガバナ１８２は処理のための照会を拒否する（ステップ５５０）。こうした拒否は、照会の発信元である要求側エンティティに通知を送信することを含むことができる。この通知は、処理のための照会が拒否された旨のインジケーションを含むことが可能であり、照会が拒否された理由の説明をさらに含むことができる。
【００５５】
図面内の流れ図およびブロック図は、本発明の様々な諸実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点において、流れ図またはブロック図内の各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、モジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替実施では、ブロック内に示された諸機能が図内に示された順序以外で実行可能であることも留意されたい。たとえば、連続して示された２つのブロックを、実際にはほぼ同時に実行することが可能であるか、または関連する機能に応じて、時にはこのブロックを逆の順序で実行することができる。ブロック図あるいは流れ図またはその両方の各ブロック、ならびに、ブロック図あるいは流れ図またはその両方のブロックの組み合わせが、指定された機能または動作を実行する特定用途向けのハードウェア・ベース・システム、あるいは特定用途向けハードウェアとコンピュータ命令との組み合わせによって、実施可能であることも留意されよう。
【００５６】
前述の内容は本発明の諸実施形態を対象にしたものであるが、本発明の他の諸実施形態はその基本範囲を逸脱することなく考案可能であり、その範囲は以下の特許請求の範囲によって決定される。
【符号の説明】
【００５７】
１１０    システム
１２０    クライアント・システム
１２２、１７２    コンピュータ・プロセッサ
１２４、１７４    ストレージ
１２６、１７６    入力／出力デバイス
１２８、１７８    メモリ
１３０    クライアント・アプリケーション
１３２、１８５    オペレーティング・システム
１３４、１８６    ネットワーク・インターフェース・カード
１５０    ネットワーク
１７０    照会ガバナ・システム
１７５    データ・ページ
１８０    データベース管理システム
１８２    メモリ使用量照会ガバナ
１８４    データベース
【図１】
0005744707.tif 000002
【図２】
0005744707.tif 000003
【図３】
0005744707.tif 000004
【図４】
0005744707.tif 000005
【図５】
0005744707.tif 000006
【図６】
0005744707.tif 000007