ページの先頭行へ戻る
Symfoware Server V10.0.0 チューニングガイド

1.2.2 ASSIST指定が無効となっている場合

ASSIST指定が無効となっているため、処理に時間がかかっている例および対策を以下に示します。以下の例では、アクセスプランにアドバイスが出力されています。

表示例

Symfoware Server Performance Monitor / SQL detailed information

Start time: 2008/10/16 11:21:03.332
End time:   2008/10/16 11:21:13.541
Running time: 10.209
Connection ID: 2008031015375000000458
Connection information:
    Uid: I4874
    Pid: 12521
    Sid: -----
    Type: SQL
    Name: APL001/CONNECT1
Client information:
    Client: u=UserID,i=RequestID,h=HostName
    Module: IJServer01
    Action: -----
Termination status:
    Status: normal
    Message Number: 2001
SQL statement:
    SELECT /* ASSIST USE_INDEX(TBL1(TBL1IXDSO1)) */ C1 FROM USR1.TBL1 WHERE C1=80
Access plan:
    Convert SQL statement:
    SELECT /* ASSIST USE_INDEX(TBL1(TBL1IXDSO1)) */ TBL1.C1 FROM USR1.TBL1 WHERE 
    TBL1.C1=?
    Advice to an SQL statement:
    JYP2410I ASSIST要素“USE_INDEX”に指定されたインデックス“TBL1IXDSO1”が定義さ
れていません.

JYP2401I 表の全件検索を行います. =============================================================================== Main query =sno===sectname=====input1==============input2==============output/update====== 1 : SCAN [TBL1DSO ][ ][APPL ] ------------------------------------------------------------------------------- [ 1] SCAN ELEMENT table name USR1.TBL1 scan type TABLE ALL SCAN dso name TBL1DSO [NONE/NONE] condition evaluation Yes scan record number 1 [ 2] OUTPUT ELEMENT record length 23 Execution environment ------------------------------------------------------------------------------- transaction access mode : READ WRITE transaction isolation level : READ UNCOMMITTED R_LOCK : YES JOIN_RULE : AUTO JOIN_ORDER : INSIDE SCAN_KEY_ARITHMETIC_RANGE : YES SCAN_KEY_CAST : YES TID_SORT : YES TID_UNION : YES USQL_LOCK : SH IGNORE_INDEX : NO INACTIVE_INDEX_SCAN : YES SS_RATE : 0.200000 0.250000 0.500000 0.400000 0.000100 Sampling status: ACTIVE: 3 WAITING: 10 DB_READ: 10

対策

アクセスプランのアドバイスをみると、ASSIST指定で指定したインデックスが未定義であることが分かります。可能性として、運用中に何らかの理由でインデックスが削除されたことが考えられます。

この問題は、適切なインデックスを付けることで解決します。SQL文のWHERE句を見てみると“C1”カラムでの検索条件がついています。しかし、この表にはアドバイスのとおり“C1”カラムにはインデックスは付いていません。“C1”カラムにインデックスを付ければ、表に対する全データの読出し処理ではなく、インデックスを用いた高速な検索処理が動作するようになるため、性能は大幅に改善されます。