ページの先頭行へ戻る
HA Database Ready 業務開発ガイド(Native SQL編)
FUJITSU Integrated System

4.1.5 インデックスの活性状態の変更

日中はインデックスを使用したオンライン処理、夜間は一括更新のバッチ処理のような運用を実施する場合、インデックスの活性状態を変更することで、インデックスを有効に使用することができます。

日中はインデックスを活性な状態とすることでインデックスを使用した高速な検索、更新処理を実施し、夜間はインデックスを非活性な状態とすることで、一括更新処理でインデックスを更新しないため高速に更新処理を行うことができます。インデックスは一括更新処理の完了後に再創成し、翌日の運用に備えて活性な状態とします。

インデックスの状態

インデックスの状態には、以下があります。

表が分割されているときは、インデックスを構成する一部のDSIが活性状態であれば、アプリケーションからインデックスを使用することができます。ただし、非活性状態のインデックスDSIを参照するアプリケーションは実行時にエラーとなります。すべてのDSIが非活性状態の場合は、アプリケーションからインデックスを使用することはできません。

各コマンドで指定したDSIが非活性状態の場合、各コマンドの振る舞いは以下となります。

コマンド

指定DSI

コマンドの振る舞い

rdbalidx

インデックスのDSI

実行可能

rdbalmdsi

表のDSI

実行可能

インデックスのDSI

rdbfmt

表のDSI

実行可能

インデックスのDSI

rdbgcdsi

表のDSI

エラー

インデックスのDSI

rdbprt

表のDSI

実行可能

インデックスのDSI

rdbrls

表のDSI

実行可能

インデックスのDSI

rdbrtr

表のDSI

実行可能

インデックスのDSI

rdbsaloader

表のDSI

エラー

rdbsloader

表のDSI

実行可能

インデックスのDSI

rdbsuloader

表のDSI

エラー

rdbudsi

表のDSI

エラー

インデックスのDSI

rdbups

表のDSI

エラー

インデックスのDSI

rdbunl

表のDSI

エラー

rdbunlx

表のDSI

エラー

表のDSIが活性状態で、関連するインデックスのDSIが非活性状態の場合、各コマンドの振る舞いは以下となります。

コマンド

指定DSI

コマンドの振る舞い

rdbgcdsi

表のDSI

関連するインデックスのDSIのうち、非活性状態のインデックスのDSIを処理対象としない

rdbsaloader

表のDSI

関連するインデックスのDSIのうち、非活性状態のインデックスのDSIを処理対象としない

rdbsloader

表のDSI

インデックスのDSIの状態(活性/非活性)に関係なく、関連するすべてのインデックスのDSIを処理対象とする

rdbsuloader

表のDSI

関連するインデックスのDSIのうち、非活性状態のインデックスのDSIを処理対象としない

以下のコマンドについては、DSIの状態により、以下の振る舞いとなります。

コマンド

指定資源

コマンドの振る舞い

rdbupt

  • 非活性状態の表のDSIを処理対象としない

  • 表が分割されていない場合かつ表のDSIが非活性状態の場合はエラー

  • 非活性状態のインデックスのDSIを更新対象としない

  • 非活性状態のインデックスのDSIを参照した場合はエラー

rdbups

  • 指定した資源に関連するDSIのうち、1つでも非活性状態のDSIが存在する場合は、エラー

表のDSO

インデックスのDSO

rdbunlsql

  • 非活性状態の表のDSIを処理対象としない

  • 表が分割されていない場合で表のDSIが非活性状態の場合はエラー

  • 非活性状態のインデックスのDSIを参照した場合はエラー

上記以外のコマンドについては、DSIの状態(活性/非活性)に関係なく、実行可能です。

インデックスの非活性化

インデックスを非活性状態に変更する場合の操作の手順と操作例を以下に示します。なお、バッチ業務が使用するクライアント用の動作環境ファイルのINACTIVE_INDEX_SCANには事前にNOを指定してください。

操作の手順
(1) インデックスの状態を非活性状態に変更します。 ――― rdbalidxコマンド 
                                                          (sオプション) 
(2) バッチ業務を実行します。
操作例
$ rdbalidx -i 在庫管理DB.在庫表IXDSI -s INACTIVE 

バッチ業務実行

注意

クライアント用の動作環境ファイルのINACTIVE_INDEX_SCANにNOを指定せずにバッチ業務を実行すると、非活性状態のインデックスDSIを参照し、バッチ業務がエラーとなる場合があります。

参照

クライアント用の動作環境ファイルの詳細は、“Symfoware Server アプリケーション開発ガイド(埋込みSQL編)”を参照してください。

インデックスの活性化

バッチ業務実行後には、バッチ業務で行った更新結果をインデックスに反映し、インデックスを活性状態にします。

インデックスの活性状態への変更は、rdbsloaderコマンドのxオプション(インデックスの創成)により行います。rdbsloaderコマンドを実行することで、インデックスが創成され、インデックスの状態が活性状態に変更されます。

$ rdbsloader -i 在庫管理DB.在庫表IXDSI1 -x