(57)【特許請求の範囲】
【請求項１】
ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測装置において、
前記インデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、該インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得するデータ取得手段と、
前記少なくとも２つの構成態様に関連する少なくとも２つの検索手法に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた、少なくとも２種の計算手法を持ち、前記データ取得手段により取得された構成態様データに応じて該少なくとも２種の計算手法を切り換えて実行することにより算出される、ブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として、取得する検索時間算出手段と、
前記少なくとも２つの構成態様に関連する少なくとも２つのエントリ挿入手法に対応した少なくとも２種の計算手法であって、前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を用いた計算手法、及び、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた計算手法を含む該少なくとも２種の計算手法を持ち、前記データ取得手段により取得された構成態様データに応じて該少なくとも２種の計算手法を切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を取得する挿入時間算出手段と、
前記平均ブランチブロック高さ（ｈ）と前記子ブロック検索時間（ｄ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、前記リーフブロック走査時間（ｓ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、前記エントリ挿入時間（ｉ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、該算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する処理時間推定手段と、
を備えるデータベース性能予測装置。
【請求項２】
前記検索時間算出手段が持つ前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）に、前記エントリ処理時間（ａ）と前記ブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値を加算する手法と、
前記レイテンシ（Ｌ）と前記エントリ処理時間（ａ）とを足し合わせた値に、前記ブロック当たりの平均エントリ数（ｍ）に関し二分探索を行った際の平均比較回数を掛け合わせる手法と、を含み、
前記挿入時間算出手段が持つ前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を足し合わせる手法と、
前記検索時間算出手段により算出される前記ブロック内で対象エントリを特定するのにかかる平均時間に、前記エントリ処理時間（ａ）と前記ブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値を加算する手法と、
を含む請求項１に記載のデータベース性能予測装置。
【請求項３】
前記データ取得手段は、各ブロックの最大エントリ数（ｋ）及び前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を更に取得し、該各ブロックの最大エントリ数（ｋ）にブロック当たりの所定使用率を掛け合わせることにより前記ブロック当たりの平均エントリ数（ｍ）を取得し、
前記データベース性能予測装置は、
前記少なくとも２つの構成態様に関連する少なくとも２つのブロック分割手法の各々に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記各ブロックの最大エントリ数（ｋ）を用いた、少なくとも２種の計算手法を持ち、前記データ取得手段により取得された構成態様データに応じて該少なくとも２種の計算手法を切り換えて実行することにより、１回のブロック分割処理にかかる平均時間を示す分割処理単位時間（ｃ）を取得する分割時間算出手段、を更に備え、
前記処理時間推定手段は、前記分割処理単位時間（ｃ）に前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を更に算出し、該平均時間を他の平均時間の合計に更に加えることにより、前記インデックスブロックへの１操作当たりの平均処理時間を推定する、
請求項１又は２に記載のデータベース性能予測装置。
【請求項４】
前記分割時間算出手段が持つ前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記各ブロックの最大エントリ数（ｋ）を用いた下記２つの式の計算を含む、
請求項３に記載のデータベース性能予測装置。
ｃ＝（Ｌ＋１．５＊ａ）＊ｋ
ｃ＝ａ＊ｋ＋２＊Ｌ
【請求項５】
前記データ取得手段は、第１記憶媒体に関する第１レイテンシ、第２記憶媒体に関する第２レイテンシ、該第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を更に取得し、
前記データベース性能予測装置は、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出する付加時間算出手段、
を更に備え、
前記検索時間算出手段は、前記子ブロック検索時間（ｄ）及び前記リーフブロック走査時間（ｓ）に、前記付加時間を含め、
前記挿入時間算出手段は、前記エントリ挿入時間（ｉ）に、前記付加時間を含め、
前記分割時間算出手段は、前記分割処理単位時間（ｃ）に、前記付加時間を含める、
請求項３又は４に記載のデータベース性能予測装置。
【請求項６】
ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測装置において、
前記インデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）及び平均ブランチブロック高さ（ｈ）を取得し、第２記憶媒体に関する第２レイテンシ、第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を取得する第１データ取得手段と、
前記第１記憶媒体に格納されるブロックから子ブロックを特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、前記第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、前記第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得する第２データ取得手段と、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出する付加時間算出手段と、
前記１次子ブロック検索時間（ｄ）、前記１次リーフブロック走査時間（ｓ）及び前記１次エントリ挿入時間（ｉ）に前記付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出する個別時間算出手段と、
前記２次子ブロック検索時間（ｄ'）と前記平均ブランチブロック高さ（ｈ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、前記２次リーフブロック走査時間（ｓ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、前記２次エントリ挿入時間（ｉ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、該算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する処理時間推定手段と、
を備えるデータベース性能予測装置。
【請求項７】
前記第１データ取得手段は、前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を更に取得し、
前記第２データ取得手段は、１回のブロック分割処理にかかる平均時間を示す１次分割処理単位時間（ｃ）を更に取得し、
前記個別時間算出手段は、前記１次分割処理単位時間（ｃ）に前記付加時間を加算することにより、２次分割処理単位時間（ｃ'）を算出し、
前記処理時間推定手段は、前記２次分割処理単位時間（ｃ'）に前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を更に算出し、該平均時間を他の平均時間の合計に更に加えることにより、前記インデックスブロックへの１操作当たりの平均処理時間を推定する、
請求項６に記載のデータベース性能予測装置。
【請求項８】
前記データ取得手段は、前記インデックスブロックにおける総エントリ数（ｎ）を更に取得し、前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を該総エントリ数（ｎ）、前記ブロック当たりの平均エントリ数（ｍ）及び前記ライト比率（ｗ）を用いた下記式により取得する分割数算出手段を含む、
請求項３から５のいずれか１項に記載のデータベース性能予測装置。
ｊ＝｛（ｎ−ｍ）／（ｍ−１）｝＊（ｗ／ｎ）
【請求項９】
ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測方法において、
コンピュータが、
前記インデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、該インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得し、
前記少なくとも２つの構成態様に関連する少なくとも２つの検索手法に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた、少なくとも２種の計算手法を、前記構成態様データに応じて切り換えて実行することにより算出される、ブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として、取得し、
前記少なくとも２つの構成態様に関連する少なくとも２つのエントリ挿入手法に対応した少なくとも２種の計算手法であって、前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を用いた計算手法、及び、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた計算手法を含む該少なくとも２種の計算手法を、前記構成態様データに応じて切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を取得し、
前記平均ブランチブロック高さ（ｈ）と前記子ブロック検索時間（ｄ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、
前記リーフブロック走査時間（ｓ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、
前記エントリ挿入時間（ｉ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、
算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する、
ことを含むデータベース性能予測方法。
【請求項１０】
ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測方法において、
コンピュータが、
前記インデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）及び平均ブランチブロック高さ（ｈ）を取得し、
第２記憶媒体に関する第２レイテンシ、第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を取得し、
前記第１記憶媒体に格納されるブロックから子ブロックを特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、前記第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、前記第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得し、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出し、
前記１次子ブロック検索時間（ｄ）、前記１次リーフブロック走査時間（ｓ）及び前記１次エントリ挿入時間（ｉ）に前記付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出し、
前記２次子ブロック検索時間（ｄ'）と前記平均ブランチブロック高さ（ｈ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、
前記２次リーフブロック走査時間（ｓ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、
前記２次エントリ挿入時間（ｉ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、
前記算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する、
ことを含むデータベース性能予測方法。
【請求項１１】
前記第１データ取得手段は、前記インデックスブロックにおける総エントリ数（ｎ）を更に取得し、前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を該総エントリ数（ｎ）、前記ブロック当たりの平均エントリ数（ｍ）及び前記ライト比率（ｗ）を用いた下記式により取得する分割数算出手段を含む、
請求項７に記載のデータベース性能予測装置。
ｊ＝｛（ｎ−ｍ）／（ｍ−１）｝＊（ｗ／ｎ）
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデックスブロックが付与されたデータベース性能の予測技術に関する。
【背景技術】
【０００２】
ツリー型のインデックスとして、Ｂツリーインデックスが広く用いられている。下記非特許文献１には、Ｂツリーを用いた検索、及び、Ｂツリーへのデータの挿入と削除のアルゴリズムが記載されている。また、下記非特許文献２には、広く用いられている関係データベースのＯＲＡＣＬＥ（登録商標）におけるＢツリーの説明が記載されている。【０００３】
図１０には、下記非特許文献２の図５から図７を参考にしたＢツリーインデックスの構成例が示される。ＯＲＡＣＬＥ（登録商標）では、或る単位（例えば８ＫＢ）で記憶領域が管理され、この単位がブロックと呼ばれる。ブロックには、データブロック、リーフブロック、ブランチブロックの三種類が含まれる。データブロックには、データ行全体が格納される。インデックスは、リーフブロック及びブランチブロックに格納される。よって、リーフブロック及びブランチブロックはインデックスブロックとも呼ばれる。リーフブロックは、インデックスブロックの中の最下層のブロックである。ブランチブロックは、リーフブロック又は他のブランチブロックへのリンクを持つブロックである。【０００４】
リーフブロックとブランチブロックには、インデックスとなる少なくとも１つのエントリが格納される。最上位のブランチブロックは特にルートブロックと呼ばれる場合がある。各エントリは、検索対象となる列の値（以降キーと呼ぶ）及び識別子（ＩＤ）をそれぞれ含む。識別子は、データ行又は他のブロックを特定するためのデータである。リーフブロックのエントリに含まれる識別子は、データブロックのいずれか１つのデータ行を特定し、ブランチブロックのエントリに含まれる識別子は、他のブランチブロックのいずれか１つ又はリーフブロックのいずれか１つを特定する。よって、検索条件を満たすキーを持つリーフブロックを特定するためには、サーチャは、ブランチブロック中のキーをその検索条件のデータと順次比較し、識別子を用いてブランチブロックをたどっていく。【０００５】
Ｂツリーは、低速なハードディスクから高速なメモリへとブロックをコピーするのがボトルネックになることを暗黙に想定して、設計されている。下記非特許文献１の「Balancing」のセクションには、ブロックを読むことはディスクアクセスを伴うため、Ｂツリーの高さを低く保つことが重要であると記載されている。実際、多くのブロックがハードディスクに記録され、一部のブロックのみがメモリ上にキャッシュされる状況では、ほとんどの場合、ブロックはディスクから読まれる。【０００６】
この場合、性能のボトルネックはディスクアクセスとなる。メモリ上のデータへのアクセスのレイテンシとメモリ上のデータのデータ転送速度（帯域）は、ディスクに関するそれらよりも大幅に優れているからである。そこで、各ブロックのサイズをディスクＩ／Ｏの単位に合わせることにより、ディスクアクセスの最小化が図られている。【０００７】
また、下記非特許文献５から７では、Ｂツリー等のデータの物理配置の案が提案されている。下記非特許文献５では、参照間隔が５分以下であればハードディスクではなくメモリにデータを置くことが有効であること（５分ルール）、１０バイトをメモリに置くことで毎秒１命令を削減できるのであればメモリを余分に利用したとしても有効であることが提案されている。【０００８】
上記５分ルールについて更に説明する。５分ルールとは、以下の条件式が満たされるか否かが、データをメモリに置くことに対して採算が取れるか否かの分岐点であり、参照間隔Ｒが５分の場合に当該条件式が満たされるというものである。
（Ａ／Ｒ）−（Ｍ＊Ｂ）＝０
Ｂ＜Ｂｍａｘ、Ａ＝２０００、Ｍ＝０．００５、Ｂ＝１３３３
ここで、Ｒは参照間隔、Ｍはメモリのバイト単価、Ａはディスクの帯域単価、Ｂはデータサイズ、Ｂｍａｘはディスクのブロックサイズを示す。【０００９】
下記非特許文献６では、非特許文献１の１０年後の環境においては、ランダムにアクセスされるブロックは５分以下、シーケンシャルにアクセスされるブロックは１分以下の参照間隔であれば、ブロックをハードディスクではなくメモリに置くことが有効である旨、記載されている。更に、下記非特許文献６によれば、ディスクの帯域及びレイテンシでモデル化されたブロックアクセスにかかる時間と、ブロックにアクセスすることで検索対象を絞り込める度合いから、適切なＢツリーのブロックサイズが求められている。【００１０】
下記非特許文献７では、下記非特許文献１の２０年後の環境においては、メモリとフラッシュメモリの間に上記５分ルールが成り立つことが記載されている。また、ディスクに置かれたデータをフラッシュメモリに格納するのが有効となる参照間隔が２時間であることも記載されている。下記非特許文献７によれば、Ｂツリーのブロックサイズに関して、ディスクは５１２ＫＢ、フラッシュメモリは２ＫＢにすることが有効であるとの結果が得られている。【００１１】
このようなデータベース性能を向上させ得る技術として、ＯＲＡＣＬＥ（登録商標）のオプティマイザが存在する。下記非特許文献８では、ＣＢＯ（Cost Base Optimizer）において、ＳＱＬ文に対応する最適な実行計画を作成するために利用されるオペレーションコストＣＯＳＴが以下の式で算出されることが記載されている。
【数１】
0006020448.tif 000002
ＣＰＵ＿ＣＯＳＴはオペレーションに必要なＣＰＵ（Central Processing Unit）サイクル数に比例する値であり、ＩＯ＿ＣＯＳＴはオペレーションによって読み込まれるブロック数に比例する値である。ＳＲＥＡＤＴＩＭは、単一ブロックのディスクからのランダムリードの平均レスポンス時間（ｍｓｅｃ）、ＣＰＵＳＰＥＥＤは１秒当たりの平均サイクル数（ＭＨｚ）である。【００１２】
下記非特許文献９では、挿入操作においてアクセスされるブロック数を挿入操作にかかるコストとして次のように計算することが記載されている（pp.20参照）。
insertion cost = search cost + rewrite data block + rewrite index block + split rewrite = (3 + 1) + 1 + 1 + 2 = 8 (blocks)
下記非特許文献９によれば、ユーザは、「split rewrite」の数として適切な値を入力する必要があり、Ｂツリーの高さを３と仮定することにより、「search cost」に３が設定されている。一方、アクセスにかかる時間は一定であると仮定して、この時間は次のように算出される（pp. 371参照）。
Block access cost = disk access time to a block from a random starting location = average disk seek time + average rotational delay + block transfer【００１３】
下記特許文献１では、データベース管理システムに関してアクセス経路を選択する際に、隣接ブロックにアクセスする度合を考慮することが提案されている。下記特許文献１における手法は、ディスクの隣接するブロックにアクセスする時間と、隣接しないブロックにアクセスする時間、各行の処理にかかる時間、アクセスするブロック数、隣接しないブロックへのアクセス数から、大まかな実行時間の予測値を算出する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平２−５４３４７号公報
【非特許文献】
【００１５】
【非特許文献１】Comer, D., "Ubiquitous B-Tree", ACM Computing Surveys, vol.11, no.2, p.121-137, June 1979
【非特許文献２】"Oracle Database概要", 10g リリース2, 部品番号：B19215-02, 2006年3月（図5-7）, http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19215-02.pdf
【非特許文献３】Drepper, U., "What Every Programmer Should Know about Memory", Red Hat Inc., November 21, 2007, http://people.redhat.com/drepper/cpumemory.pdf
【非特許文献４】Mohan, C., "Implications of Storage Class Memories (SCM) on Software Architectures", 13th International Workshop on High Performance Transaction Systems (HPTS), October 2009, http://www.hpts.ws/session2/mohan.pdf
【非特許文献５】Gray, J. and Putzolu, G. F., "The 5 Minute Rule For Trading Memory for Disc Accesses and The 10 Byte Rule for Trading Memory for CPU Time", Proceedings of SIGMOD 87, pp. 395 - 398, June 1987.
【非特許文献６】Gray, J. and Graefe, G., "The Five-Minute Rule Ten Years Later, and Other Computer Storage Rules of Thumb", SIGMOD Record 26, 4, September 1997.
【非特許文献７】Graefe, G., "The Five-Minute Rule Twenty Years Later, and How Flash Memory Changes the Rules", Proceedings of the Third International Workshop on Data Management on New Hardware, June 2007.
【非特許文献８】小田 圭二, "門外不出のOracle現場ワザ", 第4章 Oracleデータベースの頭脳 「オプティマイザ」徹底研究, http://www.oracle.com/technology/global/jp/pub/jp/db_magazine/mongai/chapter4_2.html#part2
【非特許文献９】Sam S. Lightstone, Toby J. Teorey, Tom Nadeau., "Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more (The Morgan Kaufmann Series in Data Management Systems)", Morgan Kaufmann; 4th Revised edition, 2007.
【発明の概要】
【００１６】
上述のように、データベースシステムを実現している各種ハードウェア資源の仕様を考慮して、データベースの性能を向上させるための様々な手法が提案されている。例えば、上述の非特許文献５から７において、ハードディスクのような２次記憶（補助記憶）へのアクセスがボトルネックとなる問題を解決するために、データの物理的配置の最適化が提案されている。
【００１７】
ところが、近年、メモリの低価格化と大容量化に伴い、Ｂツリーの多くのブロックをメモリに格納することができるようになった。この状況では、ディスクアクセスはデータベース性能のボトルネックにはならない。更に、２次記憶としてのディスクの代わりに、フラッシュメモリを用いることも一般的になってきた。
【００１８】
上記非特許文献３及び４では、記憶媒体であるキャッシュ、メモリ、フラッシュ及びディスクに関する仕様として、レイテンシ、帯域及び価格が記載されている（図１１参照）。例えば、上記非特許文献３によれば、或るＣＰＵのＬ２キャッシュのデータにアクセスすると、１４サイクル以下の遅延が発生する。この遅延は、２．５から３．０（ＧＨｚ）のＣＰＵでは、概ね０．００５（ｕｓ）に相当する。なお、図１１におけるフラッシュのレイテンシは、リードレイテンシである。
【００１９】
このように、データベースシステムを実現し得るハードウェア環境は多様化している。従って、データベースシステムを実現している環境に応じた適切な手法を選択しなければ、性能向上を果たすことはできない。従って、データベース操作に係る時間のようなデータベース性能を予測することは大変重要である。この点に関し、例えば、上述の特許文献１、非特許文献８及び９では、最適な実行計画を生成するために、操作コストや処理時間が予測されている。
【００２０】
しかしながら、これら予測手法は精度が低いという問題がある。これら予測手法は、例えば、インデックスブロックの構成態様、インデックスブロックへの操作手法、各操作を形成する詳細処理、インデックスブロックの物理配置等を考慮していないからである。構成態様としては、例えば、各ブロックにおいてエントリがソートされた状態で格納される態様、当該エントリがソートされていない状態で格納される態様が存在する。更に、操作手法としては、例えば、各ブロックの検索において、先頭のエントリから順に検索する手法、二分探索法により検索する手法が存在する。また、他の操作手法として、例えば、エントリの挿入において、空き領域の先頭に挿入する手法、ソートされたエントリ中の適切な位置に挿入する手法が存在する。詳細処理としては、例えば、エントリ挿入時におけるブロック分割処理がある。物理配置とは、対象ブロックが格納されている位置（記憶媒体）である。
【００２１】
このような各要因は、インデックスブロックが付与されたデータベース性能の予測精度に大きく影響を与える。
【００２２】
本発明の目的は、ツリー構造を持つインデックスが付与されたデータベースに対する操作にかかる時間を高精度で予測する技術を提供することにある。
【００２３】
本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【００２４】
第１の態様は、ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測装置に関する。第１の態様に係るデータベース性能予測装置は、当該インデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得するデータ取得手段と、上記少なくとも２つの構成態様に関連する少なくとも２つの検索手法に対応し、かつ、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いた、少なくとも２種の計算手法を持ち、データ取得手段により取得された構成態様データに応じて少なくとも２種の計算手法を切り換えて実行することにより算出される、ブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として、取得する検索時間算出手段と、少なくとも２つの構成態様に関連する少なくとも２つのエントリ挿入手法に対応した少なくとも２種の計算手法であって、前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を用いた計算手法、及び、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いた計算手法を含む少なくとも２種の計算手法を持ち、データ取得手段により取得された構成態様データに応じて少なくとも２種の計算手法を切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を取得する挿入時間算出手段と、平均ブランチブロック高さ（ｈ）と子ブロック検索時間（ｄ）とを掛け合わせることにより、インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、リーフブロック走査時間（ｓ）とライト比率（ｗ）とを用いて、インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、エントリ挿入時間（ｉ）とライト比率（ｗ）とを用いて、インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、このように算出された各平均時間の合計を、インデックスブロックへの１操作当たりの平均処理時間として推定する処理時間推定手段と、を備える。
【００２５】
第２の態様は、ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測装置に関する。第２の態様に係るデータベース性能予測装置は、インデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）及び平均ブランチブロック高さ（ｈ）を取得し、第２記憶媒体に関する第２レイテンシ、第１記憶媒体にインデックスブロックの対象部分が格納されておらず第２記憶媒体から対象部分を転送する必要のある確率を示すキャッシュミス率、及び、第２記憶媒体から第１記憶媒体へのブロック当たりのデータ転送時間を取得する第１データ取得手段と、第１記憶媒体に格納されるブロックから子ブロックを特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得する第２データ取得手段と、第２レイテンシに、第２記憶媒体から第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出する付加時間算出手段と、１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）及び１次エントリ挿入時間（ｉ）に付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出する個別時間算出手段と、２次子ブロック検索時間（ｄ'）と平均ブランチブロック高さ（ｈ）とを掛け合わせることにより、インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、２次リーフブロック走査時間（ｓ'）とライト比率（ｗ）とを用いて、インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、２次エントリ挿入時間（ｉ'）とライト比率（ｗ）とを用いて、インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、算出された各平均時間の合計を、インデックスブロックへの１操作当たりの平均処理時間として推定する処理時間推定手段と、を備える。
【００２６】
第３の態様は、ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測方法に関する。第３の態様に係るデータベース性能予測方法は、コンピュータが、インデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得し、少なくとも２つの構成態様に関連する少なくとも２つの検索手法に対応し、かつ、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いた、少なくとも２種の計算手法を、構成態様データに応じて切り換えて実行することにより算出される、ブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として、取得し、少なくとも２つの構成態様に関連する少なくとも２つのエントリ挿入手法に対応した少なくとも２種の計算手法であって、レイテンシ（Ｌ）及びエントリ処理時間（ａ）を用いた計算手法、及び、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いた計算手法を含む少なくとも２種の計算手法を、構成態様データに応じて切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を取得し、平均ブランチブロック高さ（ｈ）と子ブロック検索時間（ｄ）とを掛け合わせることにより、インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、リーフブロック走査時間（ｓ）とライト比率（ｗ）とを用いて、インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、エントリ挿入時間（ｉ）とライト比率（ｗ）とを用いて、インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、算出された各平均時間の合計を、インデックスブロックへの１操作当たりの平均処理時間として推定する、ことを含む。
【００２７】
第４の態様は、ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測方法に関する。第４の態様に係るデータベース性能予測方法は、コンピュータが、インデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）及び平均ブランチブロック高さ（ｈ）を取得し、第２記憶媒体に関する第２レイテンシ、第１記憶媒体にインデックスブロックの対象部分が格納されておらず第２記憶媒体から対象部分を転送する必要のある確率を示すキャッシュミス率、及び、第２記憶媒体から第１記憶媒体へのブロック当たりのデータ転送時間を取得し、第１記憶媒体に格納されるブロックから子ブロックを特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得し、第２レイテンシに、第２記憶媒体から第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出し、１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）及び１次エントリ挿入時間（ｉ）に付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出し、２次子ブロック検索時間（ｄ'）と平均ブランチブロック高さ（ｈ）とを掛け合わせることにより、インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、２次リーフブロック走査時間（ｓ'）とライト比率（ｗ）とを用いて、インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、２次エントリ挿入時間（ｉ'）とライト比率（ｗ）とを用いて、インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、算出された各平均時間の合計を、インデックスブロックへの１操作当たりの平均処理時間として推定する、ことを含む。
【００２８】
なお、本発明の他の態様としては、上記各態様の構成をコンピュータに実現させるコンピュータプログラムであってもよいし、このようなコンピュータプログラムを格納するコンピュータ読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【００２９】
上記各態様によれば、ツリー構造を持つインデックスが付与されたデータベースに対する操作にかかる時間を高精度で予測する技術を提供することができる。
【図面の簡単な説明】
【００３０】
【図１】図１は、第１実施形態におけるデータベース性能予測装置の構成例を概念的に示す図である。
【図２】図２は、第１実施形態におけるデータベース性能予測装置の動作例をデータの流れと共に示す図である。
【図３】図３は、第２実施形態におけるデータベース性能予測装置の構成例を概念的に示す図である。
【図４】図４は、第２実施形態におけるデータベース性能予測装置の動作例をデータの流れと共に示す図である。
【図５】図５は、第３実施形態におけるデータベース性能予測装置の構成例を概念的に示す図である。
【図６】図６は、第３実施形態におけるデータベース性能予測装置の動作例をデータの流れと共に示す図である。
【図７】図７は、第４実施形態におけるデータベース性能予測装置の構成例を概念的に示す図である。
【図８】図８は、第４実施形態におけるデータベース性能予測装置の動作例をデータの流れと共に示す図である。
【図９】図９は、第５実施形態におけるデータベース性能予測装置の動作例をデータの流れと共に示す図である。
【図１０】図１０は、Ｂツリーインデックスの構成例を示す図である。
【図１１】図１１は、各記憶媒体の仕様の例を示す図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
【００３２】
［第１実施形態］
以下、本発明の第１実施形態としてのデータベース性能予測装置について説明する。第１実施形態におけるデータベース性能予測装置は、データベース性能として、ツリー構造を持つインデックスが付与されたデータベースに対する操作にかかる時間を評価（予測）する。本実施形態では、予測対象のデータベースに付与されるインデックスはツリー構造に格納されるものであればよく、Ｂツリーと呼ばれる技術に限定されない。
【００３３】
〔装置構成〕
図１は、第１実施形態におけるデータベース性能予測装置の構成例を概念的に示す図である。データベース性能予測装置（以降、単に、予測装置と表記する）１０は、図１に示すように、ハードウェア構成として、ＣＰＵ１、メモリ２、入出力インタフェース（Ｉ／Ｆ）３等を有する。メモリ２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク、可搬型記憶媒体等である。入出力Ｉ／Ｆ３は、他の装置と通信を行う通信装置等と接続される。入出力Ｉ／Ｆ３は、表示装置や入力装置等のようなユーザインタフェース装置と接続されてもよい。なお、本実施形態は、予測装置１０のハードウェア構成を限定しない。
【００３４】
予測装置１０は、ツリー構造のインデックスブロックを含むデータベースの性能予測として、当該インデックスブロックへの１操作当たりの平均処理時間を推定する。予測装置１０の予測対象である当該データベースは、予測装置１０上で実現されてもよいし、他のコンピュータ上で実現されてもよい。
【００３５】
予測対象のデータベースは、例えば、図１０で示した例のような構成を持つ。以降、インデックスエントリの識別子によりリンクされた各インデックスブロックにおいて、そのインデックスエントリを含むブランチブロックを親ブロックと表記し、そのインデックスエントリの識別子で特定されるリーフブロック又は他のブランチブロックを子ブロックと表記する場合もある。
【００３６】
第１実施形態における予測装置１０は、図１に示されるように、データ取得部１１、検索時間算出部１５、挿入時間算出部１６、処理時間推定部１８等を有する。これら各処理部は、メモリ２に格納されるプログラムがＣＰＵ１により実行されることにより実現される。当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ３を介してインストールされ、メモリ２に格納される。
【００３７】
データ取得部１１は、予測対象のデータベースのインデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得する。
【００３８】
構成態様データは、少なくとも２つの構成態様のうち、予測対象のインデックスブロックで採用されている構成態様を特定するためのデータである。ここで、構成態様とは、ブロック内のエントリがソートされているか否か、ブロック内のエントリの検索手法及び操作手法など、予測対象のインデックスブロックで採用され得る形態を意味する。
【００３９】
第１実施形態では、２つの構成態様がサポートされる。具体的には、第１の構成態様は、ブロック内のエントリがソートされておらず、先頭のエントリから順に検索する手法（以降、全部検索手法と表記する）が検索手法として採用され、空き領域の先頭に挿入する手法がエントリ挿入手法として採用される形態を示す。第２の構成態様は、ブロック内のエントリがソートされており、二分探索法により検索する手法（以降、二分探索手法と表記する）が検索手法として採用され、ソートされたエントリ中の適切な位置に挿入する手法がエントリ挿入手法として採用される形態を示す。なお、本実施形態は、サポートすべき構成態様をこのような２つの構成態様に限定せず、その他の検索手法及びその他のエントリ挿入手法を加えて、３つ以上の構成態様がサポートされてもよい。
【００４０】
データ取得部１１は、入出力Ｉ／Ｆ３に接続されるユーザインタフェース装置を用いてユーザが入力することにより、上述のような各情報を取得する。この場合、データ取得部１１は、各情報を入力する画面を表示装置（図示せず）に表示させ、この画面に入力されたデータを上述の各情報として取得する。また、データ取得部１１は、各情報を他の装置から通信を介して取得してもよいし、各情報を格納する可搬型記憶媒体から取得してもよい。
【００４１】
検索時間算出部１５は、データ取得部１１により取得された、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いて、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）を算出する。子ブロック検索時間（ｄ）は、或るブランチブロックから或る子ブロック（一段下位のブロック）を特定するのにかかる平均時間を示す。リーフブロック走査時間（ｓ）は、リーフブロック内で対象エントリを特定するのにかかる平均時間を示す。検索時間算出部１５は、ブランチブロック内又はリーフブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として算出する。
【００４２】
検索時間算出部１５は、上記少なくとも２つの構成態様が示す少なくとも２つの検索手法に対応し、かつ、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いた少なくとも２種の計算手法を持つ。例えば、検索時間算出部１５は、全部検索手法及び二分探索手法の各々に対応する２種の計算手法を持つ。
【００４３】
検索時間算出部１５は、データ取得部１１により取得された構成態様データに応じて少なくとも２種の計算手法を切り換えて実行することによりブロック内で対象エントリを特定するのにかかる平均時間を算出する。検索時間算出部１５は、この算出された平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として取得する。
【００４４】
検索時間算出部１５が持つ少なくとも２種の計算手法の例を以下に挙げる。第１の構成態様（全部検索手法）に対応する計算手法の例が以下の（式１）であり、第２の構成態様（二分探索手法）に対応する計算手法の例が以下の（式２）である。以下の式における「＊」は乗算を示す。
ｄ＝Ｌ＋ａ＊ｍ、ｓ＝Ｌ＋ａ＊ｍ      （式１）
ｄ＝（Ｌ＋ａ）＊ｌｏｇ２ｍ、ｓ＝（Ｌ＋ａ）＊ｌｏｇ２ｍ      （式２）
【００４５】
全部検索手法に対応する計算では、各ブロックにおいて全エントリが検索されると仮定し、（式１）に示されるように、レイテンシ（Ｌ）に、エントリ処理時間（ａ）とブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値が加算される。一方、二分探索手法に対応する計算では、一回の比較でレイテンシ（Ｌ）とエントリ処理時間（ａ）がかかると仮定し、（式２）に示されるように、レイテンシ（Ｌ）とエントリ処理時間（ａ）とを足し合わせた値に、ブロック当たりの平均エントリ数（ｍ）に関し二分探索を行った際の平均比較回数が掛け合わされる。
【００４６】
なお、上記（式１）の第２項（ａ＊ｍ）は、対象のエントリが特定されるまでに参照されるエントリ数の精度を上げるための所定の係数（α）を更に掛け合わせた項（α＊ａ＊ｍ）とすることもできる。
【００４７】
挿入時間算出部１６は、上記少なくとも２つの構成態様が示す少なくとも２つのエントリ挿入処理に対応した少なくとも２種の計算手法を、データ取得部１１により取得された構成態様データに応じて切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を算出する。挿入時間算出部１６は、少なくとも２種の計算手法として、レイテンシ（Ｌ）及びエントリ処理時間（ａ）を用いた計算手法、及び、レイテンシ（Ｌ）、エントリ処理時間（ａ）及びブロック当たりの平均エントリ数（ｍ）を用いた計算手法を持つ。
【００４８】
挿入時間算出部１６が持つ少なくとも２種の計算手法の例を以下に挙げる。第１の構成態様に対応する計算手法の例が以下の（式３）であり、第２の構成態様に対応する計算手法の例が以下の（式４）である。
ｉ＝Ｌ＋ａ      （式３）
ｉ＝（Ｌ＋ａ）＊ｌｏｇ２ｍ＋ａ＊ｍ      （式４）
【００４９】
第１の構成態様に対応する計算では、空き領域の先頭に１つのエントリが挿入されるため、空きレイテンシ（Ｌ）及びエントリ処理時間（ａ）が合算される。一方、第２の構成態様に対応する計算では、エントリの挿入箇所を特定するのにかかる時間と、エントリを挿入するために既に格納されているエントリの順番を移動させるのにかかる時間とが合算される。具体的には、（式４）の前半の項が前者の時間を示し、後半の項が後者の時間を示す。（式４）の例によれば、（式４）の前半の項は、（式２）と同じになっている。また、エントリの順番を移動させるのにかかる時間（後半の項）は、移動させる必要のある平均エントリ数（ｍ／２）に、１つのエントリの移動時間（２＊ａ）が掛け合わされることにより算出される（ａ＊ｍ）。１つのエントリの移動時間は、そのエントリを読む時間（ａ）とそのエントリを移動後の位置に書く時間（ａ）とを含む。
【００５０】
なお、上記（式４）の第２項（ａ＊ｍ）は、移動させる必要のある平均エントリ数の精度を上げるための所定の係数（α）を更に掛け合わせたものとすることもできる（α＊ａ＊ｍ）。
【００５１】
処理時間推定部１８は、検索時間算出部１５により算出された子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）、挿入時間算出部１６により算出されたエントリ挿入時間（ｉ）、データ取得部１１により取得された情報を用いて、インデックスブロックへの１操作当たりの平均処理時間（ｔ）を算出する。処理時間推定部１８は、この算出された時間を当該データベースに対する操作にかかる時間として推定する。なお、推定する時間において、データブロックへの操作にかかる時間が考慮されていないのは、データブロックへの操作にかかる時間がデータベース全体の性能に与える影響が、インデックスブロックへの操作に比較して小さいからである。即ち、データブロックへの操作（処理）よりもインデックスブロックへの操作のほうが実行される頻度が多いからである。
【００５２】
処理時間推定部１８は、インデックスブロックへの１操作を形成する詳細処理毎に、その処理にかかる平均時間をそれぞれ算出し、各平均時間を合算することにより、インデックスブロックへの１操作当たりの平均処理時間（ｔ）を算出する。具体的には、処理時間推定部１８は、インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間（以降、リーフブロック特定時間と表記する）、インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間（以降、エントリ特定時間と表記する）、インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間（以降、エントリ挿入時間と表記する）を算出する。
【００５３】
例えば、処理時間推定部１８は、以下の（式５）を用いて、最終的な平均処理時間（ｔ）を算出する。
ｔ＝ｈ＊ｄ＋（１−ｗ）＊ｓ＋ｗ＊ｉ      （式５）
（式５）に示されるように、処理時間推定部１８は、平均ブランチブロック高さ（ｈ）と子ブロック検索時間（ｄ）とを掛け合わせることにより、当該リーフブロック特定時間を算出する（式５の第１項）。処理時間推定部１８は、リーフブロック走査時間（ｓ）とライト比率（ｗ）とを用いて、当該エントリ特定時間を算出する（式５の第２項）。処理時間推定部１８は、エントリ挿入時間（ｉ）とライト比率（ｗ）とを用いて、当該エントリ挿入時間を算出する（式５の第３項）。
【００５４】
〔動作例〕
図２は、第１実施形態における予測装置１０の動作例をデータの流れと共に示す図である。予測装置１０では、まず、データ取得部１１が、構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ処理時間（ａ）、レイテンシ（Ｌ）、平均ブランチブロック高さ（ｈ）及びライト比率（ｗ）を取得する（Ｓ１）。
【００５５】
次に、検索時間算出部１５及び挿入時間算出部１６が、ブロック当たりの平均エントリ数（ｍ）、エントリ処理時間（ａ）及びレイテンシ（Ｌ）を用いて、構成態様データに対応する計算を行う（Ｓ２）。これにより、子ブロック検索時間（ｄ）、リーフブロック走査時間（ｓ）及びエントリ挿入時間（ｉ）が算出される（Ｓ２−１、Ｓ２−２、Ｓ２−３）。処理（Ｓ２−１）、（Ｓ２−２）及び（Ｓ２−３）は並列に実行されてもよいし、所定の順番でシーケンシャルに実行されてもよい。
【００５６】
最終的に、処理時間推定部１８が、処理（Ｓ２）で算出された、子ブロック検索時間（ｄ）、リーフブロック走査時間（ｓ）及びエントリ挿入時間（ｉ）と共に、データ取得部１１により取得された平均ブランチブロック高さ（ｈ）及びライト比率（ｗ）を用いて、平均処理時間（ｔ）を算出する（Ｓ３）。
【００５７】
〔第１実施形態の作用及び効果〕
上述のように、第１実施形態における予測装置１０では、データ取得部１１により取得された情報に基づいて、インデックスブロックに対する各種詳細処理にかかる各時間が検索時間算出部１５及び挿入時間算出部１６によりそれぞれ算出される。具体的には、或るブランチブロックから或る子ブロック（一段下位のブロック）を特定するのにかかる平均時間（子ブロック検索時間（ｄ））、リーフブロック内で対象エントリを特定するのにかかる平均時間（リーフブロック走査時間（ｓ））及び、リーフブロックに対象エントリを挿入するのにかかる平均時間（エントリ挿入時間（ｉ））が算出される。
【００５８】
このとき、子ブロック検索時間（ｄ）、リーフブロック走査時間（ｓ）及びエントリ挿入時間（ｉ）を算出する手法は、予測対象のインデックスブロックに採用されている構成態様を示す構成態様データに応じて切り替えられる。具体的には、全部検索手法が採用されるインデックスブロックに対しては、全部検索手法での処理内容が反映された計算が実行され、二分探索手法が採用されるインデックスブロックに対しては、二分探索手法での処理内容が反映された計算が実行される。同様に、エントリ挿入時間を得るために、インデックスブロックに採用されているエントリ挿入手法での処理内容が反映された計算が実行される。
【００５９】
即ち、第１実施形態では、インデックスブロックの構成態様、インデックスブロックへの操作手法が反映された状態で、インデックスブロックへの１操作当たりの平均処理時間（ｔ）が算出される。従って、第１実施形態によれば、ツリー構造を持つインデックスが付与されたデータベースに対する操作にかかる時間を高精度で予測することができる。
【００６０】
［第２実施形態］
以下、第２実施形態における予測装置１０について、第１実施形態と異なる内容を中心に説明する。第２実施形態における予測装置１０は、エントリ挿入時におけるブロック分割処理にかかる時間を更に考慮して、ツリー構造を持つインデックスが付与されたデータベースに対する操作にかかる時間を予測する。なお、以下の説明では、第１実施形態と同じ内容については適宜省略される。
【００６１】
〔装置構成〕
図３は、第２実施形態における予測装置１０の構成例を概念的に示す図である。第２実施形態における予測装置１０は、第１実施形態の構成に加えて、分割時間算出部２１を更に有する。分割時間算出部２１についても、メモリ２に格納されるプログラムがＣＰＵ１により実行されることにより実現される。
【００６２】
データ取得部１１は、第１実施形態で挙げた情報に加えて、各ブロックの最大エントリ数（ｋ）及びインデックスブロックへの１操作当たりのブロック分割数（ｊ）を更に取得する。また、第２実施形態におけるデータ取得部１１は、取得された各ブロックの最大エントリ数（ｋ）を用いた計算により、ブロック当たりの平均エントリ数（ｍ）を取得する。具体的には、データ取得部１１は、各ブロックの最大エントリ数（ｋ）にブロック当たりの所定使用率を掛け合わせることにより算出する。この所定使用率は、予めデータ取得部１１が保持していればよく、例えば、０．７５に設定される。
【００６３】
分割時間算出部２１は、データ取得部１１により取得された、レイテンシ（Ｌ）、エントリ処理時間（ａ）及び各ブロックの最大エントリ数（ｋ）を用いて、１回のブロック分割処理にかかる平均時間を示す分割処理単位時間（ｃ）を算出する。分割時間算出部２１は、データ取得部１１により取得された構成態様データに応じて少なくとも２種の計算手法を切り換えて実行することにより、当該分割処理単位時間（ｃ）を算出する。
【００６４】
分割時間算出部２１は、上記少なくとも２つの構成態様が示す少なくとも２つのブロック分割手法の各々に対応し、かつ、レイテンシ（Ｌ）、エントリ処理時間（ａ）及び各ブロックの最大エントリ数（ｋ）を用いた少なくとも２種の計算手法を持つ。本実施形態における分割時間算出部２１は、ブロック内のエントリがソートされているか否かに応じて異なる２つのブロック分割手法の各々に対応する２種の計算手法を持つ。
【００６５】
分割時間算出部２１が持つ少なくとも２種の計算手法の例を以下に挙げる。第１の構成態様に対応する計算手法の例が以下の（式６）であり、第２の構成態様に対応する計算手法の例が以下の（式７）である。
ｃ＝（Ｌ＋１．５＊ａ）＊ｋ      （式６）
ｃ＝ａ＊ｋ＋２Ｌ      （式７）
【００６６】
第１の構成態様では、ブロック内のエントリ数が最大エントリ数となっている場合にブロック分割処理が行われ、ブロック分割処理は、移動させるエントリを特定するために全部のエントリを参照し、半数のエントリを移動させると仮定する。即ち、この仮定では、分割対象のブロック内では、半数のエントリには参照のみが行われ、残りの半数のエントリには参照及び書き込みが行われる。よって、第１の構成態様が示すブロック分割処理では、１エントリに対する処理として、１．５倍のエントリ処理時間（ａ）と１つのレイテンシ（Ｌ）とがかかる。１エントリに対する処理当たり１つのレイテンシ（Ｌ）がかかるとの考えは、移動させるエントリと参照のみのエントリとの割合が平均で同じになり、かつ、移動で１つのレイテンシ（Ｌ）、参照で１つのレイテンシ（Ｌ）が必要となるとの考えに基づく。最終的に、最大エントリ数分のエントリに対して上記１エントリ当たりの処理時間がかかるため、第１の構成態様に対応する計算式は、（式６）のようになる。
【００６７】
なお、上記（式６）は、ブロック分割処理の実行条件を、最大エントリ数に対するブロック内エントリ数の割合が所定割合βを超える場合とし、各ブロックの最大エントリ数（ｋ）にβが掛け合わされた式（（Ｌ＋１．５＊ａ）＊ｋ＊β）とすることもできる。更に、移動されるエントリ数の割合を代えることにより１．５を他の数値に代えてもよい。
【００６８】
一方、第２の構成態様では、ブロック内のエントリ数が最大エントリ数となっている場合にブロック分割処理が行われ、ブロック内のエントリはソートされているため、ブロック分割処理は、中央以降に位置するエントリを一括で他のブロックに移動させると仮定する。よって、中央のエントリへのアクセスに１つのレイテンシ（Ｌ）がかかり、最初の書き込み（移動）のアクセスに１つのレイテンシ（Ｌ）がかかるため、１回のブロック分割処理には２Ｌかかる。更に、半数のエントリに対して参照及び書き込み（移動）が行われるため、ブロック分割処理における１エントリに対する処理として１エントリ処理時間（ａ）（＝（１／２）＊２＊ａ）かかる。結果、第２の構成態様に対応する計算式は、（式７）のようになる。
【００６９】
（式７）についても同様に、移動されるエントリ数の割合を代えることにより、第２項の数値「２」を代えてもよいし、第１項に所定係数を掛け合わせてもよい。第１項に掛け合わせる所定係数は、例えば、ブロック分割処理の実行条件を、最大エントリ数に対するブロック内エントリ数の割合が所定割合βを超える場合とし、この所定割合βと移動されるエントリ数の割合とを加味した値に決定される。
【００７０】
処理時間推定部１８は、データ取得部１１により取得されたブロック分割数（ｊ）を分割時間算出部２１で算出された分割処理単位時間（ｃ）に掛け合わせることにより、インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を更に算出し、このブロック分割処理にかかる平均時間を第１実施形態で述べた他の平均時間の合計に更に加えることにより、インデックスブロックへの１操作当たりの平均処理時間を算出する。
【００７１】
例えば、処理時間推定部１８は、以下の（式８）を用いて、最終的な平均処理時間（ｔ）を算出する。以下の（式８）では、最後の項が、インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間に相当する。
ｔ＝ｈ＊ｄ＋（１−ｗ）＊ｓ＋ｗ＊ｉ＋ｃ＊ｊ      （式８）
【００７２】
〔動作例〕
図４は、第２実施形態における予測装置１０の動作例をデータの流れと共に示す図である。予測装置１０では、まず、データ取得部１１が、第１実施形態で挙げた各情報に加えて、各ブロックの最大エントリ数（ｋ）及び１操作当たりのブロック分割数（ｊ）を更に取得する（Ｓ１）。第２実施形態では、データ取得部１１は、各ブロックの最大エントリ数（ｋ）を用いて、ブロック当たりの平均エントリ数（ｍ）を算出する（Ｓ１−１）。
【００７３】
第２実施形態では、図２に示される第１実施形態の動作例における処理（Ｓ２）において、分割時間算出部２１が、エントリ処理時間（ａ）、レイテンシ（Ｌ）及び各ブロックの最大エントリ数（ｋ）を用いて、構成態様データに対応する計算を行う（Ｓ２−４）。これにより、子ブロック検索時間（ｄ）、リーフブロック走査時間（ｓ）及びエントリ挿入時間（ｉ）に加えて、分割処理単位時間（ｃ）が更に算出される。
【００７４】
処理時間推定部１８は、第１実施形態で算出される値に、分割処理単位時間（ｃ）と１操作当たりのブロック分割数（ｊ）とを掛け合わせた値を加算することにより、平均処理時間（ｔ）を算出する（Ｓ３）。
【００７５】
〔第２実施形態における作用及び効果〕
上述のように、第２実施形態における予測装置１０では、１回のブロック分割処理にかかる平均時間を示す分割処理単位時間（ｃ）が分割時間算出部２１により算出され、この分割処理単位時間（ｃ）と１操作当たりのブロック分割数（ｊ）とが掛け合わされることにより１操作当たりのブロック分割処理にかかる平均時間が算出される。そして、第１実施形態で述べた、リーフブロック特定時間、エントリ特定時間及びエントリ挿入時間の合計に更にそのブロック分割処理にかかる平均時間が合算されることにより、最終的な平均処理時間（ｔ）が算出される。
【００７６】
このように、第２実施形態では、インデックスブロックへの操作の詳細処理としてのブロック分割処理をも反映させた状態で、インデックスブロックへの１操作当たりの平均処理時間（ｔ）が算出される。従って、第２実施形態によれば、ツリー構造を持つインデックスが付与されたデータベースに対する操作にかかる時間を第１実施形態よりもより高精度で予測することができる。
【００７７】
更に、第２実施形態では、分割処理単位時間（ｃ）を算出する手法が、ブロック分割処理の内容に影響を与えるインデックスブロックの構成態様に応じて切り替えられる。結果、インデックスブロックに採用されているブロック分割処理手法での処理内容が反映された計算が実行されることにより、分割処理単位時間（ｃ）が算出される。よって、第２実施形態によれば、インデックスブロックの構成態様を考慮することにより、高精度の分割処理単位時間（ｃ）を得ることができる。
【００７８】
［第３実施形態］
以下、第３実施形態における予測装置１０について、第１実施形態及び第２実施形態と異なる内容を中心に説明する。第３実施形態における予測装置１０は、インデックスブロックの物理配置を更に考慮して、データベースに対する操作にかかる時間を予測する。なお、以下の説明では、第１実施形態及び第２実施形態と同じ内容については適宜省略される。
【００７９】
〔装置構成〕
図５は、第３実施形態における予測装置１０の構成例を概念的に示す図である。第３実施形態における予測装置１０は、第２実施形態の構成に加えて、付加時間算出部３１を更に有する。付加時間算出部３１についても、メモリ２に格納されるプログラムがＣＰＵ１により実行されることにより実現される。
【００８０】
データ取得部１１は、第１実施形態で挙げた情報に加えて、第１記憶媒体にインデックスブロックの対象部分が格納されておらず第２記憶媒体から対象部分を転送する必要のある確率を示すキャッシュミス率（１−Ｈ）、及び、第２記憶媒体から第１記憶媒体へのブロック当たりのデータ転送時間（ｕ）を更に取得する。また、データ取得部１１は、第１実施形態で挙げたレイテンシ（Ｌ）として、第１記憶媒体に関する第１レイテンシ（Ｌ）及び第２記憶媒体に関する第２レイテンシ（Ｌ'）を取得する。なお、データ取得部１１は、第１記憶媒体にインデックスブロックの対象部分が格納されており第２記憶媒体から対象部分を転送する必要のない確率を示すキャッシュヒット率（Ｈ）を取得し、このキャッシュヒット率（Ｈ）からキャッシュミス率（１−Ｈ）を算出するようにしてもよい。
【００８１】
ここで、第１記憶媒体とは、第２記憶媒体よりも高速な記憶媒体であり、第２記憶媒体に格納されるインデックスブロックの一部を格納する記憶媒体を意味する。例えば、図１１の例によれば、第１記憶媒体がメモリ（ＤＩＭＭ  ＤＤＲ３）であり、第２記憶媒体がディスク（ＳＡＴＡ）である。なお、第１記憶媒体はキャッシュ（Ｌ２）であってもよいし、第２記憶媒体はフラッシュメモリであってもよい。また、第１記憶媒体は、メインメモリ、主記憶、一次記憶などと呼ばれ、第２記憶媒体は、補助記憶、二次記憶などと呼ばれる。本実施形態は、第１記憶媒体及び第２記憶媒体の具体的実現形態を限定しない。
【００８２】
付加時間算出部３１は、第１記憶媒体に対象のインデックスブロックが格納されておらず、第２記憶媒体から第１記憶媒体にその対象のインデックスブロックを転送し格納するのにかかる時間（以降、キャッシュミス時間と表記する）を算出し、このキャッシュミス時間にキャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出する。本実施形態では、キャッシュミス時間は、第２記憶媒体にアクセスするのにかかる第２レイテンシ（Ｌ'）に、第２記憶媒体から第１記憶媒体に対象のインデックスブロックを転送するのにかかるデータ転送時間（ｕ）を加算することにより算出される。
【００８３】
検索時間算出部１５は、第１実施形態で述べた手法により算出された子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）に、付加時間算出部３１により算出された付加時間（ｕ）を加算することにより、第３実施形態における子ブロック検索時間（ｄ'）及びリーフブロック走査時間（ｓ'）を算出する。例えば、検索時間算出部１５は、次の（式９）を用いて、子ブロック検索時間（ｄ'）及びリーフブロック走査時間（ｓ'）を算出する。
ｄ'＝ｄ＋（Ｌ'＋ｕ）＊（１−Ｈ）、ｓ'＝ｓ＋（Ｌ'＋ｕ）＊（１−Ｈ）    （式９）
【００８４】
挿入時間算出部１６は、第１実施形態で述べた手法により算出されたエントリ挿入時間（ｉ）に、付加時間算出部３１により算出された付加時間（ｕ）を加算することにより、第３実施形態におけるエントリ挿入時間（ｉ'）を算出する。例えば、挿入時間算出部１６は、次の（式１０）を用いて、エントリ挿入時間（ｉ'）を算出する。
ｉ'＝ｉ＋（Ｌ'＋ｕ）＊（１−Ｈ）      （式１０）
【００８５】
分割時間算出部２１は、第２実施形態で述べた手法により算出された分割処理単位時間（ｃ）に、付加時間算出部３１により算出された付加時間（ｕ）を加算することにより、第３実施形態における分割処理単位時間（ｃ'）を算出する。例えば、分割時間算出部２１は、次の（式１１）を用いて、分割処理単位時間（ｃ）を算出する。
ｃ'＝ｃ＋（Ｌ'＋ｕ）＊（１−Ｈ）      （式１１）
【００８６】
処理時間推定部１８は、このように算出された、子ブロック検索時間（ｄ'）、リーフブロック走査時間（ｓ'）、エントリ挿入時間（ｉ'）、分割処理単位時間（ｃ'）を第２実施形態と同様の方法で利用することにより、インデックスブロックへの１操作当たりの平均処理時間（ｔ）を算出する。具体的には、処理時間推定部１８は、次の（式１２）を用いて、当該平均処理時間（ｔ）を算出する。
ｔ＝ｈ＊ｄ'＋（１−ｗ）＊ｓ'＋ｗ＊ｉ'＋ｃ'＊ｊ      （式１２）
【００８７】
図６は、第３実施形態における予測装置１０の動作例をデータの流れと共に示す図である。予測装置１０では、まず、データ取得部１１が、第２実施形態で挙げた各情報に加えて、ブロック当たりのデータ転送時間（ｕ）及びキャッシュミス率（１−Ｈ）を取得する。また、第３実施形態では、第１実施形態におけるレイテンシ（Ｌ）として、第１レイテンシ（Ｌ）と第２レイテンシ（Ｌ'）とが取得される。
【００８８】
第３実施形態では、図４に示される第２実施形態の動作例における処理（Ｓ２）において、付加時間算出部３１が、第２レイテンシ（Ｌ'）、ブロック当たりのデータ転送時間（ｕ）及びキャッシュミス率（１−Ｈ）を用いて、キャッシュミスに関する付加時間を算出する（Ｓ２−５）。
【００８９】
次に、第３実施形態では、検索時間算出部１５、挿入時間算出部１６及び分割時間算出部２１が、子ブロック検索時間（ｄ）、リーフブロック走査時間（ｓ）、エントリ挿入時間（ｉ）及び分割処理単位時間（ｃ）に上記付加時間をそれぞれ加算する（Ｓ３）。処理時間推定部１８は、この付加時間が加算された子ブロック検索時間（ｄ'）、リーフブロック走査時間（ｓ'）、エントリ挿入時間（ｉ'）及び分割処理単位時間（ｃ'）を用いて、平均処理時間（ｔ）を算出する（Ｓ４）。
【００９０】
〔第３実施形態における作用及び効果〕
このように、第３実施形態では、キャッシュミス時特有の処理時間が付加時間（ｕ）として算出され、この付加時間を含む形で、各種処理にかかる時間（子ブロック検索時間（ｄ'）、リーフブロック走査時間（ｓ'）、エントリ挿入時間（ｉ'）、分割処理単位時間（ｃ'））がそれぞれ算出される。
【００９１】
よって、第３実施形態によれば、キャッシュヒット時及びキャッシュミス時の各処理の内容を反映させた状態で最終的な平均処理時間（ｔ）を算出することができる。即ち、第３実施形態によれば、インデックスブロックの物理配置をも考慮して、データベースに対する操作にかかる時間を、第１実施形態及び第２実施形態よりもより高精度に予測することができる。
【００９２】
［第４実施形態］
以下、第４実施形態における予測装置１０について、第１実施形態から第３実施形態と異なる内容を中心に説明する。第４実施形態は、第３実施形態とは異なる構成において、インデックスブロックの物理配置を考慮してデータベースに対する操作にかかる時間を予測する。なお、以下の説明では、第１実施形態から第３実施形態と同じ内容については適宜省略される。
【００９３】
〔装置構成〕
図７は、第４実施形態における予測装置１０の構成例を概念的に示す図である。第４実施形態における予測装置１０は、データ取得部４１、個別時間算出部４２、付加時間算出部４３及び処理時間推定部４４等を有する。これら各処理部は、メモリ２に格納されるプログラムがＣＰＵ１により実行されることにより実現される。
【００９４】
データ取得部４１は、予測対象のデータベースのインデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）、平均ブランチブロック高さ（ｈ）、第２記憶媒体に関する第２レイテンシ（Ｌ'）、第１記憶媒体にインデックスブロックの対象部分が格納されておらず第２記憶媒体から対象部分を転送する必要のある確率を示すキャッシュミス率（１−Ｈ）、及び、第２記憶媒体から第１記憶媒体へのブロック当たりのデータ転送時間（ｕ）を取得する。ここで、ライト比率（ｗ）、平均ブランチブロック高さ（ｈ）、第２レイテンシ（Ｌ'）、キャッシュミス率（１−Ｈ）、及びデータ転送時間（ｕ）は、第１実施形態及び第３実施形態におけるものと同意である。
【００９５】
更に、データ取得部４１は、第１記憶媒体に格納されるブランチブロックから子ブロック（他のブランチブロック又はリーフブロック）を特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得する。
【００９６】
データ取得部４１は、入出力Ｉ／Ｆ３に接続されるユーザインタフェース装置を用いてユーザが入力することにより、上述のような各情報を取得する。この場合、データ取得部４１は、各情報を入力する画面を表示装置（図示せず）に表示させ、この画面に入力されたデータを上述の各情報として取得する。また、データ取得部４１は、各情報を他の装置から通信を介して取得してもよいし、各情報を格納する可搬型記憶媒体から取得してもよい。また、データ取得部４１は、第１実施形態と同様の手法で算出された子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）並びにエントリ挿入時間（ｉ）を１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）及び１次エントリ挿入時間（ｉ）として取得してもよい。
【００９７】
付加時間算出部４３は、第３実施形態と同様の手法により、キャッシュミスに関する付加時間を算出する。
【００９８】
個別時間算出部４２は、１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）及び１次エントリ挿入時間（ｉ）に、付加時間算出部４３により算出された付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出する。個別時間算出部４２におけるこの計算は、第３実施形態における（式９）及び（式１０）と同様である。
【００９９】
処理時間推定部４４は、個別時間算出部４２により算出された、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）、データ取得部４１により取得された各情報を用いて、インデックスブロックへの１操作当たりの平均処理時間（ｔ）を算出する。具体的には、処理時間推定部４４は、次の（式１３）を用いて、当該平均処理時間（ｔ）を算出する。
ｔ＝ｈ＊ｄ'＋（１−ｗ）＊ｓ'＋ｗ＊ｉ'      （式１３）
【０１００】
上記（式１３）における第１項（ｈ＊ｄ'）は、インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を示す。その第２項（（１−ｗ）＊ｓ'）は、インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を示す。その第３項（ｗ＊ｉ'）は、インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を示す。
【０１０１】
図８は、第４実施形態における予測装置１０の動作例をデータの流れと共に示す図である。予測装置１０では、まず、データ取得部４１が、第２記憶媒体に関する第２レイテンシ（Ｌ'）、ブロック当たりのデータ転送時間（ｕ）、キャッシュミス率（１−Ｈ）、平均ブランチブロック高さ（ｈ）、ライト比率（ｗ）を取得する（Ｓ１）。データ取得部４１は、更に、１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）及び１次エントリ挿入時間（ｉ）を取得する（Ｓ１）。
【０１０２】
次に、付加時間算出部４３が、第３実施形態と同様に、付加時間を算出する（Ｓ２）。
【０１０３】
続いて、個別時間算出部４２は、データ取得部１１により取得された、１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）及び１次エントリ挿入時間（ｉ）に、付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出する（Ｓ３）。
【０１０４】
最終的に、処理時間推定部４４は、個別時間算出部４２により算出された、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）と、データ取得部４１により取得された平均ブランチブロック高さ（ｈ）及びライト比率（ｗ）とを用いて、平均処理時間（ｔ）を算出する（Ｓ４）。
【０１０５】
〔第４実施形態の作用及び効果〕
このように第４実施形態では、キャッシュミス時特有の処理時間が付加時間（ｕ）として算出され、この付加時間を含む形で、各種処理にかかる時間（２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）、２次エントリ挿入時間（ｉ'））がそれぞれ算出される。また、第４実施形態では、これら各種処理にかかる時間を算出する上で利用される１次子ブロック検索時間（ｄ）、１次リーフブロック走査時間（ｓ）、１次エントリ挿入時間（ｉ）は、第１実施形態の手法の他、様々な手法で取得され得る。
【０１０６】
第４実施形態によれば、キャッシュヒット時及びキャッシュミス時の各処理の内容を反映させた状態で最終的な平均処理時間（ｔ）を算出することができるため、データベースに対する操作にかかる時間を高精度に推定することができる。
【０１０７】
［第５実施形態］
以下、第５実施形態における予測装置１０について、第４実施形態と異なる内容を中心に説明する。第５実施形態は、第４実施形態の構成に加えて、エントリ挿入時におけるブロック分割処理にかかる時間を算出する構成を更に有する。なお、以下の説明では、他の実施形態と同じ内容については適宜省略される。
【０１０８】
〔装置構成〕
第５実施形態における予測装置１０は、第４実施形態と同様の構成を有する（図７参照）。
【０１０９】
データ取得部４１は、インデックスブロックへの１操作当たりのブロック分割数（ｊ）、１回のブロック分割処理にかかる平均時間を示す１次分割処理単位時間（ｃ）を更に取得する。これら各情報についても、第４実施形態と同様に、様々な手法により取得される。１次分割処理単位時間（ｃ）は、第２実施形態と同様の手法により算出されてもよい（上記（式６）及び（式７）参照）。
【０１１０】
個別時間算出部４２は、第４実施形態での処理に加えて、２次分割処理単位時間（ｃ'）を更に算出する。２次分割処理単位時間（ｃ'）は、１次分割処理単位時間（ｃ）に付加時間を加算することにより算出される。
【０１１１】
処理時間推定部４４は、第４実施形態での処理に加えて、インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を更に算出する。この平均時間は、個別時間算出部４２により算出された２次分割処理単位時間（ｃ'）にインデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより算出される。処理時間推定部４４は、ブロック分割処理にかかる平均時間を他の平均時間の合計に更に加えることにより、インデックスブロックへの１操作当たりの平均処理時間を推定する。具体的には、処理時間推定部４４は、上記（式１２）を用いて、当該平均処理時間（ｔ）を算出する。
【０１１２】
〔動作例〕
図９は、第５実施形態における予測装置１０の動作例をデータの流れと共に示す図である。第５実施形態では、データ取得部４１が、第４実施形態で挙げた情報に加えて、１次分割処理単位時間（ｃ）及び１操作当たりのブロック分割数（ｊ）を更に取得する（Ｓ１）。
【０１１３】
付加時間算出部４３により付加時間が算出された（Ｓ２）後、付加時間算出部４３が、第４実施形態での算出処理に加えて、１次分割処理単位時間（ｃ）に付加時間を加算することにより、２次分割処理単位時間（ｃ'）を更に算出する（Ｓ３）。
【０１１４】
処理時間推定部４４は、第４実施形態で用いた情報に加えて、第２次分割処理単位時間（ｃ'）及び１操作当たりのブロック分割数（ｊ）を更に用いて、平均処理時間（ｔ）を算出する（Ｓ４）。
【０１１５】
〔第５実施形態における作用及び効果〕
このように、第５実施形態では、付加時間を含む形で、１回のブロック分割処理にかかる平均時間が算出され、この算出結果に応じて、インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間が算出される。第５実施形態では、第４実施形態における構成に加えてこの算出結果を用いることによりインデックスブロックへの１操作当たりの平均処理時間（ｔ）が算出される。
【０１１６】
従って、第５実施形態によれば、データの物理配置のみならず、ブロック分割処理をも反映させた状態で、最終的な平均処理時間（ｔ）を算出することができるため、データベースに対する操作にかかる時間を高精度に推定することができる。
【０１１７】
［変形例］
上述の各実施形態では、データ取得部１１及び４１は、ライト比率（ｗ）を取得しているが、全操作に対する検索比率（ｒ）を取得して、この検索比率（ｒ）を用いてライト比率（ｗ）を算出するようにしてもよい（１−ｒ）。また、ライト比率（ｗ）及び検索比率（ｒ）がそれぞれ取得され、取得された検索比率（ｒ）が上記（式５）、（式８）、（式１２）及び（式１３）における（１−ｗ）として利用されてもよい。
【０１１８】
また、上述の各実施形態におけるデータ取得部１１及び４１は、ブロック当たりの平均サイズを示すブロックサイズ（ｂ）、エントリ当たりのサイズを示すエントリサイズ（ｅ）及び記憶媒体からのデータ転送速度を示す帯域（Ｂ）を更に取得するようにしてもよい。この場合、データ取得部１１及び４１は、取得されたブロックサイズ（ｂ）をエントリサイズ（ｅ）で除算することにより、各ブロックの最大エントリ数（ｋ）を算出し、かつ、エントリサイズ（ｅ）を帯域（Ｂ）で除算することにより、エントリ処理時間（ａ）を算出するようにしてもよい。この場合、エントリ処理時間（ａ）は、１つのエントリデータの転送時間として算出される。これは、エントリ処理において、データの転送にかかる時間がデータの操作にかかる時間よりも大勢を占めることの想定に基づく。
【０１１９】
また、上述の各実施形態におけるデータ取得部１１及び４１は、インデックスブロックにおける総エントリ数（ｎ）を更に取得し、この総エントリ数（ｎ）とブロック当たりの平均エントリ数（ｍ）とを用いた下記（式１４）を計算することにより、平均ブランチブロック高さ（ｈ）を算出するようにしてもよい。
【数２】
0006020448.tif 000003
（式１４）
【０１２０】
また、上述の各実施形態におけるデータ取得部１１及び４１は、インデックスブロックへの１操作当たりのブロック分割数（ｊ）を、インデックスブロックにおける総エントリ数（ｎ）、ブロック当たりの平均エントリ数（ｍ）及びライト比率（ｗ）を用いた下記（式１５）により算出するようにしてもよい。
ｊ＝｛（ｎ−ｍ）／（ｍ−１）｝＊（ｗ／ｎ）      （式１５）
（式１５）は、以下のように導くことができる。対象インデックスブロックにおける全てのブロック分割回数をｊ'と置くと、この全ブロック分割回数ｊ'は、ブロック内のエントリ数とブランチブロックの高さから、以下の式のように示される。以下の式は、次のような考え方を反映している。即ち、総エントリ数ｎがｍｈ＋１に等しく、全てのブロック数は（１＋ｍ＋ｍ２＋・・・＋ｍｈ）であり、全ブロック分割回数ｊ'は、ブロック数よりも１小さい。
【数３】
0006020448.tif 000004
0006020448.tif 000005
【０１２１】
１操作当たりのブロック分割数（ｊ）は、全ブロック分割回数ｊ'を処理数で割れば得られる。処理数は、総エントリ数（ｎ）をライト比率（ｗ）で割った値である。このように、上記（式１５）が導かれる。
【０１２２】
なお、上述の実施形態において第２記憶媒体をハードディスクであると想定し、第２レイテンシ（Ｌ'）は、平均シークタイムと平均回転待ち時間との和に設定してもよい。  
【０１２３】
上記の各実施形態及び各変形例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。
【０１２４】
（付記１）ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測装置において、
前記インデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、該インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得するデータ取得手段と、
前記少なくとも２つの構成態様に関連する少なくとも２つの検索手法に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた、少なくとも２種の計算手法を持ち、前記データ取得手段により取得された構成態様データに応じて該少なくとも２種の計算手法を切り換えて実行することにより算出される、ブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として、取得する検索時間算出手段と、
前記少なくとも２つの構成態様に関連する少なくとも２つのエントリ挿入手法に対応した少なくとも２種の計算手法であって、前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を用いた計算手法、及び、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた計算手法を含む該少なくとも２種の計算手法を持ち、前記データ取得手段により取得された構成態様データに応じて該少なくとも２種の計算手法を切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を取得する挿入時間算出手段と、
前記平均ブランチブロック高さ（ｈ）と前記子ブロック検索時間（ｄ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、前記リーフブロック走査時間（ｓ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、前記エントリ挿入時間（ｉ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、該算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する処理時間推定手段と、
を備えるデータベース性能予測装置。
【０１２５】
（付記２）前記検索時間算出手段が持つ前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）に、前記エントリ処理時間（ａ）と前記ブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値を加算する手法と、
前記レイテンシ（Ｌ）と前記エントリ処理時間（ａ）とを足し合わせた値に、前記ブロック当たりの平均エントリ数（ｍ）に関し二分探索を行った際の平均比較回数を掛け合わせる手法と、を含み、
前記挿入時間算出手段が持つ前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を足し合わせる手法と、
前記検索時間算出手段により算出される前記ブロック内で対象エントリを特定するのにかかる平均時間に、前記エントリ処理時間（ａ）と前記ブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値を加算する手法と、
を含む付記１に記載のデータベース性能予測装置。
【０１２６】
（付記３）前記データ取得手段は、各ブロックの最大エントリ数（ｋ）及び前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を更に取得し、該各ブロックの最大エントリ数（ｋ）にブロック当たりの所定使用率を掛け合わせることにより前記ブロック当たりの平均エントリ数（ｍ）を取得し、
前記データベース性能予測装置は、
前記少なくとも２つの構成態様に関連する少なくとも２つのブロック分割手法の各々に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記各ブロックの最大エントリ数（ｋ）を用いた、少なくとも２種の計算手法を持ち、前記データ取得手段により取得された構成態様データに応じて該少なくとも２種の計算手法を切り換えて実行することにより、１回のブロック分割処理にかかる平均時間を示す分割処理単位時間（ｃ）を取得する分割時間算出手段、を更に備え、
前記処理時間推定手段は、前記分割処理単位時間（ｃ）に前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を更に算出し、該平均時間を他の平均時間の合計に更に加えることにより、前記インデックスブロックへの１操作当たりの平均処理時間を推定する、
付記１又は２に記載のデータベース性能予測装置。
【０１２７】
（付記４）前記分割時間算出手段が持つ前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記各ブロックの最大エントリ数（ｋ）を用いた下記２つの式の計算を含む、
付記３に記載のデータベース性能予測装置。
ｃ＝（Ｌ＋１．５＊ａ）＊ｋ
ｃ＝ａ＊ｋ＋２＊Ｌ
【０１２８】
（付記５）前記データ取得手段は、第１記憶媒体に関する第１レイテンシ、第２記憶媒体に関する第２レイテンシ、該第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を更に取得し、
前記データベース性能予測装置は、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出する付加時間算出手段、
を更に備え、
前記検索時間算出手段は、前記子ブロック検索時間（ｄ）及び前記リーフブロック走査時間（ｓ）に、前記付加時間を含め、
前記挿入時間算出手段は、前記エントリ挿入時間（ｉ）に、前記付加時間を含め、
前記分割時間算出手段は、前記分割処理単位時間（ｃ）に、前記付加時間を含める、
付記３又は４に記載のデータベース性能予測装置。
【０１２９】
（付記６）ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測装置において、
前記インデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）及び平均ブランチブロック高さ（ｈ）を取得し、第２記憶媒体に関する第２レイテンシ、第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を取得する第１データ取得手段と、
前記第１記憶媒体に格納されるブロックから子ブロックを特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、前記第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、前記第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得する第２データ取得手段と、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出する付加時間算出手段と、
前記１次子ブロック検索時間（ｄ）、前記１次リーフブロック走査時間（ｓ）及び前記１次エントリ挿入時間（ｉ）に前記付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出する個別時間算出手段と、
前記２次子ブロック検索時間（ｄ'）と前記平均ブランチブロック高さ（ｈ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、前記２次リーフブロック走査時間（ｓ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、前記２次エントリ挿入時間（ｉ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、該算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する処理時間推定手段と、
を備えるデータベース性能予測装置。
【０１３０】
（付記７）前記第１データ取得手段は、前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を更に取得し、
前記第２データ取得手段は、１回のブロック分割処理にかかる平均時間を示す１次分割処理単位時間（ｃ）を更に取得し、
前記個別時間算出手段は、前記１次分割処理単位時間（ｃ）に前記付加時間を加算することにより、２次分割処理単位時間（ｃ'）を算出し、
前記処理時間推定手段は、前記２次分割処理単位時間（ｃ'）に前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を更に算出し、該平均時間を他の平均時間の合計に更に加えることにより、前記インデックスブロックへの１操作当たりの平均処理時間を推定する、
付記６に記載のデータベース性能予測装置。
【０１３１】
（付記８）前記データ取得手段は、前記インデックスブロックにおける総エントリ数（ｎ）を更に取得し、前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を該総エントリ数（ｎ）、前記ブロック当たりの平均エントリ数（ｍ）及び前記ライト比率（ｗ）を用いた下記式により取得する分割数算出手段を含む、
付記３から５及び７のいずれか１つに記載のデータベース性能予測装置。
ｊ＝｛（ｎ−ｍ）／（ｍ−１）｝＊（ｗ／ｎ）
【０１３２】
（付記９）前記データ取得手段は、ブロック当たりの平均サイズを示すブロックサイズ（ｂ）、エントリ当たりのサイズを示すエントリサイズ（ｅ）及び前記記憶媒体からのデータ転送速度を示す帯域（Ｂ）を更に取得し、該ブロックサイズ（ｂ）を該エントリサイズ（ｅ）で除算することにより前記各ブロックの最大エントリ数（ｋ）を取得し、該エントリサイズ（ｅ）を該帯域（Ｂ）で除算することにより前記エントリ処理時間（ａ）を取得する付記３から５、７及び８のいずれか１つに記載のデータベース性能予測装置。
【０１３３】
（付記１０）前記データ取得手段は、前記インデックスブロックにおける総エントリ数（ｎ）を更に取得し、前記ブロック当たりの平均エントリ数（ｍ）及び該総エントリ数（ｎ）を用いた下記式を計算することにより、前記平均ブランチブロック高さ（ｈ）を取得する付記１から９のいずれか１つに記載のデータベース性能予測装置。
ｈ＝ｌｏｇｍｎ／ｍ
【０１３４】
（付記１１）ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測方法において、
コンピュータが、
前記インデックスブロックに関し、少なくとも２つの構成態様のいずれか１つを示す構成態様データ、ブロック当たりの平均エントリ数（ｍ）、エントリ当たりの平均処理時間を示すエントリ処理時間（ａ）、全操作に対する挿入操作の割合を示すライト比率（ｗ）、該インデックスブロックが格納される記憶媒体に関するレイテンシ（Ｌ）、及び、平均ブランチブロック高さ（ｈ）を取得し、
前記少なくとも２つの構成態様に関連する少なくとも２つの検索手法に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた、少なくとも２種の計算手法を、前記構成態様データに応じて切り換えて実行することにより算出される、ブロック内で対象エントリを特定するのにかかる平均時間を、子ブロック検索時間（ｄ）及びリーフブロック走査時間（ｓ）として、取得し、
前記少なくとも２つの構成態様に関連する少なくとも２つのエントリ挿入手法に対応した少なくとも２種の計算手法であって、前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を用いた計算手法、及び、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記ブロック当たりの平均エントリ数（ｍ）を用いた計算手法を含む該少なくとも２種の計算手法を、前記構成態様データに応じて切り換えて実行することにより、リーフブロックに対象エントリを挿入するのにかかる平均時間を示すエントリ挿入時間（ｉ）を取得し、
前記平均ブランチブロック高さ（ｈ）と前記子ブロック検索時間（ｄ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、
前記リーフブロック走査時間（ｓ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、
前記エントリ挿入時間（ｉ）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、
算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する、
ことを含むデータベース性能予測方法。
【０１３５】
（付記１２）前記少なくとも２つの検索手法に対応する前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）に、前記エントリ処理時間（ａ）と前記ブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値を加算する手法と、
前記レイテンシ（Ｌ）と前記エントリ処理時間（ａ）とを足し合わせた値に、前記ブロック当たりの平均エントリ数（ｍ）に関し二分探索を行った際の平均比較回数を掛け合わせる手法と、を含み、
前記少なくとも２つのエントリ挿入手法に対応する前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）及び前記エントリ処理時間（ａ）を足し合わせる手法と、
前記検索時間算出手段により算出される前記ブロック内で対象エントリを特定するのにかかる平均時間に、前記エントリ処理時間（ａ）と前記ブロック当たりの平均エントリ数（ｍ）とを掛け合わせた値を加算する手法と、
を含む付記１１に記載のデータベース性能予測方法。
【０１３６】
（付記１３）前記コンピュータが、
各ブロックの最大エントリ数（ｋ）及び前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を更に取得し、該各ブロックの最大エントリ数（ｋ）にブロック当たりの所定使用率を掛け合わせることにより前記ブロック当たりの平均エントリ数（ｍ）を取得し、
前記少なくとも２つの構成態様に関連する少なくとも２つのブロック分割手法の各々に対応し、かつ、前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記各ブロックの最大エントリ数（ｋ）を用いた、少なくとも２種の計算手法を、前記データ取得手段により取得された構成態様データに応じて切り換えて実行することにより、１回のブロック分割処理にかかる平均時間を示す分割処理単位時間（ｃ）を取得し、
前記分割処理単位時間（ｃ）に前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を算出する、
ことを更に含み、
前記１操作当たりの平均処理時間の推定は、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を他の平均時間の合計に更に加えることにより、前記インデックスブロックへの１操作当たりの平均処理時間を推定する、
付記１１又は１２に記載のデータベース性能予測方法。
【０１３７】
（付記１４）前記少なくとも２つのブロック分割手法に対応する前記少なくとも２種の計算手法は、
前記レイテンシ（Ｌ）、前記エントリ処理時間（ａ）及び前記各ブロックの最大エントリ数（ｋ）を用いた下記２つの式の計算を含む、
付記１３に記載のデータベース性能予測方法。
ｃ＝（Ｌ＋１．５＊ａ）＊ｋ
ｃ＝ａ＊ｋ＋２＊Ｌ
【０１３８】
（付記１５）前記コンピュータが、
第１記憶媒体に関する第１レイテンシ、第２記憶媒体に関する第２レイテンシ、該第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を取得し、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出し、
前記子ブロック検索時間（ｄ）、前記リーフブロック走査時間（ｓ）、前記エントリ挿入時間（ｉ）及び前記分割処理単位時間（ｃ）に、前記付加時間をそれぞれ含める、
ことを更に含む付記１３又は１４に記載のデータベース性能予測方法。
【０１３９】
（付記１６）ツリー構造のインデックスブロックを含むデータベースのためのデータベース性能予測方法において、
コンピュータが、
前記インデックスブロックに関し、全操作に対する挿入操作の割合を示すライト比率（ｗ）及び平均ブランチブロック高さ（ｈ）を取得し、
第２記憶媒体に関する第２レイテンシ、第１記憶媒体に前記インデックスブロックの対象部分が格納されておらず該第２記憶媒体から該対象部分を転送する必要のある確率を示すキャッシュミス率、及び、該第２記憶媒体から該第１記憶媒体へのブロック当たりのデータ転送時間を取得し、
前記第１記憶媒体に格納されるブロックから子ブロックを特定するのにかかる平均時間を示す１次子ブロック検索時間（ｄ）、前記第１記憶媒体に格納されるリーフブロック内で対象エントリを特定するのにかかる平均時間を示す１次リーフブロック走査時間（ｓ）、前記第１記憶媒体に格納されるリーフブロックに対象エントリを挿入するのにかかる平均時間を示す１次エントリ挿入時間（ｉ）を取得し、
前記第２レイテンシに、前記第２記憶媒体から前記第１記憶媒体へのブロック当たりのデータ転送時間を加算した値に、前記キャッシュミス率を掛け合わせることにより、キャッシュミスに関する付加時間を算出し、
前記１次子ブロック検索時間（ｄ）、前記１次リーフブロック走査時間（ｓ）及び前記１次エントリ挿入時間（ｉ）に前記付加時間をそれぞれ加算することにより、２次子ブロック検索時間（ｄ'）、２次リーフブロック走査時間（ｓ'）及び２次エントリ挿入時間（ｉ'）を算出し、
前記２次子ブロック検索時間（ｄ'）と前記平均ブランチブロック高さ（ｈ）とを掛け合わせることにより、前記インデックスブロックへの１操作当たりの対象リーフブロックを特定するのにかかる平均時間を算出し、
前記２次リーフブロック走査時間（ｓ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックに対する１操作当たりの特定されたリーフブロック内で対象エントリを検索するのにかかる平均時間を算出し、
前記２次エントリ挿入時間（ｉ'）と前記ライト比率（ｗ）とを用いて、前記インデックスブロックへの１操作当たりの特定されたリーフブロック内で対象エントリを挿入するのにかかる平均時間を算出し、
前記算出された各平均時間の合計を、前記インデックスブロックへの１操作当たりの平均処理時間として推定する、
ことを含むデータベース性能予測方法。
【０１４０】
（付記１７）前記コンピュータが、
前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を取得し、
１回のブロック分割処理にかかる平均時間を示す１次分割処理単位時間（ｃ）を取得し、
前記１次分割処理単位時間（ｃ）に前記付加時間を加算することにより、２次分割処理単位時間（ｃ'）を算出し、
前記２次分割処理単位時間（ｃ'）に前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を掛け合わせることにより、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を算出する、
ことを更に含み、
前記１操作当たりの平均処理時間の推定は、前記インデックスブロックへの１操作当たりのブロック分割処理にかかる平均時間を他の平均時間の合計に更に加えることにより、前記インデックスブロックへの１操作当たりの平均処理時間を推定する、
付記１６に記載のデータベース性能予測方法。
【０１４１】
（付記１８）前記コンピュータが、
前記インデックスブロックにおける総エントリ数（ｎ）を取得し、
前記インデックスブロックへの１操作当たりのブロック分割数（ｊ）を該総エントリ数（ｎ）、前記ブロック当たりの平均エントリ数（ｍ）及び前記ライト比率（ｗ）を用いた下記式により取得する、
ことを更に含む付記１３から１５及び１７のいずれか１つに記載のデータベース性能予測方法。
ｊ＝｛（ｎ−ｍ）／（ｍ−１）｝＊（ｗ／ｎ）
【０１４２】
（付記１９）前記コンピュータが、
ブロック当たりの平均サイズを示すブロックサイズ（ｂ）、エントリ当たりのサイズを示すエントリサイズ（ｅ）及び前記記憶媒体からのデータ転送速度を示す帯域（Ｂ）を取得し、
前記ブロックサイズ（ｂ）を前記エントリサイズ（ｅ）で除算することにより前記各ブロックの最大エントリ数（ｋ）を算出し、
前記エントリサイズ（ｅ）を前記帯域（Ｂ）で除算することにより前記エントリ処理時間（ａ）を算出する、
ことを更に含む付記１３から１５、１７及び１８のいずれか１つに記載のデータベース性能予測方法。
【０１４３】
（付記２０）前記コンピュータが、
前記インデックスブロックにおける総エントリ数（ｎ）を取得し、
前記ブロック当たりの平均エントリ数（ｍ）及び前記総エントリ数（ｎ）を用いた下記式を計算することにより、前記平均ブランチブロック高さ（ｈ）を算出する、
ことを更に含む付記１１から１９のいずれか１つに記載のデータベース性能予測方法。
ｈ＝ｌｏｇｍｎ／ｍ
【０１４４】
この出願は、２０１１年６月８日に出願された日本出願特願２０１１−１２７９３０号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0006020448.tif 000006
【図２】
0006020448.tif 000007
【図３】
0006020448.tif 000008
【図４】
0006020448.tif 000009
【図５】
0006020448.tif 000010
【図６】
0006020448.tif 000011
【図７】
0006020448.tif 000012
【図８】
0006020448.tif 000013
【図９】
0006020448.tif 000014
【図１０】
0006020448.tif 000015
【図１１】
0006020448.tif 000016