実稼働環境で使用するための FM/Db2 のカスタマイズ
FM/Db2 を使用して、高スループットのオンライン・トランザクション処理環境をサポートする Db2® システムにアクセスする予定であれば、FM/Db2 (特に FM/Db2 エディター) を使用することでパフォーマンス/並行性低下の問題が発生する可能性があることを考慮する必要があります。
このセクションでは、発生する可能性のある並行性/パフォーマンスの問題について概説します。
- FM/Db2 エディターでの
大規模
モードの使用。File Manager Db2® エディターは、「通常」と「大規模」の 2 つのモードで作動できます。作動モードは、FM/Db2 エディターを使用してデータを表示する FM/Db2 機能で「row count (行カウント)」フィールドに入力された値によって決定されます。2 つのエディター・モードの特性については、File Manager User’s Guide and Reference for DB2 Data を参照してください。
大規模
エディター・モードを使用すると、Db2® パフォーマンスに悪影響を与える可能性があります。FM/Db2 エディターが大規模
モードで作動する場合、Db2® データにアクセスするために Db2® スクロール可能カーソルを使用します。これにより、FM/Db2 ユーザーの TSO アドレス・スペースのメモリー使用量は最小限に抑えられますが、Db2® が Db2® 一時データベース内に結果テーブル全体の一時コピーを作成することが必要になる場合があります。大きな表の場合には、そのために Db2® 一時データベース内で定義された表スペースで SQLCODE-904 (使用不可のリソース) が起こる可能性があります。このような理由から、大きな Db2® 表がある Db2® 実動環境での FM/Db2 エディターへのアクセス権限付与については慎重に検討する必要があります。製品インストーラーは、Db2® サブシステムごとに大規模
エディター・モードの使用を無効にすることができます。これを行うには、FMN2SSDM マクロ・パラメーターを設定します。- EDIT_MAX_ROWS をゼロ以外の値に設定します。EDIT_MAX_ROWSを参照してください。
- PROD_EDIT を YES に設定します。PROD_EDITを参照してください。EDIT_MAX_ROWS=0 が指定されている場合に PROD_EDIT=YES と設定すると、EDIT_MAX_ROWS=0 は指定変更されて EDIT_MAX_ROWS=1000 に置き換えられることに注意してください。FMN2SSDM マクロについては、FM/Db2 で FMN2POPT がアクセスするすべての Db2 システムの定義 (必須)で詳しく説明します。
- 表ロック・オプションの使用
File Manager Db2® エディターには、エディター・セッション中に表をロックできるようにするオプションがあります。表は
SHARED
モードまたはEXCLUSIVE
モードでロックできます。これらのオプションについては、適切なバージョンの Db2® 用の SQL リファレンス・マニュアルにある LOCK TABLE ステートメントの説明を参照してください。高スループットのオンライン・トランザクション処理環境では、要件に相反するため、SHARED
オプションやEXCLUSIVE
オプションは使用できません。エディターの表ロック・オプションは、Db2® サブシステム単位で使用不可にできます。これを行うには、FMN2SSDM マクロ・パラメーターを設定します。- TABLE_LOCKING を NO に設定します。TABLE_LOCKINGを参照してください。
- PROD_EDIT を YES に設定します。PROD_EDITを参照してください。TABLE_LOCKING=YES が指定されている場合に PROD_EDIT=YES を設定すると、TABLE_LOCKING=YES が指定変更されて TABLE_LOCKING=NO に置き換えられることに注意してください。FMN2SSDM マクロについては、FM/Db2 で FMN2POPT がアクセスするすべての Db2 システムの定義 (必須)で詳しく説明します。
- ユーザー指定の SELECT ステートメントおよび FM/Db2 エディター選択項目
ユーザーは FM/Db2 のさまざまな機能を使用して SELECT ステートメントを作成したり実行したりできます。FM/Db2 エディターは、そのステートメントの結果表を表示するために使用されます。結果表をブラウズ・モードで表示するのか、表示モードで表示するのか、編集モードで表示するのかを制御するシステム・オプションがあります。
SELECT ステートメントを処理する FM/Db2 機能には、以下のものがあります。
Prototype SELECT statements (basic)
Prototype SELECT statements (advanced)
Enter, execute and explain SQL statements
Edit and execute SQL statements from a data set編集モードでは、ユーザー指定の SELECT ステートメントの結果表を処理するときに、Db2® システム単位で、FM/Db2 エディターを使用できないようにすることができます。これを行うには、FMN2SSDM マクロ・パラメーター USER_SELECT_EDIT を NO に設定します。USER_SELECT_EDITを参照してください。
FMN2SSDM マクロについては、FM/Db2 で FMN2POPT がアクセスするすべての Db2 システムの定義 (必須)で詳しく説明します。
- カーソル並行性オプションの使用
FM/Db2 エディターには、Db2® データへのアクセスに使用されるカーソルの宣言に「WITH」文節を追加できるようにするオプションがあります。適切なバージョンの Db2® の SQL リファレンス・マニュアルにある
isolation-clause
の説明を参照してください。このオプションはデフォルトで WITH 文節を追加しないようになっています。その場合、Db2® は、システム・オプション、および Db2® オブジェクトが含まれている表スペースに対して指定されているオプションに基づいてロックを行います。以下のエディター・オプションも関係します。
Read-only access
Commit after data fetchFM/Db2 ユーザーがエディター・セッションでデータを表示前に読み取るときにそのユーザーが行うロックを回避する必要がある場合は、
アンコミット読み取り
並行性オプションを指定できます。Db2® システム単位でアンコミット読み取り
の使用を強制できます。これを行うには、FMN2SSDM マクロ・パラメーター FORCE_WITH_UR を Y に設定します。FORCE_WITH_URを参照してください。FMN2SSDM マクロについては、FM/Db2 で FMN2POPT がアクセスするすべての Db2 システムの定義 (必須)で詳しく説明します。
- PROD_EDIT パラメーター
FMN2SSDM マクロ・パラメーター PROD_EDIT は File Manager Db2® エディターの動作に以下のような各種効果をもたらします。
- 非アクティブ・タイマーがすべての FM/Db2 エディター・セッションに適用されます。同一の FMN2SSDM マクロに EDITOR_TIMEOUT=0 が指定されている場合、この値は EDITOR_TIMEOUT=60 で置き換えられます。
- 表ロックが無効になります。同一の FMN2SSDM マクロに TABLE_LOCKING=YES が指定されている場合、この値は TABLE_LOCKING=NO で置き換えられます。FM/Db2 ユーザーが「Editor Locking (エディター・ロック)」オプションを表示すると、この値は「1」(なし) に設定され、変更できなくなります。これにより、ユーザーは、このオプションを SHARED にも EXCLUSIVE にも変更できなくなります。
大規模
編集モードが無効になります。同一の FMN2SSDM マクロに EDIT_MAX_ROWS=0 が指定されている場合、この値は EDIT_MAX_ROWS=1000 で置き換えられます。FM/Db2 ユーザーがエディター関連機能入力パネルで「row count (行カウント)」フィールドに 0 を入力すると、この値は無視されて、EDIT_MAX_ROWS に対して指定された値で置き換えられます。これにより、ユーザーは大規模
モードで FM/Db2 エディターにアクセスできなくなります。データ・フェッチ後にコミット
オプションが確定されて選択済みになります。保管の実行時にコミット
オプションが確定されて選択済みになります。保管エラーがない場合にコミット
オプションが確定されて未選択になります。
データ・フェッチ後にコミット
オプションを指定した場合、エディター・セッション内のデータが最初に表示されたときに FM/Db2 エディター・ユーザーは誰も Db2® をロックしなくなり、このオプションを変更できなくなります。他の 2 つのオプションに関しては、現行エディター・セッションで行われた変更をユーザーが保管しようとするたびに Db2® コミットが発行されます。このコミットは、保管エラーが発生しているかどうかに関係なく必ず発行されます。これらを組み合わせて考慮すると、PROD_EDIT の動作により、編集中の Db2® オブジェクトに対するロックが最小限に抑えられます。ロックが保持されるのは以下の場合に限られます。
- データが表示前に初めてアクセスされるとき。
- エディター・セッションで行われた変更が妥当性検査のために Db2® に渡されるたび。
- FM/Db2 エディターの使用制限、およびユーザーの教育
FMN2SSDM のパラメーターを上記のように設定すれば、FM/Db2 エディターを使用するときに不要なロックやリソース制約が発生する可能性が低下しますが、完全に排除されるわけではありません。
FM/Db2 は強力なツールです。Db2® 実稼働環境において、FM/Db2 エディターにアクセスできるユーザーを設定する場合は、そのユーザーを慎重に検討する必要があります。
実稼働環境における FM/Db2 エディターのユーザーを教育することを検討してください。主な検討事項には次のようなものがあります。
- エディター・セッションで取得されるデータの行数を最小にする。取得される行が少なければ少ないほど、実動データベースに対して行われる可能性があるロックの数が減少します。
- 実動データに対するエディター・セッションの期間を最短にする。ここでは、Db2®
作業単位
という概念が関係します。実動データを扱う FM/Db2 エディターのすべてのユーザーが、この概念について、および作業単位の経過時間が長くなったときに発生する可能性のある問題について理解することが推奨されます。
潜在的な問題について以下に例を示します。
ユーザーが、実動表の File Manager/Db2 エディター・セッションを開始します。エディター・オプション
アンコミット読み取り
がオンになっていて、行選択基準によりエディター・セッションにおける行の数が 1000 に制限されています。ユーザーが変更コマンドを発行します。これにより 800 行が影響を受けます。ユーザーが SAVE コマンドを発行し、変更した内容を確認します。エディター・オプション
保管の実行時にコミット
はオフになっています。変更が正常に行われ、Db2® において、変更された 800 行がすべて更新されます。ユーザーが誰かに呼び出されて席を外したり、昼食に出かけたり、その日の仕事を終えたりして、エディター・セッションをアクティブにしたまま放置します。
このシナリオでは、FM/Db2 エディター・セッションは、実動データベースに対するロックなしで開始されます。SAVE コマンドが発行されると、Db2® では、変更された 800 行に更新ロックのマークが付けられます。エディター・オプション
保管の実行時にコミット
はオフになっているため、COMMIT は発行されず、Db2® 作業単位はアクティブのままです。この 800 行に対する Db2® ロックは、Db2® 作業単位が終了するまで (つまり、ユーザーがエディター・セッションを取り消すか、ユーザーがエディター・セッションを終了するか、またはユーザーの TSO セッションが取り消されるまで) アクティブのままです。前述のシナリオでは、これには数時間かかるか、あるいは数日かかる可能性すらあります。この間、実動データベースの他のユーザーは当該行にアクセスできない可能性があります。PROD_EDIT=YES を指定すれば、このシナリオで概説されている問題を回避できます。
実稼働環境における FM/Db2 エディターのユーザーは、実動データを変更するエディター・セッションの経過時間を最短にするように教育される必要があります。こうすることで、実動データに対して行われるロックの期間が最短になります。