(58)【調査した分野】(Int.Cl.,DB名)
第1のメモリ、前記第1のメモリよりも低速である第2のメモリ、および前記第2のメモリよりも低速である第3のメモリを含んだコンピュータによって少なくとも部分的に実装される方法であって、
バッファプールの複数のページに関するメタデータにアクセスするステップであって、前記バッファプールは、前記第1のメモリに記憶される1つまたは複数のページ、および前記第2のメモリに記憶される1つまたは複数のページを含む、ステップと、
前記メタデータから第1の閾値と第2の閾値を判定するステップであって、前記第1の閾値と前記第2の閾値は、前記ページを少なくとも3つの分類のうちの1つに分類するのに使用可能であり、
(i)前記ページの前記メタデータによって表されるデータにアクセスする関数を適用して、前記第1の閾値より小さい値が返される場合、ページは第1の分類に分類され、
(ii)前記ページの前記メタデータによって表される前記データにアクセスする前記関数を適用して、前記第1の閾値より大きいが前記第2の閾値より小さい値が返される場合、前記ページは第2の分類に分類され、
(iii)前記ページの前記メタデータによって表される前記データにアクセスする前記関数を適用して、前記第2の閾値より大きい値が返される場合、前記ページは第3の分類に分類される、
ステップと、
前記第1および第2の閾値に基づいて、
特定のページが前記第1の分類に分類される場合、前記特定のページを前記第2のメモリから前記第3のメモリへ退避させて、前記第2のメモリの1つまたは複数の他のページのためにスペースを解放するステップと、
前記特定のページが前記第2の分類に分類される場合、前記特定のページを前記第1のメモリから前記第2のメモリへ退避させて、前記第1のメモリの1つまたは複数の他のページのためにスペースを解放するステップと、
前記特定のページが前記第3の分類に分類される場合、前記特定のページを前記第1のメモリに残すステップと、
を含むことを特徴とする方法。
前記バッファプールの前記複数のページに関する前記メタデータにアクセスするステップは、前記バッファプールのランダムに選択されたいくつかのページのメタデータをサンプリングするステップを含み、その数は、前記バッファプールの全てのページより小さいことを特徴とする請求項1に記載の方法。
前記バッファプールの前記複数のページに関する前記メタデータにアクセスするステップは、前記メタデータから、サンプリングされたそれぞれのページの1つまたは2つのタイムスタンプを取得するステップを含み、前記1つまたは2つのタイムスタンプは、前記サンプリングされたページがアクセスされた直近の時間に対応し、前記関数は、少なくとも前記1つまたは2つのタイムスタンプに対して作用して、前記ページが前記第1の分類、前記第2の分類、または前記第3の分類であるかどうかを示す値を生成することを特徴とする請求項2に記載の方法。
前記第1の閾値を判定するステップは、ランダムに選択されたページの予め定められたパーセンタイルがコールドであるような値を判定するステップを含むことを特徴とする請求項1に記載の方法。
前記第2の閾値を判定するステップは、前記バッファプールのランダムに選択されたいくつかのページのメタデータをサンプリングするステップを含み、前記ランダムに選択されたページは前記第1のメモリ内に存在することを特徴とする請求項1に記載の方法。
前記第2の閾値を判定するステップは、前記ランダムに選択されたページの予め定められたパーセンタイルがウォームであるような値を判定するステップを含むことを特徴とする請求項5に記載の方法。
前記特定のページを前記第1のメモリから前記第2のメモリへ退避させるステップは、(i)前記第2のメモリが利用可能なフリースペースを有する場合、および(ii)前記特定のページのコピーが前記第2のメモリ内に無い場合、にのみ、前記特定のページを前記第2のメモリにコピーするステップを含むことを特徴とする請求項1に記載の方法。
前記特定のページを前記第1のメモリから前記第2のメモリへ退避させるステップは、複数のページを前記第1のメモリから前記第2のメモリへ1回の書き込み操作でコピーするステップを含むことを特徴とする請求項1に記載の方法。
前記第3のメモリが1つまたは複数のハードディスクを備え、前記第1のメモリがランダムアクセスメモリを備え、前記第2のメモリがソリッドステートメモリを備えることを特徴とする請求項11に記載のシステム。
前記第1の分類はアクセス頻度の低いページに適用され、前記第3の分類はアクセス頻度の高いページに適用され、前記第2の分類は前記第1の分類に分類されたページよりもアクセス頻度が高いが前記第3の分類に分類されたページよりもアクセス頻度が低いページに適用されることを特徴とする請求項1に記載の方法。
前記第1の分類は最も古くアクセスされたページに適用され、前記第3の分類は最も新しくアクセスされたページに適用され、前記第2の分類は前記第1の分類に分類されたページよりも新しくアクセスされたが前記第3の分類に分類されたページよりも古くアクセスされたページに適用されることを特徴とする請求項1に記載の方法。
【発明を実施するための形態】
【0009】
定義
本明細書で使用される時、用語「含む(includes)」およびその変化形は、「を含むがこれに限定されない(includes, but in not limited to)」を意味する制約の無い用語として読まれるものである。用語「または」は、明白に文脈が別段に示さない限り、「および/または」として読まれるものである。用語「に基づき(based on)」は、「少なくとも部分的に基づき(based at least in part on)」として読まれるものである。用語「一実施形態」および「ある実施形態」は、「少なくとも1つの実施形態」として読まれるものである。用語「別の実施形態」は、「少なくとも1つの他の実施形態」として読まれるものである。他の定義は、明示的なものも暗黙的なものも、以下に含まれる。
【0010】
例示の動作環境
図1は、本明細書に記載される主題の態様を実装することができる適切なコンピュータシステム環境100の例を例示する。コンピュータシステム環境100は適切なコンピュータ環境の単なる一例であり、本明細書に記載される主題の態様の使用または機能性の範囲について何ら制限を示唆することは意図されない。また、コンピュータ環境100は、例示の動作環境100内に例示される構成要素のうちの任意の1つまたは組み合わせに関するいずれの依存関係も要件も有するものとして解釈されるべきではない。
【0011】
本明細書に記載される主題の態様は、多数の他の汎用もしくは専用のコンピュータシステム環境または構成で動作可能である。本明細書に記載される主題の態様と共に使用するのに適した周知のコンピュータシステム、環境、または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マイクロプロセッサシステム、マイクロコントローラベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯情報端末(PDA)、ゲーム機、プリンタ、セットトップやメディアセンタを含む電化製品または他の電化製品、自動車に埋め込むまたは取り付けるコンピュータ装置、他の自動車用装置、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境、などが含まれる。
【0012】
本明細書に記載される主題の態様は、プログラムモジュール等のコンピュータにより実行可能なコンピュータ実行可能命令の一般的文脈で記載することができる。一般的に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などが含まれ、これらは特定のタスクを実行または特定の抽象データ型を実装する。本明細書に記載される主題の態様はまた、通信ネットワークを介してリンクされるリモート処理装置によりタスクが実行される分散コンピュータ環境において実践することができる。分散コンピュータ環境において、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体のどちらにも配置することができる。
【0013】
図1を参照すると、本明細書に記載される主題の態様を実装するための例示のシステムには、コンピュータ110の形式で汎用コンピュータ装置が含まれる。コンピュータには、命令を実行することが可能な任意の電子デバイスを含むことができる。コンピュータ110の構成要素には、プロセシングユニット120、システムメモリ130、および、システムメモリを含む種々のシステム構成要素をプロセシングユニット120に連結させるシステムバス121を含むことができる。システムバス121は、メモリバスまたはメモリコントローラ、周辺機器用バス、および、様々なバスアーキテクチャの内のいずれかを使用するローカルバス、を含むいくつかのタイプのバス構造の内のいずれかとすることができる。制限ではなく例として、そのようなアーキテクチャには、ISA(Industry Standard Architecture)ばす、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、メザニンバスとしても既知のPCI(Peripheral Component Interconnect)バス、PCI−X(Peripheral Component Interconnect Extended)バス、AGP(Advanced Graphics Port)、およびPCIe(PCI express)、が含まれる。
【0014】
コンピュータ110には典型的には、様々なコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、コンピュータ110によりアクセス可能であり、揮発性および不揮発性の媒体、ならびに、着脱可能および着脱不可能な媒体を含む、任意の利用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含むことができる。
【0015】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術において実装される、揮発性および不揮発性、着脱可能および着脱不可能な媒体の両方が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、DVD(digital versatile disc)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するために使用可能かつコンピュータ110によりアクセス可能な任意の他の媒体が含まれる。
【0016】
通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他の移送機構などの変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。用語「変調データ信号」は、信号内の情報を符号化するような様式で設定または変更された信号の特徴の内の1つまたは複数を有する信号を意味する。制限ではなく例として、通信媒体には、有線ネットワークまたは直接配線の接続などの有線媒体、ならびに、音響、無線周波数、赤外線および他の無線媒体などの無線媒体が含まれる。上記の内のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0017】
システムメモリ130には、ROM(read only memory)131およびRAM(random access memory)132などの揮発性および/または不揮発性のメモリの形式のコンピュータ記憶媒体が含まれる。基本入出力システム133(BIOS)は、起動中などにコンピュータ110内の要素間での情報の伝達を支援する基本ルーチンを含み、典型的には、ROM131に格納される。RAM132は典型的には、プロセシングユニット120が直ちにアクセス可能および/またはプロセシングユニット120により現在操作されている、データおよび/またはプログラムモジュールを含む。制限ではなく例として、
図1では、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136およびプログラムデータ137を例示する。
【0018】
コンピュータ110はまた、他の着脱可能/着脱不可能、揮発性/不揮発性コンピュータ記憶媒体を含むことができる。単なる例として、
図1は、着脱不可能、不揮発性磁気媒体に対して読み書きするハードディスクドライブ141、着脱可能、不揮発性磁気ディスク152に対して読み書きする磁気ディスクドライブ151、および、CD−ROMまたは他の光媒体などの着脱可能、不揮発性光ディスク156に対して読み書きする光ディスクドライブ155を例示する。例示の動作環境において使用可能な他の着脱可能/着脱不可能、揮発性/不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、DVD、他の光ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ141は典型的には、インターフェース140などの着脱不可能メモリインターフェースを介してシステムバス121に対して接続され、磁気ディスクドライブ151および光ディスクドライブ155は典型的には、インターフェース150などの着脱可能メモリインターフェースによりシステムバス121に対して接続される。
【0019】
ドライブおよびその関連するコンピュータ記憶媒体は、上記で検討され
図1に例示されたが、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110のための他のデータの記憶装置を提供する。
図1において、例えば、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147を記憶するものとして例示される。なお、これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136およびプログラムデータ137、と同じでも良く異なっていても良い。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147には、本明細書においては異なる番号が与えられて、少なくともそれらが異なるものであることを例示する。
【0020】
ユーザは、キーボード162、および、一般的にはマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161などの入力装置を介してコマンドおよび情報をコンピュータ110に入力する。他の入力装置(図示せず)には、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、タッチスクリーン、ライティングタブレット、などを含むことができる。これらおよび他の入力装置は、システムバスに連結されるユーザ入力インターフェース160を介してプロセシングユニット120に対して接続されることが多いが、パラレルポート、ゲームポートまたはUSB(universal serial bus)などの他のインターフェースおよびバス構造により接続されても良い。
【0021】
モニタ191または他のタイプのディスプレイ装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に対して接続される。モニタに加えて、コンピュータは、スピーカ197およびプリンタ196などの他の周辺出力装置を含むこともでき、これらは、出力周辺インターフェース195を介して接続することができる。
【0022】
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータに対する論理接続を使用して、ネットワーク環境において動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置または他の一般的なネットワークノードとすることができ、また、典型的には、コンピュータ110に関して上述した要素の多くまたは全てを含むが、
図1にはメモリ記憶装置181のみが例示されている。
図1に示す論理接続には、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173が含まれるが、他のネットワークを含むこともできる。そのようなネットワーク環境は、事務所、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的なものである。
【0023】
LANネットワーク環境において使用される場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN171に対して接続される。WANネットワーク環境において使用される場合、コンピュータ110には、モデム172、またはインターネット等のWAN173上で通信を確立するための他の手段を含むことができる。モデム172は、内蔵でも外付けも良く、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に対して接続することができる。ネットワーク環境において、コンピュータ110に関して示されるプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶させることができる。制限ではなく例として、
図1では、メモリ装置181上に常駐するものとしてリモートアプリケーションプログラム185が例示される。図示されるネットワーク通信は例であり、コンピュータ間の通信リンクを確立するための他の手段を使用することができることは理解されるであろう。
【0024】
データベースバッファプール
上述のように、I/Oサブシステムはデータベースのボトルネックになることが多い。
図2は、本明細書に記載される主題の態様を実装することができる例示のシステムを概略的に表すブロック図である。システム200には、1つまたは複数のプロセッサ202、データベース管理システム(DBMS)205、回転媒体(rotational media)210、211を含むことができ、また、他の構成要素を含んでも良い。DBMS205はバッファプール215内のページを管理することができる。バッファプール215を、メインメモリ220およびソリッドステート記憶装置225(以下では、SSS225と称することもある)内に保持することができる。
【0025】
システム200は、コンピュータ110などの1つまたは複数のコンピュータを使用して実装することができ、また、1つまたは複数のデーベースを実装することができる。システムのプロセッサ202は、
図1のプロセシングユニット120に対応し、同じコンピュータ上に備えても良く、または、複数のコンピュータに分散させても良い。プロセッサ202は、DBMS205に対応する命令を実行してデータベースを提供する。
【0026】
データベースには、リレーショナルデータベース、オブジェクト指向データベース、階層型データベース、ネットワークデータベース、他のタイプのデータベース、上記の組み合わせまたは拡張、などを含むことができる。データベースに記憶されるデータは、テーブル、レコード、オブジェクト、他のデータ構造などの形式で組織化することができる。データベースに記憶されるデータは、専用データベースファイル、専用ハードドライブパーティション、HTMLファイル、XMLファイル、スプレーッドシート、フラットファイル、文書ファイル、構成ファイル、他のファイルなどに記憶させることができる。
【0027】
データベース内のデータには、DBMS205などのDBMSを介してアクセスすることができる。DBMS205は、データベースのデータの組織、記憶、管理および検索を管理する1つまたは複数のプログラムを含むことができる。DBMS205は、要求を受け取りデータベース内のデータにアクセスすることができ、また、このアクセスに必要とされる動作を実行することができる。本明細書で使用される時、アクセスには、データの読み込み、データの書き込み、データの削除、データのアップデート、これらの内の2つ以上の組み合わせなどが含まれる。
【0028】
本明細書に記載される主題の態様の説明において、便宜上、リレーショナルデータベースに関連する専門用語を本明細書においては使用することがある。リレーショナルデータベースの専門用語を本明細書において使用することがあるが、本明細書の技術は上述したものを含む他のタイプのデータベースにも適用することができる。
【0029】
DBMS205は、メインメモリおよび二次的メモリのバッファプール内のページを管理するべく、かつ、ページが少なくとも3つの分類に対応するアクセスを有するかどうかの判定に基づきページを退避させるべく、動作可能である。これについては以下でより詳細に説明されるが、簡略的には、ページへのアクセスがパーセンタイルの第1の範囲内にある場合、そのページが第1の分類(例えば「ホット」)にあると考えられる。ページがパーセンタイルの第2の範囲内にアクセスを有する場合、そのページが第2の分類(例えば「ウォーム」)にあると考えられる。ページがパーセンタイルの第3の範囲内にアクセスを有する場合、そのページが第3の分類(例えば「コールド」)にあると考えられる。ページの分類を使用して、メインメモリ220および/またはSSS225からページを退避させることができる。
【0030】
効率、性能、または他の理由のため、データベースは、テーブル、インデックス、または他のデータベースデータに対応するデータを回転媒体210などの記憶装置の1つのセット上に、また、ログに対応するデータを回転媒体211などの記憶装置の別のセット上に、配置することができる。あるデータベースでは、記憶装置の1つのセットのみを使用してテーブルとログを記憶することができる。
【0031】
バッファプール215には、より早いメモリ(回転媒体210、211に関する)内にある1つまたは複数のデータベースの一部が含まれる。1つまたは複数のデータベースの一部はページと呼ばれることがある。バッファプール215のメモリ(例えばメインメモリ220)のいくつかを揮発性とすることができる。すなわち、メモリへの電源が切られると、メモリに記憶されているどのデータも失われる。メインメモリ220は、RAM、キャッシュ、プロセッサメモリ、または他の揮発性高速メモリとして実装することができる。バッファプール215の他のメモリ(例えばSSS225)を不揮発性とすることができる。すなわち、不揮発性メモリへの電源が切られると、メモリに記憶されているどのデータも保持される。
【0032】
バッファプール215に割り当てられるSSS(または他のメモリ)の量は動的に変化させることができる。すなわち、バッファプール215に割り当てられるSSS(または他のメモリ)のバイト数の増加、減少、またはゼロへの設定を、自動的、半自動的、または手動で、DBMS205の実行の前、最中または後に行うことができる。
【0033】
DBMS205は、バッファプール215に記憶されるデータベースのページに関するメタデータを保持することができる。各ページに対して、このメタデータには、例えば、ページ上のデータがアクセスされた最も新しい1つまたは2つの時間を記憶するための2つのタイプスタンプ、ページが修正されたかどうかを示すダーティフラグ、ページのコピーがSSS225に記憶されているかどうかを示すフラグ、ページがアクセスされた回数を示すカウンタ、より最近のアクセスに対してはより重みが付けられた、ページへのアクセスの頻度を示す重み値、ページに関する他の情報、などを含むことができる。このメタデータは、バッファプール215(例えばページとして)内に、または何らかの他の場所に記憶させることができる。
【0034】
操作において、DBMS205が、データにアクセスする要求を受け取ると、DBMS205はまず、データがバッファプール215内にあるかどうかを判定することができる。バッファプール215内にデータが無い場合、DBMSは、回転媒体210からメインメモリ220にデータを読み込むためのスペースがメインメモリ220内にあるかどうかを判定することができる。メインメモリ220内にスペースが無い場合、DBMSは、回転媒体210からページを読み込むためのスペースを作るために、メインメモリ220から退避させることができるページを判定する。
【0035】
上記のステップは、ある程度順次的に説明されたが、他の実装においては、これらのステップは異なる順番でまたは並行して行われても良い。例えば、一実施形態において、DBMS205は、メインメモリ220内のフリースペースのある部分を維持することを試みることができる。このために、周期的に、またはメインメモリ220内のフリースペースが閾値以下に減少しているとDBMS205が判定した時に、DBMS205は、メインメモリ220をスキャンして、どのページをメインメモリ220から退避させてスペースを解放するかを判定することができる。このようにして、DBMS205は、回転媒体210との間でページを読み書きする用途で使用するための、メインメモリ220内にあるスペースを確保することができる。
【0036】
一実施形態において、メモリプレッシャがあると(例えば、バッファプール内のフリースペースが事前に定義、計算、選択された閾値または他の閾値を下回り、処理がより多くのメモリを要求する、または何らかの他のメモリプレッシャ条件がそろった場合)、DBMS205は、スキャンアルゴリズムを実行することができる。スキャンアルゴリズムは、ページを異なるカテゴリに分類するために使用することができる閾値を判定することができる。例えば、一実施形態において、スキャンアルゴリズムは閾値を判定して、ページをページに関するメタデータに基づきホット、ウォーム、コールドのカテゴリに分類することができる。
【0037】
一実施形態において、スキャンアルゴリズムは、選択された数の無作為のページのメタデータのサンプリングを行うことにより閾値を判定することができる。サンプリングから、少なくとも2つの閾値を判定することができる。これらの閾値は、ページへのアクセスの頻度に関するパーセンタイルに対応し得る。2つの閾値の内の最低位の値よりも低いアクセス特性を有するページはコールドであると考えられる。最低位と上位の閾値の間のアクセス特性を有するページはウォームであると考えられる。上位の閾値よりも高いアクセス特性を有するページはホットであると考えられる。
【0038】
用語「ホット」「ウォーム」「コールド」は、本明細書に記載される主題の態様に制限を課すことを意味しない。これらの用語の発想は、ページへのアクセスがパーセンタイル内に含まれるということである。パーセンタイルの高位の範囲に含まれるページはホットであると言うことができる。パーセンタイルの低位と含まれるページはウォームであると言うことができる。パーセンタイルの低位の範囲に含まれるページはコールドであると言うことができる。他の単語、番号、識別子、データ構造、などを、本明細書に記載される主題の態様の主旨または範囲から逸脱することなく、単語ホット、ウォーム、コールドの代わりに使用することができる。さらに、3つの名称が指定されているだけであるが、他の実施形態においては、3つより多くの名称を指定することができる。
【0039】
ページの分類に使用することができる基準の一例は、ページへのアクセスの頻度である。ページの分類に使用することができる別の基準の例は、ページへのアクセスの履歴である。例えば、アクセス履歴には、ページがアクセスされた最後の1回または2回の時間を含むことができる。最後のアクセス時間のみを使用してページを分類する場合は、この基準はLRU(last recently used)アルゴリズムと呼ばれることがある。最後のアクセスの1回前のアクセス時間を使用してページを分類する場合、この基準はLRU−2アルゴリズムと呼ばれることがある。上記の例では、全てを包括または網羅することは意図されない。実際、本明細書の教示に基づき、当業者はページの分類に使用することができる多くの他の基準を認識するであろう。
【0040】
一実施形態において、上記の閾値を判定するためのサンプリングをメインメモリ220内のページに対して行うことができ、一方、低位の閾値を判定するためのサンプリングをメインメモリ220およびSSS225内のページに対して行うことができる。
【0041】
これらの閾値が判定された後、DBMS205がページを退避させてメインメモリ220にもっと多くのスペースを確保する必要がある時、DBMS205は、様々な順序、例えば、順次、ラウンドロビン方式、ランダム、LRU方式、局所性に基づく方式、別の順序などのいずれかでバッファプール内のページをスキャンすることができる。ページがコールド閾値より上でウォーム閾値より下にあり、SSS225内に利用可能なスペースがある場合、DBMS205は、ページをSSS225にコピーすること、または、(例えば、メインメモリ220からSSS225にコピーされるページのキューなどのデータ構造内のページにポインタを置くことにより)実行可能になり次第、ページがSSS225にコピーされることを示すこと、ができる。ページがSSS225にコピーされた後、メインメモリ220内でフリーにされたメモリを使用して別のページを記憶することができる。
【0042】
ウォームおよびコールドであるページに使用できる十分なスペースがSSS225に無い場合、コールドであるページを、フラッシュするかキューに置くかしてディスクにフラッシュする(ダーティである場合)、または、利用可能であるとしてマークする(クリーンな場合)ことができる。ディスクにフラッシュするページは、メインメモリ220からのものでもSSS225からのものでも良い。この場合、一実施形態において、コールドのページをSSS225からフラッシュすることよりもコールドのページをメインメモリ220からフラッシュすることに優先度が与えられてもよい。例えば、1つまたは複数のデータ構造(例えば、1つまたは複数のキュー)を、コールドのページをメインメモリ220およびSSS225からフラッシュするために維持することができる。メインメモリ220からのコールドのページをディスクにフラッシュした後、SSD225からのコールドのページをディスクにフラッシュすることができる。別の実施形態において、メインメモリ220からのコールドのページのフラッシュを、SSS225からのコールドのページのフラッシュとインターリーブすることができる。ハードウェアサブシステムが適切な設備を提供する場合、コールドのページをメインメモリ220からディスクにフラッシュすること、およびコールドのページをSSS225からディスクにフラッシュすることを、並行して行うことができる。
【0043】
適切なハードウェアが利用可能な場合(例えば、ダイレクトメモリアクセス(DMA)ハードウェアなど)、SSS225からディスクへのページのフラッシュは、ページをSSS225からメインメモリ220に読み込まずに実行することができる。そのようなハードウェアをSSS225に利用できない場合、SSS225からディスクへのページのフラッシュは、ページをメインメモリ220に読み込み、そのページをメインメモリ220からディスクにコピーすることにより行うことができる。
【0044】
DBMS205が、メインメモリ220ではなくSSS225にあるページにアクセスする必要がある場合、そのページをSSS225からメインメモリ220にコピーすることができる。
【0045】
バッファのページがSSS225に書き込まれると、可能であれば、複数の書き込みを単一の書き込みに組み合わせても良い。これにより、I/Oスループットを増加させること、また、SSS225の寿命期待値を増加させることができる。
【0046】
SSS225のI/O閾値に到達すると、新しいI/Oはディスクに向けられうる。I/O閾値に到達するのは、SSS225へのアクセスが、SSS225の読み/書きの帯域幅または何らかの他の定義済みの帯域幅に達する時である。I/O閾値に到達したかどうかは、例えば、I/O応答時間、I/Oの回数、または何らかの他の要因によって判定することができる。例えば、アクセスの特定のパターンまたは頻度で、SSS225からRAM220にデータを転送するI/Oは、SSS225が利用可能な帯域幅を超えることがある。この場合、SSS225がより多くのI/Oに利用可能になるまで、後に続くI/Oを回転媒体210に送信することができる。
【0047】
図3は、本明細書に記載される主題の態様に従ってデータベースをホストするシステムの構成要素を例示するブロック図である。構成要素300には、メタデータ305、メインメモリバッファページ310、SSSバッファページ315、および他の記憶装置320が含まれる。メタデータ305には、上述したようなページに関するデータが含まれる。メタデータ305は、メインメモリ、キャッシュ、または、何らかの他の高速メモリに記憶させることができる。メタデータ305は、ページがメインメモリおよび/またはSSSに記憶されることを示す場合がある。
【0048】
メインメモリバッファページ310は、RAMまたは他の揮発性メモリなどのメインメモリ内に記憶させることができる。そのようなメモリには、機械的動作を伴わずにアクセスすることができる。換言すれば、そのようなメモリでは、主要部の任意の構成要素の物理的動作を伴わずに、データへのアクセスを提供することができる。そのようなメモリは、機械的なタイプの記憶装置より高速であることが多い。
【0049】
メインメモリバッファページ310には、どの程度のスペースが利用可能であるかによって、ホットページ、ウォームページ、およびコールドページを含むことができる。例えば、メインメモリバッファページ310には、他の記憶装置320から最近検索された、いくつかのコールドページを含むことができる。いくつかのメインメモリバッファページ310のコピーを、SSSバッファページ315内に記憶させることができる。メインメモリバッファページ310内のいくつかのページが、SSSバッファ315にコピーされないこともある。さらに、SSSバッファページ315は、メインメモリバッファページ310内には無いページを含んでも良い。
【0050】
SSSバッファページ315を、二次的メモリに記憶させることができる。性能向上を図るために、この二次的メモリは記憶装置320よりも性能が高くても良い(例えば、より速い応答時間、より広い帯域幅など)。何らかのメモリ(ソリッドステート記憶装置など)は、機械的動作を伴わずにアクセスすることができ、また不揮発性であっても良い。このメモリは記憶装置320よりも性能が高くても良いが、メインメモリよりも遅くても良い。
【0051】
他の記憶装置320は、ハードディスク、テープ、他の不揮発性記憶装置などの不揮発性記憶装置を含むことができる。この他の記憶装置320は、移動するように(例えば、プラッタ上を前後に、回転、またはその他)動作可能であり、記憶装置320の記憶デバイス上のメモリへのアクセスを提供する構成要素(例えば、アーム、プラッタ、または他の媒体など)を含むことができる。安価な実装では、記憶装置320は、システム300のメインメモリおよびSSSよりもスループットが低くても良い。しかしながら、いくつかのシステムにおいては、共同して機能する多くの記憶デバイス(例えば、ディスク)を使用すると、記憶装置320のスループットがSSSのスループットに届くかまたはそれを超えることもあるが、応答時間は比較的大きくなりうる。
【0052】
メタデータ305は、メインメモリバッファページ310およびSSSバッファページ315内のページに関する情報を記憶する。そのような情報には、
図2に関連して上述したメタデータを含むことができる。
【0053】
図2から
図3に例示される構成要素は例であり、必要とされ得るまたは含まれ得る構成要素の全てを包含することを意味しない。他の実施形態において、
図2から
図3に関連して記載される構成要素および/または機能は、本明細書に記載される主題の態様の主旨または範囲から逸脱することなく、他の構成要素(図示されるもの、または図示されないもの)に含まれて良く、またはサブ構成要素内に配置されて良い。いくつかの実施形態において、
図2から
図3に関連して記載される構成要素および/または機能は、複数の装置に亘って分散させることができる。
【0054】
図4から
図5は、本明細書に記載される主題の態様に従って発生し得る動作を概略的に表すフロー図である。説明を簡略化するために、
図4から
図5に関連して記載される方法論は、一連の動作として示され記載される。本明細書に記載される主題の態様が、例示される動作によりおよび/または動作の順番により制限されないことは理解されかつ認められるべきである。一実施形態において、動作は以下に記載される順序で発生する。しかし、他の実施形態において、動作は並行して、別の順序でおよび/または本明細書に提示も記載もされない他の動作と共に発生することもある。さらに、本明細書に記載される主題の態様に従って方法論を実装するために、例示される全ての動作が要求されるわけではない。加えて、当業者であれば、方法論を、代替えとして状態図を介して相互に関連する一連の状態として、または一連の事象として、表すことができることを理解し分かるであろう。
【0055】
図4は、本明細書に記載される主題の態様に従って、閾値を判定するためにページをスキャンし、必要に応じてページを退避させる際に発生しうる、いくつかの例示の動作を概略的に表すフロー図である。
【0056】
ブロック410にて、ページをスキャンして閾値を判定する要求が受け取られる。例えば、
図4を参照すると、メモリプレッシャに応じて、DBMS205は、ページをスキャンする要求をバッファプール構成要素に送信することができる。
【0057】
ブロック415にて、ページのメタデータがアクセスされる。例えば、
図3を参照すると、メタデータ305がアクセスされる。メタデータの全てにアクセスする代わりに、データベースのバッファプールのランダムに選択されたいくつかのページの、そのメタデータをサンプリングすることができる。一実施形態において、ページのメタデータのサンプリングには、ページのメタデータから、サンプリングされたそれぞれのページの1つまたは2つのタイムスタンプを取得することが含まれ、該1つまたは2つのタイムスタンプはサンプリングされたページがアクセスされた最後の時間に対応する。このメタデータを、ページへのアクセスに対応する値を生成する関数(例えば、分類関数)に与えることができる。サンプリングのメタデータに対するその関数によって生成された値を使用して、閾値を選択することができる。例えば、関数により値を取得した後、値について定義済みの異なるパーセンタイルに対応する閾値が選択される。パーセンタイルの範囲(例えば、0から5、5から25、25から100)をホット、ウォーム、コールドに対応させることができる。
【0058】
ブロック420にて、コールド閾値をメタデータから判定することができる。例えば、コールド閾値は、0から25の間のパーセンタイルの範囲内のサンプリングされたページのアクセスの頻度に対応させることができる。コールド閾値が判定されると、上記の関数をページのメタデータにより表されるアクセスデータに適用して、コールド閾値以下の値が返される場合、ページはコールドであると判定することができる。
【0059】
ブロック425にて、ウォーム閾値をメタデータから判定することができる。例えば、ウォーム閾値は、250から75の間のパーセンタイルの範囲内のサンプリングされたページのアクセスの頻度に対応させることができる。ウォーム閾値が判定されると、上記の関数をページのメタデータにより表されるアクセスデータに適用して、コールド閾値より大きくかつウォーム閾値以下の値が返される場合、ページはウォームであると判定することができる。
【0060】
ブロック430にて、ページを退避させる要求が受け取られる。例えば、
図2を参照すると、DBMS205の退避構成要素は、1つまたは複数の他のページのために、バッファプール215からフリースペースにページを退避させる要求を受け取ることができる。
【0061】
ブロック435にて、バッファプール215のページは、退避を考慮して選択することができる。例えば、
図3を参照すると、メインメモリバッファページ310の内の1つを、退避を考慮して選択することができる。選択は、退避に適したページを見つけるためのページを巡回するために使用されるアルゴリズム、キューまたは他のデータ構造などを使用して行われる。
【0062】
ブロック440にて、ページが分類される。これは、値を得るために上述の関数をページのメタデータに適用することにより行われうる。次に、この値は上述した閾値と比較され、ページが、ホット、ウォーム、またはコールドであるかどうかが判定することができる。
【0063】
ブロック445にて、適切である場合は、ページが退避される。例えば、ページがコールドであると判定される場合、ページはディスクから退避されても良い。ページがウォームである場合、SSSスループットのための閾値に達していなければ、ページをSSSにコピーすることができ、SSSスループットのための閾値に達している場合、ページはディスクから退避されて良い。ページがホットである場合、ページは退避せずにメインメモリ内に残すことができる。
【0064】
ブロック450にて、他の動作があれば、それを実行させることができる。
【0065】
図5は、本明細書に記載される主題の態様に従って、DBMSがアクセス要求を受け取り、かつバッファプールがフルである場合に発生するようないくつかの例示の動作を概略的に表すフロー図である。ブロック505にて、動作が開始される。
【0066】
ブロック510にて、データベースのデータにアクセスする要求が受け取られる。例えば、
図2を参照すると、DBMS205はデータベース内のデータにアクセスする要求を受け取ることができる。
【0067】
ブロック515にて、DBMSは、データがメインメモリの外に存在すると判定する。例えば、
図2を参照すると、DBMS205は、要求されたデータがSSS225または回転媒体210に存在すると判定することができる。
【0068】
ブロック520にて、DBMSは、メインメモリ内のバッファプールがフルであると判定する。例えば、
図2を参照すると、DBMS205は、メインメモリ220がページでフルになっており、ページを退避させてデータのためのスペースを作る必要がある、と判定する。
【0069】
ブロック525にて、退避のためのページが選択される。退避用のページを選択することは、ページへのアクセスの頻度による少なくとも3つの分類(例えば、ホット、ウォームおよびコールド)に従って、ページを分類する関数(例えば、上述の分類関数)を使用することを含んでも良い。例えば、
図2を参照すると、DBMS205は、メインメモリ220内の退避用のページを判定することができる。
【0070】
ブロック530にて、ページが退避させられる。例えば、
図2を参照すると、DBMS205は、選択されたページをSSS225または回転媒体210に退避させることができる。ページをSSS225に退避させることは、ページをSSS225にコピーすることを含んでも良い。これにより、ページはバッファプール215に保持され、バッファプールのメインメモリ220には無くなる。このようにして、SSS225はバッファプールを拡張させることができる(メインメモリ220から退避させられたページ用の別個のキャッシュとして動作するだけではない)。
【0071】
ブロック535にて、他の動作があれば、それを実行させることができる。
【0072】
上記の検討では、ソリッドステート記憶装置を使用してバッファプールを拡張することに言及したが、他の実施形態において、ソリッドステート記憶装置以外の記憶装置を使用してバッファプールを拡張することができる。他の記憶装置は、現在存在するものまたは開発中のものでも良い。本明細書に記載される主題の態様に従うと、他の記憶装置は、回転式の記憶装置よりも高いがメインメモリよりも低い、スループット、帯域幅、または何らかの他の特徴を有して良い。
【0073】
前述の詳細な説明から分かるように、データシステムのためのバッファプールに関する態様が記載された。本明細書に記載される主題の態様が種々の修正および代替の構造の影響を受けやすい一方、特定の例示される実施形態が、図面において示され、上記で詳細に説明された。しかしながら、特許請求される主題の態様を開示される特定の形式に制限することは意図されず、逆に、本発明が本明細書に記載される主題の種々の態様の主旨および範囲内にある全ての修正、代替の構造および等価物に及ぶ、ことを理解されたい。