本明細書において一般的に説明され、図面に図示される本実施形態の諸コンポーネントは、様々な異なる構成に配置されてよく、設計されてよいことが容易に理解されるであろう。故に、図面に示される本実施形態の装置、システム、方法およびコンピュータプログラム製品の実施形態に関する以下の詳細な説明は、特許請求される実施形態の範囲を限定する意図はなく、単に選択された実施形態を表わすものに過ぎない。
本明細書を通して、「選択された実施形態(a select embodiment)」、「少なくとも1つの実施形態(at least one embodiment)」、「一実施形態(one embodiment)」、「別の実施形態(another embodiment)」、「他の実施形態(other embodiments)」または「一実施形態(an embodiment)」という言及および同様の文言は、少なくとも1つの実施形態に含まれる実施形態に関し説明される特定の特徴、構造または特性を意味する。故に本明細書中の様々な箇所における「選択された実施形態(a select embodiment)」、「少なくとも1つの実施形態(at least one embodiment)」、「一実施形態において(in one embodiment)」、「別の実施形態(another embodiment)」、「他の実施形態(other embodiments)」または「一実施形態(an embodiment)」という文言が現れても、必ずしも同一の実施形態を指していない。
例示された実施形態は、図面を参照することで最もよく理解される。添付図面を通して、同様の部材は、同様の参照番号で示される。以下の説明は、例示の意図に過ぎず、ここで特許請求される実施形態と整合するデバイス、システムおよびプロセスの具体的な選択された実施形態を示すに過ぎない。
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実装は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本開示の実施形態は、現在未知である、またはより後になって開発されるあらゆる他のタイプのコンピューティング環境と連携して実装可能である。
クラウドコンピューティングは、最小限の管理取り組みまたはサービスプロバイダとのやり取りで、迅速にプロビジョニングおよびリリース可能な構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの便利なオンデマンドネットワークアクセスを可能にするサービス供給のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデルおよび少なくとも4つの展開モデルを含んでよい。
特性は、以下の通りである。
オンデマンドセルフサービス:クラウドコンシューマは必要に応じてサーバ時刻およびネットワークストレージ等のコンピューティング機能を自動で一方的にプロビジョニングでき、サービスプロバイダとの人間のやり取りは必要とされない。
広範なネットワークアクセス:諸機能は、ネットワーク経由で利用可能であり、異種のシン(thin)クライアントプラットフォームまたはシック(thick)クライアントプラットフォーム(例えば、モバイルフォン、ラップトップおよびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースはプールされて、要求により動的に割り当ておよび再割り当てされる異なる物理的および仮想的リソースを持つマルチテナントモデルを用いて、複数のコンシューマにサービス提供する。コンシューマは一般に、提供されるリソースの正確な場所を制御できず、またはそれを認識しない一方で、より高レベルの抽象度(例えば、国、州またはデータセンタ)において場所を指定できるという意味において場所の独立性という意味が存在する。
迅速な弾力性:諸機能は迅速且つ弾力的にプロビジョニング可能であり、いくつかの場合においては自動的に行われて、迅速なスケールアウト、迅速なリリースおよび迅速なスケールインまでされる。コンシューマに対しては、プロビジョニングのための利用可能な諸機能はしばしば無限に見え、任意の時点で任意の量購入可能できる。
測定されたサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅およびアクティブユーザアカウント)に適切な特定レベルの抽象化における計測機能を利用することで、自動的にリソース利用を制御および最適化する。リソース利用率のモニタリング、制御および報告が可能であり、利用されるサービスのプロバイダおよびコンシューマの両方に対し透明性を提供する。
サービスモデルについては、以下の通りである。
サービスとしてのソフトウェア(Software as a Service:SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)等のシンクライアントインタフェースを通して様々なクライアントデバイスからアクセス可能である。考えられる例外として限定されたユーザ特有のアプリケーション構成設定を除き、コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージまたは個々のアプリケーション機能まで含めた基礎となるクラウドインフラストラクチャを管理または制御することはない。
サービスとしてのプラットフォーム(Platform as a Service(PaaS)):コンシューマに提供される能力は、クラウドインフラストラクチャ上に、プロバイダによりサポートされるプログラミング言語およびツールを用いてコンシューマが作成または取得したアプリケーションを展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステムまたはストレージを含む基礎となるクラウドインフラストラクチャを管理または制御はしないが、展開したアプリケーションおよび可能性としてアプリケーションホスティング環境構成に対する制御は有する。
サービスとしてのインフラストラクチャ(Infrastructure as a Service:IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここでコンシューマは、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行可能である。コンシューマは、基礎となるクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御を有し、可能性としてネットワークコンポーネント(例えば、ホストファイアウォール)の選択に対する限定的制御も有する。
展開モデルは、以下の通りである。
プライベートクラウド:クラウドインフラストラクチャは、1つの組織のためにのみ動作される。プライベートクラウドは、当該組織またはサードパーティによって管理されてよく、オンプレミスまたはオフプレミスに存在してよい。
コミュニティクラウド:クラウドインフラストラクチャは、複数の組織によって共有され、共有の関心事項(例えば、ミッション、セキュリティ要件、ポリシーおよびコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。コミュニティクラウドは、当該組織またはサードパーティによって管理されてよく、オンプレミスまたはオフプレミスに存在してよい。
パブリッククラウド:クラウドインフラストラクチャは、パブリック全般または大規模業界グループに利用可能とされ、クラウドサービスを販売する1つの組織によって所有される。
ハイブリッドクラウド;クラウドインフラストラクチャは、2または2より多いクラウド(プライベート、コミュニティまたはパブリック)により組成され、2または2より多いクラウドは、独自のエンティティのままであるが、データポータビリティおよびアプリケーションポータビリティ(例えば、クラウド間の負荷分散のためのクラウドバースト)を可能にする標準技術または独自技術によって結合される。
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性およびセマンティック相互運用性に焦点を当てたサービス指向である。クラウドコンピューティングの中核には、相互接続されたノードで構成されるネットワークを含むインフラストラクチャが存在する。
図1を参照すると、例示的なクラウドコンピューティング環境50が示される。図示の通り、クラウドコンピューティング環境50は、1または複数のクラウドコンピューティングノード10を含み、例えば、パーソナルデジタルアシスタント(PDA)またはセルラフォン54A、デスクトップコンピュータ54B、ラップトップコンピュータ54Cおよび/または車両コンピュータシステム54N等のクラウドコンシューマによって用いられるローカルコンピューティングデバイスは、当該ノードと通信してよい。ノード10は、互いに通信してよい。ノードは、上記したようなプライベートクラウド、コミュニティクラウド、パブリッククラウド若しくはハイブリッドクラウドまたはこれらの組み合わせ等の1または複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)されてよい。これにより、クラウドコンピューティング環境50は、クラウドコンシューマがローカルコンピューティングデバイス上のリソースを維持する必要のないサービスとしてのインフラストラクチャ、サービスとしてのプラットフォームもしくはサービスとしてのソフトウェアまたはこれらの組み合わせを提供できるようにする。図1に図示されるコンピューティングデバイス54A-Nのタイプは、専ら例示的なものを意図し、コンピューティングノード10およびクラウドコンピューティング環境50は、任意のタイプのネットワークもしくはネットワークアドレス指定可能な接続(例えば、ウェブブラウザを用いて)またはその両方を通して、任意のタイプのコンピュータ化されたデバイスと通信可能であることを理解されたい。
ここで図2を参照すると、クラウドコンピューティング環境50(図1)によって提供される一組の機能的抽象化レイヤが図示されている。図2に図示されるコンポーネント、レイヤおよび機能は、専ら例示であることを意図しており、本開示の実施形態は、これらに限定されないことを予め理解されたい。図示の通り、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例としては、メインフレーム61、RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、ストレージデバイス65、並びにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
仮想化レイヤ70は、仮想エンティティの以下の例が提供されてよい抽象化レイヤを提供し、その例とは、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74並びに仮想クライアント75である。
一例において、管理レイヤ80は、以下に説明する機能を提供してよい。リソースプロビジョニング81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を提供する。測定および価格設定82は、リソースがクラウドコンピューティング環境内で用いられる際のコスト追跡およびこれらのリソースの消費に対する課金または請求書送付を提供する。一例において、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウドコンシューマの身元確認およびタスク並びにデータおよび他のリソースのための保護を提供する。ユーザポータル83は、コンシューマおよびシステム管理者に対し、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、必要なサービスレベルが満たされるように、クラウドコンピューティングリソース割り当ておよび管理を提供する。サービスレベルアグリーメント(SLA)プランニングおよび遂行85は、SLAに従い将来の要件が予期されるクラウドコンピューティングリソースに対する事前取り決めおよび調達を提供する。
ワークロードレイヤ90は、クラウドコンピューティング環境が用いられ得るための機能の例を提供する。このレイヤから提供されてよいワークロードおよび機能の例として、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ分析処理94、トランザクション処理95およびワークロード性能により駆動される部分的データ再編成96の実行の必要性の判定が含まれる。
図3を参照すると、本明細書でコンピュータシステム100と称される、一例のデータ処理システムのブロック図が表示される。システム100は、単一の場所におけるコンピュータシステム/サーバに具現化されてよく、または少なくとも一実施形態において、コンピューティングリソースを共有するクラウドベースシステムに構成されてよい。例えば、限定ではないが、コンピュータシステム100は、クラウドコンピューティングノード10として用いられてよい。
コンピュータシステム100の態様は、本明細書に説明されるシステム、ツールおよびプロセスを実装すべく、単一の場所におけるコンピュータシステム/サーバに具現化されてよく、または少なくとも一実施形態において、複数のコンピューティングリソースを共有する1つのクラウドベースシステム内にクラウドベースサポートシステムとして構成されてよい。コンピュータシステム100は、多くの他の汎用または特定目的のコンピュータシステム環境または構成で動作可能である。コンピュータシステム100と共に用いるのに好適であってよい周知のコンピュータシステム、環境もしくは構成またはこれらの組み合わせの限定ではない例として、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドデバイスまたはラップトップデバイス、マイクロプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能コンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および上記のシステム、デバイスおよびそれらの均等物の任意の物を含むファイルシステム(例えば、分散ストレージ環境および分散クラウドコンピューティング環境)が含まれる。
コンピュータシステム100は、コンピュータシステム100により実行されるプログラムモジュール等のコンピュータシステムが実行可能な命令の一般的な文脈で説明されてよい。一般に、プログラムモジュールは、特定のタスクを実行する、または、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含んでよい。コンピュータシステム100は、分散クラウドコンピューティング環境で実施されてよく、そこでは、タスクは、通信ネットワークを通してリンクされたリモート処理デバイスにより実行される。分散クラウドコンピューティング環境においては、プログラムモジュールは、メモリストレージデバイスを含むローカルおよびリモートの両方のコンピュータシステム記憶媒体に配置されてよい。
図3に図示される通り、コンピュータシステム100は、汎用コンピューティングデバイスの形態で示されている。コンピュータシステム100のコンポーネントには、例えば、ハードウェアプロセッサ、システムメモリ106およびシステムメモリ106を含む各種システムコンポーネントを処理デバイス104に連結する通信バス102といった1若しくは複数のプロセッサまたは処理デバイス104(プロセッサおよび処理ユニットと称される場合がある)が含まれてよいが、これらに限定されない。通信バス102は、任意の複数のタイプのバス構造のうちの1または複数を表わし、これには、メモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックポートおよび任意の様々なバスアーキテクチャを用いるプロセッサまたはローカルバスが含まれる。例示であって限定ではないが、このようなアーキテクチャとしては、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダードアソシエーション(VESA)ローカルバスおよびペリフェラルコンポーネントインターコネクト(PCI)バスが含まれる。コンピュータシステム100は通常、様々なコンピュータシステム可読媒体を含む。このような媒体は、コンピュータシステム100によってアクセス可能な任意の利用可能な媒体であってよく、このような媒体には、揮発性および不揮発性の両方の媒体、リムーバブルおよび非リムーバブル媒体が含まれる。また、コンピュータシステム100は、1または複数の永続ストレージデバイス108、通信ユニット110、入力/出力(I/O)ユニット112およびディスプレイ114を含んでよい。
処理デバイス104は、システムメモリ106にロードされてよいソフトウェアの命令を実行するようサービス提供する。処理デバイス104は、特定の実装に応じて、複数のプロセッサ、マルチコアプロセッサ、または他の特定のタイプのプロセッサであってよい。本明細書においてアイテムについて用いられる数は、1または複数のアイテムを意味する。さらに、処理デバイス104は、単一チップ上にメインプロセッサがセカンダリプロセッサと共に存在する複数の異種プロセッサシステムを用いて実装されてよい。別の例示として、処理デバイス104は、同一タイプの複数のプロセッサを含む対称的なマルチプロセッサシステムであってよい。
システムメモリ106および永続ストレージ108は、ストレージデバイス116の例示である。ストレージデバイスは、情報を格納可能なハードウェアの任意の部分であってよく、情報は、例えば、限定ではないが、データ、機能的形態のプログラムコードおよび/または一時的ベースおよび/または永続的ベースのいずれかの他の好適な情報である。これらの例において、システムメモリ106は、例えば、ランダムアクセスメモリまたは任意の他の好適な揮発性または揮発性のストレージデバイスであってよい。システムメモリ106は、ランダムアクセスメモリ(RAM)もしくはキャッシュメモリまたはその両方等の揮発性メモリの形態のコンピュータシステム可読媒体を含んでよい。
永続ストレージ108は、特定の実装に応じて、様々な形態を取ってよい。例えば、永続ストレージ108は、1または複数のコンポーネントまたはデバイスを含んでよい。例えば、限定ではないが、永続ストレージ108は、非リムーバルの不揮発性媒体(不図示および典型的に「ハードドライブ」と呼ばれる)との間で読み取りおよび書き込みをするために提供されてよい。図示しないが、リムーバルの不揮発性磁気ディスクドライブ(例えば、「フロッピーディスク」)との間で読み取りおよび書き込みを行うための磁気ディスクドライブ、およびCD-ROM、DVD‐ROMまたは他の光学的媒体等のリムーバルの不揮発性光ディスクとの間で読み取りまたは書き込みを行うための光ディスクドライブが提供されてよい。このような例において、各々は、1または複数のデータメディアインタフェースによって通信バス102に接続されてよい。
これらの例において、通信ユニット110は、他のコンピュータシステムまたはデバイスとの通信を提供してよい。これらの例において、通信ユニット110は、ネットワークインタフェースである。通信ユニット110は、物理的および無線の通信リンクの一方または両方を用いて通信を提供してよい。
入/出力ユニット112は、コンピュータシステム100に接続されてよい他のデバイスとの間のデータの入力および出力を可能にしてよい。例えば、入/出力ユニット112は、キーボード、マウスもしくは特定の他の好適な入力デバイスまたはこれらの組み合わせを通してユーザ入力のための接続を提供してよい。さらに、入/出力ユニット112は、出力をプリンタに送信してよい。ディスプレイ114は、情報をユーザに表示するためのメカニズムを提供してよい。コンピュータシステム100内の様々なデバイス間での通信の確立を促進する入/出力ユニット112の例としては、限定ではないが、ネットワークカード、モデムおよび入力/出力インタフェースカードが含まれる。また、コンピュータシステム100は、ネットワークアダプタ(図3に図示されない)を介して、ローカルエリアネットワーク(LAN)、一般的広域ネットワーク(WAN)もしくはパブリックネットワーク(例えば、インターネット)またはこれらの組み合わせ等の1または複数のネットワークと通信してよい。図示されていないが、他のハードウェアもしくはソフトウェアコンポーネントまたはその両方が、コンピュータシステム100と連携して用いられてよいことを理解されたい。このようなコンポーネントの例としては、限定ではないが、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブおよびデータアーカイブストレージシステムが含まれる。
オペレーティングシステム、アプリケーションもしくはプログラムまたはこれらの組み合わせのための命令は、ストレージデバイス116内に配置されてよく、ストレージデバイス116は、通信バス102を通して処理デバイス104と通信する。これらの例示において、命令は、永続ストレージ108上の機能的形態である。これらの命令は、処理デバイス104によって実行されるために、システムメモリ106にロードされてよい。異なる実施形態のプロセスは、コンピュータ実装命令を用いて処理デバイス104によって実行されてよく、当該命令は、システムメモリ106等のメモリ内に配置されてよい。これらの命令は、プログラムコード、コンピュータ使用可能プログラムコードまたは処理デバイス104内のプロセッサによって読み取りおよび実行されてよいコンピュータ可読プログラムコードと称されてよい。異なる実施形態におけるプログラムコードは、システムメモリ106または永続ストレージ108等の異なる物理的または有形のコンピュータ可読媒体上に具現化されてよい。
プログラムコード118は、選択的に取り外し可能であるコンピュータ可読媒体120上に機能的形態として配置されてよく、処理デバイス104によって実行されるために、コンピュータシステム100にロードされてよく、または、転送されてよい。これらの例において、プログラムコード118およびコンピュータ可読媒体120は、コンピュータプログラム製品122を形成してよい。一例において、コンピュータ可読媒体120は、コンピュータ可読記憶媒体124またはコンピュータ可読信号媒体126であってよい。コンピュータ可読記憶媒体124は、例えば、永続ストレージ108の一部であるハードドライブ等のストレージデバイスに転送するために、永続ストレージ108の一部であるドライブまたは他のデバイスに挿入されるまたは配置される光ディスクまたは磁気ディスクを含んでよい。コンピュータ可読記憶媒体124はまた、コンピュータシステム100に接続されるハードドライブ、サムドライブまたはフラッシュメモリ等の永続ストレージの形態を取ってもよい。いくつかの例において、コンピュータ可読記憶媒体124は、コンピュータシステム100から取り外し可能でなくてよい。
代替的に、プログラムコード118は、コンピュータ可読信号媒体126を用いてコンピュータシステム100に転送されてよい。コンピュータ可読信号媒体126は、例えば、プログラムコード118を含む伝搬されたデータ信号であってよい。例えば、コンピュータ可読信号媒体126は、電磁信号、光学信号もしくは任意の他の適切なタイプの信号またはこれらの組み合わせであってよい。これらの信号は、無線通信リンク、光ファイバケーブル、同軸ケーブル、有線もしくは任意の他の適切なタイプの通信リンクまたはこれらの組み合わせ等の通信リンクを経由して送信されてよい。換言すると、例示において、通信リンクもしくは接続またはその両方は、物理的であってよく、または無線であってよい。
いくつかの例示的な実施形態において、プログラムコード118は、ネットワーク経由で別のデバイスまたはコンピュータシステムから、コンピュータ可読信号媒体126を通して永続ストレージ108にダウンロードされて、コンピュータシステム100内で用いられてよい。例えば、サーバコンピュータシステム内のコンピュータ可読記憶媒体内に格納されたプログラムコードは、ネットワーク経由でサーバからコンピュータシステム100にダウンロードされてよい。プログラムコード118を提供するコンピュータシステムは、サーバコンピュータ、クライアントコンピュータ、またはプログラムコード118を格納および送信可能な特定の他のデバイスであってよい。
プログラムコード118は、限定ではなく例示として、システムメモリ106内に格納されてよい1または複数のプログラムモジュール(図3に不図示)並びにオペレーティングシステム、1または複数のアプリケーションプログラム、他のプログラムモジュールおよびプログラムデータを含んでよい。オペレーティングシステム、1または複数のアプリケーションプログラム、他のプログラムモジュールおよびプログラムデータまたはこれらのいくつかの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラムコード118のプログラムモジュールは一般に、本明細書に説明される実施形態の機能もしくは方法論またはその両方を実行する。
コンピュータシステム100について例示される異なる複数のコンポーネントは、異なる実施形態が実装され得る態様に関するアーキテクチャ上の限定をもたらす意図ではない。異なる例示的な実施形態は、コンピュータシステム100について例示されたものに加えてまたはその代わりとなるコンポーネントを含むコンピュータシステムにおいて実装されてよい。
本開示は、統合の考え得る任意の技術的な詳細レベルにおけるシステム、方法もしくはコンピュータプログラム製品またはこれらの組み合わせであってよい。コンピュータプログラム製品は、プロセッサに、本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数可)を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって用いられる命令を保持可能および格納可能な有形のデバイスであってよい。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたは前述したものの任意の好適な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、以下のものが含まれ、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD‐ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカードまたは記録された命令を有するグルーブ内の隆起構造等の機械的に符号化されたデバイスおよび前述したものの任意の好適な組み合わせである。本明細書で用いられるコンピュータ可読記憶媒体は、無線波または他の自由に伝搬される電磁波、導波路または他の送信媒体(例えば、ファイバ光ケーブルを通して通過する光パルス)を通して伝搬される電磁波または配線を通して送信される電気信号といった、一時的信号それ自体として解釈されないものとする。
本明細書に説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、または、例えばインターネット、ローカルエリアネットワーク、広域ネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワーク経由で外部コンピュータ若しくは外部ストレージデバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを有してよい。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、または、例えばインターネット、ローカルエリアネットワーク、広域ネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワーク経由で外部コンピュータ若しくは外部ストレージデバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを有してよい。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本開示の操作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(登録商標)、C++等のオブジェクト指向プログラミン言語、および"C"プログラミング言語または同様のプログラミング言語等の手続型プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせにおいて記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザコンピュータ上で全体的に、ユーザコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータ上で部分的におよびリモートコンピュータ上で部分的に、または、リモートコンピュータ若しくはサーバ上で全体的に実行されてよい。後者のシナリオにおいては、リモートコンピュータは、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されてよく、あるいは、外部コンピュータへの接続がなされてもよい(例えば、インターネットサービスプロバイダを用いたインターネット経由で)。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本開示の態様を実行すべく、コンピュータ可読プログラム命令の状態情報を用いてコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてよい。
本開示の態様は、本開示の実施形態による方法、装置(システム)およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書で説明される。フローチャート図および/またはブロック図の各ブロックおよびフローチャート図および/またはブロック図内のブロックの組み合わせが、コンピュータ可読プログラム命令によって実装されてよいことを理解されたい。
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラム可能データ処理装置に提供されて、マシンを生成してよく、当該命令は、当該コンピュータのプロセッサまたは他のプログラム可能データ処理装置により実行され、フローチャートもしくはブロック図またはその両方のブロック(複数可)に指定された機能/動作を実装するための手段を形成する。これらのコンピュータ可読プログラム命令はまたコンピュータ可読記憶媒体内に格納されてよく、当該命令は、コンピュータ、プログラム可能データ処理装置および/または他のデバイスに対し、特定の態様で機能するよう命令し得、その結果、格納された命令を有するコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図のブロック(複数可)に指定された機能/動作の態様を実装する命令を含む製品を備えるようになる。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされて、当該コンピュータ、当該他のプログラム可能装置または他のデバイス上で一連の動作ステップが実行されて、コンピュータ実装プロセスを生成してよく、その結果、当該コンピュータ、他のプログラム可能装置または他のデバイス上で実行される当該命令が、フローチャートもしくはブロック図またはその両方のブロック(複数可)に指定された機能/動作を実装する。
これら図面内のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法およびコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能および処理を示す。この点に関し、フローチャートまたはブロック図内の各ブロックは、指定された論理機能(複数可)を実装するための1または複数の実行可能命令を備える命令のモジュール、セグメントまたは一部を表わしてよい。いくつかの代替的な実装において、ブロックに特記される機能は、図面内に示されるものとは異なる順序で行われてよい。例えば、連続的に図示される2つのブロックは実際には、関連する機能に応じて、1ステップとして行われてよく、並行して実行されてよく、実質的に並行して実行されてよく、部分的若しくは全体的に時間的に重複して実行されてよく、あるいは、場合によっては、ブロックは逆順で実行されてよい。またブロック図および/またはフローチャート図の各ブロック並びにブロック図および/またはフローチャート図内の複数のブロックの組み合わせが、指定された機能若しくは動作を実行する、または、特定用途向けハードウェアとコンピュータ命令との組み合わせを実行する特定用途向けハードウェアベースのシステムによって実装されてよいことにも留意されたい。
多くの既知の電子データベースストレージシステムは通常、データ情報を、物理ストレージ内の互いに隣接して配置される複数のセクション内に格納する。これらのセクションは、「ページ」と称され、ページとは、例えば限定ではないが、8キロバイト(KB)といった予め定義された物理ストレージ容量値である。通常、ストレージシステム内のデータは、複数の行および列を通して定義されるテーブル内に編成される。各ページは、テーブルの行の少なくとも一部を含んでよく、テーブルの行の論理的態様は、複数のページと重なってよく、その結果、1テーブルは複数のページにわたり伸びる。複数のテーブルが、1つのテーブル空間を定義し、ここでも、複数のページがテーブル空間またはページの行に編成される、ここで、ページの行とテーブルの行とを混同しないものとする。データベースの使用中、読み取りトランザクション、書き込みトランザクションおよび削除トランザクションは、影響されたデータテーブルの行が存在する特定のページの行内の特定のページに宛てられる。例えば、特定データの削除が、フラグメンテーションの問題を生じさせることがあるので、ページ(複数可)上のデータ修正により、最適ではない物理ストレージイメージを生じさせることがある。さらに、例えば、ページの行が、元々存在していたものよりも長いテキストストリングを持つように更新された場合、「オーバーフローレコード」が生成されることがあり、この場合、十分なストレージ空間を保持する新しいストレージ位置へのポインタがデータフィールド内に格納される。このような場合、元のデータフィールド上での後続の読み取り操作は、元の単一のI/O操作ではなく、2つの別個のI/O操作をもたらす当該より大きいデータフィールドへリダイレクトされる。そのため、データベースの消耗的使用により、大きくフラグメンテーション化されたストレージイメージをもたらし得る。ストレージイメージがフラグメンテーション化されるほど、リダイレクト数が増える。その結果、読み取りもしくは書き込みまたはその両方の操作のための平均アクセス時間が「理想」状態に対し増大し得る。
また、特定のページが一連の並列トランザクションまたはシリアライズトランザクションの拡張シーケンスを通して頻繁にアクセスされるように、保存データが編成され得る。ページは、物理ストレージ量を表わすので、各ページ付近のトランザクショントラフィックが、ボトルネックを誘発し、それにより、トランザクションの待機時間が増大する可能性がある。また、1または複数のアプリケーションプロセスからの並列トランザクションおよびシリアライズトランザクションは、影響されたデータ上でロックを使用して、そこにあるデータの並行性を維持することが必要とされ、この場合、アクティブプロセスがロックを「所有」または「保持」する。しかしながら、ロックは、限定ではないが中断、タイムアウト、デッドロックを含む1または複数のタイプの競合を生じさせることがある。競合とは、測定可能または判定可能な特徴である。ひとたび並列トランザクションまたはシリアライズトランザクションの程度が閾値に到達すると、ページおよび行は、「ホットスポット」として指定され得る。
さらに、データベースストレージシステム内に存在するデータは、データの物理的位置に関するインデックスが付与される。データベースインデックス付けは、クエリがデータベースからデータを効率的に取得できるように、インデックス付けがなされた特定の属性に基づき、データベースファイルからレコードを効率的に取得するためのデータ構造技術である。インデックスは、特定のテーブルと関連付けられ、関係性は、例えば、キーフィールド等の1または複数のインデックス属性で構成され、一般にキーフィールドがリレーションの主キーであり、キーはテーブルの列に基づく検索値である。データベースのサイズが増大するにつれ、インデックスのサイズも増大する。キーをインデックスと比較することにより、同一の値を持つ1または複数のデータベースレコードを見つけることが可能になる。インデックスは、データ取得の速度を大きく速めるので、各テーブルに正しいインデックスが定義されることが重要である。インデックスはまた、複数のポインタも含み、ポインタは、データベース内の各レコードの物理アドレスを保持する。ポインタを用いることで、優れたデータ取得性能をもたらす。しかしながら、データベースのロードおよび再編成等の操作を犠牲にする。
従って、多くの既知のデータベースストレージシステムは、そこに格納されたデータの定期的再編成を必要とする。再編成中、データベース内のデータの論理的もしくは物理的またはその両方の構成およびインデックスが変更される。再編成の肯定的結果としては、ホットスポットの低減および関連データの近接性を元々意図していたように復元することが含まれる。従来の運用では、多くのタイプの再編成は、再編成中にデータベースへのアクセスを拒否(すなわち、データベースをオフラインにする)することを必要としている。データベースをオフラインにすることは、例えば、電子商取引または軍隊にサービス提供するデータベースまたは巨大データベース等の高度可用性(例えば、24時間)データベースにとっては受け入れがたいものであり得る。従って、リソースおよび一時的制約の組み合わせが、必要な再編成アクティビティを魅力のないものとしている可能性がある。
格納されたデータの再編成の必要性に対するエビデンスは、データベースストレージおよび関連付けられたインデックスの収集された性能データに基づいてよい。収集された性能データは通常、テーブル空間またはパーティションレベルにおけるものであり、収集された性能データ、例えば、データテーブルまたはパーティションおよびそれぞれのインデックスの統計が1または複数のツールにより分析されて、格納されたデータの再編成の必要性が判定される。例えば、テーブルデータへの多くの変更がなされた後、論理的シーケンシャルなデータが、非シーケンシャルな物理的データページ上に存在し得、とりわけ多くの更新操作によりオーバーフローレコードが形成された場合が該当する。データがこのように編成される場合、データベース管理者は、必要なデータにアクセスすべく追加の読み取り操作を実行する必要がある。多くの行が削除された場合にも、追加の読み取り操作が必要とされる。また、テーブルデータへの多くの変更は、インデックス性能の低下を招く可能性があり、これはインデックスを用いるクエリの性能において目立った顕著な変化として示される。従って、これらの問題のすべてが、入力/出力操作を増大させ、性能を低下させ得る。
上記したように、収集された性能データは通常、テーブル空間またはパーティションレベルにおけるものである。しかしながら、ワークロード性能の問題はより粒度が細かいものであり得、すなわち、このような問題は、テーブルまたはパーティションの特定の小さい部分に制限され得、その結果、影響されるワークロード性能は、テーブルまたはパーティションレベルの統計には反映されない。また、既知のデータベースストレージシステムにおいて、再編成アクティビティは、テーブルまたはパーティションレベルベースでのみ実行され得、これにより、再編成中のデータベースの操作を制約する必要性が伴う。
本明細書に開示および説明されるシステム、コンピュータプログラム製品および方法は、判定されたワークロードを受けての、データベース再編成の駆動に関し、より具体的には、データベースのオンライン部分的再編成を提供して、ワークロード性能を改善することに関する。性能敏感性ワークロードが識別され、「性能敏感性ワークロード」とは、ユーザによってそのように前に識別されたか、または、経験的データ収集に基づき、性能敏感であるとして判定されたワークロードとして本明細書で定義される。いくつかの実施形態において、例えば、限定ではないが、性能敏感性ワークロードは少なくとも満足する処理性能を有するものの、通常比較的高コストまたは延長された実行時間をもたらすユーザ指定のランタイム要件を持ち、従って、各ワークロードを最小レベルの実行性能で実行できないことは、追加のコストおよび遅延をもたらし得るので、ユーザによって性能敏感性であるとみなされているワークロードを含む。いくつかの実施形態において、ランタイム性能要件と実際のランタイム実行との間の関係が発見され、収集された性能情報を通してユーザの注意を向けさせる。また、いくつかの実施形態において、性能敏感性ワークロードは、定義されたレコードアクセスパス、レコード番号または他のレコード識別子、テーブル内のレコード範囲、物理的ストレージデバイス内のページ範囲、読み取られたページ数、リストプリフェッチ、シーケンシャルI/O操作要件、並びにオーバーフロー率、ホットスポット条件およびテーブル空間検索時間を含む任意の判定されたデータレコードのオーバーフロー条件のうち、1または複数を通して識別される。従って、性能敏感性ワークロードは、その実行前に明示に識別されるか、あるいは、ランタイム測定値の収集中に発見される。
少なくとも一実施形態において、性能情報収集を前進させるべく、各検索ワークロードのアクセスプランが用いられ、テーブルおよびインデックスにアクセスするために用いられる方法が分析される。方法には、限定でないが、インデックススキャン、テーブルスキャン、リストプリフェッチおよび非一致インデックスアクセスが含まれる。また、ページI/O操作、CPUコスト、オーバーフロー率および各ワークロードの実行時間等の実行ログ情報が収集される。また、データ更新および挿入ワークロード、ページI/O操作およびテーブル空間検索時間等のワークロード情報が記録される。さらに、クラスタ率、レコード削除番号、レコード挿入番号およびレコードオーバーフロー数等のデータベース統計が記録される。従って、性能情報収集は、実行ログ、ワークロード操作およびデータベース統計からのデータ収集を含む。
1または複数の実施形態において、ひとたび上記の性能情報が収集されると、ワークロード性能情報が分析され、性能問題の任意の指標の性質、格納されたデータのどの部分が影響されているか、およびテーブル空間、パーティションまたはインデックスのどの特性(複数可)が改善される必要があるかを判定する。概して、潜在的なワークフロー問題を判定すべく分析されるものとして、4つの主要な問題があり、各問題は一般的な解決策を有する。
分析される第1の問題は、クラスタ率を含む。テーブルレコードは、レコード自体がレコードのキーフィールドに関し部分的または全体的に順序付けられるように構成されてよく、キーフィールドがその特定のテーブルまたは複数のテーブルの関連付けられたインデックスを定義する。定義されたキーに関しそのレコードの意味のある順序を有するテーブルは、そのキーに関しクラスタリングされていると言われる。クラスタリングされたテーブルは、クラスタリングされていないテーブルよりも効率的であり、キーに基づき、クラスタリング化された操作がテーブルに対し実行される。クラスタリングは、各インデックスに対するクラスタリング度を表わすクラスタ率を通して測定され、いくつかの実施形態において、クラスタ率は、インデックスのソート順序に関し、連続的ページ上でシーケンシャルに格納されている行の割合として表される。クラスタ率の値が高いほど、影響された行は、所望のインデックスキーシーケンスで、より良く順序付け、またはクラスタリング化される。テーブル行が、所望のインデックスキーシーケンスに近い場合、当該テーブル行は、影響されたデータページがバッファ内にある間に、当該ページから読み取り可能であり、これにより、無関係のI/O操作を低下し、またはなくす。クラスタリング問題に起因する性能敏感性ワークロードの実行低下の指標には、限定ではないが、低下するクラスタ率として示されるように、各行のクラスタリングが予め定められた低閾値に近づく、または下方向に予め定められた低閾値を通過すると判定されること、ページI/O操作数の増加が判定されること、および、特定のクエリ操作を実行するためにインデックスを使用するより、各テーブルがスキャンされることが含まれる。上記の指標のうち1または複数が判定される場合における、一般的な高レベル解決策は、影響されたレコード範囲上でのテーブルの局所的且つ部分的再編成が含まれ、局所的な部分的再編成を含み、局所的な部分的再編成を実行して、影響されたレコードの所望のクラスタリングシーケンスを復元してよい。
分析される第2の問題は、ホットスポットを含み、ホットスポットについては、本明細書で前に定義してある。ホットスポット問題に起因する性能敏感性ワークロードの実行低下の指標には、限定ではないが、拡張的または過度の競合および延長されたテーブル空間検索時間が含まれる。上記の指標のうち1または複数が判定される場合における一般的な高レベル解決策は、影響されたページ範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成を実行して、ホットデータをより多くのテーブル空間に拡散させ、且つ、影響されたページ上で利用可能な空き物理的ストレージ空間の量を増やしてよい。
分析される第3の問題は、限定ではないが、総レコード数に対するオーバーフローレコード数の比率、すなわち、オーバーフロー率が確立された閾値に近づくまたは超えることを含む指標によるデータレコードのオーバーフロー問題を含む。上記の指標のうち1または複数が判定される場合における一般的な高レベル解決策は、影響されたページ範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成を実行して、オーバーフローレコードを除去し、且つ、影響されたページ上で利用可能な空き物理的ストレージ空間の量を増やしてよい。
分析される第4の問題は、限定ではないが、影響されたテーブル空間内のレコード数の確立された閾値に近づくまたは超えるページI/Oトランザクション数を含む指標によるデータレコードの空間使用率問題を含む。一定期間の後、テーブル空間のページ内の空き空間は、データおよびデータレコードの追加および削除を通してページ間で不均等に分散されるようになり得る。上記の指標が判定される場合、一般的な高レベル解決策は、影響されたページ範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成を実行して、空き空間がより均等に分散されて、データベーステーブルのページ内の空き空間の所望の分布パターンを満たすように、デフラグメンテーションを通してテーブル空間の影響されたページ内の空き空間を再編成してよい。
分析される4つの問題の数は、限定的な値ではない。また、本明細書で提示されるような分析のシリアライズ順序は限定的なものではなく、少なくともいくつかの実施形態において、分析は並列で実行される。従って、性能情報収集および性能敏感性ワークロードに関する分析に起因するクラスタ率の問題、ホットスポット、オーバーフロー問題および空間使用率問題の指標は、影響されたレコードおよびページ範囲に対するテーブルの局所的な部分的再編成を通して軽減されてよい。
図4を参照すると、本明細書に説明されるプロセスを実装するための、本明細書で以降データベース部分的再編成システム400として称される、図3に図示されるコンピュータシステム/サーバ(コンピュータシステム/サーバ300)の一部を示す概略図が示される。また図3を参照すると、データベース部分的再編成システム400は、処理デバイス104と同様の少なくとも1つの処理デバイス404を含み、少なくとも1つの処理デバイス404は、中央処理装置(CPU)と呼ばれることもある。データベース部分的再編成システム400はまた、システムメモリ106の少なくとも一部と同様の少なくとも1つのメモリデバイス406も含む。データベース部分的再編成システム400はさらに、永続ストレージデバイス108の少なくとも一部であるデータベースストレージシステム408を含む。処理デバイス404、メモリデバイス406およびデータベースストレージシステム408は、通信バス102と同様の通信バス402を通して通信可能および動作可能に連結されている。通信バス402は、本明細書でさらに詳述するように、通信バス上の通信を区別すべく、2つの別個の通信バス402Aおよび402Bとして図示されている。しかしながら、いくつかの実施形態において、適切な制御を用いて、すべての通信トラフィックは単一の通信バス402上で生じる。また、通信バス402Aに連結されているのは、他のデバイス430であり、他のデバイスには、限定ではないが、通信ユニット110、I/Oユニット112およびディスプレイ114が含まれてよく、これらはすべて図3に図示されており、図4には図示されていない。1または複数の実施形態において、1または複数のツールが、メモリデバイス406内に存在する。具体的には、ツールは、埋め込みワークロード分析モジュール442を含む再編成モジュール440を含む。ワークロード分析モジュール442は、通信バス402Aに通信可能に連結され、再編成モジュール440は、通信バス402Bに通信可能および動作可能に連結されている。以下に、再編成モジュール440およびワークロード分析モジュール442について本明細書でさらに説明する。従って、再編成モジュール440およびワークロード分析モジュール442を含むツールを備えたデータベース部分的再編成システム400が用いられ、本明細書に説明されるオンライン部分的データベース再編成を実装して、性能敏感性ワークロードを含むワークロード性能を向上させる。
図5は、ワークロード性能を向上させるべく、ワークロードベースのオンライン部分的データベース再編成を駆動するためのプロセス500を示す高レベルのフローチャートである。図6A~6Cは、図5に図示されるワークロードベースのオンライン部分的データベース再編成を駆動するためのプロセス600を示すより詳細なフローチャートを示す。図6Aを参照すると、プロセス600は、性能敏感性ワークロードを識別602することを含む。いくつかの実施形態において、「性能敏感性ワークロード」は、ユーザによってそのように以前に識別されたワークロードか、または、経験的データ収集に基づき、性能敏感性と判定されたワークロードとして定義される。経験的データ収集は、完全に自動化されてよい。いくつかの実施形態において、例えば、限定ではないが、性能敏感性ワークロードは、少なくとも満足する処理性能を有するものの、通常比較的高コストまたは延長された実行時間をもたらすユーザ指定のランタイム要件を持ち、各ワークロードを最小レベルの実行性能で実行できないことは、追加のコストおよび遅延をもたらし得るので、従って、ユーザによって性能敏感性であるとみなされているワークロードを含む。いくつかの実施形態において、ランタイム性能要件と実際のランタイム実行との間の関係が発見され、収集された性能情報を通してユーザの注意を向けさせる。また、いくつかの実施形態において、性能敏感性ワークロードは、定義されたレコードアクセスパス、レコード番号または他のレコード識別子、テーブル内のレコード範囲、物理的ストレージデバイス内のページ範囲、読み取られたページ数、リストプリフェッチ、シーケンシャルI/O操作要件、並びにオーバーフロー率、ホットスポット条件およびテーブル空間検索時間を含む任意の判定されたデータレコードのオーバーフロー条件のうち、1または複数を通して識別される。従って、性能敏感性ワークロードは、その実行前に明示的に識別されるか、ランタイム測定値の収集中に発見される。
また図4を参照すると、いくつかの実施形態において、プロセス600は、各データベースの1または複数の部分と関連付けられた性能敏感性ワークロードの性能情報を収集604することを含む。情報ソースは、図5に示される。最初に、少なくとも一実施形態において、性能情報収集を前進させるべく、各検索ワークロードのためのアクセスプランが用いられ、テーブルおよびインデックスにアクセスするために用いられる方法が分析される。方法には、限定でないが、インデックススキャン、テーブルスキャン、リストプリフェッチおよび非一致インデックスアクセスが含まれる。また、実行ログ502が、通信バス402Aを通してワークロード分析モジュール442によってアクセスされる。実行ログ502の情報のうち少なくとも一部は、限定ではないが、各ワークロードのページI/O操作、CPUコスト、オーバーフロー率および実行時間を含む。また、ワークロード情報504は、通信バス402Aを通してワークロード分析モジュール442によってアクセスされる。ワークロード情報504の少なくとも一部は、限定ではないが、データ更新および挿入ワークロード、ページI/O操作およびテーブル空間検索時間を含む。さらに、データベース統計506は、通信バス402Aを通してワークロード分析モジュール442によりアクセスされる。データベース統計506の少なくとも一部は、限定ではないが、クラスタ率、レコード削除数、レコード挿入数およびレコードオーバーフロー数を含む。従って、性能情報収集は、実行ログ502、ワークロード情報504およびデータベース統計506からのデータ収集を含む。
1または複数の実施形態において、ひとたび上記の性能情報が収集604されると、収集されたワークロード性能情報は、ワークロード分析モジュール442により分析508/606されて、性能低下の任意の指標の性質が判定される。少なくともいくつかの実施形態において、分析は、完全に自動化態様で実行され、いくつかの実施形態においては、継続的に分析される。また、判定された性能低下を受けて、1または複数のデータベース部分のうちどれが、判定された性能低下により影響されるか、すなわち、影響される格納されたデータの部分についての判定がなされる。また、データベース部分の判定を受けて、判定された性能低下を分類する、すなわち、テーブル空間、パーティションまたはインデックスのどの特性(複数可)を改善する必要があるかを判定する。概して、潜在的なワークフロー問題を判定すべく分析されるものとして4つの主要な問題があり、各問題は一般的な解決策を有し、各性能問題について本明細書でさらに説明する。少なくとも一実施形態において、プロセス600は、4つの性能問題を解決するための、本明細書で以下にさらに説明するような推奨されるオンライン部分的再編成アクション510を判定608することを含む。
図6Aへの参照を続けつつ図6Bを参照すると、性能情報を分析する操作606および4つの性能問題を解決するための推奨されるオンライン部分的再編成アクションを判定する操作608が、分析およびアクションのセット610においてさらに説明される。分析およびアクションのセット610は、3つのセクション、すなわち4つの性能問題の各々について分析される指標612、性能問題の有無の判定614、および推奨される再編成アクション616に分割される。操作602、604、606および608に関連付けられる判定は、完全に自動化されてよい。推奨されるオンライン部分的再編成アクションは、完全に自動化されてよい。分析される4つの問題の数は、限定的な値ではない。また、本明細書で提示されるような分析のシリアライズ順序は限定的なものではなく、少なくともいくつかの実施形態において、分析は並列で実行される。従って、性能情報収集および性能敏感性ワークロードに関する分析に起因するクラスタ率の問題、ホットスポット、オーバーフロー問題および空間使用率問題の指標は、影響されたレコードおよびページ範囲に対するテーブルの局所的な部分的再編成を通して軽減されてよい。
いくつかの実施形態において、分析される第1の問題は、クラスタ率を含む。クラスタリング問題に起因する性能敏感性ワークロードの性能低下の指標620には、限定ではないが、各行のクラスタリング率の分析が含まれる。分析される別の指標620は、特定のワークロードについて実行されるI/O操作の数が含まれる。分析されるさらなる指標620は、クエリのためのテーブルスキャンと、クエリのための各インデックスの使用との間を区別するためのワークロードの部分を観察することを含む。判定操作622が実行されて、再編成を正当化するほどクラスタ率が十分低いかを判定622する。具体的には、指標620が、低下するクラスタ率が予め定められた低閾値に近づくまたは下方向に通過すると判定されること、ページI/O操作数の増加、および、特定のクエリ操作を実行するために、各テーブルのスキャンの方が、各インデックスの使用よりも増えていること、のうち1または複数を指向するかどうかである。判定操作622の結果が「はい」の場合、一般的な高レベル解決は、影響されたレコード範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成は、影響されたレコードの所望のクラスタリングシーケンスを復元624すべく実行されてよい。所望のクラスタリングシーケンスを復元624するためのこのような部分的再編成は、ユーザインタフェースを通して実装されてよく、または、自動化されてよい。
図7を参照すると、影響されたレコードの所望のクラスタリングシーケンスを復元して、低クラスタ率判定を軽減するためのプロセス700を示す概略図が示される。また図4を参照すると、データベース702の一部が、テーブル空間704、複数のデータレコード706、インデックス708、および、インデックス708からそれぞれ個々のレコード706に延びる複数のポインタ710(2つのみラベリングされている)と共に図示されている。インデックス708およびテーブル空間704は、データベースストレージシステム408内に存在する。
いくつかの実施形態において、プロセス700は、矢印722により図示されるように、テーブル空間704からの判定されたレコード範囲内の各レコード706を、再編成モジュール440を通してアンロード720(すなわち、コピーまたはスキャン)して、メモリデバイス406内に一時的に存在させ、これにより、一組のアンロードされたレコード724を定義することを含む。レコード706は、各クラスタインデックスアクセスパス(不図示)を通して、または、リストプリフェッチ機能を用いて、アンロード対象として選択され、レコード706をアンロード720する。本明細書でさらに説明されるように、スイッチアクティビティが完結されるまで、レコード706は使用中のままである。従って、再編成されるべき各レコード706は、テーブル空間704のそれらの各部分からメモリデバイス406へコピーされる。
少なくともいくつかの実施形態において、プロセス700はまた、矢印736に図示されるように、アンロードされたレコード724をバッファプール734内の新しいページ732にロード730することを含む。いくつかの実施形態において、バッファプール734がメモリデバイス406内に存在し、いくつかの実施形態において、バッファプール734はテーブル空間704に存在する。ロード730前に、ロード730後の各ページ上に残る空き空間率の適切な値および追加されるべき空きページ数を含み、アンロードされたレコード724を受信するために必要なテーブル空間704内のストレージ空間が計算される。確保されたページ732が、矢印740により図示されるように、テーブル空間704の連続的な部分738に割り当てられ、いくつかの実施形態において、連続的な部分738は既存パーティションである。いくつかの実施形態において、新しいパーティション(本明細書でさらに説明する)が作成される。オンライントランザクション同期742が、レコード724に適用される(矢印744により示されるように)、すなわち、ルーチンデータの読み取りアクティビティ、書き込みアクティビティおよび削除アクティビティが継続されている間に、データベースストレージシステム408はオフラインにされないので、連続的な部分738内の確保された、および割り当てられたページ空間およびページ732の不注意による使用を防ぐべく、ページ732は「利用不可」として設定される。図7に図示されていないが、スイッチアクティビティ(本明細書でさらに説明する)が完了されるまで、テーブル空間704内に存在するレコード706は、アンロードされたレコード724と並行して更新されて、その中のデータの同期の維持を容易にする。アンロードされたレコード724は、バッファプール734内の新しいページ732にロード730される。いくつかの実施形態において、ロードされたレコードを持つページ746が、テーブル空間704の確保された連続的な部分738に書き込み748、すなわち送信される。いくつかの実施形態において、矢印754で図示されるように、テーブル空間704の外部に新しいパーティション750が作成され、ページ746が新しいパーティション750の連続的な部分752に割り当てられる。ロードされたレコードを持つページ746は、新しいパーティション750の確保された連続的な部分752に書き込み756、すなわち送信される。従って、各レコード724が各ページ732にロードされ、ロードされたページ746がテーブル空間704または新しいパーティション750に送信される間に、オンライントランザクション同期742が影響されたレコードに継続的に適用されて、不調和なデータの可能性を軽減する。
1または複数の実施形態において、インデックス708と関連付けられたキー762が構築760されて、ページ746の新しい位置を反映させる。古いROWID値766と新しいROWID値768との間のマップが構築764される。影響された範囲におけるすべてのインデックス708についてインデックスキー762が構築760され、インデックスキー762は、今や新しいROWID値768に関連付けられる。従って、ページ746の位置の移行は、データテーブル内の影響された行の各々について、新しいインデックスキー762を生成することを含む。
少なくともいくつかの実施形態において、プロセス700さらに、データページレベルにおいて、ページ746内にロードされたレコードを適切なクラスタリング順序にスイッチ770することを含む。古いレコード706(1つのみ図示)がロックされ(これにより、そのオンライントランザクション同期742を終了させる)、テーブル空間704から削除772され、インデックス708が更新されて、各ポインタ710を各レコードの新しい位置にシフトさせ、すなわち修正されたポインタ774を生成する。新しいページ746は、オンライントランザクション同期742によるさらなる更新に利用可能とされ、今や新しいページ732内のレコードへの読み取りおよび書き込み776を行う。従って、影響されたレコード範囲上での、クラスタリングされたデータレコードの局所的な部分的再編成が実行されて、影響されたレコードの所望のクラスタリングシーケンスを復元してよい。
再度図6Bを参照すると、判定操作622の結果が「いいえ」の場合、いくつかの実施形態において、プロセス600は、分析される第2の問題に進み、第2の問題はホットスポットを含み、ホットスポットについては本明細書において前に定義されている。ホットスポット問題に起因する性能敏感性ワークロードの実行低下の指標630には、限定ではないが、拡張的または過度の競合および延長されたテーブル空間検索時間が含まれる。判定操作632が実行されて、再編成を正当化するほど、テーブル空間内のホットスポットの存在が十分否定的に性能に影響を及ぼしているかが判定632される。具体的には、指標630は、性能を予め定められた低閾値に近づけるまたは下方向に通過させると判定され得る、過剰な競合および延長されたテーブル空間検索時間のうちの1または複数をポイントしてよい。判定操作632の結果が「はい」の場合、一般的な高レベル解決策は、影響されたページ範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成を実行して、ホットデータをより多くのテーブル空間に拡散634させ、且つ、影響されたページ上で利用可能な空き物理的ストレージ空間の量を増やしてよい。ホットデータを拡散634させるこのような部分的再編成は、ユーザインタフェースを通して実装されてよく、または、自動化されてよい。
図8を参照すると、ホットスポットに関連する性能問題を軽減するためのプロセス800を示す概略図が図示される。また図4を参照すると、データベース802の一部が、テーブル空間804、複数のページ806、インデックス808、およびインデックス808からそれぞれ個々のページ806に延びる複数のポインタ810と共に図示されている。インデックス808およびテーブル空間804は、データベースストレージシステム408内に存在する。
複数のページ806は、複数のページ行(ラベリングされていない)を含み、各行は16ページを含み、行ごとのデータページ数は、非限定的である。ページ806は、30個の低負荷ページ814、1個の中間負荷ページ816および1個のホットページ818を含む2行を含む第1のページグループ812を含む。また、ページ806は、6個の中間負荷ページ816および26個のホットページ818を含む2行を含む第2のページグループ820を含む。また、ページ806は、5個の中間負荷ページ816および43個の低負荷ページ814を含む3行を含む第3のページグループ822を含む。さらに、ページ806は、32個の実質的空きページ826を含む第4のページグループ824を含む。本明細書で用いられる「低負荷」という用語は、時折の読み取り/書き込み/削除アクセスを持つ、そこに格納されたいくつかのデータを示す。同様に、「中間負荷」という用語は、中級の読み取り/書き込み/削除アクセスを持つ、そこに格納された中間量のデータを示す。「ホットページ」という用語は、本明細書の他の箇所で説明されている。本明細書で用いられる「実質的空き」という用語は、そこにデータまたはメタデータを格納しておらず、且つ、実質的に稀なアクセスに遭遇するページを示す。複数のポインタ810は、5個のポインタ810を含み、各ポインタ810は、第2のページグループ820内のホットページ818と関連付けられる。示された実施形態は、特定の編成で分散されたページ806を含む一方で、本明細書で説明されるデータベース部分的再編成システム400の操作を可能にする任意の構成の任意の数のページ806が用いられる。
いくつかの実施形態において、プロセス800は、矢印832により図示されるように、再編成モジュール440を通して、テーブル空間804から、識別されたページド範囲内の各ページ806をアンロード830(すなわち、コピーまたはスキャン)して、メモリデバイス406内に一時的に存在させ、これにより、一組のアンロードされたレコード834を定義することを含む。レコード806は、各ホットページ判定メカニズムを通して、または、リストプリフェッチ機能を用いて、アンロード対象として選択され、レコード806がアンロード830される。本明細書にさらに説明するように、スイッチアクティビティが完結するまで、影響されたページ806内のレコードは使用中のままである。従って、再編成されるべき各レコード806は、テーブル空間804の各部分からメモリデバイス406にコピーされる。
1または複数の実施形態において、影響されたページ内のレコード(不図示)、すなわち、第2のページグループ820のホットページ818が必要に応じてソート836され、影響されたページ内のレコードを適切にクラスタ化する。従って、さらに詳しく説明するように、レコードをロードする前にレコードの任意のクラスタリングが完了される。
少なくともいくつかの実施形態において、プロセス800はまた、アンロードされたレコード834を、割り当てられたページにロード840することを含む。いくつかの実施形態において、32個の実質的空きページ826等の既存ページのみが用いられる。いくつかの実施形態において、本プロセス800に具体的に割り当てられた新しい実質的空きページのみが用いられ、任意の既存ページは、アンロードさたレコード834を受信しない。いくつかの実施形態において、既存ページおよび新しいページの組み合わせが割り当てられる。新しい実質的空きページのみを含む実施形態について説明されており、既存ページのみを用いるこれらの実施形態も同様に扱われる。また、既存ページおよび新しいページの組み合わせを含む実施形態が説明される。
従って、新しい実質的空きページのみが用いられる実施形態については、新しい実質的空きページ842がバッファプール844内に作成される。いくつかの実施形態において、バッファプール844はメモリデバイス406内に存在し、いくつかの実施形態において、バッファプール844はテーブル空間804内に存在する。ロード840前に、ロード840後に各ページ上に残る空き空間率の適切な値および追加されるべき空きページ数を含み、アンロードされたレコード834を受信するために必要なテーブル空間804内のストレージ空間が計算される。
テーブル空間804の第1のスイッチ後構成870を含む実施形態においては、確保された新しい実質的空きページ842のみがバッファプール844内に存在し、確保されたページ842は、矢印850で示されるようにテーブル空間804の連続的な部分848内に割り当てられ、いくつかの実施形態において、連続的な部分848は、既存パーティション(不図示)であってよい。いくつかの実施形態において、新しいパーティション(図7に関し説明したように)が作成される。オンライントランザクション同期852が、アンロードされたレコード834に適用される(矢印854によって示されるように)、すなわちルーチンデータの読み取りアクティビティ、書き込みアクティビティおよび削除アクティビティが継続されている間に、データベースストレージシステム408はオフラインにされないので、連続的な部分848内の確保され、および割り当てられたページ空間および確保されたページ842の不注意による使用を防ぐべく、ページ842は「利用不可」として設定される。図8に図示されていないが、スイッチアクティビティ(本明細書でさらに説明する)が完了されるまで、テーブル空間804内の影響されたページ806内に存在するレコードは、アンロードされたレコード834と並行して更新されて、その中のデータ同期の維持を容易にする。少なくとも一実施形態において、アンロードされたレコード834は、バッファプール844内の新しいページ842にロード840される。
少なくとも一実施形態において、アンロードされたレコード834の割り当ての結果、アンロードされたレコード834の適切な拡散を通して、ホットスポットの除去が可能になる。いくつかの実施形態において、アンロードされたレコード834を持つページ856は、テーブル空間804の確保された連続的な部分848に書き込み858、すなわち送信される。従って、各アンロードされたレコード834が各ページ842にロードされ、およびロードされたページ856がテーブル空間804または新しいパーティション(不図示)に送信される間に、オンライントランザクション同期852が影響されたレコードに継続的に適用されて、不調和なデータの可能性を軽減する。
1または複数の実施形態において、インデックス808に関連付けられたキー862が構築860されて、ロードされたページ856の新しい位置が反映される。古いROWID値866と新しいROWID値868との間のマップが構築864される。影響された範囲におけるすべてのインデックス808についてインデックスキー862が構築860され、今やインデックスキー862は、新しいROWID値868に関連付けられる。従って、ロードされたページ856の位置の移行は、データテーブル内の影響された行の各々について、新しいインデックスキー862を生成することを含む。
少なくともいくつかの実施形態において、プロセス800はさらに、データページレベルにおいて、ロードされたページ856内にロードされたレコードを適切なクラスタリング順序にスイッチ872することを含む。古いレコードの一部、すなわち第2のページグループ820内の26個のホットページ818内のレコードはロックされ(これにより、そのオンライントランザクション同期852を終了させる)、テーブル空間804から削除874され、インデックス808が更新されて、各ポインタ810の部分を各レコードの新しい位置にシフトする、すなわち修正されたポインタ876を生成する。新しいページ856は、オンライントランザクション同期852を通したさらなる更新に利用可能とされ、今やレコードへの読み取りおよび書き込み878を行う。従って、影響されたページ範囲上でテーブル空間804の局所的な部分的再編成が実行されて、ホットデータを、より多くのテーブル空間804に拡散し、且つ、影響されたページ上での利用可能な空き物理的ストレージ空間の量を増大させてよい。
既存のページおよび新しいページの組み合わせが割り当てられる実施形態については、新しい実質的空きページ842が、バッファプール844内に作成される。また、矢印846で図示されるように、既存ページ843(32個の実質的空きページ826が含まれる)がバッファプール844内に追加される。ロード840前に、ロード840後に各ページ上に残る空き空間率の適切な値および追加されるべき空きページ数を含み、アンロードされたレコード834を受信するために必要なテーブル空間804内のストレージ空間が計算される。
テーブル空間804の第2のスイッチ後構成880を含む実施形態において、確保された新しい実質的空きページ842および既存の確保された実質的空きページ843がバッファプール844内に存在し、確保されたページ842は、矢印851で示されるように、テーブル空間804の連続的な部分849内に割り当てられ、いくつかの実施形態において、連続的な部分849は、既存パーティション(不図示)であってよい。いくつかの実施形態において、新しいパーティション(図7に関し説明されるような)が作成される。オンライントランザクション同期852が、アンロードされたレコード834に適用される(矢印854によって示されるように)、すなわちルーチンデータの読み取りアクティビティ、書き込みアクティビティおよび削除アクティビティが継続されている間に、データベースストレージシステム408はオフラインにされないので、連続的な部分849内の確保および割り当てられたページ空間並びに確保されたページ842および843の不注意による使用を防ぐべく、ページ842および843は「利用不可」として設定される。図8に図示されていないが、スイッチアクティビティ(本明細書でさらに説明する)が完了するまで、テーブル空間804内の影響されたページ806内に存在するレコードは、アンロードされたレコード834と並行して更新されて、その中のデータの同期の維持を容易にする。少なくとも一実施形態において、アンロードされたレコード834は、バッファプール844内の新しいページ842および既存ページ843にロード840される。
少なくとも一実施形態において、アンロードされたレコード834の割り当ての結果、アンロードされたレコード834の適切な拡散を通してホットスポットの除去が可能になる。いくつかの実施形態において、アンロードされたレコード834を持つページ857が、テーブル空間804の確保された連続的な部分849に書き込み859、すなわち送信される。従って、各アンロードされたレコード834が各ページ842および843にロードされ、ロードされたページ857がテーブル空間804または新しいパーティション(不図示)に送信される間に、オンライントランザクション同期852が影響されたレコードに継続的に適用されて、不調和なデータの可能性を軽減する。
1または複数の実施形態において、インデックス808に関連付けられたキー862が構築860され、ロードされたページ857の新しい位置が反映される。古いROWID値866と新しいROWID値868との間のマップが構築864される。影響された範囲におけるすべてのインデックス808についてインデックスキー862が構築860され、今やインデックスキー862は、新しいROWID値868に関連付けられる。従って、ロードされたページ857の位置の移行は、データテーブル内の影響された行の各々について、新しいインデックスキー862を生成することを含む。
少なくともいくつかの実施形態において、プロセス800はさらに、データページレベルにおいて、ロードされたページ857内にロードされたレコードを適切なクラスタリング順序でスイッチ872することを含む。古いレコード、すなわち第2のページグループ820内の26個のホットページ818内のレコードはロックされ(これにより、そのオンライントランザクション同期852を終了させる)、テーブル空間804から削除884され、インデックス808が更新されて、各ポインタ810を各レコードの新しい位置にシフトする、すなわち修正されたポインタ886を生成する。ページ857は、オンライントランザクション同期852を通してのさらなる更新に利用可能とされ、今やレコードへの読み取りおよび書き込み878が行われる。従って、影響されたページ範囲上でテーブル空間804の局所的な部分的再編成が実行されて、ホットデータを、より多くのテーブル空間804に拡散し、且つ、影響されたページ上での利用可能な空き物理的ストレージ空間の量を増大させてよい。
テーブル空間804の第1のスイッチ後構成870(新しい実質的空き確保ページ842のみ)およびテーブル空間804の第2のスイッチ後構成880(新しい実質的空き確保ページ842および既存の実質的空き確保ページ843の両方が用いられる)を含む実施形態は、区別される。例えば、第1のスイッチ後構成870においては、第2のページグループ820内の影響されたレコードのすべてが、修正されたポインタ876に示されるように、ロードされたページ856に転送されるわけではない。これとは対照的に、第2のスイッチ後構成880においては、第2のページグループ820内の影響されたレコードのすべてが、修正されたポインタ886が示すように、ロードされたページ857に転送される。第1のスイッチ後構成870の利点は、第2のページグループ820内のホットスポットを除去する間に、第4のページグループ824が32個の実質的空きページ826を維持する点にある。第2のスイッチ後構成880の利点は、ロードされたページ856内の任意の潜在的ホットスポットが、影響されたレコードのさらなる拡散を通して軽減される点にある。
再度図6Bを参照すると、判定操作632の結果が「いいえ」の場合、いくつかの実施形態において、プロセス600は、分析される第3の問題に進み、第3の問題は、データレコードオーバーフロー問題を含む。図6Cを参照すると、性能敏感性ワークロードの実行低下の指標640は、総レコード数に対するオーバーフローレコード数の比率、すなわちオーバーフロー率が確立された閾値に近づくまたは超えることに起因するものである。判定操作642が実行されて、再編成を正当化するほど、高オーバーフロー率の存在が十分否定的に性能に影響を及ぼしているかが判定される。判定操作642の結果が「はい」の場合、一般的な高レベル解決策は、影響されたページ範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成を実行して、オーバーフローレコードを除去する、および、影響されたページ上で利用可能な空き物理的ストレージ空間の量を増やす644のうち1または複数が行われてよい。オーバーフローレコードを除去する、および、空き物理的ストレージ空間の量を増やす644ためのこのような部分的再編成は、ユーザインタフェースを通して実装されてよく、または自動化されてよい。
図9を参照すると、高オーバーフロー率に関連する性能問題を軽減するためのプロセス900を示す概略図が図示されている。また図4を参照すると、データベース902の一部は、テーブル空間904、複数のページ906、インデックス908、および、インデックス908からそれぞれの個々のページ906に延びる複数のポインタ910と共に図示される。インデックス908およびテーブル空間904が、データベースストレージシステム408内に存在する。
それぞれのポインタ910レコードを判定すべく、ポインタレコードの範囲912が選択され、およびスキャンされる。図示の通り、5個のポインタレコード910が、オーバーフローレコードに関連付けられた範囲912内にある。第1のポインタ920は、オーバーフロー矢印926で示されるように、各オーバーフローレコードを含む第1のオーバーフローページ924に関連付けられた第1のページ922を指向する。第1のページ922は、ホットページである。第2のポインタ930は、オーバーフロー矢印936で示されるように、各オーバーフローレコードを含む第2のオーバーフローページ934に関連付けられた第2のページ932を指向する。第2のページ932は、低負荷ページである。第3のポインタ940は、オーバーフロー矢印946で示されるように、各オーバーフローレコードを含む第3のオーバーフローページ944に関連付けられた第3のページ942を指向する。第3のページ942は、低負荷ページである。第4のポインタ950は、オーバーフロー矢印956で示されるように、各オーバーフローレコードを含む第4のオーバーフローページ954に関連付けられた第4のページ952を指向する。第4のページ952は、高負荷ページであるが、ホットスポットではない。第5のポインタ960は、オーバーフロー矢印966で示されるように、各オーバーフローレコードを含む第5のオーバーフローページ964と関連付けられた第5のページ962を指向する。第5のページ962は、中間負荷ページである。従って、データベース902は、影響されたページ範囲上でのテーブル空間904の局所的な部分的再編成を正当化する十分な数のオーバーフローレコード924-964をテーブル空間904内に含み、局所的な部分的再編成が実行されて、オーバーフローレコードを除去し、および影響されたページ上で利用可能な空き物理的ストレージ空間の量を増やしてよい。
少なくとも一実施形態において、第1のページ922~第5のページ962のいずれかが、任意の確立されたパラメータを超えることなく、各オーバーフローレコードを格納する十分な空間を有する場合、各オーバーフローレコードは、第1のページ922~第5のページ962のそれぞれへ転送され、各オーバーフローページは、もはやオーバーフローレコードを含まなくなる。十分な空間がない場合、インデックス908が、各ポインタ920~960を、各オーバーフローページ924~964を直接指向するよう更新され、前のポインタレコードは削除され、これにより、オーバーフローページはページに再指定される。従って、1または複数の実施形態において、高オーバーフロー率後のデータベース970が作成される。
少なくとも一実施形態において、高オーバーフロー率後のデータベース970は、1または複数の修正されたポインタ980を含む。具体的には、第1のページ922はホットページなので、第1のページ922は、第1のオーバーフローページ924からオーバーフローレコードを受信することはできず、第1のオーバーフローページ924を指向する新しいポインタ928が作成されて、ポインタ920は削除される。また、第2のページ932は低負荷ページなので、第2のオーバーフローページ934内のオーバーフローレコードは第2のページ932に転送される。さらに、第3のページ942は低負荷ページなので、第3のオーバーフローページ944内のオーバーフローレコードは第3のページ942に転送される。また、第4のページ952は高負荷ページなので、第4のページ952は、第4のオーバーフローページ954からオーバーフローレコードを受信することはできず、第4のオーバーフローページ954を指向する新しいポインタ958が作成され、ポインタ950は削除される。また、第5のページ962は中間負荷ページなので、第5のページ962は、第5のオーバーフローページ964からオーバーフローレコードを受信できないと判定され、第5のオーバーフローページ964を指向する新しいポインタ968が作成され、ポインタ960が削除される。従って、データベース902は、影響されたページ範囲上でのテーブル空間904の局所的な部分的再編成を正当化する十分な数のオーバーフローレコード924~964をテーブル空間904内に含み、局所的な部分的再編成が実行されて、オーバーフローレコードを除去し、および影響されたページ上で利用可能な空き物理的ストレージ空間の量を増やしてよい。
再度図6Cを参照すると、判定操作642の結果が「いいえ」の場合、いくつかの実施形態において、プロセス600は、分析される第4の問題に進み、第4の問題は、データレコードの空間使用率問題を含む。データレコードの空間使用率問題に起因する性能敏感性ワークロードの実行低下の指標650は、ページI/Oトランザクション数が、影響されたテーブル空間内のレコード数のための確立された閾値に近づくまたは超えることを含む。判定操作652が実行されて、再編成を正当化するほど、空間使用率問題の存在が十分否定的に性能に影響を及ぼしているかが判定652される。判定操作652の結果が「はい」の場合、一般的な高レベル解決は、影響されたページ範囲上でのテーブルの局所的な部分的再編成を含み、局所的な部分的再編成が実行されて、デフラグメンテーション654を通して、空き空間がより均等に分布され、データベーステーブルのページ内の空き空間のための所望の分布パターンを満たすように、テーブル空間の影響されたページ内の空き空間を再編成してよい。テーブル空間をデフラグメンテーション654するこのような部分的再編成は、ユーザインタフェースを通して実装されてよく、または、自動化されてよい。
図10を参照すると、空間使用率問題に関する性能問題を軽減するためのプロセス1000を示す概略図が図示されている。また図4を参照すると、データベース1002の一部は、テーブル空間1004、複数のページ1006の範囲およびインデックス1008と共に図示される。インデックス1008およびテーブル空間1004は、データベースストレージシステム408内に存在する。
ページ1006の範囲は、複数のページ行(ラベルなし)(9個図示)を含み、各行は16個ページを含み、ページ行の数および行ごとのデータページ数は限定されない。ページ1006の範囲は、第1のページグループ、すなわち3行を含むページの第1のサブ範囲1010行を含む。同様に、ページ1006の範囲は、第2のページグループ、すなわちページの第2のサブ範囲1012、および、第3のページグループ、すなわちページの第3のサブ範囲1014を含み、またそれぞれは3行のページを含む。本開示をわかりやすくするため、ページ1006の範囲は複数の行に分割され、サブ範囲はそれぞれ3行を含む。しかしながら、各サブ範囲内のページ行の数は限定されず、サブ範囲は、限定ではないが、行の部分を含む、任意の数のページレコードを含んでよい。従って、示された実施形態は、ページ1006の範囲および特定の編成に分散されたページのサブ範囲1010、1012、1014を含む一方、本明細書で説明されるようなデータベース部分的再編成システム400の操作を可能にする任意の構成における任意の数のページ1006およびページのサブ範囲が用いられてよい。
いくつかの実施形態において、プロセス1000は、矢印1022により図示されるように、再編成モジュール440を通して、テーブル空間1004からページの第1のサブ範囲1010をアンロード1020(すなわち、コピーまたはスキャン)して、メモリデバイス406内に一時的に存在させ、これにより、一組のアンロードされたレコード1024を定義することを含む。本明細書でさらに説明されるように、スイッチアクティビティが完結されるまで、ページの第1のサブ範囲1010内のレコードは、使用中のままである。従って、再編成されるべきページの各サブ範囲1010内のレコードは、テーブル空間1004の各部分からメモリデバイス406にコピーされる。
少なくともいくつかの実施形態において、プロセス1000はまた、アンロードされたレコード1024を、矢印1036で図示されるようにバッファプール1034内に割り当てられたが新しいページ1032に再ロード1030することを含む。いくつかの実施形態において、バッファプール1034は、メモリデバイス406内に存在し、いくつかの実施形態において、バッファプールはテーブル空間1004内に存在する。再ロード1030前に、新しいページ1032が、ページの第1のサブ範囲1010内のページにマッピングされる。また、再ロード1030前に、再ロード後に各ページ上に残る空き空間率の適切な値および追加されるべき空きページ数を含み、アンロードされたレコード1024を受信するために必要なテーブル空間1004内のストレージ空間が計算される。また、1または複数の実施形態において、再ロード1030前に、影響されたページ内のレコード(不図示)、すなわちページの第1のサブ範囲1010が必要に応じてソートされ、第1のサブ範囲1010内の影響されたページ内のレコードを適切にクラスタリングする。従って、各レコードの再ロード1030前に、各レコードの任意のクラスタリングが完了される。
オンライントランザクション同期1042が、ページの第1のサブ範囲101に適用される(矢印1044によって示されるように)、すなわち、ルーチンデータの読み取りアクティビティ、書き込みアクティビティおよび削除アクティビティが継続されている間に、データベースストレージシステム408はオフラインにされないので、確保された、および割り当てられたページ1032の不注意による使用を防ぐべく、バッファプール1034内のページ1032は「利用不可」として設定される。図10に不図示であるが、スイッチアクティビティ(本明細書でさらに説明する)が完了されるまで、テーブル空間1004内の影響されたページ1006内に存在するレコードは、アンロードされたレコード1024と並行して更新されて、その中のデータの同期の維持を容易にする。アンロードされたレコード1024は、バッファプール1034内の割り当てられたページ1032に再ロード1030される。さらに、本明細書でさらに説明するように、割り当てられたページ1032内で、データページ1006の影響されたサブ範囲1010はデフラグメンテーションされて、その結果、複数の再編成されたページ1038および複数の実質的空きページ1040が生成される。複数の実質的空きページ1040に対する再編成されたページ1038の数は、ほぼ等しいものとして図示されている一方、実質的空きページに対する再編成されたページ1038の率は、本明細書で説明されるデータベース部分的再編成システム400の操作を可能にする任意の値であってよい。また、再編成されたページ1038内の空き空間に対するデータレコードの率は、本明細書で説明されるデータベース部分的再編成システム400の操作を可能にする任意の値であってよい。
1または複数の実施形態において、インデックス1008に関連付けられたキー1062が構築1060されて、再編成されたページ1038内の新しいレコードの新しい位置が反映される。古いROWID値1066と新しいROWID値1068との間のマップが構築1064される。再編成されたページ1038におけるすべてのインデックス1008についてインデックスキー1062が構築1060され、今やインデックスキー1062は、新しいROWID値1068に関連付けられる。従って、割り当てられたページ1032に再ロード1030されて、再編成されたページ1038を生成するアンロードされたレコード1024のデフラグメンテーションおよび再編成は、影響されたサブ範囲1010内の影響されたページ1006の各々の新しいインデックスキー1062の生成を含む。
少なくともいくつかの実施形態において、プロセス1000はさらに、データページレベルにおいて、ページの第1のサブ範囲1010内のデータページ1006を、再編成されたページ1038および実質的空きページ1040とスイッチ1070することを含む。データページの影響された第1のサブ範囲1010内の古いレコード(不図示)は、テーブル空間1004内でロックされて(これによりそのオンライントランザクション同期1042を終了させる)、インデックス1008が更新されて、各ポインタ(不図示)を各レコードの新しい位置にシフトさせる。バッファプール1034内の再編成されたページ1038および実質的空きページ1040は、テーブル空間1004の部分に書き込み1048、すなわち送信されて、ページの第1のサブ範囲1010を格納して、そこにある既存ページを上書きする。従って、デフラグメンテーションされ且つ再編成されたページ1038および実質的空きページ1040が、テーブル空間1004に送信される間に、オンライントランザクション同期1042が影響されたレコードに継続的に適用されて、潜在的な不調和なデータを軽減する。
ページ1006のすべてが処理されるまで、残存する第2のサブ範囲1012および第3のサブ範囲1014等のデフラグメンテーションおよび再編成が行われる。従って、再度図6B~6Cを参照すると、推奨される部分的再編成方法624、634、644および654がのうちの1または複数が実行660される。
図11を参照すると、空間使用率問題を軽減すべく、テーブル空間をデフラグメンテーションおよび再編成するためのプロセス1100を示す概略図が図示されている。テーブル空間1104、複数のページ1106の範囲およびインデックス1108が図示され、これらの3つのアーチファクトは、図10中の同様に識別されるオブジェクトと実質的に同様である。ページ1106の範囲は、ページの第1のサブ範囲1110、ページの第2のサブ範囲1112およびページの第3のサブ範囲1114を含み、これらすべての3つのサブ範囲1110、1112、1114は、低負荷ページ、中間負荷ページおよび高負荷ページの特定の組み合わせを含み、プロセスの1100の説明をわかりやすくするため、実質的空きページは除かれている。示された実施形態は、特定内容のレコードを持つ特定の編成におけるページ1106の範囲および分散されたページのサブ範囲1110、1112、1114を含む一方、本明細書で説明されるようなデータベース部分的再編成システム400の操作を可能にする、任意の量の埋め込みレコードを持つ任意の構成における任意の数のページ1106およびページのサブ範囲が用いられてよい。
複数の再編成されたページ1138Aおよび複数の実質的空きページ1140Aが、本明細書で説明されるような空間パラメータに従い生成されるように、データページ1106の影響されたサブ範囲1110がデフラグメンテーション1180される。図示されるような複数の実質的空きページ1040Aに対する再編成されたページ1038Aの率は例示的なものに過ぎず、実質的空きページ1140Aに対する再編成されたページ1138Aの率は、本明細書で説明されるデータベース部分的再編成システム400の操作を可能にする任意の値であってよい。また、再編成されたページ1138A内の空き空間に対するデータレコードの率は、本明細書で説明されるデータベース部分的再編成システム400の操作を可能にする任意の値であってよい。
同様に、本明細書で説明される空間パラメータに従い、複数の再編成されたページ1138Bおよび複数の実質的空きページ1140Bが生成されるように、データページ1106の影響されたサブ範囲1112がデフラグメンテーション1182される。図示の通り、再編成されたページ1138Bの数および実質的空きページ1140Bの数は、再編成されたページ1138Aおよび実質的空きページ1140Aから増大されている。また、本明細書で説明される空間パラメータに従い、複数の再編成されたページ1138Cおよび複数の実質的空きページ1140Cが生成されるように、データページ1106の影響されたサブ範囲1114がデフラグメンテーション1184される。図示の通り、再編成されたページ1138Cの数および実質的空きページ1140Cの数は、再編成されたページ1138Bおよび実質的空きページ1140Bから増大されている。従って、テーブル空間1104内のすべてのデータページ1106が、再編成されるかまたは実質的空きにされるまで、データページ1106のデフラグメンテーションおよび再編成が指定されたサブ範囲の各々について反復される間、影響されたテーブル空間1104を通した稼働は実質的に維持される。
図12を参照すると、パーティション化されていないテーブル空間を、パーティション化されたテーブル空間に変換するためのプロセス1200を示す概略図が図示されている。少なくともいくつかの実施形態において、図7、8、9および10~11を参照して説明した再編成の完了時に、データレコードをパーティション化することがより実用的であってよい。データベース1202は、テーブル空間1204およびインデックス1208を含む。いくつかの実施形態において、テーブル空間1204は、データページの範囲1206で埋められており、データページの14行が範囲1206内に図示されており、14は限定的な数字ではない。各行は、図10~11を参照して説明されたサブ範囲と同様の、指定のサブ範囲に属するものとして識別されてよい。しかしながら、ここで、データページの行は必ずしも、シーケンシャルまたは隣接する行に編成されない。
一実施形態において、第1のサブ範囲1210が識別され、関連付けられたデータが第1のパーティション1214に転送され、これにより、テーブル空間1204の空白部分1212が残る。同様に、第2のサブ範囲1220が識別され、関連付けられたデータが第2のパーティション1224に転送され、これにより、テーブル空間1204の空白部分1222が残る。また、第3のサブ範囲1230が識別され、関連付けられたデータが第3のパーティション1234に転送され、これにより、テーブル空間1204の空白部分1232が残る。また、第4のサブ範囲1240が識別され、関連付けられたデータが第4のパーティション1244に転送され、これにより、テーブル空間1204の空白部分のみが残る。従って、関連するデータベースシステムをオフラインにすることなく、変換によりパーティション化されていないテーブルのパーティション化が実行されることで、影響されたテーブル空間による稼働を維持してよい。
本明細書に開示されたシステム、コンピュータプログラム製品および方法は、データベースのオフライン再編成の不利な点および制約を克服することを容易にする。大規模データベースについては、性能敏感性ワークロードの定期的データ再編成は、このような再編成を必要とするデータベースの部分のみで実行され得、その間データベースの残部は稼働中のままであってよいので、データベースを稼働中止にするために必要とされる時間が大幅に低減される。また、対象部分がオフラインにならないので、再編成を受けないデータベースのより小さな部分が利用不可能となる期間は大幅に低減され、稼働の中断が最小化される。また、稼働の中断を大幅に低減できることにより、部分的再編成はより頻繁に行われて、性能敏感性ワークロードの性能をさらに高めてよい。さらに、本明細書で説明された方法およびシステムは、より多くの実質的空きデータページおよびそこに存在するデータを持つページ上の空きデータ空間を維持することで、有限の物理ストレージ空間におけるデータ管理全体を高めてよい。また、本明細書に説明された方法およびシステムは、インデックス機能を含め、各データベースシステムの自己管理を強化する。
従って、本明細書に開示された実施形態は、データベースシステムを稼働中に維持しつつ、データベースの個々の一部における小さな部分的再編成を通した大規模データベースの再編成メカニズムを提供することにより、コンピュータ技術に対する改善を提供する。このようなメカニズムは、24時間体制の稼働が必要とされ得るデータベースへのアクセスの潜在的中断を軽減する。
本開示の様々な実施形態の説明は、例示目的で記載されており、網羅的であること、あるいは、開示された実施形態への限定を意図していない。説明された実施形態の範囲および趣旨から逸脱することなく、当業者には多くの修正例および変形例が自明であろう。本明細書で用いられる用語は、実施形態の原理、市場で見られる技術の実用的な適用またはそれに対する技術的改善を最もよく説明し、あるいは、本明細書に開示された実施形態を他の当業者が理解できるように選択されている。