3

(Atomikosを使用して分散トランザクションの実装をテストしたとき、大きなオーバーヘッドに気づきました(XAを使用せずに30ミリ秒かかったトランザクションは、XAで160を要しました)

ほとんどの時間は「準備」と「コミット」に費やされているようです。

テストでは、実際の更新を行わずに、単一のデータソース(Microsoft SQL Server)を含むトランザクションの(非現実的な)シナリオを使用しました。そのような場合、最小限のオーバーヘッドが期待されます。

だから私の質問は:

  • これは「通常の」オーバーヘッドですか?
  • そうでない場合は、次にどこを見ればよいですか?(私の最善の推測は、SQL Server Profilerを使用して、データベース内で時間が費やされているかどうかを確認することです)
4

1 に答える 1

1

私の知る限り、この長い待ち時間は、トランザクションを初めて使用するときにのみ発生します。

これは、トランザクションを開始するためにサーバーへの接続が確立されるために発生します。初回以降、OpenTransaction を呼び出すたびにそれほど時間がかかることはありません。

自分でテストできます。アプリを閉じずに、トランザクションを 2 回呼び出します。

もちろん、分散トランザクションを使用すると、使用するサーバーの数に応じて (各サーバーで 1 回) データを 2 回以上コミットするため、いくらかのオーバーヘッドが存在します。しかし、あなたが説明したほど長くはありません。

于 2011-09-16T18:47:32.113 に答える