(57)【要約】本明細書に記載される主題の態様は、データベースシステムのためのバッファプールに関する。態様においては、ソリッドステート記憶装置等の二次的メモリを使用して、データベースシステムのバッファプールを拡張する。ページのアクセス履歴に基づきページを分類するためのホット、ウォーム、コールド等の閾値を、サンプリングアルゴリズムを介して判定することができる。データベースシステムがメインメモリ内のバッファプールでスペースをフリーにする必要がある場合、ページの分類の方法および二次的メモリまたは他の記憶装置の状態に基づいて、二次的メモリまたは他の記憶装置内のバッファプールに、ページを退避させることができる。
2013521579.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一部がコンピュータにより実装される方法であって、
データベースバッファプールのページのメタデータにアクセスするステップであって、前記データベースバッファプールが、メインメモリに記憶されるページ、ソリッドステートメモリに記憶されるページ、およびメインメモリとソリッドステートメモリの両方に記憶されるページを潜在的に含む、ステップと、
前記メタデータから、ページがコールドであるかどうかの判定に使用可能なコールド閾値を判定するステップであって、前記ページのメタデータにより表されるアクセスデータに関数を適用して、前記コールド閾値以下の値が返される場合、前記ページはコールドである、ステップと、
前記メタデータから、ページがウォームであるかどうかの判定に使用可能なウォーム閾値を判定するステップであって、前記ページのメタデータにより表される前記アクセスデータに関数を適用して、前記コールド閾値より大きくかつ前記ウォーム閾値以下の値が返される場合、前記ページはウォームである、ステップと、
ページを、１つまたは複数の他のページのために、前記メインメモリまたは前記ソリッドステートメモリからフリースペースに退避させるステップと
を含むことを特徴とする方法。
【請求項２】
前記データベースバッファプールのページのメタデータにアクセスするステップは、データベースバッファプールのランダムに選択されたいくつかのページのメタデータをサンプリングするステップを含み、その数は、データベースバッファプールの全てのページより小さいことを特徴とする請求項１に記載の方法。
【請求項３】
前記データベースバッファプールのページのメタデータにアクセスするステップは、前記ページのメタデータから、サンプリングされたそれぞれのページの１つまたは２つのタイムスタンプを取得するステップを含み、前記１つまたは２つのタイムスタンプは、サンプリングされたページがアクセスされた直近の時間に対応し、前記関数は、前記１つまたは２つのタイムスタンプの少なくとも１つに対して作用して、ページがホット、ウォームまたはコールドであるかどうかを示す値を生成することを特徴とする請求項２に記載の方法。
【請求項４】
前記ページを退避させるステップは、前記ソリッドステートメモリが利用可能なフリースペースを有する場合、かつ、コールドのページのコピーが前記ソリッドステートメモリ内に無い場合、前記コールドのページを前記ソリッドステートメモリにコピーするステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記データベースバッファプールのために使用される前記ソリッドステート記憶装置の量を変更するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ソリッドステート記憶装置のＩ／Ｏ閾値に到達したかどうかを判定するステップと、
到達した場合には、前記メインメモリおよび前記ソリッドステートメモリ以外の記憶装置にページをコピーするステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ページをソリッドステートメモリから退避させるステップは、複数のページを前記メインメモリから前記ソリッドステートメモリに１回の書き込み操作でコピーするステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータ環境におけるシステムであって
移動するように動作可能であり前記記憶デバイスのデータへのアクセスを提供する構成要素を含む１つまたは複数の記憶デバイスのセットと、
揮発性のメインメモリであって、自身のいずれの構成要素の物理的動作も伴わずに、記憶されるデータへのアクセスを提供するように動作可能であるメインメモリと、
不揮発性の二次的メモリであって、自身のいずれの構成要素の物理的動作も伴わずに、記憶されるデータへのアクセスを提供するように動作可能である二次的メモリと、
データベース管理システムに対応する命令を実行するように動作可能な１つまたは複数のプロセッサを備え、
前記データベース管理システムは、前記メインメモリおよび前記二次的メモリ内のバッファプールのページを管理するように動作可能であり、かつ、ページが少なくとも３つの分類に対応するアクセスを有するかどうかの判定に基づき前記ページを退避させるべく動作可能であり、前記ページは、ページへのアクセスがパーセンタイルの第１の範囲にある場合は第１の前記分類に対応するアクセスを有し、ページへのアクセスがパーセンタイルの第２の範囲にある場合は第２の前記分類に対応するアクセスを有し、ページへのアクセスがパーセンタイルの第３の範囲にある場合は第３の前記分類に対応するアクセスを有する
ことを特徴とするシステム。
【請求項９】
前記１つまたは複数の記憶デバイスのセットが１つまたは複数のハードディスクを備え、前記メインメモリがランダムアクセスメモリを備え、前記二次的メモリがソリッドステートメモリを備えることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記データベース管理システムが、バッファプール内のランダムに選択されるページのメタデータをスキャンして前記第１、第２、および第３の範囲を判定するようにさらに動作可能であり、前記メタデータは各ページがアクセスされた直近の時間を示すデータを含むことを特徴とする請求項８に記載のシステム。
【請求項１１】
前記ページを退避させるように動作可能なデータベース管理システムが、パーセンタイルの第２の範囲にあると判定されたページを、前記メインメモリから前記二次的メモリにコピーするように動作可能なデータベース管理システムを含むことを特徴とする請求項８に記載のシステム。
【請求項１２】
前記ページを退避させるように動作可能なデータベース管理システムが、パーセンタイルの第３の範囲にあると判定されて選択されたページを、前記選択されたページを１つまたは複数の記憶デバイスにコピーする前に、前記二次的メモリから前記メインメモリにコピーするように動作可能であるデータベース管理システムを含むことを特徴とする請求項８に記載のシステム。
【請求項１３】
前記パーセンタイルの第１の範囲が０パーセンタイルから５パーセンタイルであり、前記パーセンタイルの第２の範囲が５パーセンタイルから２５パーセンタイルであり、前記パーセンタイルの第３の範囲が２５パーセンタイルから１００パーセンタイルであることを特徴とする請求項８に記載のシステム。
【請求項１４】
コンピュータ実行可能命令を有するコンピュータ記憶媒体であって、実行される時に、
データベースのデータを求める要求を受け取るステップと、
データがメインメモリ以外の記憶装置内にあることを判定するステップと、
前記メインメモリ内のバッファプールがフルであることを判定するステップと、
退避対象の候補のページを、前記候補のページへのアクセスに応じた少なくとも３つの分類のうちの１つに従って前記候補のページを分類する関数に基づいて、前記メインメモリ内のバッファプールから選択するステップと、
前記候補のページをメインメモリから退避させるステップと
を含む動作を実行することを特徴とするコンピュータ記憶媒体。
【請求項１５】
退避対象の候補のページをメインメモリ内のバッファプールから選択するステップは、前記分類のうちの第３の分類にあるページを見つける動作を含み、前記分類のうちの第３の分類は、他の分類のいずれかのページよりもアクセスされる頻度が低いページを表すことを特徴とする請求項１４に記載のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムに関する。
【背景技術】
【０００２】
データベースでは、データベースページの作業用セット（working set）がメインメモリに保持されている時には、良好な性能を発揮する。残念ながら、大きなデータベースの多くがサイズの上で、作業用セットをメインメモリに保持することは実行可能ではない。大きなデータベースでは、これは、ほとんどの場合ディスク等の回転媒体（rotational media）を使用して構築される十分な容量を持つＩ／Ｏサブシステムに、データベースのデータページの大部分が存在するということを意味する。そのようなサブシステムは高価であり、かなりの量の空間を占め、かつかなりの量の電力を消費することになる。これらのサブシステムは、回転媒体の性能がメインメモリおよびプロセッサと同じ速さでは進歩していないため、データベースのボトルネックとなることが多い。
【０００３】
本明細書において特許請求される主題は、任意の問題を解決する実施形態または上述のような環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書において記載されるいくつかの実施形態を実践することができる技術分野の一例を例示するために単に提供される。
【発明の概要】
【０００４】
簡潔には、本明細書に記載される主題の態様は、データベースシステムのためのバッファプールに関する。態様においては、ソリッドステート記憶装置等の二次的メモリを使用して、データベースシステムのバッファプールを拡張する。ページのアクセス履歴に基づきページを分類するためのホット、ウォーム、コールド等の閾値を、サンプリングアルゴリズムを介して判定することができる。データベースシステムがメインメモリ内のバッファプールでスペースをフリーにする必要がある場合、ページを分類する方法および二次的メモリまたは他の記憶装置の状態に基づき、二次的メモリまたは他の記憶装置内のバッファプールに、ページを退避させることができる。
【０００５】
この要約は、以下の詳細な説明でさらに述べる主題のいくつかの態様を簡単に確認するために提供される。この要約は、特許請求の主題の重要な特徴または主要な特徴を確認することを意図しておらず、特許請求の主題の範囲を制限するものとして使用されることも意図していない。
【０００６】
「本明細書に記載される主題」という句は、明白に文脈が別段に示さない限り、詳細な説明において記載される主題を指す。用語「態様」は、「少なくとも１つの態様」と読まれるべきである。詳細な説明に記載される主題の態様を確認することは、特許請求される主題の重要な特徴または主要な特徴を確認することを意図していない。
【０００７】
上述の態様および本明細書に記載される主題の他の態様は例として示され、同様の数字によって同様の要素が示される添付の図面において限定されない。
【図面の簡単な説明】
【０００８】
【図１】本明細書に記載される主題の態様を組み込むことができる例示の汎用コンピュータ環境を表すブロック図である。
【図２】本明細書に記載される主題の態様を実装することができる例示のシステムを概略的に表すブロック図である。
【図３】本明細書に記載される主題の態様に従ってデータベースをホストするシステムの構成要素を例示するブロック図である。
【図４】本明細書に記載される主題の態様に従って、閾値を判定するためにページをスキャンし、必要に応じてページを退避させる際に発生しうる、いくつかの例示の動作を概略的に表すフロー図である。
【図５】ＤＢＭＳがアクセス要求を受け取り、かつバッファプールがフルである場合に発生するようないくつかの例示の動作を概略的に表すフロー図である。
【発明を実施するための形態】
【０００９】
定義
本明細書で使用される時、用語「含む（includes）」およびその変化形は、「を含むがこれに限定されない（includes, but in not limited to）」を意味する制約の無い用語として読まれるものである。用語「または」は、明白に文脈が別段に示さない限り、「および／または」として読まれるものである。用語「に基づき（based on）」は、「少なくとも部分的に基づき（based at least in part on）」として読まれるものである。用語「一実施形態」および「ある実施形態」は、「少なくとも１つの実施形態」として読まれるものである。用語「別の実施形態」は、「少なくとも１つの他の実施形態」として読まれるものである。他の定義は、明示的なものも暗黙的なものも、以下に含まれる。
【００１０】
例示の動作環境
図１は、本明細書に記載される主題の態様を実装することができる適切なコンピュータシステム環境１００の例を例示する。コンピュータシステム環境１００は適切なコンピュータ環境の単なる一例であり、本明細書に記載される主題の態様の使用または機能性の範囲について何ら制限を示唆することは意図されない。また、コンピュータ環境１００は、例示の動作環境１００内に例示される構成要素のうちの任意の１つまたは組み合わせに関するいずれの依存関係も要件も有するものとして解釈されるべきではない。
【００１１】
本明細書に記載される主題の態様は、多数の他の汎用もしくは専用のコンピュータシステム環境または構成で動作可能である。本明細書に記載される主題の態様と共に使用するのに適した周知のコンピュータシステム、環境、または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マイクロプロセッサシステム、マイクロコントローラベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯情報端末（ＰＤＡ）、ゲーム機、プリンタ、セットトップやメディアセンタを含む電化製品または他の電化製品、自動車に埋め込むまたは取り付けるコンピュータ装置、他の自動車用装置、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境、などが含まれる。
【００１２】
本明細書に記載される主題の態様は、プログラムモジュール等のコンピュータにより実行可能なコンピュータ実行可能命令の一般的文脈で記載することができる。一般的に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などが含まれ、これらは特定のタスクを実行または特定の抽象データ型を実装する。本明細書に記載される主題の態様はまた、通信ネットワークを介してリンクされるリモート処理装置によりタスクが実行される分散コンピュータ環境において実践することができる。分散コンピュータ環境において、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体のどちらにも配置することができる。
【００１３】
図１を参照すると、本明細書に記載される主題の態様を実装するための例示のシステムには、コンピュータ１１０の形式で汎用コンピュータ装置が含まれる。コンピュータには、命令を実行することが可能な任意の電子デバイスを含むことができる。コンピュータ１１０の構成要素には、プロセシングユニット１２０、システムメモリ１３０、および、システムメモリを含む種々のシステム構成要素をプロセシングユニット１２０に連結させるシステムバス１２１を含むことができる。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺機器用バス、および、様々なバスアーキテクチャの内のいずれかを使用するローカルバス、を含むいくつかのタイプのバス構造の内のいずれかとすることができる。制限ではなく例として、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）ばす、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、メザニンバスとしても既知のＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、ＰＣＩ−Ｘ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｔｅｎｄｅｄ）バス、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、およびＰＣＩｅ（ＰＣＩ  ｅｘｐｒｅｓｓ）、が含まれる。
【００１４】
コンピュータ１１０には典型的には、様々なコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、コンピュータ１１０によりアクセス可能であり、揮発性および不揮発性の媒体、ならびに、着脱可能および着脱不可能な媒体を含む、任意の利用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含むことができる。
【００１５】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術において実装される、揮発性および不揮発性、着脱可能および着脱不可能な媒体の両方が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ）もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するために使用可能かつコンピュータ１１０によりアクセス可能な任意の他の媒体が含まれる。
【００１６】
通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他の移送機構などの変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。用語「変調データ信号」は、信号内の情報を符号化するような様式で設定または変更された信号の特徴の内の１つまたは複数を有する信号を意味する。制限ではなく例として、通信媒体には、有線ネットワークまたは直接配線の接続などの有線媒体、ならびに、音響、無線周波数、赤外線および他の無線媒体などの無線媒体が含まれる。上記の内のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００１７】
システムメモリ１３０には、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１３１およびＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１３２などの揮発性および／または不揮発性のメモリの形式のコンピュータ記憶媒体が含まれる。基本入出力システム１３３（ＢＩＯＳ）は、起動中などにコンピュータ１１０内の要素間での情報の伝達を支援する基本ルーチンを含み、典型的には、ＲＯＭ１３１に格納される。ＲＡＭ１３２は典型的には、プロセシングユニット１２０が直ちにアクセス可能および／またはプロセシングユニット１２０により現在操作されている、データおよび／またはプログラムモジュールを含む。制限ではなく例として、図１では、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を例示する。
【００１８】
コンピュータ１１０はまた、他の着脱可能／着脱不可能、揮発性／不揮発性コンピュータ記憶媒体を含むことができる。単なる例として、図１は、着脱不可能、不揮発性磁気媒体に対して読み書きするハードディスクドライブ１４１、着脱可能、不揮発性磁気ディスク１５２に対して読み書きする磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭまたは他の光媒体などの着脱可能、不揮発性光ディスク１５６に対して読み書きする光ディスクドライブ１５５を例示する。例示の動作環境において使用可能な他の着脱可能／着脱不可能、揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、他の光ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１４１は典型的には、インターフェース１４０などの着脱不可能メモリインターフェースを介してシステムバス１２１に対して接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は典型的には、インターフェース１５０などの着脱可能メモリインターフェースによりシステムバス１２１に対して接続される。
【００１９】
ドライブおよびその関連するコンピュータ記憶媒体は、上記で検討され図１に例示されたが、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０のための他のデータの記憶装置を提供する。図１において、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７を記憶するものとして例示される。なお、これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７、と同じでも良く異なっていても良い。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７には、本明細書においては異なる番号が与えられて、少なくともそれらが異なるものであることを例示する。
【００２０】
ユーザは、キーボード１６２、および、一般的にはマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス１６１などの入力装置を介してコマンドおよび情報をコンピュータ１１０に入力する。他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、タッチスクリーン、ライティングタブレット、などを含むことができる。これらおよび他の入力装置は、システムバスに連結されるユーザ入力インターフェース１６０を介してプロセシングユニット１２０に対して接続されることが多いが、パラレルポート、ゲームポートまたはＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）などの他のインターフェースおよびバス構造により接続されても良い。
【００２１】
モニタ１９１または他のタイプのディスプレイ装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に対して接続される。モニタに加えて、コンピュータは、スピーカ１９７およびプリンタ１９６などの他の周辺出力装置を含むこともでき、これらは、出力周辺インターフェース１９５を介して接続することができる。
【００２２】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータに対する論理接続を使用して、ネットワーク環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置または他の一般的なネットワークノードとすることができ、また、典型的には、コンピュータ１１０に関して上述した要素の多くまたは全てを含むが、図１にはメモリ記憶装置１８１のみが例示されている。図１に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークを含むこともできる。そのようなネットワーク環境は、事務所、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的なものである。
【００２３】
ＬＡＮネットワーク環境において使用される場合、コンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に対して接続される。ＷＡＮネットワーク環境において使用される場合、コンピュータ１１０には、モデム１７２、またはインターネット等のＷＡＮ１７３上で通信を確立するための他の手段を含むことができる。モデム１７２は、内蔵でも外付けも良く、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に対して接続することができる。ネットワーク環境において、コンピュータ１１０に関して示されるプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶させることができる。制限ではなく例として、図１では、メモリ装置１８１上に常駐するものとしてリモートアプリケーションプログラム１８５が例示される。図示されるネットワーク通信は例であり、コンピュータ間の通信リンクを確立するための他の手段を使用することができることは理解されるであろう。
【００２４】
データベースバッファプール
上述のように、Ｉ／Ｏサブシステムはデータベースのボトルネックになることが多い。図２は、本明細書に記載される主題の態様を実装することができる例示のシステムを概略的に表すブロック図である。システム２００には、１つまたは複数のプロセッサ２０２、データベース管理システム（ＤＢＭＳ）２０５、回転媒体（rotational media）２１０、２１１を含むことができ、また、他の構成要素を含んでも良い。ＤＢＭＳ２０５はバッファプール２１５内のページを管理することができる。バッファプール２１５を、メインメモリ２２０およびソリッドステート記憶装置２２５（以下では、ＳＳＳ２２５と称することもある）内に保持することができる。
【００２５】
システム２００は、コンピュータ１１０などの１つまたは複数のコンピュータを使用して実装することができ、また、１つまたは複数のデーベースを実装することができる。システムのプロセッサ２０２は、図１のプロセシングユニット１２０に対応し、同じコンピュータ上に備えても良く、または、複数のコンピュータに分散させても良い。プロセッサ２０２は、ＤＢＭＳ２０５に対応する命令を実行してデータベースを提供する。
【００２６】
データベースには、リレーショナルデータベース、オブジェクト指向データベース、階層型データベース、ネットワークデータベース、他のタイプのデータベース、上記の組み合わせまたは拡張、などを含むことができる。データベースに記憶されるデータは、テーブル、レコード、オブジェクト、他のデータ構造などの形式で組織化することができる。データベースに記憶されるデータは、専用データベースファイル、専用ハードドライブパーティション、ＨＴＭＬファイル、ＸＭＬファイル、スプレーッドシート、フラットファイル、文書ファイル、構成ファイル、他のファイルなどに記憶させることができる。
【００２７】
データベース内のデータには、ＤＢＭＳ２０５などのＤＢＭＳを介してアクセスすることができる。ＤＢＭＳ２０５は、データベースのデータの組織、記憶、管理および検索を管理する１つまたは複数のプログラムを含むことができる。ＤＢＭＳ２０５は、要求を受け取りデータベース内のデータにアクセスすることができ、また、このアクセスに必要とされる動作を実行することができる。本明細書で使用される時、アクセスには、データの読み込み、データの書き込み、データの削除、データのアップデート、これらの内の２つ以上の組み合わせなどが含まれる。
【００２８】
本明細書に記載される主題の態様の説明において、便宜上、リレーショナルデータベースに関連する専門用語を本明細書においては使用することがある。リレーショナルデータベースの専門用語を本明細書において使用することがあるが、本明細書の技術は上述したものを含む他のタイプのデータベースにも適用することができる。
【００２９】
ＤＢＭＳ２０５は、メインメモリおよび二次的メモリのバッファプール内のページを管理するべく、かつ、ページが少なくとも３つの分類に対応するアクセスを有するかどうかの判定に基づきページを退避させるべく、動作可能である。これについては以下でより詳細に説明されるが、簡略的には、ページへのアクセスがパーセンタイルの第１の範囲内にある場合、そのページが第１の分類（例えば「ホット」）にあると考えられる。ページがパーセンタイルの第２の範囲内にアクセスを有する場合、そのページが第２の分類（例えば「ウォーム」）にあると考えられる。ページがパーセンタイルの第３の範囲内にアクセスを有する場合、そのページが第３の分類（例えば「コールド」）にあると考えられる。ページの分類を使用して、メインメモリ２２０および／またはＳＳＳ２２５からページを退避させることができる。
【００３０】
効率、性能、または他の理由のため、データベースは、テーブル、インデックス、または他のデータベースデータに対応するデータを回転媒体２１０などの記憶装置の１つのセット上に、また、ログに対応するデータを回転媒体２１１などの記憶装置の別のセット上に、配置することができる。あるデータベースでは、記憶装置の１つのセットのみを使用してテーブルとログを記憶することができる。
【００３１】
バッファプール２１５には、より早いメモリ（回転媒体２１０、２１１に関する）内にある１つまたは複数のデータベースの一部が含まれる。１つまたは複数のデータベースの一部はページと呼ばれることがある。バッファプール２１５のメモリ（例えばメインメモリ２２０）のいくつかを揮発性とすることができる。すなわち、メモリへの電源が切られると、メモリに記憶されているどのデータも失われる。メインメモリ２２０は、ＲＡＭ、キャッシュ、プロセッサメモリ、または他の揮発性高速メモリとして実装することができる。バッファプール２１５の他のメモリ（例えばＳＳＳ２２５）を不揮発性とすることができる。すなわち、不揮発性メモリへの電源が切られると、メモリに記憶されているどのデータも保持される。
【００３２】
バッファプール２１５に割り当てられるＳＳＳ（または他のメモリ）の量は動的に変化させることができる。すなわち、バッファプール２１５に割り当てられるＳＳＳ（または他のメモリ）のバイト数の増加、減少、またはゼロへの設定を、自動的、半自動的、または手動で、ＤＢＭＳ２０５の実行の前、最中または後に行うことができる。
【００３３】
ＤＢＭＳ２０５は、バッファプール２１５に記憶されるデータベースのページに関するメタデータを保持することができる。各ページに対して、このメタデータには、例えば、ページ上のデータがアクセスされた最も新しい１つまたは２つの時間を記憶するための２つのタイプスタンプ、ページが修正されたかどうかを示すダーティフラグ、ページのコピーがＳＳＳ２２５に記憶されているかどうかを示すフラグ、ページがアクセスされた回数を示すカウンタ、より最近のアクセスに対してはより重みが付けられた、ページへのアクセスの頻度を示す重み値、ページに関する他の情報、などを含むことができる。このメタデータは、バッファプール２１５（例えばページとして）内に、または何らかの他の場所に記憶させることができる。
【００３４】
操作において、ＤＢＭＳ２０５が、データにアクセスする要求を受け取ると、ＤＢＭＳ２０５はまず、データがバッファプール２１５内にあるかどうかを判定することができる。バッファプール２１５内にデータが無い場合、ＤＢＭＳは、回転媒体２１０からメインメモリ２２０にデータを読み込むためのスペースがメインメモリ２２０内にあるかどうかを判定することができる。メインメモリ２２０内にスペースが無い場合、ＤＢＭＳは、回転媒体２１０からページを読み込むためのスペースを作るために、メインメモリ２２０から退避させることができるページを判定する。
【００３５】
上記のステップは、ある程度順次的に説明されたが、他の実装においては、これらのステップは異なる順番でまたは並行して行われても良い。例えば、一実施形態において、ＤＢＭＳ２０５は、メインメモリ２２０内のフリースペースのある部分を維持することを試みることができる。このために、周期的に、またはメインメモリ２２０内のフリースペースが閾値以下に減少しているとＤＢＭＳ２０５が判定した時に、ＤＢＭＳ２０５は、メインメモリ２２０をスキャンして、どのページをメインメモリ２２０から退避させてスペースを解放するかを判定することができる。このようにして、ＤＢＭＳ２０５は、回転媒体２１０との間でページを読み書きする用途で使用するための、メインメモリ２２０内にあるスペースを確保することができる。
【００３６】
一実施形態において、メモリプレッシャがあると（例えば、バッファプール内のフリースペースが事前に定義、計算、選択された閾値または他の閾値を下回り、処理がより多くのメモリを要求する、または何らかの他のメモリプレッシャ条件がそろった場合）、ＤＢＭＳ２０５は、スキャンアルゴリズムを実行することができる。スキャンアルゴリズムは、ページを異なるカテゴリに分類するために使用することができる閾値を判定することができる。例えば、一実施形態において、スキャンアルゴリズムは閾値を判定して、ページをページに関するメタデータに基づきホット、ウォーム、コールドのカテゴリに分類することができる。
【００３７】
一実施形態において、スキャンアルゴリズムは、選択された数の無作為のページのメタデータのサンプリングを行うことにより閾値を判定することができる。サンプリングから、少なくとも２つの閾値を判定することができる。これらの閾値は、ページへのアクセスの頻度に関するパーセンタイルに対応し得る。２つの閾値の内の最低位の値よりも低いアクセス特性を有するページはコールドであると考えられる。最低位と上位の閾値の間のアクセス特性を有するページはウォームであると考えられる。上位の閾値よりも高いアクセス特性を有するページはホットであると考えられる。
【００３８】
用語「ホット」「ウォーム」「コールド」は、本明細書に記載される主題の態様に制限を課すことを意味しない。これらの用語の発想は、ページへのアクセスがパーセンタイル内に含まれるということである。パーセンタイルの高位の範囲に含まれるページはホットであると言うことができる。パーセンタイルの低位と含まれるページはウォームであると言うことができる。パーセンタイルの低位の範囲に含まれるページはコールドであると言うことができる。他の単語、番号、識別子、データ構造、などを、本明細書に記載される主題の態様の主旨または範囲から逸脱することなく、単語ホット、ウォーム、コールドの代わりに使用することができる。さらに、３つの名称が指定されているだけであるが、他の実施形態においては、３つより多くの名称を指定することができる。
【００３９】
ページの分類に使用することができる基準の一例は、ページへのアクセスの頻度である。ページの分類に使用することができる別の基準の例は、ページへのアクセスの履歴である。例えば、アクセス履歴には、ページがアクセスされた最後の１回または２回の時間を含むことができる。最後のアクセス時間のみを使用してページを分類する場合は、この基準はＬＲＵ（ｌａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）アルゴリズムと呼ばれることがある。最後のアクセスの１回前のアクセス時間を使用してページを分類する場合、この基準はＬＲＵ−２アルゴリズムと呼ばれることがある。上記の例では、全てを包括または網羅することは意図されない。実際、本明細書の教示に基づき、当業者はページの分類に使用することができる多くの他の基準を認識するであろう。
【００４０】
一実施形態において、上記の閾値を判定するためのサンプリングをメインメモリ２２０内のページに対して行うことができ、一方、低位の閾値を判定するためのサンプリングをメインメモリ２２０およびＳＳＳ２２５内のページに対して行うことができる。
【００４１】
これらの閾値が判定された後、ＤＢＭＳ２０５がページを退避させてメインメモリ２２０にもっと多くのスペースを確保する必要がある時、ＤＢＭＳ２０５は、様々な順序、例えば、順次、ラウンドロビン方式、ランダム、ＬＲＵ方式、局所性に基づく方式、別の順序などのいずれかでバッファプール内のページをスキャンすることができる。ページがコールド閾値より上でウォーム閾値より下にあり、ＳＳＳ２２５内に利用可能なスペースがある場合、ＤＢＭＳ２０５は、ページをＳＳＳ２２５にコピーすること、または、（例えば、メインメモリ２２０からＳＳＳ２２５にコピーされるページのキューなどのデータ構造内のページにポインタを置くことにより）実行可能になり次第、ページがＳＳＳ２２５にコピーされることを示すこと、ができる。ページがＳＳＳ２２５にコピーされた後、メインメモリ２２０内でフリーにされたメモリを使用して別のページを記憶することができる。
【００４２】
ウォームおよびコールドであるページに使用できる十分なスペースがＳＳＳ２２５に無い場合、コールドであるページを、フラッシュするかキューに置くかしてディスクにフラッシュする（ダーティである場合）、または、利用可能であるとしてマークする（クリーンな場合）ことができる。ディスクにフラッシュするページは、メインメモリ２２０からのものでもＳＳＳ２２５からのものでも良い。この場合、一実施形態において、コールドのページをＳＳＳ２２５からフラッシュすることよりもコールドのページをメインメモリ２２０からフラッシュすることに優先度が与えられてもよい。例えば、１つまたは複数のデータ構造（例えば、１つまたは複数のキュー）を、コールドのページをメインメモリ２２０およびＳＳＳ２２５からフラッシュするために維持することができる。メインメモリ２２０からのコールドのページをディスクにフラッシュした後、ＳＳＤ２２５からのコールドのページをディスクにフラッシュすることができる。別の実施形態において、メインメモリ２２０からのコールドのページのフラッシュを、ＳＳＳ２２５からのコールドのページのフラッシュとインターリーブすることができる。ハードウェアサブシステムが適切な設備を提供する場合、コールドのページをメインメモリ２２０からディスクにフラッシュすること、およびコールドのページをＳＳＳ２２５からディスクにフラッシュすることを、並行して行うことができる。
【００４３】
適切なハードウェアが利用可能な場合（例えば、ダイレクトメモリアクセス（ＤＭＡ）ハードウェアなど）、ＳＳＳ２２５からディスクへのページのフラッシュは、ページをＳＳＳ２２５からメインメモリ２２０に読み込まずに実行することができる。そのようなハードウェアをＳＳＳ２２５に利用できない場合、ＳＳＳ２２５からディスクへのページのフラッシュは、ページをメインメモリ２２０に読み込み、そのページをメインメモリ２２０からディスクにコピーすることにより行うことができる。
【００４４】
ＤＢＭＳ２０５が、メインメモリ２２０ではなくＳＳＳ２２５にあるページにアクセスする必要がある場合、そのページをＳＳＳ２２５からメインメモリ２２０にコピーすることができる。
【００４５】
バッファのページがＳＳＳ２２５に書き込まれると、可能であれば、複数の書き込みを単一の書き込みに組み合わせても良い。これにより、Ｉ／Ｏスループットを増加させること、また、ＳＳＳ２２５の寿命期待値を増加させることができる。
【００４６】
ＳＳＳ２２５のＩ／Ｏ閾値に到達すると、新しいＩ／Ｏはディスクに向けられうる。Ｉ／Ｏ閾値に到達するのは、ＳＳＳ２２５へのアクセスが、ＳＳＳ２２５の読み／書きの帯域幅または何らかの他の定義済みの帯域幅に達する時である。Ｉ／Ｏ閾値に到達したかどうかは、例えば、Ｉ／Ｏ応答時間、Ｉ／Ｏの回数、または何らかの他の要因によって判定することができる。例えば、アクセスの特定のパターンまたは頻度で、ＳＳＳ２２５からＲＡＭ２２０にデータを転送するＩ／Ｏは、ＳＳＳ２２５が利用可能な帯域幅を超えることがある。この場合、ＳＳＳ２２５がより多くのＩ／Ｏに利用可能になるまで、後に続くＩ／Ｏを回転媒体２１０に送信することができる。
【００４７】
図３は、本明細書に記載される主題の態様に従ってデータベースをホストするシステムの構成要素を例示するブロック図である。構成要素３００には、メタデータ３０５、メインメモリバッファページ３１０、ＳＳＳバッファページ３１５、および他の記憶装置３２０が含まれる。メタデータ３０５には、上述したようなページに関するデータが含まれる。メタデータ３０５は、メインメモリ、キャッシュ、または、何らかの他の高速メモリに記憶させることができる。メタデータ３０５は、ページがメインメモリおよび／またはＳＳＳに記憶されることを示す場合がある。
【００４８】
メインメモリバッファページ３１０は、ＲＡＭまたは他の揮発性メモリなどのメインメモリ内に記憶させることができる。そのようなメモリには、機械的動作を伴わずにアクセスすることができる。換言すれば、そのようなメモリでは、主要部の任意の構成要素の物理的動作を伴わずに、データへのアクセスを提供することができる。そのようなメモリは、機械的なタイプの記憶装置より高速であることが多い。
【００４９】
メインメモリバッファページ３１０には、どの程度のスペースが利用可能であるかによって、ホットページ、ウォームページ、およびコールドページを含むことができる。例えば、メインメモリバッファページ３１０には、他の記憶装置３２０から最近検索された、いくつかのコールドページを含むことができる。いくつかのメインメモリバッファページ３１０のコピーを、ＳＳＳバッファページ３１５内に記憶させることができる。メインメモリバッファページ３１０内のいくつかのページが、ＳＳＳバッファ３１５にコピーされないこともある。さらに、ＳＳＳバッファページ３１５は、メインメモリバッファページ３１０内には無いページを含んでも良い。
【００５０】
ＳＳＳバッファページ３１５を、二次的メモリに記憶させることができる。性能向上を図るために、この二次的メモリは記憶装置３２０よりも性能が高くても良い（例えば、より速い応答時間、より広い帯域幅など）。何らかのメモリ（ソリッドステート記憶装置など）は、機械的動作を伴わずにアクセスすることができ、また不揮発性であっても良い。このメモリは記憶装置３２０よりも性能が高くても良いが、メインメモリよりも遅くても良い。
【００５１】
他の記憶装置３２０は、ハードディスク、テープ、他の不揮発性記憶装置などの不揮発性記憶装置を含むことができる。この他の記憶装置３２０は、移動するように（例えば、プラッタ上を前後に、回転、またはその他）動作可能であり、記憶装置３２０の記憶デバイス上のメモリへのアクセスを提供する構成要素（例えば、アーム、プラッタ、または他の媒体など）を含むことができる。安価な実装では、記憶装置３２０は、システム３００のメインメモリおよびＳＳＳよりもスループットが低くても良い。しかしながら、いくつかのシステムにおいては、共同して機能する多くの記憶デバイス（例えば、ディスク）を使用すると、記憶装置３２０のスループットがＳＳＳのスループットに届くかまたはそれを超えることもあるが、応答時間は比較的大きくなりうる。
【００５２】
メタデータ３０５は、メインメモリバッファページ３１０およびＳＳＳバッファページ３１５内のページに関する情報を記憶する。そのような情報には、図２に関連して上述したメタデータを含むことができる。
【００５３】
図２から図３に例示される構成要素は例であり、必要とされ得るまたは含まれ得る構成要素の全てを包含することを意味しない。他の実施形態において、図２から図３に関連して記載される構成要素および／または機能は、本明細書に記載される主題の態様の主旨または範囲から逸脱することなく、他の構成要素（図示されるもの、または図示されないもの）に含まれて良く、またはサブ構成要素内に配置されて良い。いくつかの実施形態において、図２から図３に関連して記載される構成要素および／または機能は、複数の装置に亘って分散させることができる。
【００５４】
図４から図５は、本明細書に記載される主題の態様に従って発生し得る動作を概略的に表すフロー図である。説明を簡略化するために、図４から図５に関連して記載される方法論は、一連の動作として示され記載される。本明細書に記載される主題の態様が、例示される動作によりおよび／または動作の順番により制限されないことは理解されかつ認められるべきである。一実施形態において、動作は以下に記載される順序で発生する。しかし、他の実施形態において、動作は並行して、別の順序でおよび／または本明細書に提示も記載もされない他の動作と共に発生することもある。さらに、本明細書に記載される主題の態様に従って方法論を実装するために、例示される全ての動作が要求されるわけではない。加えて、当業者であれば、方法論を、代替えとして状態図を介して相互に関連する一連の状態として、または一連の事象として、表すことができることを理解し分かるであろう。
【００５５】
図４は、本明細書に記載される主題の態様に従って、閾値を判定するためにページをスキャンし、必要に応じてページを退避させる際に発生しうる、いくつかの例示の動作を概略的に表すフロー図である。
【００５６】
ブロック４１０にて、ページをスキャンして閾値を判定する要求が受け取られる。例えば、図４を参照すると、メモリプレッシャに応じて、ＤＢＭＳ２０５は、ページをスキャンする要求をバッファプール構成要素に送信することができる。
【００５７】
ブロック４１５にて、ページのメタデータがアクセスされる。例えば、図３を参照すると、メタデータ３０５がアクセスされる。メタデータの全てにアクセスする代わりに、データベースのバッファプールのランダムに選択されたいくつかのページの、そのメタデータをサンプリングすることができる。一実施形態において、ページのメタデータのサンプリングには、ページのメタデータから、サンプリングされたそれぞれのページの１つまたは２つのタイムスタンプを取得することが含まれ、該１つまたは２つのタイムスタンプはサンプリングされたページがアクセスされた最後の時間に対応する。このメタデータを、ページへのアクセスに対応する値を生成する関数（例えば、分類関数）に与えることができる。サンプリングのメタデータに対するその関数によって生成された値を使用して、閾値を選択することができる。例えば、関数により値を取得した後、値について定義済みの異なるパーセンタイルに対応する閾値が選択される。パーセンタイルの範囲（例えば、０から５、５から２５、２５から１００）をホット、ウォーム、コールドに対応させることができる。
【００５８】
ブロック４２０にて、コールド閾値をメタデータから判定することができる。例えば、コールド閾値は、０から２５の間のパーセンタイルの範囲内のサンプリングされたページのアクセスの頻度に対応させることができる。コールド閾値が判定されると、上記の関数をページのメタデータにより表されるアクセスデータに適用して、コールド閾値以下の値が返される場合、ページはコールドであると判定することができる。
【００５９】
ブロック４２５にて、ウォーム閾値をメタデータから判定することができる。例えば、ウォーム閾値は、２５０から７５の間のパーセンタイルの範囲内のサンプリングされたページのアクセスの頻度に対応させることができる。ウォーム閾値が判定されると、上記の関数をページのメタデータにより表されるアクセスデータに適用して、コールド閾値より大きくかつウォーム閾値以下の値が返される場合、ページはウォームであると判定することができる。
【００６０】
ブロック４３０にて、ページを退避させる要求が受け取られる。例えば、図２を参照すると、ＤＢＭＳ２０５の退避構成要素は、１つまたは複数の他のページのために、バッファプール２１５からフリースペースにページを退避させる要求を受け取ることができる。
【００６１】
ブロック４３５にて、バッファプール２１５のページは、退避を考慮して選択することができる。例えば、図３を参照すると、メインメモリバッファページ３１０の内の１つを、退避を考慮して選択することができる。選択は、退避に適したページを見つけるためのページを巡回するために使用されるアルゴリズム、キューまたは他のデータ構造などを使用して行われる。
【００６２】
ブロック４４０にて、ページが分類される。これは、値を得るために上述の関数をページのメタデータに適用することにより行われうる。次に、この値は上述した閾値と比較され、ページが、ホット、ウォーム、またはコールドであるかどうかが判定することができる。
【００６３】
ブロック４４５にて、適切である場合は、ページが退避される。例えば、ページがコールドであると判定される場合、ページはディスクから退避されても良い。ページがウォームである場合、ＳＳＳスループットのための閾値に達していなければ、ページをＳＳＳにコピーすることができ、ＳＳＳスループットのための閾値に達している場合、ページはディスクから退避されて良い。ページがホットである場合、ページは退避せずにメインメモリ内に残すことができる。
【００６４】
ブロック４５０にて、他の動作があれば、それを実行させることができる。
【００６５】
図５は、本明細書に記載される主題の態様に従って、ＤＢＭＳがアクセス要求を受け取り、かつバッファプールがフルである場合に発生するようないくつかの例示の動作を概略的に表すフロー図である。ブロック５０５にて、動作が開始される。
【００６６】
ブロック５１０にて、データベースのデータにアクセスする要求が受け取られる。例えば、図２を参照すると、ＤＢＭＳ２０５はデータベース内のデータにアクセスする要求を受け取ることができる。
【００６７】
ブロック５１５にて、ＤＢＭＳは、データがメインメモリの外に存在すると判定する。例えば、図２を参照すると、ＤＢＭＳ２０５は、要求されたデータがＳＳＳ２２５または回転媒体２１０に存在すると判定することができる。
【００６８】
ブロック５２０にて、ＤＢＭＳは、メインメモリ内のバッファプールがフルであると判定する。例えば、図２を参照すると、ＤＢＭＳ２０５は、メインメモリ２２０がページでフルになっており、ページを退避させてデータのためのスペースを作る必要がある、と判定する。
【００６９】
ブロック５２５にて、退避のためのページが選択される。退避用のページを選択することは、ページへのアクセスの頻度による少なくとも３つの分類（例えば、ホット、ウォームおよびコールド）に従って、ページを分類する関数（例えば、上述の分類関数）を使用することを含んでも良い。例えば、図２を参照すると、ＤＢＭＳ２０５は、メインメモリ２２０内の退避用のページを判定することができる。
【００７０】
ブロック５３０にて、ページが退避させられる。例えば、図２を参照すると、ＤＢＭＳ２０５は、選択されたページをＳＳＳ２２５または回転媒体２１０に退避させることができる。ページをＳＳＳ２２５に退避させることは、ページをＳＳＳ２２５にコピーすることを含んでも良い。これにより、ページはバッファプール２１５に保持され、バッファプールのメインメモリ２２０には無くなる。このようにして、ＳＳＳ２２５はバッファプールを拡張させることができる（メインメモリ２２０から退避させられたページ用の別個のキャッシュとして動作するだけではない）。
【００７１】
ブロック５３５にて、他の動作があれば、それを実行させることができる。
【００７２】
上記の検討では、ソリッドステート記憶装置を使用してバッファプールを拡張することに言及したが、他の実施形態において、ソリッドステート記憶装置以外の記憶装置を使用してバッファプールを拡張することができる。他の記憶装置は、現在存在するものまたは開発中のものでも良い。本明細書に記載される主題の態様に従うと、他の記憶装置は、回転式の記憶装置よりも高いがメインメモリよりも低い、スループット、帯域幅、または何らかの他の特徴を有して良い。
【００７３】
前述の詳細な説明から分かるように、データシステムのためのバッファプールに関する態様が記載された。本明細書に記載される主題の態様が種々の修正および代替の構造の影響を受けやすい一方、特定の例示される実施形態が、図面において示され、上記で詳細に説明された。しかしながら、特許請求される主題の態様を開示される特定の形式に制限することは意図されず、逆に、本発明が本明細書に記載される主題の種々の態様の主旨および範囲内にある全ての修正、代替の構造および等価物に及ぶ、ことを理解されたい。
【図１】
2013521579.tif 000003
【図２】
2013521579.tif 000004
【図３】
2013521579.tif 000005
【図４】
2013521579.tif 000006
【図５】
2013521579.tif 000007
【国際調査報告】
2013521579.tif 000008
2013521579.tif 000009