(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に常駐するデータベースであって、前記データベースに対する照会を管理するデータベース・マネージャを含む、前記データベースと、
前記メモリ内に常駐し、前記少なくとも１つのプロセッサによって実行されるクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベースからの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成し、前記少なくとも１つの行列を処理して前記データベース内の指定された範囲に関するクラスタ化係数を判定し、ここで前記データベース内の前記指定された範囲が前記データベースの索引の少なくとも一部を含む、前記クラスタ化係数計算機構と
を含み、前記データベース・マネージャが、前記判定されたクラスタ化係数に基づいて前記データベースに対する照会の性能を推定する
装置。
【請求項２】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に常駐するデータベースであって、前記データベースに対する照会を管理するデータベース・マネージャを含む、前記データベースと、
前記メモリ内に常駐し、前記少なくとも１つのプロセッサによって実行されるクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベースからの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成し、前記少なくとも１つの行列を処理して前記データベース内の指定された範囲に関するクラスタ化係数を判定する、前記クラスタ化係数計算機構と
を含み、前記データベースが複数の索引を含み、前記複数の索引のそれぞれが少なくとも１つのキーと、前記キーを満足する前記データベース内の少なくとも１つの対応するレコードへの参照とを有し、前記クラスタ化係数計算機構が、第１索引内の第１範囲に関する前記クラスタ化係数を判定し、第２索引内の第２範囲に関する前記クラスタ化係数を判定し、前記データベース・マネージャが、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定し、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択し、前記データベース・マネージャが、前記判定されたクラスタ化係数に基づいて前記データベースに対する照会の性能を推定する
装置。
【請求項３】
前記データベースが複数の索引を含み、前記複数の索引のそれぞれが少なくとも１つのキーと、前記キーを満足する前記データベース内の少なくとも１つの対応するレコードへの参照とを有し、前記クラスタ化係数計算機構が、第１索引内の第１範囲に関する前記クラスタ化係数を判定し、第２索引内の第２範囲に関する前記クラスタ化係数を判定し、前記データベース・マネージャが、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定し、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、請求項１に記載の装置。
【請求項４】
前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される前記相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、請求項２又は３に記載の装置。
【請求項５】
前記クラスタ化係数計算機構が、さらに、前記データベース内の選択された索引の異なる範囲での前記クラスタ化係数の分布を判定する、請求項１又は２に記載の装置。
【請求項６】
前記クラスタ化係数計算機構が、前記ブロック・サンプリングから生成されたキーと前記キーに対応するページとの順序付けられたリストから前記少なくとも１つの行列を生成し、前記キーはデータベース内の情報を突き止めるための判断基準を指定する、請求項１又は２に記載の装置。
【請求項７】
前記クラスタ化係数計算機構が、少なくとも１つのディジタル画像圧縮技法を使用して、前記少なくとも１つの行列のサイズを縮小する、請求項１又は２に記載の装置。
【請求項８】
前記ディジタル画像圧縮技法が、特異値分解を含む、請求項７に記載の装置。
【請求項９】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に常駐するデータベースであって、前記データベースが複数の索引を含み、前記複数の索引のそれぞれが少なくとも１つのキーと、前記キーを満足する前記データベース内の少なくとも１つの対応するレコードへの参照とを有し、前記データベースが、前記データベースへの照会を管理するデータベース・マネージャをさらに含み、前記キーはデータベース内の情報を突き止めるための判断基準を指定する、前記データベースと、
前記メモリ内に常駐し、前記少なくとも１つのプロセッサによって実行されるクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベース内の選択された索引からの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングからのキーと前記キーに対応するページとの順序付けられたリストを生成し、前記順序付けられたリストから２次元ビットマップを生成し、前記２次元ビットマップを処理して少なくとも１つの行列を生成し、少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小し、前記縮小された行列を処理して前記選択された索引の指定された範囲に関するクラスタ化係数を判定し、前記クラスタ化係数計算機構が、前記データベースの第１索引内の第１範囲に関する前記クラスタ化係数を判定し、前記データベースの第２索引内の第２範囲に関する前記クラスタ化係数を判定する、クラスタ化係数計算機構と
を含み、前記データベース・マネージャが、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定し、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する
装置。
【請求項１０】
データベース内の指定された範囲に関するクラスタ化係数を判定する方法であって、前記データベースを含む装置内の少なくとも１つのプロセッサが、クラスタ化係数計算機構を用いて、
（Ａ）前記指定された範囲から複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成するステップと、
（Ｃ）前記少なくとも１つの行列を処理して前記データベースの前記指定された範囲に関するクラスタ化係数を判定するステップであって、前記データベース内の前記指定された範囲が、前記データベースの索引の少なくとも一部を含む、前記判定するステップと
を実行する方法。
【請求項１１】
データベース内の指定された範囲に関するクラスタ化係数を判定する方法であって、前記データベースを含む装置内の少なくとも１つのプロセッサが、クラスタ化係数計算機構を用いて、
（Ａ）前記指定された範囲から複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成するステップと、
（Ｃ）前記少なくとも１つの行列を処理して前記データベースの前記指定された範囲に関するクラスタ化係数を判定するステップと
を実行し、前記データベース内の選択された索引の異なる範囲での前記クラスタ化係数の分布を判定するステップをさらに実行する、方法。
【請求項１２】
データベース内の指定された範囲に関するクラスタ化係数を判定する方法であって、前記データベースを含む装置内の少なくとも１つのプロセッサが、クラスタ化係数計算機構を用いて、
（Ａ）前記指定された範囲から複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成するステップと、
（Ｃ）前記少なくとも１つの行列を処理して前記データベースの前記指定された範囲に関するクラスタ化係数を判定するステップと
を実行し、
ステップ（Ｂ）が、
（Ｂ１）前記ブロック・サンプリングからのキーと前記キーに対応するページとの順序付けられたリストを生成するステップと、
（Ｂ２）前記順序付けられたリストから２次元ビットマップを生成するステップと、
（Ｂ３）前記２次元ビットマップを処理して前記少なくとも１つの行列を生成するステップと
を含む、方法。
【請求項１３】
データベース内の指定された範囲に関するクラスタ化係数を判定する方法であって、前記データベースを含む装置内の少なくとも１つのプロセッサが、クラスタ化係数計算機構を用いて、
（Ａ）前記指定された範囲から複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成するステップと、
（Ｃ）前記少なくとも１つの行列を処理して前記データベースの前記指定された範囲に関するクラスタ化係数を判定するステップと
を実行し、さらに少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小するステップを実行する、方法。
【請求項１４】
前記ディジタル画像圧縮技法が、特異値分解を含む、請求項１３に記載の方法。
【請求項１５】
１回目に、第１索引に関するクラスタ化係数を判定するために、ステップ（Ａ）、（Ｂ）、および（Ｃ）が実行され、
２回目に、第２索引に関するクラスタ化係数を判定するために、ステップ（Ａ）、（Ｂ）、および（Ｃ）が実行され、
前記少なくとも１つのプロセッサが、クラスタ化係数計算機構を用いて、前記第１索引および前記第２索引の前記クラスタ化係数に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択するステップをさらに実行する
請求項１０〜１４のいずれか一項に記載の方法。
【請求項１６】
データベース内の複数の範囲に関するクラスタ化係数分布を判定する方法であって、前記少なくとも１つのプロセッサが、クラスタ化係数計算機構を用いて、
（Ａ）前記データベースから複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングからのキーと前記キーに対応するページとの順序付けられたリストを生成するステップであって、前記キーはデータベース内の情報を突き止めるための判断基準を指定する、前記生成するステップと、
（Ｃ）前記順序付けられたリストから２次元ビットマップを生成するステップと、
（Ｄ）前記２次元ビットマップを処理して少なくとも１つの行列を生成するステップと
（Ｅ）少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小するステップと、
（Ｆ）前記少なくとも１つの行列を処理して前記データベース内の指定された範囲に関するクラスタ化係数を判定するステップと、
（Ｇ）前記データベース内の前記複数の範囲のそれぞれに関するクラスタ化係数を判定するためにステップ（Ａ）から（Ｆ）を繰り返すステップと
を実行する方法。
【請求項１７】
クラスタ化係数計算手順をコンピュータに実行させるためのプログラムを記録したコンピュータ可読記録媒体であって、
前記クラスタ化係数計算手順が、データベースからの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成し、前記少なくとも１つの行列を処理して前記データベース内の指定された範囲に関するクラスタ化係数を判定する手順であり、ここで前記データベース内の前記指定された範囲が前記データベースの索引の少なくとも一部を含む、コンピュータ可読記録媒体。
【請求項１８】
クラスタ化係数計算手順をコンピュータに実行させるためのプログラムを記録したコンピュータ可読記録媒体であって、
前記クラスタ化係数計算手順が、データベースからの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成し、前記少なくとも１つの行列を処理して前記データベース内の指定された範囲に関するクラスタ化係数を判定する手順であり、
前記クラスタ化係数計算手順がさらに、第１索引内の第１範囲に関する前記クラスタ化係数を判定し、第２索引内の第２範囲に関する前記クラスタ化係数を判定し、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定する手順である、コンピュータ記録媒体。
【請求項１９】
前記それぞれのクラスタ化係数によって示される前記相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、データベース・マネージャをさらに含む、請求項１８に記載の記録媒体。
【請求項２０】
前記クラスタ化係数計算手順が、前記データベース内の選択された索引の異なる範囲での前記クラスタ化係数の分布を判定する手順をさらに含む、請求項１７又は１８に記載の記録媒体。
【請求項２１】
前記クラスタ化係数計算手順が、前記ブロック・サンプリングから生成されたキーと前記キーに対応するページとの順序付けられたリストから前記少なくとも１つの行列を生成する手順をさらに含み、前記キーはデータベース内の情報を突き止めるための判断基準を指定する、請求項１７又は１８に記載の記録媒体。
【請求項２２】
前記クラスタ化係数計算手順が、少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小する手順をさらに含む、請求項１７又は１８に記載の記録媒体。
【請求項２３】
前記ディジタル画像圧縮技法が、特異値分解を含む、請求項２２に記載の記録媒体。
【請求項２４】
データベースであって、
（Ａ）データベース内の選択された索引からの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングからのキーと、前記キーに対応するページとの順序付けられたリストを生成し、前記順序付けられたリストから２次元ビットマップを生成し、前記２次元ビットマップを処理して少なくとも１つの行列を生成し、少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小し、前記縮小された行列を処理して前記選択された索引の指定された範囲に関するクラスタ化係数を判定するクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベースの第１索引内の第１範囲に関する前記クラスタ化係数を判定し、前記データベースの第２索引内の第２範囲に関する前記クラスタ化係数を判定する、前記クラスタ化係数計算機構と、
（Ｂ）前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定するデータベース・マネージャであって、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される前記相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、前記データベース・マネージャと
を含むデータベースが記録されたコンピュータ可読記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはコンピュータ・システムに関し、具体的には、コンピュータ・システム内のデータベースに関する。
【０００２】
【従来の技術】
コンピュータ時代の始まりから、コンピュータは、進歩し、ますます強力になってきた。現在では、コンピュータが、工学設計、機械制御、プロセス制御、情報保管、および情報アクセスを含む人間の活動の多くの分野で不可欠になっている。コンピュータの主な用途の１つが、情報の保管および検索である。
【０００３】
データベース・システムが開発され、これによって、ユーザがデータベース内の特定の情報を探索し、検索できるようにする形で、コンピュータが大量の情報を保管できるようになった。たとえば、保険会社が、その保険証券保有者の全員と、支払い履歴、掛け金、証券番号、証券タイプ、適用範囲に対する除外を含む彼らの現在の口座情報を含むデータベースを有する場合がある。データベース・システムを用いると、保険会社が、そのデータベース内の数千人の、おそらくは数百万人の保険証券保有者の中から単一の保険証券保有者の口座情報を検索できるようになる。
【０００４】
データベースには、一般に、情報に関するデータベースの探索を、すべての照会について完全なデータベース探索を実行するよりはるかに効率的にする、１つまたは複数の索引が含まれる。データベース・システムの性能は、ディスクからバッファへページをスワップする、ページングされるメモリ・システムの性能に依存する。特定の索引のキーの順序が、データベース表内のキーの物理的順序に近い場合には、この索引を使用するメモリ・ページング・システムの性能が高まる。というのは、多数のアクセスが、ページ・スワップを実行せずにページ・バッファに対して行われる可能性が高くなるからである。データベース内の列の、物理ストレージ内の対応するデータへの相関の統計的測定を、「クラスタ化係数（clustering factor）」と称する。クラスタ化係数は、物理ストレージ内のデータが物理ストレージ内でクラスタ化される（すなわち、互いに近くにある）度合を示す。
【０００５】
【発明が解決しようとする課題】
従来技術のクラスタ化係数は、通常は、メモリ・ページのサイズとページ・バッファのサイズの関数として計算される。この計算を行うことは、ページ・バッファのサイズが既知の時には比較的単純である。ページ・バッファのサイズは、一般に、バッファの仮想サイズを指定する仮想メモリ・システムについて既知である。しかし、IBM iSeries 400などの一部のコンピュータ・プラットフォームは、固定サイズのページ・バッファを提供する仮想メモリ・システムを有するのではなく、単一レベルのストアを有する。単一レベル・ストアの場合、プロセッサのアドレス空間を、オペレーティング・システムとすべてのアプリケーションの間で共用しなければならない。この理由から、ページ・バッファについて固定されたサイズをセットすることは不可能である。というのは、そのサイズが、変化する可能性があり、システム要件が変化する際に動的に変更される可能性があるからである。可変サイズのページ・バッファを有するデータベースでのクラスタ化係数を判定する装置および方法がなければ、索引のクラスタ化係数が、一部のタイプのコンピュータ・プラットフォームについて使用不能になり、クラスタ化係数に基づくデータベース性能の最適化が困難になる。
【０００６】
【課題を解決するための手段】
好ましい実施形態によれば、装置および方法が、データベースに対するブロックレベル・サンプリングを実行し、そのデータを処理して１つまたは複数の行列を生成し、１つまたは複数の行列を処理して、選択された範囲のクラスタ化係数を生成する。さらに、好ましい実施形態の装置および方法を用いると、ある範囲にわたるクラスタ化係数の分布を判定でき、これによって、クラスタ化係数が高い範囲およびクラスタ化係数が低い範囲の識別が可能になる。クラスタ化係数分布を使用して、サンプリングされたデータに対応する既存のまたは潜在的な索引を使用する探索のメモリ・ページング性能を予測することができ、したがって、特定のデータベース照会に関する、既存のまたは潜在的な索引を使用するデータベース探索の性能を予測することができる。
【０００７】
本発明の前述および他の特徴および長所は、添付図面に示される本発明の好ましい実施形態の以下の詳細な説明から明白になる。
【０００８】
【発明の実施の形態】
概要
本発明の装置および方法は、データベースのクラスタ化係数の判定に関する。データベースおよびデータベースのクラスタ化係数に精通していない人のために、関連する概念の簡単な概要をこれから示す。
【０００９】
データベース
多くの異なるタイプのデータベースが、現在使用されている。最も一般的なものが、リレーショナル・データベース（ＲＤＢ）であり、これは、当技術分野でレガシ・データベースとも称する。図１を参照すると、ほとんどのデータベースには、行と列の集合として編成される１つまたは複数の表１１０が含まれる。各列（またはフィールド）では、通常は、保管されるデータのタイプが指定され、各行は、通常は、データベース内の異なる項目（またはレコード）を表す。したがって、図１の表１１０Ｄについて、Ｃｏｌ  １（列１）に、従業員の姓が含まれ、Ｃｏｌ  ２に、従業員の名が含まれ、Ｃｏｌ  ３に、従業員の性別が含まれ、Ｃｏｌ  ４に、従業員の雇われた日が含まれると仮定する。この場合、Ｒｏｗ１（行１）は、特定の従業員、図１の例ではMary Smithの項目（レコード）を表す。さらに、Ｒｏｗ  ２には、Beth Jonesのレコードが含まれ、Ｒｏｗ  ３には、Sue Millerのレコードが含まれ、Ｒｏｗ  ４には、Bob Johnsonのレコードが含まれ、Ｒｏｗ  ５には、Ellen Nelsonのレコードが含まれる。これらの従業員の性別およびそれぞれの雇われた日が、各レコードのＣｏｌ  ３およびＣｏｌ４に示されている。
【００１０】
図１のサンプル・データベースの表１１０Ｄは、データベース表の概念を示すために、非常に小さい。多くの応用例で、データベース表に、多数の列が含まれる可能性があり、非常に多数の行が含まれる可能性があることは明白である。たとえば、IBM Corporation社の従業員のデータベースは、多数の列を有し、数万行を有する表を有する可能性がある。データベース表にそのように大量のデータがある場合に、完全な表探索の実行に、非常に時間がかかる可能性がある。その結果、索引のキー値に従ってデータベース内のデータをカテゴリ化することによってデータベース探索を高速化するために、索引が開発された。図１を参照すると、２つの索引１２０Ａおよび１２０Ｂが、図示されており、これらを、以下ではそれぞれＩｎｄｅｘ  １およびＩｎｄｅｘ  ２と呼称する。索引には、当技術分野で「述部」と称する、表内の情報を突き止めるための判断基準を指定するキーと、述部を満足するデータベース内の行を指定する値とが含まれる。この例では、Ｉｎｄｅｘ  １の述部が、従業員の姓が「Jones」であることであると仮定する。Ｒｏｗ  ２に、Jonesという姓を有する従業員のレコードが含まれ、したがって、Ｒｏｗ  ２が、この索引でそのキーのとなりに現れ、そのキーを満足するレコードであることが示される。図１のＩｎｄｅｘ  ２に示されているように、多数のレコードが１つのキーを満足する場合があることに留意されたい。
【００１１】
Ｉｎｄｅｘ  ２が、従業員の性別が女性（Ｆ）であることを指定する述部を伴うキーを有すると仮定する。Ｒｏｗ  １、Ｒｏｗ  ２、Ｒｏｗ  ３、およびＲｏｗ  ５が、この述部を満足するので、Ｉｎｄｅｘ  ２に、これらの行のそれぞれの項目が含まれる。索引がデータベース表内のデータをどれほど完全に表すかの尺度を、当技術分野で「選択性（selectivity）」と称する。索引が低い選択性を有する場合には、その索引は、データベース表内の比較的少数のレコードを表す。索引が高い選択性を有する場合には、その索引は、データベース表内の比較的多数のレコードを表す。図１のＩｎｄｅｘ  １は、データベース表１１０Ｄ内の５つのレコードのうちの１つだけを参照し、したがって、２０％の選択性を有するが、これは、図１の例について比較的低い選択性である。対照的に、Ｉｎｄｅｘ  ２は、データベース表１１０Ｄ内の５つのレコードのうちの４つを参照し、選択性が８０％であり、これは、図１の例に関して比較的高い選択性である。選択性は、基礎となる表内のどれほど多数のレコードが、索引で表されるかの尺度である。ある索引が高い選択性を有する場合に、データベースの検索に関するその索引の使用が制限される。というのは、完全な表探索が、その索引を使用する索引探索とほとんど同程度に速いからである。低い選択性を有する索引は、データベース・レコードの小さい部分だけがその索引で表されるので、データベース探索の性能を大幅に改善する可能性がある。従来技術では、索引の選択性がある閾値を越える場合に、索引を使用するのではなく、一般に完全な表探索が実行される。
【００１２】
クラスタ化係数
データベースでは、用語「クラスタ化」が、データが物理ストレージ内で一緒にグループ化される時を示すのに使用される。用語「クラスタ化比」または「クラスタ化係数」は、当技術分野で、索引で表されるデータの物理的順序に関して索引がソートされている度合を表すのに使用されてきた。クラスタ化係数は、ディスクからメモリへページを取り出し、ディスクからメモリへおよびメモリからディスクへのページのスワップを実行する、メモリ・ページング・システムの性能を推定するのに重要な尺度である。低いクラスタ化係数は、索引走査に関するより多くのページ・スワップにつながる。というのは、索引内のデータの最初のアクセスの後に、そのデータを含むページが、そのページが次にアクセスされる時にまだページ・バッファ内にある可能性が低いからである。
【００１３】
ほとんどの現代のデータベースは、データベースをチューニングし、これによってその性能を最適化するために、クラスタ化係数の計算をサポートする。クラスタ化係数は、データベース内の索引の相対効率を比較し、潜在的な索引の効率を予測するのに使用することができる。多数の既知のデータベースで、データ・マネージャが、索引ページを効率的に取り出すのを助ける、ページ・バッファ・サイズなどの情報にアクセスしてきた。従来のデータベースでは、データベース・マネージャが、照会を実行する前に、ページ・バッファのサイズを前もって知っている。図２を参照すると、データベース・マネージャは、データベース内の特定の索引または列を走査するのに必要なページ取出し入出力を、図２の行２１０に示されているように、ページ・バッファ・サイズの関数として判定する。その後、図２の行２２０に示されているように、クラスタ化係数を、ページ取出し入出力の関数として計算することができる。図２に示されたクラスタ化係数の計算は、仮想メモリ・システムを有し、したがって既知のサイズのページ・バッファを有するコンピュータ・システムについて可能である。しかし、一部のコンピュータ・システムは、固定サイズのページ・バッファを提供できる仮想メモリ・システムを有しない。たとえば、IBM iSeries 400コンピュータ・システムは、仮想メモリをサポートする２レベル・ストアではなく「単一レベル・ストア」を使用する。データベースDB2/400は、iSeries 400コンピュータ・プラットフォームで一般的に実行される、非常に人気のあるデータベースである。しかし、iSeries 400の単一レベル・ストアに起因して、索引のクラスタ化係数を図２に示されているように計算することができない。というのは、データベース用のローカルの（すなわち仮想）専用ページ・バッファがないからである。ページ・バッファのサイズは、システム負荷に従って変更することができ、したがって、ページ・バッファ・サイズを使用してクラスタ化係数を直接に計算する方法がない。下で説明する好ましい実施形態は、単一レベル・ストアを有するコンピュータ・システムならびに２レベル・ストアを有するシステムでデータベース索引のクラスタ化係数を判定するのに使用することができる方法を提供する。
【００１４】
詳細な説明
本発明は、ページ・バッファ・サイズの知識に依存しない技法を使用して、データベース内の範囲に関するクラスタ化係数を判定する方法を提供する。ブロック・レベル・サンプリングが、データベースの性能に関する統計を計算するために、現在多数のデータベースで実行される。本明細書の好ましい実施形態では、既に実行されたブロック・レベル・サンプリングからの情報を使用して、索引のクラスタ化係数を判定する。さらに、好ましい実施形態を用いると、特定の範囲にわたるクラスタ係数の計算が可能になり、任意の指定された範囲にわたってクラスタ化係数の分布を判定できるようになる。
【００１５】
図３を参照すると、好ましい実施形態によるコンピュータ・システムの１特定の実装が、IBM iSeries 400コンピュータ・システム３００である（以前はAS/400コンピュータ・システムと称した）。コンピュータ・システム３００には、主記憶３２０、大容量記憶装置インターフェース３３０、ディスプレイ・インターフェース３４０、およびネットワーク・インターフェース３５０に接続されるプロセッサ３１０が含まれる。これらのシステム構成要素は、システム・バス３６０を使用することを介して相互接続される。大容量記憶装置インターフェース３３０は、大容量記憶装置（直接アクセス記憶装置３５５など）をコンピュータ・システム３００に接続するのに使用される。直接アクセス記憶装置の１特定のタイプが、読取／書込ＣＤＲＯＭドライブであり、これは、ＣＤＲＯＭ３９５にデータを保管し、ＣＤＲＯＭ３９５からデータを読み取ることができる。
【００１６】
好ましい実施形態による主記憶３２０には、データ３２１、オペレーティング・システム３２２、データベース３２４、およびクラスタ化係数計算機構３２８が含まれる。コンピュータ・システム３００では、周知の仮想アドレッシング機構が使用され、これによって、コンピュータ・システム３００のプログラムが、主記憶３２０および直接アクセス記憶装置３５５などの複数のより小さい記憶実体にアクセスするのではなく、大きい単一の記憶実体へのアクセスだけを有するかのように振る舞うことができるようになる。したがって、データ３２１、オペレーティング・システム３２２、データベース３２４、およびクラスタ化係数計算機構３２８は、主記憶３２０内に常駐するものとして図示されているが、当業者は、これらの項目が、必ずしもすべてが同時に完全に主記憶３２０に含まれるのではないことを諒解するであろう。また、用語「メモリ」が、本明細書では、コンピュータ・システム３００のアドレス空間（すなわち仮想メモリ）全体を包括的に指すことに留意されたい。
【００１７】
データ３２１は、コンピュータ・システム３００内のあらゆるプログラムへの入力またはプログラムからの出力として働く、すべてのデータを表す。オペレーティング・システム３２２は、当業界でＯＳ／４００として既知のマルチタスク・オペレーティング・システムであるが、当業者は、本発明の趣旨および範囲が、１つのオペレーティング・システムに制限されないことを諒解するであろう。
【００１８】
プロセッサ３１０は、１つまたは複数のマイクロプロセッサおよび／または集積回路から構成することができる。プロセッサ３１０は、主記憶３２０に保管されたプログラム命令を実行する。主記憶３２０には、プロセッサ３１０がアクセスできるプログラムおよびデータが保管される。コンピュータ・システム３００が始動する時に、プロセッサ３１０は、まず、オペレーティング・システム３２２を構成するプログラム命令を実行する。オペレーティング・システム３２２は、コンピュータ・システム３００のリソースを管理する精巧なプログラムである。このリソースの一部が、プロセッサ３１０、主記憶３２０、大容量記憶装置インターフェース３３０、ディスプレイ・インターフェース３４０、ネットワーク・インターフェース３５０、およびシステム・バス３６０である。
【００１９】
データベース３２４には、表３２６と、表３２６内のデータの索引３２５が含まれる。図３には１つの表と１つの索引だけが示されているが、当業者は、データベース３２４などのデータベースに複数の表３２６および複数の索引３２５を含めることができることを諒解するであろう。
【００２０】
クラスタ化係数計算機構３２８は、データベース表３２６内の情報にアクセスして、データベース列内の順序が、物理ストレージ内の基礎となるデータの順序付けとどれほど密に相関するかを判定する。クラスタ化係数計算機構３２８は、選択された範囲にわたってクラスタ化係数を計算することが好ましく、０から１００％の範囲に正規化される。高いクラスタ化係数は、基礎となる物理ストレージ内のデータが、データベース列に関して相対的に順序付けられていることを示し、これは、メモリ・ページング・システムからのよりよい入出力性能をもたらす。低いクラスタ化係数は、基礎となる物理ストレージ内のデータが、データベース列に関して相対的に順序付けられていないことを示し、これは、低いクラスタ化係数を有する索引に基づく探索の時により多くのページ・スワップが必要になるので、メモリ・ページング・システムからの低い入出力性能をもたらす。
【００２１】
コンピュータ・システム３００は、単一のプロセッサおよび単一のシステム・バスだけを含むものとして図示されているが、当業者は、本発明を、複数のプロセッサまたは複数のバスもしくはその両方を有するコンピュータ・システムを使用して実践できることを諒解するであろう。さらに、好ましい実施形態で使用されるインターフェースのそれぞれに、プロセッサ３１０から計算集中型処理をオフロードするのに使用される別々の完全にプログラミングされたマイクロプロセッサが含まれる。しかし、当業者は、本発明が、類似する機能を実行するために単純に入出力アダプタを使用するコンピュータ・システムにも同等に適用されることを諒解するであろう。
【００２２】
ディスプレイ・インターフェース３４０は、１つまたは複数のディスプレイ３６５をコンピュータ・システム３００直接接続するのに使用される。ディスプレイ３６５は、単一の表示装置または完全にプログラム可能なワークステーションとすることができ、システム管理者がコンピュータ・システム３００と通信できるようにするのに使用される。
【００２３】
ネットワーク・インターフェース３５０によって、コンピュータ・システム３００が、コンピュータ・システムを接続することができるネットワーク３７０との間でデータを送受信でき、ネットワーク３７０に結合された１つまたは複数のコンピュータ・システム３７５と通信できるようになる。ネットワーク３７０は、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、イントラネット、またはこれらの組合せとすることができる。ネットワークへの接続の適当な方法には、既知のアナログ技法および／またはディジタル技法ならびに、将来に開発されるネットワーキング機構が含まれる。多数の異なるネットワーク・プロトコルを使用して、１つのネットワークを実施することができる。これらのプロトコルは、コンピュータがネットワークを介して通信できるようにする、特殊化されたコンピュータ・プログラムである。インターネットを介する通信に使用されるＴＣＰ／ＩＰ（伝送制御プロトコル／インターネット・プロトコル）が、適当なネットワーク・プロトコルの例である。
【００２４】
ここでは、本発明を完全に機能するコンピュータ・システムに関して説明するが、当業者が、本発明をさまざまな形態のプログラム製品として配布できることと、本発明が配布の実行に実際に使用される信号担持媒体の具体的なタイプにかかわらずに同等に適用されることを諒解するであろうことに留意することが重要である。適当な信号担持媒体の例には、ＣＤＲＯＭ（たとえば図３の３９５）およびフロッピ（Ｒ）・ディスクなどの記録可能型媒体と、ディジタル通信リンクおよびアナログ通信リンクなどの伝送型媒体が含まれる。
【００２５】
図４を参照すると、好ましい実施形態による方法４００は、データベースからブロックをランダムに選択すること（ステップ４１０）によって開始される。これらのブロックは、既存の索引に対応するものとすることができ、もしくは、データベース内のある列に対する潜在的な索引の性能を推定するためにその列に基づくブロックとすることができる。ブロック・レベル・サンプリングが、現在、従来技術の多数のデータベース・システムで異なる性能統計を収集するために行われていることに留意されたい。しかし、クラスタ化係数は、過去においてブロック・レベル・サンプリングから計算または導出されなかった。本発明では、ブロック・レベル・サンプリングが、データベースの性能統計を導出するために既に実行されており、したがって、ブロック・レベル・サンプリング情報を使用して、異なるサンプリングを必要とせずにクラスタ化係数を導出できることが認識されている。言い換えると、本発明では、ブロック・レベル・サンプリングが、他の理由から既に実行されており、したがって、この情報が、性能的にごくわずかなコストで簡単に入手可能であることが認識されている。好ましい実施形態では、ステップ４１０が、他のデータベース性能統計（クラスタ化係数以外）を収集するために現在行われている、従来技術のブロック・レベル・サンプリングのステップである。というのは、この情報が、既に使用可能であり、したがって、追加のサンプルを必要としないからである。しかし、本発明が、当技術分野で既知のデータベース性能統計を収集するために実行されるブロック・レベル・サンプリングと別のブロック・レベル・サンプリングの実行に明白に拡張されることに留意されたい。さらに、ブロック・レベル・サンプリングを実行することによって、クラスタ化係数に基づく性能推定を、索引全体に対する完全な走査を実行するのではなく、データのサンプリングに基づいて行うことができる。
【００２６】
物理データのブロック（たとえばページ）をステップ４１０で選択した後に、キー値および対応するページ番号のリストを生成する（ステップ４２０）。その後、このリストを、キー値の昇順でソートする（ステップ４３０）。その後、ソートされたリストを使用して、サンプル内のページ数に等しい深さを有し、索引内のキーの数に等しい幅を有する２次元ビットマップを生成する（ステップ４４０）。ビットマップを生成した後に、それを処理して三角行列を生成する（ステップ４５０）。その後、三角行列を処理してサイズを縮小する（ステップ４６０）。この行列のサイズは、ディジタル画像圧縮技法を使用してさらに縮小することができる（ステップ４７０）。最後に、圧縮された行列から、指定された範囲のクラスタ化係数を判定することができる（ステップ４８０）。図４に示された特定のステップが、本明細書に記載の本発明の実践に必要ではないが、好ましい実施形態によるステップの１つの適当な組合せを例示するものであることに留意されたい。本明細書に記載の好ましい実施形態は、サンプリングされたデータから行列を生成し、その行列を処理して、データベースの指定された範囲のクラスタ化係数を判定する、ステップのすべての特定のシーケンスに明白に拡張される。図４の方法４００の詳細を、下に示す特定の例に関して説明する。
【００２７】
図５は、データベース表からランダムにサンプリングされた、Ｐ１からＰ５というラベルを付けられた、物理ストレージの５ページを表す。サンプリングされたページが、選択されたデータベース索引のキーで指定される述部を満足するページであることに留意されたい。図５のページは、図４のステップ４１０を使用して選択することができる。好ましい実施形態では、ページのうちの選択された比率が、ランダムに選択される（たとえば１０％）。ページをサンプリングした後に、キー値およびそれに対応するページ番号のリストが生成され（ステップ４２０）、このリストがキー値の昇順でソートされ（ステップ４３０）、図６に示されたソートされたリスト６００がもたらされる。リスト６００を生成する際に、ページの空白部分のすべてが除外されることに留意されたい。各キーは、昇順であり（Ｋ１からＫ１３）、それに対応するページが、リスト６００に示されている。
【００２８】
順序付けられたリスト６００を使用して、図４のステップ４４０で説明した、ページの数に等しい深さとキーの数に等しい幅を有する２次元ビットマップを生成することができる。たとえば、図５および図６には、５つのページと１３個のキーがある。ビットマップを作成した後に、図７のビットマップ７００に示されているように、その値のすべてを０に初期化し、その後、ビットマップの位置［１、１］を１に初期化する。図８の行列８００に示されているように、キーの数に等しい深さとキーの数に等しい幅を有する三角行列を作成し、０に初期化し、その最初の位置［１、１］を１に初期化する。行列８００の形状は正方形に見えるが、この行列のデータ値は、三角形のパターンになっており、それが、行列８００を「三角行列」と呼ぶ理由である。
【００２９】
行列の値を、リスト６００の情報、ビットマップ７００の情報、および行列８００の他の項目の情報から生成することができる。行列８００の値は、次の論理を使用して生成することができる。
Ｍは、サンプルのキーの数である
Ｎは、サンプルのページの数である。
List[M]は、それぞれにKeyValue（キー値）およびPage#（ページ番号）が含まれるレコードの配列である（たとえば図６の６００）
BitMap[N][M]は、２次元ビットマップである（図７の７００を参照されたい）
Triangular_Matrix[M][M]は、２次元配列である（図８の８００を参照されたい）
0003798719.tif 000002
上の論理を実行することによって、図２１に示された、図５から８の例に関する結果の三角行列を生成することができる。しかし、上で示した論理の深みにはまり込まずに図２１の結果の三角行列を生成する、はるかに簡単なグラフ法がある。
【００３０】
まず、行列８００を、図７および図８に示されているようにビットマップ７００の下に位置合せし、その結果、ビットマップ７００の列Ｋ１が、行列８００の列Ｋ１に位置合せされるようにする。ビットマップ７００（図７）および行列８００（図８）の両方の位置［１、１］は、１に初期化されており、これが、最初のキーＫ１に必要な処理である。これが、上の論理がＪ＝２から始まる理由である。ここでは、図１０で矢印によって示されているように、行列の第２行Ｋ２から始める。次に、図６のリスト６００を見て、どのページ番号がキーＫ２に対応するかを判定する。リストから、ページＰ２がＫ２に対応することがわかる。このために、図９で矢印によって示されているように、ビットマップ内でＰ２に対応する行を見る。次に、Ｐ２の行を、問題のキーの数値の順序に対応する項目数だけ進む。検討中のキーは、２番目のキーなので、行Ｐ２で２位置だけ進む必要がある。この論理は非常に単純である。ビットマップのページ行の値が０である場合には、その値を１に変更し、図１０の行の対応する位置の値に、その上の値＋１を与える。ビットマップのページ行の値が１の場合には、図１０の行の対応する位置の値に、その上の値を与える。この方法を使用することによって、リスト６００（図６）、ビットマップ７００、および三角行列８００の情報から三角行列の値を簡単に生成することができる。
【００３１】
図９および図１０の特定の例について上で説明したこのグラフ法を使用すると、ページ行Ｐ２の最初の値が０であり、したがって、その値が１に変更され、図１０のＫ２行の対応する位置の値が、その上の値（１）＋１すなわち合計２になる。同様の形で、ページ行の第２項目が、０であり、１に変更され、行列の対応する列の値が、その上の値（０）＋１すなわち合計１になる。問題のキーＫ２が２番目のキーなので、図９のページ行の２つの位置を処理しただけであることに留意されたい。
【００３２】
ここで、図１２で矢印によって示されているように、次のキー、Ｋ３を検討する。図６のリスト６００を参照すると、図１１で矢印によって示されているように、Ｋ３が対応するページ番号Ｐ５を有することがわかる。ここで、三角行列８００の行Ｋ３に書き込む。Ｐ５行の最初の位置（Ｋ１）は０であり、したがって、これを１に変更し、行列のＫ３行のＫ１位置の値は、その上の値より１つ大きくなる。その上の値は２なので、図１２に示されているように、値３がＫ３行の最初の位置に配置される。同様の形で、Ｐ５行の次の２つの０が、１に変更され、三角行列の対応する位置が、それらの上の値より１つ大きくなる。図１１および図１２に示されたビットマップ７００および三角行列８００が、Ｋ３を含むＫ３までの処理を表す。Ｋ３がリスト６００（図６）の３番目のキーなので、行列８００の行Ｋ３に非０項目が３つだけあることに留意されたい。
【００３３】
ここで、図１４で矢印によって示されているように、次のキー、Ｋ４を検討する。図６のリスト６００を参照すると、図１３で矢印によって示されているように、Ｋ４が対応するページ番号Ｐ３を有することがわかる。ここで、三角行列８００の行Ｋ４に書き込む。Ｐ３行の最初の位置（Ｋ１）は０なので、これを１に変更し、Ｋ４行のＫ１位置の値が、その上の値より１つ大きくなる。上の値は３なので、図１４に示されているように、値４がＫ４行の最初の位置に配置される。同様の形で、Ｐ３行の次の３つの０が１に変更され、三角行列の対応する位置が、その上の値より１つ大きくなる。図１３および図１４に示されたビットマップ７００および三角行列８００が、Ｋ４を含むＫ４までの処理を表す。Ｋ４がリスト６００（図６）の４番目のキーなので、行Ｋ４に非０項目が４つだけあることに留意されたい。
【００３４】
ここで、図１６で矢印によって示されているように、次のキー、Ｋ５を検討する。図６のリスト６００を参照すると、図１５で矢印によって示されているように、Ｋ５が対応するページ番号Ｐ１を有することがわかる。ここで、三角行列８００の行Ｋ５に書き込む。Ｐ１行の最初の位置（Ｋ１）は１なので、Ｋ５行のＫ１位置の値が、その上の値と同一になる。上の値は４なので、図１６に示されているように、値４がＫ５行の最初の位置に配置される。Ｐ１行の２番目の位置（Ｋ２）は０なので、これを１に変更し、Ｋ５行のＫ２位置の値が、その上の値より１つ大きくなる。上の値は３なので、図１６に示されているように、値４がＫ５行の２番目の位置に配置される。同様の形で、Ｐ１行の次の３つの０が１に変更され、三角行列の対応する位置が、その上の値より１つ大きくなる。図１５および図１６に示されたビットマップ７００および三角行列８００が、Ｋ５を含むＫ５までの処理を表す。Ｋ５がリスト６００（図６）の５番目のキーなので、行Ｋ５に非０項目が５つだけあることに留意されたい。
【００３５】
ここで、図１８で矢印によって示されているように、Ｋ６を検討する。図６のリスト６００を参照すると、図１７で矢印によって示されているように、Ｋ６が対応するページ番号Ｐ５を有することがわかる。ここで、三角行列８００の行Ｋ６に書き込む。Ｐ５行の最初の３つの位置Ｋ１からＫ３は、図１５に示されているように、すべて１であるから、Ｋ６行のＫ１からＫ３位置の値は、その上の値と同一になる。同様に、Ｐ５行の位置Ｋ４からＫ６は、すべて０なので（図１５を参照されたい）、これらを１に変更し、Ｋ６行の位置Ｋ４からＫ６の値が、その上の値より１つ大きくなる。図１７および図１８に示されたビットマップ７００および三角行列８００が、Ｋ６を含むＫ６までの処理を表す。Ｋ６がリスト６００（図６）の６番目のキーなので、行Ｋ６に非０項目が６つだけあることに留意されたい。
【００３６】
行Ｋ７からＫ１３の処理が、同様の形で進行し、その結果のビットマップを図１９に示し、結果の三角行列を図２０に示す。軸が、その上のビットマップに位置合せするために入れ替えられたので、図２０の三角行列を反転する必要があることに留意されたい。このために、行列の軸を変更し、その結果の三角行列を、図２１に示す。
【００３７】
本明細書に示し、図５から２１で述べた例が、好ましい実施形態の概念を示すために極端に簡略化されていることに留意されたい。１３個のキーと５つのページだけでも、非常に大きい（１３×１３）行列で終わる。行列のサイズは、サンプルのキーの数によって決定される。Ｍ個のキーを含むＮ個のページをサンプリングする場合には、三角行列内にＭ（Ｍ−１）／２個の項目を有することになる。実世界の応用例では、キーの数およびページの数が非常に大きくなる可能性がある。その結果、結果の三角行列のサイズが、値のすべてを行列内に保管できるようにするには大きくなりすぎる可能性がある。このために、好ましい実施形態では、図４のステップ４６０および４７０に示されるように、結果の三角行列を処理して、そのサイズを縮小する。
【００３８】
三角行列（図２１に示されたものなど）で、（１００／Ｍ）％から（１００Ｍ／Ｍ）％まで変化する選択性を記憶する。しかし、クラスタ化比は、索引が十分に選択的である（すなわち、１２％などの閾値を超える）時に限って検討する必要がある。行列のサイズを縮小する方法の１つが、照会に関して索引の使用に値するには高すぎる選択性を有する索引の項目を削除することである。たとえば、次の照会を仮定する。
SELECT * FROM lineitem
WHERE 1_orderkey BETWEEN 1 AND 100000
AND 1_partkey BETWEEN 1 and 1000
ここで、1_orderkeyに対するものと1_partkeyに対するものの２つの索引がある。「1_orderkey between 1 and 100000」の選択性が９０％であり、「1_partkey between 1 and 1000」の選択性が５％である。この場合に、データベースの最適化プログラムは、索引クラスタ化に無関係に、データへのアクセス・パスとして1_partkeyを選ぶ。その結果、選択性マージンを満足する索引だけに対するクラスタ化統計を保存することが望ましい。選択性マージンが、（ｉ＊１００／Ｍ）％から（１００＊ｊ／Ｍ）％までであり、ｉ≦ｊである場合に、行列の項目数が、［（ｊ−ｉ＋１）（２Ｍ−（ｉ＋ｊ））／２］に減らされる。たとえば、選択性のマージンが、それぞれｉ＝２％およびｊ＝３０％である場合に、項目数は（０．２３５２Ｍ＊＊２＋０．８４Ｍ）であり、行列のサイズは、（０．２３５２Ｍ＊＊２＋０．８４Ｍ）／（０．５Ｍ＊＊２＋０．５Ｍ）すなわち約２．３倍に減らされる。この特定の例で、索引の選択性に従って三角行列の値をスクリーニングすることによって、項目の数が２．３倍だけ減らされたが、これは、処理された三角行列が、元の項目の４４％未満を有することを意味する。
【００３９】
三角行列の項目の数を減らすもう１つの方法は、重複したキーを除去し、両端のキーを残すことである。たとえば、key5からkey9までが同一の値（「Mary」など）を有する場合に、行列内の、key6、key7、およびkey8に対応する行および列を除去し、両端の値key5およびkey9を残す。図６のリスト６００はソートされているので、下の論理によって示されるように、新しい値が見つかるまでキーの値を単純にバッファリングする。
0003798719.tif 000003
【００４０】
三角行列は、キーを分位数に分割することによって、さらにサイズを減らすことができる。言い換えると、２つの連続する対の間の距離が等しくなるように、キーのサブセットを選択することができる。たとえば、行列の残りのキーが、Ｋ１、Ｋ２、Ｋ３、…、Ｋ１００である場合に、Ｋ１０、Ｋ２０、Ｋ３０、Ｋ４０、Ｋ５０、Ｋ６０、Ｋ７０、Ｋ８０、Ｋ９０、およびＫ１００が選択された分位数になり、２つの分位数の間の距離が１０キーになるように、対応する分位数の行および列を保つことによって、１０個の分位数を選択して行列サイズを減らすことができる。その結果、行列サイズが、１００列から１０列に減り、行列のサイズが９０％縮小される。この縮小方法では、元の行列の近似である行列が作られ、選択される分位数が多いほど、結果の行列が元の行列を正確に近似するようになる。より正確に元の行列を近似するのに十分な分位数を選択する場合には、結果の行列が、まだ大きすぎる可能性がある。
【００４１】
元の三角行列（たとえば図２１の）および上の縮小技法から生じる結果の行列のすべての分析から、行列の各項目が、その近傍に強く相関することが示される。この意味で、行列は、画像内の各画素が行列項目に写像される行列を使用して表現することができるディジタル画像に類似する。ディジタル画像では、各画素が、その近傍に相関する。したがって、好ましい実施形態では、ディジタル画像を圧縮する既知の技法を使用して、三角行列を圧縮することができる。ＫＬＭ、高速フーリエ変換、離散コサイン変換、特異値分解（ＳＶＤ）を含む、ディジタル画像を圧縮する多数の既知の技法がある。実装を簡単にするために、三角行列を圧縮するのに適する技法としてＳＶＤを選択した。ＳＶＤに関する全般的な情報および詳細については、画像処理または線形代数の参考文献を参照されたい。
【００４２】
ＳＶＤは、行列を２つの直交行列および１つの対角行列の積に書き直す周知の技法である。ＵおよびＶが、行列ＡのＳＶＤ表現の２つの直交行列であり、Ｓが、行列ＡのＳＶＤ表現の対角行列であるならば、
【数１】
0003798719.tif 000004
である。Ｕの列は、ＡＡtの固有ベクトルであり、Ｖの列は、ＡtＡの固有ベクトルである。Ｓの対角線の特異値ｒは、ＡＡtおよびＡtＡの両方の非０固有値の平方根である。これらの特異値は、大きさの降順で配置される。ベクトルｕｉが、行列Ｕの列であり、ベクトルｖｉが、行列Ｖの列であり、ｓｉが、Ａの特異値を表すならば、式（２）に示された関係が得られる。
【数２】
0003798719.tif 000005
ＳＶＤの特性の１つが、行列内の最大の重みの情報を最小の重みの情報から分離できることである。行列Ａのｋ個の最大の特異値（および対応する固有ベクトル）によって、行列内の最大の重みの情報が取り込まれる。ｋ個の最大の特異値およびそれに対応する固有ベクトル（ｋ＜＜ｒ）を保管することによって、行列を近似することができる。
【００４３】
ｋ個の最大の特異値およびそれに対応する固有ベクトルを維持しながら、下記の論理を使用することによって別個のページの数（Distinct_Pages）を判定することができる。
N=ページ・サイズ（行数）；
R=指定された索引範囲に含まれる行数
0003798719.tif 000006
その後、式（３）からクラスタ化係数を判定することができる。
クラスタ化係数＝R/(N*Distinct_Pages)    （３）
【００４４】
第１の索引範囲のクラスタ化係数を判定した後に、第１の索引範囲のクラスタ化係数を、第２の索引または範囲のクラスタ化係数と比較して、第２の索引範囲の使用と比較した第１の索引範囲を使用するデータベース照会の実行の相対効率を比較することができる。その後、相対効率に基づいてデータベース照会に適当な索引および範囲を選択することができ、これによって照会の性能が改善される可能性が高い。
【００４５】
好ましい実施形態では、図２に示された従来技術でもたらされるクラスタ化係数のなまの推定から使用可能な、はるかに大量の情報が可能である。たとえば、好ましい実施形態では、選択された索引の指定された範囲に関するクラスタ化係数を判定できるので、索引全体にわたるクラスタ化係数の分布を、好ましい実施形態によって容易に判定することができる。クラスタ化係数の分布によって、アクセスされる索引の予想される範囲に基づく、使用すべき索引範囲の決定が可能になる。したがって、ある索引のクラスタ化係数分布によって、従来技術では入手可能でない追加情報が与えられて、索引の期待される範囲に基づいて、どの索引を使用すべきかに関する決定が、さらに洗練される。
【００４６】
本実施形態のもう１つの長所は、ほとんどのデータベース・システムで既に収集されているブロック・レベル・サンプルからクラスタ化係数およびクラスタ化係数分布を判定する能力であり、これによって、サンプルが、データベース・システム内の他の有用な統計を収集するために既に存在するので、クラスタ化係数および分布の判定が性能に及ぼす影響が最小になる。たとえば、データの分布および別個の値の数の推定が、当技術分野で既知の統計である。さらに、クラスタ化係数およびクラスタ化係数分布が、好ましい実施形態では仮定されるページ・バッファ・サイズにかかわらずに判定されるので、好ましい実施形態は、単一レベル・ストアを有するコンピュータ・システムならびに仮想記憶システム（すなわち２レベル・ストア）を有するコンピュータ・システムでのクラスタ化係数およびクラスタ化係数分布の判定に成功する。
【００４７】
したがって、本明細書に開示された好ましい実施形態は、選択された索引の指定された範囲でのクラスタ化係数およびクラスタ化係数分布を判定する装置および方法を提供する。その後、クラスタ化係数情報をデータベース・マネージャによって使用して、他の索引よりすばやくデータベース探索を実行する可能性が高い適当な索引を選択することができる。さらに、データベースの列に関するクラスタ化係数を判定して、その列に対する索引の性能を推定することができる。
【００４８】
当業者は、本発明の範囲内で多数の変形形態が可能であることを諒解するであろう。したがって、本発明の好ましい実施形態に関して本発明を具体的に図示し、説明してきたが、形態および詳細におけるこれらおよび他の変更を、本発明の趣旨および範囲から逸脱せずにその中で行うことができることが、当業者に理解されるであろう。
【００４９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５０】
（１）少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に常駐するデータベースであって、前記データベースに対する照会を管理するデータベース・マネージャを含む、データベースと、
前記メモリ内に常駐し、前記少なくとも１つのプロセッサによって実行されるクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベースからの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成し、前記データベース内の指定された範囲に関するクラスタ化係数を判定するために前記少なくとも１つの行列を処理する、クラスタ化係数計算機構と
を含み、前記データベース・マネージャが、前記クラスタ化係数に基づいて前記データベースに対する照会の性能を推定する
装置。
（２）前記データベースが、それぞれが少なくとも１つのキーと前記キーを満足する前記データベース内の少なくとも１つの対応するレコードへの参照とを有する複数の索引を含み、前記クラスタ化係数計算機構が、第１索引内の第１範囲に関する前記クラスタ化係数を判定し、第２索引内の第２範囲に関する前記クラスタ化係数を判定し、前記データベース・マネージャが、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定し、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、上記（１）に記載の装置。
（３）前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、上記（１）に記載の装置。
（４）前記クラスタ化係数計算機構が、さらに、前記選択された索引の異なる範囲での前記クラスタ化係数の分布を判定する、上記（１）に記載の装置。
（５）前記クラスタ化係数計算機構が、前記ブロック・サンプリングから生成されたキーと前記キーに対応するページとの順序付けられたリストから前記少なくとも１つの行列を生成する、上記（１）に記載の装置。
（６）前記クラスタ化係数計算機構が、少なくとも１つのディジタル画像圧縮技法を使用して、前記少なくとも１つの行列のサイズを縮小する、上記（１）に記載の装置。
（７）前記ディジタル画像圧縮技法が、特異値分解を含む、上記（６）に記載の装置。
（８）少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に常駐するデータベースであって、それぞれが少なくとも１つのキーと前記キーを満足する前記データベース内の少なくとも１つの対応するレコードへの参照とを有する複数の索引を含み、さらに、前記データベースへの照会を管理するデータベース・マネージャを含む、データベースと、
前記メモリ内に常駐し、前記少なくとも１つのプロセッサによって実行されるクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベース内の選択された索引からの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングからのキーの、前記キーに対応するページを伴う順序付きリストを生成し、前記順序付きリストから２次元ビットマップを生成し、少なくとも１つの行列を生成するために前記２次元ビットマップを処理し、少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小し、前記選択された索引の指定された範囲に関するクラスタ化係数を判定するために前記縮小された行列を処理し、前記クラスタ化係数計算機構が、前記データベースの第１索引内の第１範囲に関する前記クラスタ化係数を判定し、前記データベースの第２索引内の第２範囲に関する前記クラスタ化係数を判定する、クラスタ化係数計算機構と
を含み、前記データベース・マネージャが、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定し、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する
装置。
（９）データベース内の指定された範囲に関するクラスタ化係数を判定する方法であって、
（Ａ）前記指定された範囲から複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成するステップと、
（Ｃ）前記データベースの前記指定された範囲に関するクラスタ化係数を判定するために前記少なくとも１つの行列を処理するステップと
を含む方法。
（１０）前記データベース内の前記指定された範囲が、前記データベースの索引の少なくとも一部を含む、上記（９）に記載の方法。
（１１）さらに、前記データベースの異なる範囲での前記クラスタ化係数の分布を判定するステップを含む、上記（９）に記載の方法。
（１２）ステップ（Ｂ）が、
（Ｂ１）前記ブロック・サンプリングからのキーの、前記キーに対応するページを伴う順序付きリストを生成するステップと、
（Ｂ２）前記順序付きリストから２次元ビットマップを生成するステップと、（Ｂ３）前記少なくとも１つの行列を生成するために前記２次元ビットマップを処理するステップと
を含む、上記（９）に記載の方法。
（１３）少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小するステップをさらに含む、上記（９）に記載の方法。
（１４）前記ディジタル画像圧縮技法が、特異値分解を含む、上記（１３）に記載の方法。
（１５）１回目に、第１索引に関するクラスタ化係数を判定するために、ステップ（Ａ）、（Ｂ）、および（Ｃ）が実行され、
２回目に、第２索引に関するクラスタ化係数を判定するために、ステップ（Ａ）、（Ｂ）、および（Ｃ）が実行され、
前記第１索引および前記第２索引の前記クラスタ化係数に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択するステップをさらに含む
上記（９）に記載の方法。
（１６）データベース内の複数の範囲に関するクラスタ化係数分布を判定する方法であって、
（Ａ）前記データベースから複数のランダムな物理データ・ページをブロック・サンプリングするステップと、
（Ｂ）前記ブロック・サンプリングからのキーの、前記キーに対応するページを伴う順序付きリストを生成するステップと、
（Ｃ）前記順序付きリストから２次元ビットマップを生成するステップと、
（Ｄ）少なくとも１つの行列を生成するために前記２次元ビットマップを処理するステップと
（Ｅ）少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小するステップと、
（Ｆ）前記データベース内の指定された範囲に関するクラスタ化係数を判定するために前記少なくとも１つの行列を処理するステップと、
（Ｇ）前記データベース内の前記複数の範囲のそれぞれに関するクラスタ化係数を判定するためにステップ（Ａ）から（Ｆ）を繰り返すステップと
を含む方法。
（１７）データベース内の複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングでの情報から少なくとも１つの行列を生成し、前記データベース内の指定された範囲に関するクラスタ化係数を判定するために前記少なくとも１つの行列を処理する、クラスタ化係数計算手順をコンピュータに実行させるためのプログラムを記録したコンピュータ可読記録媒体。
（１８）前記クラスタ化係数計算手順が、第１索引内の第１範囲に関する前記クラスタ化係数を判定し、第２索引内の第２範囲に関する前記クラスタ化係数を判定し、前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定する手順である、上記（１７）に記載の記録媒体。
（１９）前記信号担持媒体上に常駐し、前記それぞれのクラスタ化係数によって示される相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、データベース・マネージャをさらに含む、上記（１７）に記載の記録媒体。
（２０）前記クラスタ化係数計算手順が、さらに、前記選択された索引の異なる範囲での前記クラスタ化係数の分布を判定する、上記（１７）に記載の記録媒体。
（２１）前記クラスタ化係数計算手順が、前記ブロック・サンプリングから生成されたキーと前記キーに対応するページとの順序付きリストから前記少なくとも１つの行列を生成する、上記（１７）に記載の記録媒体。
（２２）前記クラスタ化係数計算手順が、少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小する、上記（１７）に記載の記録媒体。
（２３）前記ディジタル画像圧縮技法が、特異値分解を含む、上記（２２）に記載の記録媒体。
（２４）データベースであって、
（Ａ）データベース内の選択された索引からの複数のランダムな物理データ・ページのブロック・サンプリングを実行し、前記ブロック・サンプリングからのキーの、前記キーに対応するページを伴う順序付きリストを生成し、前記順序付きリストから２次元ビットマップを生成し、少なくとも１つの行列を生成するために前記２次元ビットマップを処理し、少なくとも１つのディジタル画像圧縮技法を使用して前記少なくとも１つの行列のサイズを縮小し、前記選択された索引の指定された範囲に関するクラスタ化係数を判定するために前記縮小された行列を処理するクラスタ化係数計算機構であって、前記クラスタ化係数計算機構が、前記データベースの第１索引内の第１範囲に関する前記クラスタ化係数を判定し、前記データベースの第２索引内の第２範囲に関する前記クラスタ化係数を判定する、クラスタ化係数計算機構と、
（Ｂ）前記第１索引の前記クラスタ化係数を前記第２索引の前記クラスタ化係数と比較することによって、前記第２索引と比較した前記第１索引の相対効率を判定するデータベース・マネージャであって、前記データベース・マネージャが、前記それぞれのクラスタ化係数によって示される前記相対効率に基づいて、前記データベースの照会のために前記第１索引および前記第２索引の１つを選択する、データベース・マネージャと
を含むデータベースが記録されたコンピュータ可読記録媒体。
【図面の簡単な説明】
【図１】従来技術のデータベースのブロック図である。
【図２】データベース索引のクラスタ化係数が従来技術で計算される方法を示す図である。
【図３】好ましい実施形態による装置のブロック図である。
【図４】好ましい実施形態による、クラスタ化係数分布を判定する方法の流れ図である。
【図５】データ・ベースからランダムにサンプリングされるブロックである５つのページを示すブロック図である。
【図６】図５に示されたページの、キー値およびそれに対応するページのページ番号のソートされたリストのブロック図である。
【図７】好ましい実施形態による、初期化されたビットマップのブロック図である。
【図８】好ましい実施形態による、初期化された三角行列のブロック図である。
【図９】好ましい実施形態による、第１の索引キーＫ１を処理した後の図７のビットマップのブロック図である。
【図１０】好ましい実施形態による、第１の索引キーＫ１を処理した後の図８の三角行列のブロック図である。
【図１１】好ましい実施形態による、第２の索引キーＫ２を処理した後の図７のビットマップのブロック図である。
【図１２】好ましい実施形態による、第２の索引キーＫ２を処理した後の図８の三角行列のブロック図である。
【図１３】好ましい実施形態による、第３の索引キーＫ３を処理した後の図７のビットマップのブロック図である。
【図１４】好ましい実施形態による、第３の索引キーＫ３を処理した後の図８の三角行列のブロック図である。
【図１５】好ましい実施形態による、第４の索引キーＫ４を処理した後の図７のビットマップのブロック図である。
【図１６】好ましい実施形態による、第４の索引キーＫ４を処理した後の図８の三角行列のブロック図である。
【図１７】好ましい実施形態による、第５の索引キーＫ５を処理した後の図７のビットマップのブロック図である。
【図１８】好ましい実施形態による、第５の索引キーＫ５を処理した後の図８の三角行列のブロック図である。
【図１９】好ましい実施形態による、索引キーＫ１からＫ１３のすべてを処理した後の図７のビットマップのブロック図である。
【図２０】好ましい実施形態による、索引キーＫ１からＫ１３のすべてを処理した後の図８の三角行列のブロック図である。
【図２１】好ましい実施形態による、図２０の三角行列から生成された三角行列のブロック図である。
【符号の説明】
３００  コンピュータ・システム
３１０  プロセッサ
３２０  主記憶
３２１  データ
３２２  オペレーティング・システム
３２４  データベース
３２５  索引
３２６  表
３２８  クラスタ化係数計算機構
３３０  大容量記憶装置インターフェース
３４０  ディスプレイ・インターフェース
３５０  ネットワーク・インターフェース
３５５  直接アクセス記憶装置
３６０  システム・バス
３６５  ディスプレイ
３７０  ネットワーク
３７５  コンピュータ・システム
３９５  ＣＤＲＯＭ
【図１】
0003798719.tif 000007
【図２】
0003798719.tif 000008
【図３】
0003798719.tif 000009
【図４】
0003798719.tif 000010
【図５】
0003798719.tif 000011
【図６】
0003798719.tif 000012
【図７】
0003798719.tif 000013
【図８】
0003798719.tif 000014
【図９】
0003798719.tif 000015
【図１０】
0003798719.tif 000016
【図１１】
0003798719.tif 000017
【図１２】
0003798719.tif 000018
【図１３】
0003798719.tif 000019
【図１４】
0003798719.tif 000020
【図１５】
0003798719.tif 000021
【図１６】
0003798719.tif 000022
【図１７】
0003798719.tif 000023
【図１８】
0003798719.tif 000024
【図１９】
0003798719.tif 000025
【図２０】
0003798719.tif 000026
【図２１】
0003798719.tif 000027