インデックス ストレージの定義

提供: ER/Studio Data Architect
移動先: 案内検索

物理モデルの作成 への移動

ストレージ パラメータは、データベース内のデータへのアクセス時間と、データベース領域の使用効率に影響を与えます。アクセス頻度が非常に高いテーブルがある場合、テーブルを 1 つの場所に配置して、そのテーブルのインデックスは異なる物理ディスク アレイ上に配置します。これによって、テーブルとインデックスにアクセスするために別々のスレッドが作成されるため、パフォーマンスが向上します。

テーブルの格納方法を定義するには、テーブル エディタの[インデックス]タブからアクセスできるインデックス エディタのオプションを使用します。

  1. モデル ウィンドウで、インデックス ストレージ オプションを指定するテーブルをダブルクリックします。
  2. [テーブル エディタ][インデックス]タブをクリックし、ストレージ オプションを指定するインデックスを選択して、[編集]をクリックします。
  3. [インデックス エディタ]が開き、指定したデータベース プラットフォームとバージョンに固有のオプションが表示されます。
  4. [インデックス エディタ]のオプションの設定が完了したら、[OK]をクリックして[インデックス エディタ]を閉じます。次に、再度[OK]をクリックして、[テーブル エディタ]を閉じます。

データベース プラットフォーム別のストレージ オプションの詳細については、次のリンクを参照してください。

GreenPlum のインデックス ストレージ オプション

Hitachi HiRDB のインデックス ストレージ オプション

IBM DB2 for OS/390 のインデックス ストレージ オプション

Informix のインデックス ストレージ オプション

Interbase のインデックス ストレージ オプション

Microsoft SQL Server のインデックス ストレージ オプション

Oracle のインデックス ストレージ オプション

PostgreSQL のインデックス ストレージ オプション

Sybase SQL Anywhere のインデックス ストレージ オプション

Sybase System 10、ASE 10、11 のインデックス ストレージ オプション

GreenPlumの インデックス ストレージ オプション

  • [テーブルスペース]TABLESPACE): インデックスが格納されるテーブルスペースの名前を指定します。

Hitachi HiRDB のインデックス ストレージ オプション

  • [インデックス ストレージ]ON): インデックスの格納場所を指定します。
  • [PCTFREE]PCTFREE): 将来の更新のために各データ ブロックに確保する領域の割合の最大値を指定します。この予約領域により、更新処理でデータ行の長さが拡張されることで生じる、行の移行や連鎖を回避できます。更新されないテーブルでは、この値を 0 に設定してください。
  • [アンバランス インデックス スプリット]UNBALANCED SPLIT): インデックス ツリーのバランスを管理して、インデックス ページ分割のパフォーマンスを改善するために指定します。

IBM DB2 for OS/390 のインデックス ストレージ オプション

IBM DB2 for OS/390 のストレージ オプションは、そのプラットフォームを選択している場合、[インデックス エディタ]の[オプション]タブに表示されます。詳細は、「IBM DB2 for OS/390 のインデックス オプション」を参照してください。

Informix のインデックス ストレージ オプション

  • [Fill FACTOR]FILLFACTOR): インデックス ページへのデータ格納の割合(%)を指定します。値が低い場合、インデックス増加に対する領域が確保されます。値が高い場合、インデックスは圧縮されます。インデックスがフル(100%)の場合、新規の挿入操作を実行するとノードが分割されます。

Interbase のインデックス ストレージ オプション

  • [外部ファイル]: インデックスの格納場所を指定します。

Microsoft SQL Server のインデックス ストレージ オプション

  • 使用できるオプションは、データベースのバージョンによって異なります。
  • [セグメント]ON): インデックスの格納場所を指定します。
  • [ファイル グループ]ON): インデックスの格納場所を指定します。
  • [Fill FACTOR]FILLFACTOR): インデックス ページへのデータ格納の割合(%)を指定します。値が低い場合、インデックス増加に対する領域が確保されます。値が高い場合、インデックスは圧縮されます。インデックスがフル(100%)の場合、新規の挿入操作を実行するとノードが分割されます。
  • [Pad Index]PAD_INDEX): インデックスの中間レベルの各ページに確保する領域のサイズを指定します。PAD_INDEX が使用されない場合、デフォルトでそれぞれの中間インデックス ページには、インデックスで可能な最大サイズのうち少なくとも1行を保持できるだけの空き領域が与えられます。インデックスが高頻度で更新されるテーブルでは、中間インデックス ページが頻繁に分割され、不要なオーバーヘッドが発生します。中間インデックス ページの分割を避けるには、FILLFACTOR および PAD_INDEX オプションの両方を割り当てます。PAD_INDEX オプションでは FILLFACTOR を使用して、中間インデックス ページに割り当てます。たとえば、FILLFACTOR に 80 を指定した場合、PAD_INDEX でこの値が使用され、新規の 1 行分の領域を確保する代わりに、中間インデックス ページの領域のうち 80% のみが使用されます。
  • [Tempdb でソート]SORT_IN_TEMPDB): インデックス構築に使用される中間ソート結果を tempdb に格納するよう指定します。これによって、インデックス作成に使用される一時ディスク領域の容量が増加しますが、tempdb がユーザー データベースとは異なるディスク セットに存在する場合、インデックスの作成や再構築に要する時間を短縮できます。
  • [パーティション キー]: インデックスのパーティション化に使用されるキーを選択します。インデックスをパーティション化すると、クエリーに要する時間が大幅に短縮され、読み込み時間とインデックスのメンテナンス性が向上します。

Oracle のインデックス ストレージ オプション

  • [テーブルスペース]TABLESPACE): インデックスが格納されるテーブルスペースの名前を指定します。
  • [Initial Transactions]INITTRANS): データ ブロックのヘッダに領域があらかじめ確保される DML トランザクションの数を指定します。Oracle では、ブロック内のどの行がコミット済みおよびコミット前の変更点を含んでいるかを示す制御情報をデータ ブロックに格納します。保持される履歴の量は、このパラメータによって制御されます。非常に短い期間に、多数のトランザクションが同時に同じデータ ブロックを変更する場合、Oracle では、ある行が最新のトランザクションで更新されたかどうかを決定するための履歴情報を確保できないことがあります。インデックスに大きな値を指定すると、多数のトランザクションが同じブロックを更新する可能性があります。
  • [Max Transactions]MAXTRANS): INITRANS によって確保された領域が使い切られると、利用可能な空き領域から追加のトランザクション エントリ用の領域が割り当てられます。この領域は一度割り当てられると、事実上、ブロック ヘッダの永続的なパートになります。このパラメータは、データ ブロック内のデータを同時に使用できるトランザクション エントリの数を制限します。したがって、データ ブロック内のトランザクション エントリに割り当て可能な空き領域も制限することになります。
  • [Percent Free]PCTFREE): 将来の更新のために各データ ブロックに確保する領域の割合の最大値を指定します。この予約領域により、更新処理でデータ行の長さが拡張されることで生じる、行の移行や連鎖を回避できます。更新されないテーブルでは、この値を 0 に設定してください。
  • [Initial Extent]INITEXTENT): Oracle が確保するデータ ブロックの初期数を指定します。Oracle が確保するデータ ブロックの数は、そのテーブル行の Initial Extent に対応します。
  • [Next Extent]NEXT): 次のエクステントのサイズをキロバイト(KB)単位で指定します。この数値は、テーブルスペースの空き領域内の利用可能な最大チャンクと比較して検討する必要があります。テーブルが次のエクステントを割り当てられない場合は、エクステントを拡張できず、データを追加できません。
  • [Percent Increase]PCTINCREASE): 前のエクステントのサイズを基準にして、次のエクステントを拡張する割合を指定します。Percent Increase の設定には注意が必要です。オブジェクトの増加する割合を大きく指定すると、テーブルスペース内の利用可能な空き領域に大きく影響する場合があるためです。
  • '[Min Extents]MINEXTENTS): セグメントの作成時に割り当てるエクステントの数を指定します。すべての使用済みエクステントまたは空きエクステントが指定値以上であることを保証して、空き領域の断片化を制御します。
  • [Max Extents]STORAGE (MAXEXTENTS)): Oracle がインデックスに割り当て可能なエクステントの最大数を指定します。この制限に達すると、Oracle でそれ以上クラスタは拡張されず、データを追加できません。インデックスに割り当て済みのエクステント数がこの制限に達していないか、注意深く監視してください。

Notepad blue icon 2.pngメモ: [プロパティ]タブは、Oracle 8.x、9i、10g、11g、12c でも使用できます。

PostgreSQL のインデックス ストレージ オプション

  • [テーブルスペース]TABLESPACE): インデックスが格納されるテーブルスペースの名前を指定します。

Sybase SQL Anywhere のインデックス ストレージ オプション

  • [DB 領域]IN): インデックスの格納場所を指定します。

Sybase System 10、ASE のインデックス ストレージ オプション

  • [セグメント]ON): インデックスの格納場所を指定します。
  • [ページごとの最大行数]MAX_ROWS_PER_PAGE): ページごとの最大行数を指定します。ページで許可される行数を制限して、ロック競合を軽減し、頻繁にアクセスがあるテーブルの並行処理を改善します。デフォルト値は 0 です。この場合、すべてのデータ ページを含むクラスタ化インデックスと、すべてのリーフ ページを含む非クラスタ化インデックスを作成します。また、クラスタ化および非クラスタ化 インデックスのインデックス B ツリー内部に十分な領域を確保します。
    ヒープ テーブルとクラスタ化インデックスでは、 MAX_ROWS_PER_PAGE の範囲は 0 ~ 256 です。非クラスタ化インデックスでは、 MAX_ROWS_PER_PAGE の最大値は、リーフ ページに一致するインデックス行の数となります。ただし、256 を超えることはありません。最大値を決定するには、ページ サイズから 32(ページ ヘッダのサイズ)を引いて、それをインデックスのキー サイズで割ります。
  • [Fill FACTOR]FILLFACTOR): インデックス ページへのデータ格納の割合(%)を指定します。値が低い場合、インデックス増加に対する領域が確保されます。値が高い場合、インデックスは圧縮されます。インデックスがフル(100%)の場合、新規の挿入操作を実行するとノードが分割されます。

関連項目