テーブル ストレージの定義

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

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

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

テーブルの格納方法を定義するには、[テーブル エディタ]の[ストレージ]タブにあるオプションを使用します。

テーブル内のインデックスの格納方法を定義するには、[テーブル エディタ]の[インデックス]タブにあるオプションを使用します。詳細は、「インデックス ストレージの定義」を参照してください。

また、行が更新されて最初に書き込まれたページに収まらない場合のオーバーフロー レコードの格納方法を検討します。[オーバーフロー]タブを使用できるのは、Oracle プラットフォームの索引構成表です。詳細は、「テーブルのオーバーフロー オプションを定義する」を参照してください。

  1. モデル ウィンドウで、ストレージ オプションを指定するテーブルをダブルクリックします。
  2. [テーブル エディタ][ストレージ]タブをクリックします。
  3. [ストレージ]タブで必要なオプションを設定したら、[OK]をクリックしてエディタを閉じます。
  4. [テーブル エディタ]で使用できるテーブル ストレージ オプションは、データベース プラットフォームによって異なります。

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

GreenPlum のテーブル ストレージ オプション

HiRDB のテーブル ストレージ オプション

HiRDB の LOB カラム ストレージ

IBM DB2 Common Server および IBM DB2 for LUW のテーブル ストレージ オプション

IBM DB2 OS/390 のテーブル ストレージ オプション

Informix のテーブル ストレージ オプション

Interbase のテーブル ストレージ オプション

Microsoft SQL Server のテーブル ストレージ オプション

Teradata のテーブル ストレージ オプション

Oracle 7 のテーブル ストレージ オプション

Oracle 8.x、9i、10g、および 11g のテーブル ストレージ オプション

Oracle の LOB セグメント ストレージ オプション

PostgreSQL のテーブル ストレージ オプション

Sybase のテーブル ストレージ オプション


GreenPlum のテーブル ストレージ オプション

  • [テーブルスペース]TABLESPACE): テーブルを格納するテーブルスペースが表示されます。


HiRDB の テーブル ストレージ オプション

  • [FIX]:  NULL データを含まない固定長テーブルを指定します。オンにすると、テーブルへのアクセス タイムが短縮され、パフォーマンスが向上します。
  • [テーブル ストレージ]:  オンにすると、[IN]および[PARTITIONED BY]オプションが有効になります。[IN]を選択して、テーブルの RD 領域を定義します。この領域にはテーブルとインデックスの情報が格納されます。[PARTITIONED BY]を選択して、パーティション設定を定義します。たとえば、(RDINDX19) 10, (RDDATA10) など。
  • [PCTFREE]PCTFREE): 将来の更新のために各データ ブロックに確保する領域の割合の最大値を指定します。この予約領域により、更新処理でデータ行の長さが拡張されることで生じる、行の移行や連鎖を回避できます。更新されないテーブルでは、この値を 0 に設定してください。PCTFREE を指定するには、次のいずれかのフォーマットを使用します。

UNUSED-SPACE-PERCENTAGE

(UNUSED-SPACE-PERCENTAGE, FREE-PAGES-PERCENTAGE-PER-SEGMENT)

(, FREE-PAGES-PERCENTAGE-PER-SEGMENT)

  • [Lock モード]:  ロック モードを選択します。[ページ]を選択すると、更新のために 1 つの行がロックされるときに、ページ上のすべての行がロックされます。[行]を選択すると、更新される行のみがロックされます。


HiRDB の LOB カラム ストレージ

[データ型]タブで指定されたカラムのデータ型が BLOB の場合、このタブが利用可能になり、LOB ストレージの場所を指定できます。


IBM DB2 Common Server および IBM DB2 for LUW のテーブル ストレージ オプション

  • [データベース]:  テーブルを格納するデータベースが表示されます。データベースの名前を入力するか、一覧からデータベースを選択します。
  • [テーブルスペース]:  テーブルを格納するテーブルスペースが表示されます。テーブルスペースの名前を入力するか、一覧からテーブルスペースを選択します。
  • [エンコード]:  エンコードを有効にして、使用するエンコード形式を選択します。CCSID 文を作成します。
  • [Restrict On Drop]:  RESTRICT ON DROP 属性が削除されるまで、テーブルが誤ってドロップ(データベースからテーブルを除去)されないようにします。RESTRICT ON DROP 文を作成します。
  • [Volatile]VOLATILE):  テーブルを volatile として定義します。テーブルにクエリーを実行する時に、インデックスを使用するとパフォーマンスが低下することを統計情報が示す場合でも、DB2 オプティマイザはテーブルに定義されたインデックスを使用します。この設定により、オプティマイザが期限切れのテーブル統計情報を使用してパフォーマンスが低下するのを防ぎます。
  • [Log Data Changes]DATA CAPTURE):  INSERT 文、UPDATE 文、および DELETE 文をログに記録する場合に選択します。
  • [テーブル プロシージャ]EDITPROC および VALIDPROC):  テーブルに対して実行できる編集プロシージャと検証プロシージャを指定します。EDITPROC 文と VALIDPROC 文を作成します。
  • [監査オプション]AUDIT CHANGES または AUDIT ALL): テーブル アクティビティを監視する監査ポリシーを指定します。監査イベントは、サーバーの関連監査ポリシーで決定されます。
  • [インデックスのテーブルスペース]:  テーブル インデックスを格納するテーブルスペースが表示されます。一覧から別のテーブルスペースを選択します。
  • [LONG テーブルスペース]:  LONG オブジェクト( LOBCLOB)を格納するテーブルスペースが表示されます。必要に応じて、一覧からテーブルスペースを選択します。
  • [Log for Replication]:  テーブル内の変更をすべて記録します。レプリケーションを使用すると、データをソース テーブルから 1 つ以上のターゲット テーブルにコピーして、ソースからターゲットの変更をシンクロできます。
  • [Not Logged Initially]:  テーブルの作成と同一の作業ユニットで実行される操作をログに記録しません。ただし、後続の作業ユニットでのテーブルに対する他の操作は記録します。


IBM DB2 OS/390 のテーブル ストレージ オプション

使用できるオプションは、データベース プラットフォームのバージョンによって異なります。

  • [データベース]:  テーブルのデータを格納するデータベースが表示されます。必要に応じて、一覧からデータベースを選択します。
  • [テーブルスペース]:  テーブルのデータを格納するテーブルスペースが表示されます。必要に応じて、一覧からテーブルスペースを選択します。
  • [Log Data Changes]:  テーブル データへの変更をすべてログに記録します。
  • [監査オプション]:  必要な監査オプションを選択します。変更に関するアクティビティのみを記録するか、すべてのアクセス アクティビティを記録します。
  • [編集プロシージャ]:  行が挿入または更新される時に行を編集またはエンコードする編集ルーチンの名前を入力します。通常、行のストレージを圧縮して領域を節約したり、データを暗号化するために使用されます。
  • [有効なプロシージャ]:  行が挿入または更新される時にデータを検証する検証ルーチンの名前を入力します。通常、テーブルに入力できる情報を制限するために使用されます。たとえば、従業員テーブルの各職種カテゴリに対して許される給与範囲を設定できます。
  • [エンコード]:  エンコードを有効にして、使用するエンコード形式を選択します。
  • [Restrict On Drop]RESTRICT ON DROP): RESTRICT ON DROP 属性が削除されるまで、テーブルが誤ってドロップ(データベースからテーブルを除去)されないようにします。
  • [Volatile]:  テーブルを volatile として定義します。テーブルにクエリーを実行する時に、インデックスを使用するとパフォーマンスが低下することを統計情報が示す場合でも、DB2 オプティマイザはテーブルに定義されたインデックスを使用します。この設定により、オプティマイザが期限切れのテーブル統計情報を使用してパフォーマンスが低下するのを防ぎます。


Informix のテーブル ストレージ オプション

使用できるオプションは、データベースのバージョンによって異なります。

  • [DB 領域]:  テーブルのデータが格納されるデータベースの名前を指定します。
  • [Lock モード]:  ロック モードを指定します。[ページ]を選択すると、更新のために 1 つの行がロックされるときに、ページ上のすべての行がロックされます。[行]を選択すると、更新行のみがロックされます。
  • [Initial Extent]INITEXTENT): テーブルの最初のデータ ブロック数を指定します。Informix が確保するデータ ブロックは、そのテーブル行の Initial Extent に対応します。
  • [Next Extent]NEXT): 次のエクステントのサイズをキロバイト(KB)単位で指定します。この数値は、テーブルスペースの空き領域内の利用可能な最大チャンクと比較して検討する必要があります。空き領域が Next Extent サイズより小さい場合、テーブル エクステントを割り当てることはできません。テーブルを拡張することができず、データを追加できなくなります。
  • [パス名]:  テーブルのデータが格納されるデータベースのフルパス名を指定します。


Interbase のテーブル ストレージ オプション

  • [外部ファイル]:  テーブルのデータが格納されるファイルを指定します。


Microsoft SQL Server のテーブル ストレージ オプション

  • 使用できるオプションは、データベース プラットフォームのバージョンによって異なります。
  • [セグメント]:  テーブルのデータが格納される場所を指定します。
  • [ファイル グループ]:  テーブルのデータが格納されるファイル グループの名前を指定します。
  • [パーティション スキーム]:  パーティションをファイル グループ内の物理位置と関連付ける、パーティション スキームの名前を指定します。
  • [テキスト ファイル グループ]:  テーブルのテキストまたはイメージ データが格納されるファイル グループの名前を指定します。このオプションを使用できるのは、テーブル内に image データ型のカラムがある場合です。
  • [パーティション キー]:  パーティション キーを指定します。このカラムは、データがパーティション境界でどのように分割されるかを設定します。通常、パーティション キーは日付を基準とするか、または数値で順序付けられたデータ グループになります。テーブル内の使用可能なすべてのカラムから選択できます。


Teradata のテーブル ストレージ オプション

  • [ジャーナル テーブル]WITH JOURNAL TABLE):  ジャーナル テーブルの名前を、database_name.table_name という形式で指定します。データベース名が指定されていない場合、現在のセッションに対するデフォルトのデータベースが使用されます。データベースにデフォルトのジャーナル テーブルが定義されている場合は、このオプションによりデフォルトが上書きされます。ジャーナル テーブルには、トランザクションの開始前にテーブルのイメージが格納されます。トランザクションが成功すると、ジャーナルは削除されます。トランザクションが失敗すると、ジャーナル データを使用してロールバックが実行されます。
  • [ジャーナル前]BEFORE JOURNAL): 変更前に保持されるイメージの数を指定します。NO または DUAL 以外の JOURNAL キーワードが指定されると、イメージの単一コピーが保持されます。ただし、FALLBACK が有効であるか、または指定される場合は除きます。フォールバック保護を使用するテーブルにジャーナル作成を要求した場合、自動的に DUAL イメージが保持されます。
  • [ジャーナル後]AFTER JOURNAL):  変更後に保持されるイメージの数を指定します。既存のイメージは、テーブルが更新されるまで影響を受けません。
  • [フリー スペース]:  空き領域をパーセント単位で指定します(0 ~ 75の間)。このテーブルのバルク データ読み込み操作時に、各シリンダに確保されます。この予約領域により、更新処理でデータ行の長さが拡張されることで生じる、行の移行や連鎖を回避できます。更新されないテーブルでは、この値を 0 に設定してください。
  • [データブロック サイズ]:  複数行を含むブロックの最大データ ブロック サイズを指定します。大きなブロック サイズはテーブル全体のスキャン速度を向上させます。シングル I/O でより多くの行を選択できるためです。小さいブロック サイズはトランザクション指向のテーブルに最適です。必要なものだけを取得することで、オーバーヘッドを最小化できるためです。データ ブロック サイズの最大値は 127.5 キロバイトです。
  • [重複行コントロール]:  重複行を許可するかどうかを指定します。[SET]を選択すると重複行は許可されません。[MULTISET]を選択すると重複行が許可されます。
  • [チェックサム]CHECKSUM):  チェックサムは、ディスクの I/O エラーを検出し、ログに記録します。使用可能なオプションによって、テーブルのチェックサムの計算に使用されるデータの割合が決定されます。[チェックサム|MEDIUM][テーブル エディタ][ストレージ]タブで選択したときに生成される SQL の例を示します。

Checksum = Medium

  • [フォールバック保護]FALLBACK): このオプションを選択すると、主テーブルをコピーして重複コピーを作成するソフトウェア フォールト トレランスが実装されます。


Oracle 7 のテーブル ストレージ オプション

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


Oracle 8.x、9i、10g、および 11g のテーブル ストレージ オプション

使用できるオプションは、Oracle のバージョンによって異なります。

  • [Heap]:  物理 ROWID でテーブルを構成します。Oracle 社では、ヒープ構成表にデータ型 UROWID のカラムを指定することを推奨していません。
  • [Cache]CACHE): アクセス頻度の高いデータに指定します。テーブル全体のスキャン実行時に、このテーブルに対して取得されたブロックが、バッファ キャッシュ内の LRU(最も長い間使用されていない)リストの MRU(最も新しく使用された)側に配置されます。この属性は小規模なルックアップ テーブルで役立ちます。
  • [Index Organized]ORGANIZATION INDEX): 主キーに従ってデータ行をグループ化します。テーブルが Index Organized の場合、オーバーフローの処理方法を指定できます。詳細は、「テーブルのオーバーフロー オプションを定義する」を参照してください。また、インデックスの圧縮を指定することもできます。詳細は、「インデックス ストレージの定義」を参照してください。
  • [一時テーブル]GLOBAL TEMPORARY TABLE): グローバル一時テーブルを作成します。その定義はすべてのセッションで参照できますが、一時テーブルの内容は、セッションまたはトランザクションがコミットされるまでの間、一時テーブルを作成したセッションでのみ参照できます。一時テーブルに保持されるデータは、ON COMMIT の指定に基づき、セッションまたはトランザクションのレベルのいずれかとなります。このオプションは、リレーションシップを持つテーブルには使用できません。
  • [DELETE ROWS]:  ユーザーが COMMIT 文を発行してトランザクションを終了したときに、一時テーブルを削除します。
  • [PRESERVE ROWS]:  セッションが終了するまで、テーブルの変更点を保持します。
  • [テーブル圧縮の有効化]COMPRESS): 圧縮を有効にして、ディスクおよびバッファ キャッシュの必要量を削減します。さらにクエリーのパフォーマンスを向上させ、使用するデータ ブロックを減らすことで必要なディスク領域を節約します。このオプションが最も役立つのは、データ ウェアハウス環境のファクト テーブルです。
  • [行移動の有効化]Enable Row Movement): Oracle で ROWID の変更を許可してテーブル行を圧縮し、テーブルの再構成を容易にします。ただし、このオプションでは不連続なセグメントへの行移動を許可するため、パフォーマンス上の問題を引き起こすことがあります。ALTER TABLE SHRINK、フラッシュバック テーブル、およびテーブルの再構成のような Oracle の機能を使用する際に、このオプションを有効にする必要があります。
  • [テーブルスペース]:  テーブルが格納されるテーブルスペースの名前を指定します。
  • [No Logging]NOLOGGING): オンにすると、DDL 操作が REDO ファイルに記録されません。これにより、インデックスの作成や更新に要する時間を最大 30% 削減できます。
  • [パラレル]PARALLEL): Oracle のパラレル クエリー オプションを指定して、テーブルのスキャンで並列プロセスを許可します。パラレル クエリー オプションを使用すると、パフォーマンスを大幅に向上させることができます。
  • [Degrees]:  操作で使用されるクエリー サーバー プロセスの数を入力します。通常は、Oracle サーバーの CPU 数から 1 を引いた値にします。
  • [Instances]:  パラレル サーバー間で、パラレル クエリーをどのようにパーティション化するかを指定します。
  • [Pct Free]PCTFREE): 将来の更新のために各データ ブロックに確保する領域の割合の最大値を指定します。この予約領域により、更新処理でデータ行の長さが拡張されることで生じる、行の移行や連鎖を回避できます。更新されないテーブルでは、この値を 0 に設定してください。
  • [Pct Used]PCTUSED): 利用可能なブロック一覧に再追加する前に各データ ブロックで使用できる領域の割合の最大値を指定します。削除操作が発生し、ブロック内の空き領域がこの値を下回ると、そのブロックは新しい挿入操作に利用できるようになります。更新されないテーブルでは、この値を 99 に設定してください。デフォルト値である 40% は、ブロックの使用率が 40% を下回った場合に、そのブロックが挿入操作に利用できることを示します。
  • [Initial Trans]INITTRANS): データ ブロックのヘッダに領域があらかじめ確保される DML トランザクションの数を指定します。Oracle では、ブロック内のどの行がコミット済みおよびコミット前の変更点を含んでいるかを示す制御情報をデータ ブロックに格納します。保持される履歴の量は、このパラメータによって制御されます。非常に短い期間に、多数のトランザクションが同時に同じデータ ブロックを変更する場合、Oracle では、ある行が最新のトランザクションで更新されたかどうかを決定するための履歴情報を確保できないことがあります。トランザクション エントリを動的に割り当てる際のオーバーヘッドを回避するため、データ ブロックを更新できる同時トランザクションの最小数を制限します。テーブルに大きな値を指定すると、多数のトランザクションが同じブロックを更新する可能性があります。
  • [Max Trans]MAXTRANS): パフォーマンスの問題を回避するため、データ ブロックを更新できる同時トランザクションの最大数を制限します。INITRANS によって確保された領域が使い切られると、利用可能な空き領域から追加のトランザクション エントリ用の領域が割り当てられます。この領域は一度割り当てられると、事実上、ブロック ヘッダの永続的なパートになります。このパラメータは、データ ブロック内のデータを同時に使用できるトランザクション エントリの数を制限します。したがって、データ ブロック内のトランザクション エントリに割り当て可能な空き領域も制限することになります。
  • [Initial Extent]INITEXTENT): Oracle が確保するデータ ブロックの初期数を指定します。Oracle が確保するデータ ブロックの数は、そのテーブル行の Initial Extent に対応します。
  • [Next Extent]NEXT): 次のエクステントのサイズをキロバイト(KB)単位で指定します。この数値は、テーブルスペースの空き領域内の利用可能な最大チャンクと比較して検討する必要があります。テーブルが次のエクステントを割り当てられない場合は、エクステントを拡張できず、データを追加できません。
  • [Pct Increase]PCTINCREASE): 前のエクステントのサイズを基準にして、次のエクステントを拡張する割合を指定します。Percent Increase の設定には注意が必要です。オブジェクトの増加する割合を大きく指定すると、テーブルスペース内の利用可能な空き領域に大きく影響する場合があるためです。
  • [Min Extents]MINEXTENT): セグメントの作成時に割り当てるエクステントの数を指定します。すべての使用済みエクステントまたは空きエクステントが指定値以上であることを保証して、空き領域の断片化を制御します。
  • [Max Extents]MAXEXTENT): Oracle がマテリアライズド ビューに割り当て可能なエクステントの最大数を指定します。この制限に達すると、Oracle でそれ以上クラスタは拡張されず、データを追加できません。テーブルに割り当て済みのエクステント数がこの制限に達していないか、注意深く監視してください。
  • [Free Lists]FREELISTS): テーブルに適用する空きリストの数を指定します。デフォルトは 1 で、これが最小値です。空きリストは、インデックスに対して複数のプロセスが同時に発行された際のデータ ブロックの割り当て管理に役立ちます。Oracle では、INSERT 操作が発生したときに使用するデータ ブロックを空きリストによって決定します。Oracle では、複数の空きリストを持つテーブルおよびインデックスを定義できます。すべてのテーブルおよびインデックスの空きリストは、同時に発生する可能性のある INSERTUPDATE アクティビティの最大数に設定すべきです。たとえば、最大 20 人のエンド ユーザーがテーブルに INSERT 操作を実行する可能性がある場合、そのインデックスには FREELISTS=20 を設定する必要があります。空きリストの値が低すぎると、Oracle のパフォーマンスが低下する原因となります。FREELISTS または FREELIST GROUPS を増加させると、セグメント ヘッダの競合を軽減できます。
  • [Free List Groups]FREELIST GROUPS): Parallel Server オプション付きの Oracle をパラレル モードで使用する場合にのみ有効です。テーブルに複数のセグメント ヘッダを許可する空きリスト グループの数を指定します。これによって、複数のタスクがインデックスへの挿入操作を実行できます。その結果、セグメント ヘッダの競合を軽減できます。空きリスト グループは、インデックスにアクセスする Oracle Parallel Server インスタンスの数に設定する必要があります。オブジェクトがパーティション分割されていたり、セグメント ヘッダが競合する場合、空きリスト グループを非RACシステムに対して設定できます。
  • [Buffer Pool]BUFFER_POOL): メモリ内データ ブロックのキャッシュに使用されるメモリ構造を指定します。これによりデータ アクセスの速度が向上します。
  • [DEFAULT]: データ ブロックをデフォルトのバッファ プールにキャッシュします。
  • [KEEP]: オブジェクトをメモリ内に保持してI/O競合を回避します。
  • [RECYCLE]: 使用していないデータ ブロックを直ちにメモリから除去し、キャッシュ スペースを節約します。

Oracle の LOB セグメント ストレージ オプション

[テーブル エディタ][データ型]タブで、LOBCLOB、または NLOB データ型が定義されると、[LOB セグメントの編集]が有効になります。このボタンをクリックすると、[LOB セグメント]ダイアログ ボックスが開きます。[LOB セグメント]ダイアログ ボックスで使用できるオプションを次に説明します。

  • [セグメント名]:  LOB データが格納されるセグメントの名前を指定します。
  • [テーブルスペース]:  LOB データが格納されるテーブルスペースの名前を指定します。
  • [一度にアクセスするブロック数] CHUNK): 行外 LOB に対する割り当ての粒度を決定します。
  • [新しいバージョンに使用される領域の割合]PCTVERSION): データ ブロック内に以前のイメージを格納するメカニズムを制御します。PCTVERSION のデフォルト値は 10 です。LOB ストレージ領域の 10% が UNDO 操作のために予約されます。
  • [行内でLOBストレージを有効]:  LOB は、自身が属する行と共に格納されるか(行内ストレージ)、LOB セグメント(行外ストレージ)内に格納されます。行内 LOB の最大サイズは 3964 バイトです。
  • [LOB Cache](CACHE): アクセス頻度の高いデータに指定します。テーブル全体のスキャン実行時に、このカラムに対して取得されたブロックが、バッファ キャッシュ内の LRU(最も長い間使用されていない)リストの MRU(最も新しく使用された)側に配置されます。
  • [ログ]LOGGING): オンにすると、DDL 操作が REDO ファイルに記録されます。これにより、インデックスの作成と更新が最大 30% 増加することがあります。
  • [Initial Extent](INITEXTENT): Oracle が確保するデータ ブロックの初期数を指定します。Oracle が確保するデータ ブロックの数は、そのテーブル行の Initial Extent に対応します。
  • [Next Extent](NEXT): 次のエクステントのサイズをキロバイト(KB)単位で指定します。この数値は、テーブルスペースの空き領域内の利用可能な最大チャンクと比較して検討する必要があります。テーブルが次のエクステントを割り当てられない場合は、エクステントを拡張できず、データを追加できません。
  • [Pct Increase](PCTINCREASE): 前のエクステントのサイズを基準にして、次のエクステントを拡張する割合を指定します。Percent Increase の設定には注意が必要です。オブジェクトの増加する割合を大きく指定すると、テーブルスペース内の利用可能な空き領域に大きく影響する場合があるためです。
  • [Min Extents](MINEXTENT): セグメントの作成時に割り当てるエクステントの数を指定します。すべての使用済みエクステントまたは空きエクステントが指定値以上であることを保証して、空き領域の断片化を制御します。
  • [Max Extents](MAXEXTENT): Oracle がマテリアライズド ビューに割り当て可能なエクステントの最大数を指定します。この制限に達すると、Oracle でそれ以上クラスタは拡張されず、データを追加できません。テーブルに割り当て済みのエクステント数がこの制限に達していないか、注意深く監視してください。
  • [Free Lists](FREELISTS): テーブルに適用する空きリストの数を指定します。デフォルトは 1 で、これが最小値です。空きリストは、インデックスに対して複数のプロセスが同時に発行された際のデータ ブロックの割り当て管理に役立ちます。Oracle では、INSERT 操作が発生したときに使用するデータ ブロックを空きリストによって決定します。Oracle では、複数の空きリストを持つテーブルおよびインデックスを定義できます。すべてのテーブルおよびインデックスの空きリストは、同時に発生する可能性のある INSERT や UPDATE アクティビティの最大数に設定すべきです。たとえば、最大 20 人のエンド ユーザーがテーブルに INSERT 操作を実行する可能性がある場合、そのインデックスには FREELISTS=20 を設定する必要があります。空きリストの値が低すぎると、Oracle のパフォーマンスが低下する原因となります。FREELISTS または FREELIST GROUPS を増加させると、セグメント ヘッダの競合を軽減できます。
  • [Free List Groups](FREELIST GROUPS): Parallel Server オプション付きの Oracle をパラレル モードで使用する場合にのみ有効です。テーブルに複数のセグメント ヘッダを許可する空きリスト グループの数を指定します。これによって、複数のタスクがインデックスへの挿入操作を実行できます。その結果、セグメント ヘッダの競合を軽減できます。空きリスト グループは、インデックスにアクセスする Oracle Parallel Server インスタンスの数に設定する必要があります。オブジェクトがパーティション分割されていたり、セグメント ヘッダが競合する場合、空きリスト グループを非RACシステムに対して設定できます。


PostgreSQL のテーブル ストレージ オプション

  • [テーブルスペース]:  テーブルのデータが格納されるテーブルスペースの名前を指定します。


Sybase のテーブル ストレージ オプション

使用できるオプションは、データベース プラットフォームのバージョンによって異なります。

  • [DB 領域]:  テーブルのデータが格納されるデータベースの名前を指定します。
  • [セグメント]:  テーブルが格納されるセグメントの名前を指定します。
  • [ロック スキーム]:  DDL トランザクションに実装するロック スキームを指定します。
  • [ALLPAGES]:  クエリーによって影響を受けるデータ ページとインデックス ページをロックします。
  • [DATAPAGES]:  データ ページをロックしますが、インデックス ページはロックしません。トランザクションが終了するまでロックが保持されます。
  • [DATAROWS]:  データ ページの個々の行をロックします。ページおよびインデックス行はロックされません。このスキームでは、より多くのオーバーヘッドが必要になりますが、競合の多い小さなテーブルで役立ちます。
  • [ページごとの最大行数]:  ページごとの最大行数を指定します。
  • [ページ ギャップの予約]:  ページ ギャップの予約パラメータを指定します。
  • [Identity ギャップ]:  ID 番号の割り当てと、サーバーの再起動によって生じる可能性のあるギャップを制御します。特定のサイズで ID 番号のブロックを作成し、テーブルの競合を軽減することで、パフォーマンスを向上させます。また、サーバー全体の identity burning set factor を上書きします。Identity ギャップが 1000 m に設定された場合、サーバーは最初の 1000 個の番号を割り当てて、最大ブロック番号をディスクに格納します。すべての番号が使用されると、サーバーは次の 1000 個の番号を取得します。2050 行目の挿入後にサーバーの電源が切れて、再起動した時に ID が 3000 から開始した場合、ID のギャップは 950 になります。サーバーが最大ブロック番号をディスクに書き込む必要があるたびに、パフォーマンスに影響します。したがって、ご使用の環境でギャップの値がより小さくなるような、最適なパフォーマンスを得られる設定を見つける必要があります。
  • [置換]:  使い捨て方式(fetch-and-discard)、つまり MRU 置換方式の使用を選択します。この方式では、ページを読み込んでバッファの MRU(最も新しく使用された)側にキャッシュします。他のページを消去することはありません。しかし、これらのページがキャッシュに留まるのは非常に短い時間に限られるため、後続のクエリーがキャッシュ内にそのページを見つける可能性は低くなります。
  • [プリフェッチ]:  セッションに対する大容量 I/O をオンまたはオフにします。


テーブルのオーバーフロー オプションを定義する

[テーブル エディタ]の[オーバーフロー]タブで、行が更新されて最初に書き込まれたページに収まらない場合に、オーバーフロー レコードの格納方法を指定します。[オーバーフロー]タブを使用できるのは、Oracle 8.x、9i、10g、11g、および 12c プラットフォームの索引構成表です。

  1. モデル ウィンドウで、ストレージ オプションを指定するテーブルをダブルクリックします。
  2. [テーブル エディタ][オーバーフロー]タブをクリックします。
  3. [オーバーフロー]タブで必要なオプションを設定したら、[OK]をクリックしてエディタを閉じます。

[オーバーフロー]タブの設定により、CREATE TABLE 文に ORGANIZATION INDEX 句が作成されます。このタブで指定したすべてのオプションは、この句に反映されます。

次に、[オーバーフロー]タブの一部のオプションについて補足説明します。

  • [テーブルスペース]: オーバーフローが格納されるテーブルスペースの名前を指定します。
  • [No Logging]: オンにすると、DDL 操作が REDO ファイルに記録されません。これにより、インデックスの作成や更新に要する時間を最大 30% 削減できます。
  • [Pct Threshold]PCTTHRESHOLD): 索引構成表のインデックス ブロックに確保する領域の割合を指定します。行の一部がこのしきい値を超えた場合は、オーバーフロー セグメントに格納されます。
  • [Including]INCLUDING): オーバーフローに含めるカラムを選択します。
  • [Pct Free]PCTFREE): 将来の更新のために各データ ブロックに確保する領域の割合の最大値を指定します。この予約領域により、更新処理でデータ行の長さが拡張されることで生じる、行の移行や連鎖を回避できます。更新されないテーブルでは、この値を 0 に設定してください。
  • [Pct Used]PCTUSED): 利用可能なブロック一覧に再追加する前に各データ ブロックで使用できる領域の割合の最大値を指定します。削除操作が発生し、ブロック内の空き領域がこの値を下回ると、そのブロックは新しい挿入操作に利用できるようになります。更新されないテーブルでは、この値を 99 に設定してください。デフォルト値である 40% は、ブロックの使用率が 40% を下回った場合に、そのブロックが挿入操作に利用できることを示します。
  • [Initial Trans]INITTRANS): データ ブロックのヘッダに領域があらかじめ確保される DML トランザクションの数を指定します。Oracle では、ブロック内のどの行がコミット済みおよびコミット前の変更点を含んでいるかを示す制御情報をデータ ブロックに格納します。保持される履歴の量は、このパラメータによって制御されます。非常に短い期間に、多数のトランザクションが同時に同じデータ ブロックを変更する場合、Oracle では、ある行が最新のトランザクションで更新されたかどうかを決定するための履歴情報を確保できないことがあります。インデックスに大きな値を指定すると、多数のトランザクションが同じブロックを更新する可能性があります。
  • [Max Trans]MAXTRANS): INITRANS によって確保された領域が使い切られると、利用可能な空き領域から追加のトランザクション エントリ用の領域が割り当てられます。この領域は一度割り当てられると、事実上、ブロック ヘッダの永続的なパートになります。このパラメータは、データ ブロック内のデータを同時に使用できるトランザクション エントリの数を制限します。したがって、データ ブロック内のトランザクション エントリに割り当て可能な空き領域も制限することになります。
  • [Initial Extent]INITEXTENT): Oracle が確保するデータ ブロックの初期数を指定します。Oracle が確保するデータ ブロックの数は、そのテーブル行の Initial Extent に対応します。
  • [Next Extent]NEXT): 次のエクステントのサイズをキロバイト(KB)単位で指定します。この数値は、テーブルスペースの空き領域内の利用可能な最大チャンクと比較して検討する必要があります。テーブルが次のエクステントを割り当てられない場合は、エクステントを拡張できず、データを追加できません。
  • [Pct Increase]PCTINCREASE): 前のエクステントのサイズを基準にして、次のエクステントを拡張する割合を指定します。Percent Increase の設定には注意が必要です。オブジェクトの増加する割合を大きく指定すると、テーブルスペース内の利用可能な空き領域に大きく影響する場合があるためです。
  • [Min Extents]MINEXTENTS): セグメントの作成時に割り当てるエクステントの数を指定します。すべての使用済みエクステントまたは空きエクステントが指定値以上であることを保証して、空き領域の断片化を制御します。
  • [Max Extents]MAXEXTENTS): Oracle がインデックスに割り当て可能なエクステントの最大数を指定します。この制限に達すると、Oracle でそれ以上クラスタは拡張されず、データを追加できません。インデックスに割り当て済みのエクステント数がこの制限に達していないか、注意深く監視してください。
  • [Free Lists]FREELISTS): インデックスに適用する空きリストの数を指定します。デフォルトは 1 で、これが最小値です。空きリストは、インデックスに対して複数のプロセスが同時に発行された際のデータ ブロックの割り当て管理に役立ちます。Oracle では、INSERT 操作が発生したときに使用するデータ ブロックを空きリストによって決定します。Oracle では、複数の空きリストを持つテーブルおよびインデックスを定義できます。すべてのテーブルおよびインデックスの空きリストは、同時に発生する可能性のある INSERTUPDATE アクティビティの最大数に設定すべきです。たとえば、インデックスで最大 20 人のエンド ユーザーが INSERT 操作を実行する可能性がある場合、そのインデックスには FREELISTS=20 を設定する必要があります。空きリストの値が低すぎると、Oracle のパフォーマンスが低下する原因となります。FREELISTS または FREELIST_GROUPS を増加させると、セグメント ヘッダの競合を軽減できます。
  • [Free List Groups]FREELIST GROUPS): Parallel Server オプション付きの Oracle をパラレル モードで使用する場合にのみ有効です。インデックスに複数のセグメント ヘッダを許可する空きリスト グループの数を指定します。これによって、複数のタスクがインデックスへの挿入操作を実行できます。その結果、セグメント ヘッダの競合を軽減できます。空きリスト グループは、インデックスにアクセスする Oracle Parallel Server インスタンスの数に設定する必要があります。オブジェクトがパーティション分割されていたり、セグメント ヘッダが競合する場合、freelist_groupsを非RACシステムに対して設定できます。
  • [Buffer Pool]BUFFER_POOL): メモリ内データ ブロックのキャッシュに使用されるメモリ構造を指定します。これによりデータ アクセスの速度が向上します。
    • [DEFAULT]:  データ ブロックをデフォルトのバッファ プールにキャッシュします。
    • [KEEP]:  オブジェクトをメモリ内に保持して I/O 競合を回避します。
    • [RECYCLE]:  使用していないデータ ブロックを直ちにメモリから除去し、キャッシュ スペースを節約します。

関連項目