3.6.14 [IBM i 高速テーブル]

「読み取り専用」の場合に、より高速にアクセスできるように対象のファイル定義と関連の論理ビューを高速の IBM i ユーザー索引にミラーリングするかどうかを指定します。

以下の各項目は、IBM i の高速テーブル機能についての基本情報です。この機能を使用する前に、必ずこれらの項目を読んで理解しておいてください。

例えば、40 個のデータベース・ファイルを開くような従来の商用アプリケーションでは、40 個のファイルを開き、その後開いたままにしておくためのスペー スおよび時間には大幅なオーバーヘッドが存在します。

しかし、これらのファイルのうち 20 個が高速テーブルとして実装された場合は、スペースと時間のオーバーヘッドが約 50 %に減少します。これによって、このアプリケーションのパフォーマンスは大幅に向上するはずです。高速テーブル索引は、IBM i の「プラットフォーム固有」のオプションです。他のプラッ トフォーム上では、「高速テーブル」フラグは無視されて他のファイルと同様に実装されます。

これは設計上の考慮事項かもしれませんが、通常のデータベース管理機能を使用している他のプラットフォーム上では、あまり高速な IBM i のユーザー索引を使用しないでください。高速なユーザー索引を使用して改良し過ぎるとアプリケーションが機能しなくなる可能性があります。IBM i のユーザー索引機能の詳細とその用途については、IBM の Information Center に説明されています。既存の 3GL ベースのアプリケーション・プログラムから、この高速テーブルにアクセスす ることも可能です。

デフォルト:NO (チェックなし/未選択)

使用規則

高速テーブルとして有効であるためには、ファイル定義が以下のルールに従っている必要があります。これらの項目の大部分は、ファイルの作成または変更を「実行可能」にする段階で検査されます。ルールに違反すると、該当のエラー・メッセージが表示されて、実行可能にする処理は失敗します。

これらのルールは、以下の基本的な物理ファイル定義とそれに対して定義される論理ビューすべてに適用されます。

要約すれば、高速テーブル機能とは、シンプルな検索とデコード型のファイル用にのみ設計されたものであるということです。他の高度な方法で使用されるファ イルは、高速テーブルとして実装しないでください。

ヒントとテクニック

高速テーブルについてのよくある質問には、以下のようなものがあります。

質問:高速テーブルには、どのようなタイプのファイルが適していますか?

一般的には、以下のような特性をもつデータベース・ファイルが、高速テーブルの実装に適していると言えます。

質問:高速テーブルのデータはどこに保管されますか?

高速テーブルとしてフラグの立っている LANSA ファイル定義も、他のファイルと同様に設定されます。実際のファイル・データは、この通常のファイルに格納され維持管理されます。ただし、データはまた「読み取り専用」高速索引にミラーリングされ、「読み取り専用」アプリケーションから非常に高速にアクセス できるようになります。

この高速索引は、実際は IBM i のユーザー索引 (オブジェクト・タイプは *USRIDX) です。このユーザー索引は、現在の区画のモジュール (またはプログラム) ライブラリ内に自動的に作成され、そこに常駐している必要があります。この索引はユーザーが作成する必要はありませんが、定期的に削除し再作 成することも可能です。このユーザー索引の例を探す際のポイントは、ユーザー索引に DC@TBLIDX という名前が付いているかどうかを見つけることです。

質問:高速索引のバックアップは必要ですか?

必要ありません。個々のテーブルにはそれぞれ関連するデータの実ファイルがあり、そこには「実」データが含まれているため、すべてのテーブルの高速索引を 組み込み関数のREBUILD_TABLE_INDEXを使用して、ほんの数分で再作成することができます。

ただし、万一復元手順を呼び出す必要がある場合は、索引と「実」データを含む関連のデータベース・ファイルのすべてが同期しているバックアップがあれば、 復元手順を簡略化して高速化できる場合があります。

質問:高速索引へのアクセスは、どのような場合に行われるのですか?

LANSA コード変換機能は、さまざま時点で、データベース・ファイルにアクセスするコードを生成する可能性があります。この生成が実行され、呼び出され るファイルが高速テーブルである場合は、以下のような場合に、実ファイルの代わりに高速索引が実際にアクセスされます。

質問:高速テーブルで *DBOPTIMISE または *DBOPTIMIZE を使用できますか?

はい、ファンクションが高速テーブルを更新する場合を除いて、どのような場合でも可能です。高速テーブルを更新するファンクションは、テーブルへのすべての I/O を、関連する I/O モジュールを通じて行う必要があります。これにより、実データ・ファイルとミラーリングされた高速索引は、同時に更新されるようになります。

質問:高速索引の更新は、どのような場合に行われるのですか?

高速テーブルとしてフラグの立っているファイルに対して I/O モジュールが作成されると、ファイルに対して実行される挿入、更新、削除の回数をカウントするための補助的なコードが追加されます。

ファイルが閉じられる際にこのカウントが検査され、0 より大きければそのファイルの既存のエントリーのすべてが高速索引から消去されます。次に、高速索引に新しいエントリーを挿入するために、実ファイル (およびそのビュー) 全体が読み取られます。

このアーキテクチャは、以下のような仕組みを持ち、また高速テーブルの使用に影響を与えます。

質問:「実」ファイルと索引との同期が取れていない状態になることはありますか?

前項の説明からもわかるように、ファイルとそのミラーリングされた高速索引との同期が取れていない状態になる可能性があります。例えば、あるファンクションが 1 つのテーブルに 3 つの新規エントリーを挿入した直後にエラーが発生したとします。この時点では、各新規エントリーは実ファイル内に格納されています が、高速索引には反映されていません。

質問:同期が取れていない状態は、どのようにすれば修正することができますか?

ファイルとその高速索引との同期が取れていない場合に、それらを再度同期させるには、以下の処理を実行してください。

EXEC_OS400 CMD('DLTUSRIDX DC@TBLIDX')

USE BUILTIN(REBUILD_FILE_INDEX) WITH_ARGS('''*ALL''')

質問:ファイルのレイアウトを変更すると、どうなりますか?

ファイルのレイアウトを変更して変更を実行可能にすると、テーブルと索引との再同期が自動的に実行されます。この自動同期は、変更された定義を変更後に他のシステムにエクスポートした場合は実行されません。

質問:高速テーブルを他のシステムにインポートするとどうなりますか?

高速テーブルは、通常のファイルと同様に他のシステムへインポートされます。しかし、ファイルのデータがインポートされた場合、またはファイル・レイアウ トが変更された場合は、関連の索引は自動的に更新または再フォーマットされることはありません。索引の更新または再フォーマットを行うためには、前述した方法のいずれかを使用して、ファイルとその索引との「再同期」を起動してください。

注:1GB を超えるユーザー索引、または入力レコード長が 108 バイトを超えるユーザー索引は、OS/400 の V2R2M0 よりも前のリリースに保管することも、そこから復元することもできません。

警告

プラットフォームについて

Ý 3.6 ファイルの属性