私は素晴らしいVBプログラマではありませんが、Sybase ASEをバックエンドとして使用するVB6デスクトップアプリケーションのメンテナンス/拡張を担当しています。このアプリは約500人のユーザーがいます。Sybaseテーブルロック(VB6)を解決するには?
最近、データベース内の単一の行に追加の挿入/更新を実行する機能を追加しました。キーフィールドはトランザクション番号であり、フィールドはインデックスに登録されています。トランザクションが完了するとレコードが削除されるため、更新されるテーブルには一般に約6000レコードがあります。デプロイメント後、ユーザーは遅いパフォーマンスを報告する1日半前から正常に動作しました。
最終的に、パフォーマンスの問題をデータベース内のテーブルロックにトレースし、アプリケーションの以前のバージョンにロールバックする必要がありました。最初の日は月曜日でしたが、これは一般的にシステムの使用に非常に重い一日です。その日に問題が表示されない理由は混乱しています。
コードには、Sybaseトランザクションを開始するための呼び出しがあります。 BeginTransとCommitTransの間のブロック内には、データベースを更新するDLLファイルが呼び出されます。新しいコードをDLLのクラスモジュールに配置しました。
特に、変更前にシステムが正常に動作していたため、1つの行への1つの挿入/更新でこのような問題が発生するのは混乱します。私はここで大きな問題を抱えている可能性はありますか?それとも私のアプローチを再考する必要があるのか?
似たような状況にあってアドバイスをいただける方に感謝します。
デッドロックですか?あるいは、ロックが解放されるまでに長時間待たなければならないコードは他にありますか? –