日中はインデックスを使用したオンライン処理、夜間は一括更新のバッチ処理のような運用を実施する場合、インデックスの活性状態を変更することで、インデックスを有効に使用することができます。
日中はインデックスを活性な状態とすることでインデックスを使用した高速な検索、更新処理を実施し、夜間はインデックスを非活性な状態とすることで、一括更新処理でインデックスを更新しないため高速に更新処理を行うことができます。インデックスは一括更新処理の完了後に再創成し、翌日の運用に備えて活性な状態とします。
インデックスの状態には、以下があります。
アプリケーションから使用できる状態です。アプリケーションで、そのインデックスを処理対象とします。rdbsloaderコマンドによる創成またはrdbfmtコマンドによる初期化を行うと、この状態になります。
アプリケーションから使用できない状態です。アプリケーションで、そのインデックスを処理対象としません。DSIの定義直後は、この状態です。また、インデックスは、rdbalidxコマンドにより、非活性状態に変更することができます。
表が分割されているときは、インデックスを構成する一部の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 | 表 |
|
rdbups | 表 |
|
表のDSO | ||
インデックスのDSO | ||
rdbunlsql | 表 |
|
上記以外のコマンドについては、DSIの状態(活性/非活性)に関係なく、実行可能です。
インデックスを非活性状態に変更する場合の操作の手順と操作例を以下に示します。なお、バッチ業務が使用するクライアント用の動作環境ファイルのINACTIVE_INDEX_SCANには事前にNOを指定してください。
注意
クライアント用の動作環境ファイルのINACTIVE_INDEX_SCANにNOを指定せずにバッチ業務を実行すると、非活性状態のインデックスDSIを参照し、バッチ業務がエラーとなる場合があります。
参照
クライアント用の動作環境ファイルの詳細は、“Symfoware Server アプリケーション開発ガイド(埋込みSQL編)”を参照してください。
バッチ業務実行後には、バッチ業務で行った更新結果をインデックスに反映し、インデックスを活性状態にします。
インデックスの活性状態への変更は、rdbsloaderコマンドのxオプション(インデックスの創成)により行います。rdbsloaderコマンドを実行することで、インデックスが創成され、インデックスの状態が活性状態に変更されます。
$ rdbsloader -i 在庫管理DB.在庫表IXDSI1 -x