新インデックスの検証 その5

投稿日: 2002年11月13日

<新インデックスの検証 その5> ペンネーム モンキーターン

今回は、キー圧縮インデックスのDML処理負荷の検証を行なう。
キー圧縮インデックスの[ DML処理 ]に変化は起こるのであろうか?

検証スタート!!!

検証目的:
前回作成した検証用テーブル( emp_200man )に、100万件のデータをInsertした
場合の[ DML処理 ]を各インデックスのType別処理時間を検証する。

検証用テーブル

create table emp_200man(  EMPNO NUMBER
                        , ENAME VARCHAR2(10)
                        , JOB VARCHAR2(9)
                        , MGR NUMBER(4)
                        , HIREDATE DATE
                        , SAL NUMBER(7,2)
                        , COMM NUMBER(7,2)
                        , DEPTNO NUMBER(2)
                       ) ;

データ件数は、200万件である。
このテーブルのカラムEMPNOは、一意な値である。

このテーブルに100万件のデータをInsertする。

SQL> insert into emp_200man select * from emp_100man ;

insertするデータのEMPNOは、一意な値である。

インデックスが存在しない場合のInsert処理時間は
Insert処理時間 = 2分02.04秒
である。

検証インデックスタイプ

1. create index normal_empno_idx on emp_200man( empno ) ;
    領域サイズ = 38.0MB( 200万件時 )
    領域サイズ = 80.0MB( 100万件 Insert後 )

  create index normal_ename_idx on emp_200man( ename ) ;
    領域サイズ = 38.0MB( 200万件時 )
    領域サイズ = 64.0MB( 100万件 Insert後 )

    合計領域サイズ = 76.0MB( 200万件時 )
    合計領域サイズ = 144.0MB( 100万件 Insert後 )

    Insert処理時間 = 14分31.08秒
2. create index normal2_idx on emp_200man( ename, empno ) ;
   領域サイズ = 52.0MB( 200万件時 )
   領域サイズ = 104.0MB( 100万件 Insert後 )

   Insert処理時間 = 10分11.06秒

3. create index comp_idx on emp_200man( ename, empno ) compress 1 ;
   領域サイズ = 38.0MB( 200万件時 )
   領域サイズ = 80.0MB( 100万件 Insert後 )

   Insert処理時間 = 9分41.07秒

上の結果より
検証インデックスタイプ1は、Oracle8i以前を想定している。このタイプと検証
インデックスタイプ2の結果を見ていただきたい。Index Skip Scanを実行でき
る環境であれば、領域サイズを約30% Insert処理時間も約30%削減することが可
能であった。また、Index Skip Scanを実行できると言うことは、複合インデッ
クスの第1キーのデータのカーディナリティーが低いと予想される。そこで、
キー圧縮を行なうことで( 検証インデックスタイプ1とタイプ3の比較 )、領域
サイズを約45% Insert処理時間を約33%削減することが可能であった。

<今までの検証の総括>
Oracle9iの環境をお持ちの方は、同一テーブルに対して複数のインデックス(
単一カラム )を持っている環境があれば、複合インデックス化を検討してみて
、Index Skip Scan検索処理でも既存のシステムに問題がなければ、複合インデ
ックスに作成し直すことをお勧めします。また、同時にキー圧縮を実行するこ
とにより、領域サイズ・DML処理時間を削減することが可能である。

Oracle8iの環境をお持ちの方は、既存のインデックスに第1キーのデータのカ
ーディナリティーが低い場合にキー圧縮を実行することで、インデックス検索
時間は変わらずに領域サイズ・DML処理を削減することが可能である。

次回は、各インデックスの種類別に検証を行なう。
とりあえず、Functionインデックスについて検証を行ないます。
検証してほしいインデックスの種類がございましたら、メールをいただければ
リクエストの多い順に検証を行なっていこうと思います。

次回もお楽しみに・・・つづく

以上
日本プロ野球が初めて米大リーグに勝った日らしい・・・松井がんばれ!!
茅ヶ崎にて