DB2ハンドラの使用

データ管理 > SQLに関する考慮事項 > Magic SQL データベース > DB2 UDBデータベースゲートウェイ

DB2ゲートウェイは、ハンドルを使用するCLIで記述されています。

ハンドルは、1つのSQLステートメントの情報が含まれているデータオブジェクトです。ハンドルは、最初に割り当てられて、SQLステートメントが使用しなくなって時点で解放されます。Magicカーソルは、DB2ハンドルと対応しているSQLステートメントです。ステートメントハンドルは、カーソルがオープンされた最初の時点で割り当てられます。特に最初、Magicは、テーブルまたはファイルからレコードをフェッチしようとします。

カーソルが解放されるか、ドロップされた時だけ、ステートメントハンドルは解放されます。カーソルは何回もオープンされるので、このような処理が行われます。リンクカーソルは、次のページに行くたびに、メインカーソルが再びオープンされない間にフェッチされた各レコード用に再びオープンされます。ステートメントの再割り当てを何度も行うのは、性能を低下させることになります。

結果として、非常駐のタスクがクローズされた時にハンドルが解放されます。常駐タスクの場合は、Magicエンジンが終了した時点で、ハンドルは解放されます。

DB2 UDBでは、オープンされたハンドルの限界は分離レベルに依存します。各分離レベルに対応して、オープンされたハンドルの限界があります。Magicにおいて、分離レベルはデータベースレベルで設定することができ、テーブルはMagicが使用する異なるデータベースに割り当てることができます。

この結果、異なる分離レベルでオープンしている異なるハンドルと、オープンされたハンドラの数がより高くあり続けるようになります。