私は優れた VB プログラマーではありませんが、Sybase ASE をバックエンドとして使用する VB6 デスクトップ アプリケーションの保守/強化を任されています。このアプリには約 500 人のユーザーがいます。
最近、このアプリケーションに機能を追加しました。この機能は、データベース内の単一の行に対して追加の挿入/更新を実行します。キー フィールドはトランザクション番号であり、フィールドはインデックス化されています。トランザクションが完了するとレコードが削除されるため、更新されるテーブルには通常約 6000 のレコードが含まれます。展開後、ユーザーがパフォーマンスの低下を報告する前に、アプリは 1 日半正常に動作しました。
最終的に、パフォーマンスの問題はデータベース内のテーブル ロックにあることが判明し、以前のバージョンのアプリにロールバックする必要がありました。使用初日は月曜日で、通常システムの使用が非常に多い日なので、なぜその日に問題が発生しなかったのか混乱しています。
配置されたコードには、Sybase トランザクションを開始するための呼び出しがあります。BeginTrans と CommitTrans の間のブロック内で、データベースを更新する DLL ファイルへの呼び出しがあります。新しいコードを DLL のクラス モジュールに配置しました。
特にシステムは変更前に問題なく動作していたので、単一の行への単一の挿入/更新がなぜこのような問題を引き起こすのかについて私は混乱しています。ここでより大きな問題を明らかにした可能性はありますか? それとも、自分のアプローチを再考する必要があるだけですか?
同じような境遇の方、アドバイスいただける方よろしくお願いします。