アプリケーションのチューニング

  • 索引
    • B*Tree
      • 少量の行を選択する問合せ
    • ビットマップ
      • カーディナリティが低い列
      • AND/ORなどの演算が入る場合
      • エントリ・レベルではなく、ビットマップ・セグメント・レベルでロックがかかるため、OLTPには向いていない(同時に多くの列がロックされるため競合が起こりやすい)
    • 逆キー索引
      • 競合を解消(同じリーフブロックの更新が多い場合など)
      • 範囲検索には使用できなくなる(全表走査になる)
  • いろんなセグメントタイプ
    • 索引構成表
      • 単一のB*Tree索引構造で、索引セグメントに表データをすべて格納
      • 索引と表データが同じセグメントにあることでI/Oを少なくして高速化を図る
      • 主キーでソートされている(主キー必須)
      • 索引構成表に追加の索引を作る場合は、論理ROWIDが使用される
      • ビットマップ索引を作成する場合は、マッピング表が必要になる
      • PCTTHRESHOLD句を超える列は、OVERFLOW句を使ってオーバーフロー・セグメントに格納できる
    • クラスタ
      • 複数の表をグループ化して格納、I/Oを少なくして高速化を図る
      • 毎回結合されるような表に有効(索引クラスタ
      • 大規模な表で単一の索引キーで検索されるような表に有効(ハッシュクラスタ
      • 範囲検索はできない(全表検索になる)
    • マテリアライズドビュー
      • 通常のビューとは異なり、SELECT文による定義と、SELECT結果の両方を格納するオブジェクト
      • リフレッシュ:元表の変更をビューに反映させる
      • クエリーリライト:元表へのアクセスを、可能な場合自動的にビューへのアクセスに切り替えてくれる機能
      • クエリーリライトを行うための条件:
        • CBO
        • ENABLE QUERY REWRITEオプションをつけて作成
        • QUERY_REWRITE_ENABLED初期化パラメータがTRUE
        • QUERY_REWRITE_INTEGRITY初期化パラメータを設定
        • QUERY REWRITEシステム権限
    • パーティション
      • 表・索引をパーティション化し、複数のパーティション(セグメント)として管理
      • CBOで動作する
      • 物理的な管理(セグメント移動、切捨て、削除など)はパーティション単位で可能
      • 制約・権限などは親レベルでのみ制御可能
      • 制限事項
        • グローバル・ビットマップ索引は作成できない
        • LONG、LONG ROW型は使用できない
        • クラスタ化はできない