Symfoware Serverで追加したデータの他トランザクションからの参照について

Symfoware Server の技術情報はこちら

データを追加するトランザクションを実行中に、他トランザクションからSELECT文を実行すると、追加したデータが参照できません。原因と対処方法を教えてください。
[原因]
資源の占有単位に行単位(RLOCK=YES指定)を指定した場合、データを追加するトランザクションとデータを検索するトランザクションが競合すると、後続の検索トランザクションでデータが検索されない場合があります。
データ検索時の検索条件にインデックスを使用した場合、データを追加するトランザクションがデータの追加処理中に他トランザクションから検索すると、追加した行はCOMMIT文による確定前のため、インデックスでは検索されず、該当レコード無しとして検索が終了します。

[対処方法]
追加したデータを他トランザクションから参照する場合は、以下のいずれかの方法で対処してください。
  1. データを追加するトランザクションがデータ追加後、COMMIT文で確定してからデータの検索を行ってください。
  2. 資源の占有単位をDSI単位またはページ単位としてください。

注意事項)
トランザクションの占有待ちが発生し、同時走行性が損なわれる可能性があります。
このため、多重動作での性能検証を十分に行い、アクセスレスポンスが業務要件を満たしているか確認してください。

詳細は以下のマニュアルを参照してください。
 Symfoware Server V12.1.0 解説書
  4.4 トランザクションと排他

 Symfoware Server V12.1.0 アプリケーション開発ガイド(共通編)
  1.1.7 排他制御
  1.1.8 資源の競合が起きた場合の制御
  1.1.9 行単位の排他を使用する場合の注意事項

なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows,Solaris,Linux
アンサー種別 設計/開発
このページの先頭へ