アプリの前回のリリースで、Service Broker キューに何かが到着したときに待機するように指示するコマンドを追加しました
WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)
DBA によると、この追加以降、ログのサイズは非常に大きくなっています。これは正しいでしょうか?または、他の場所を探す必要がありますか?
アプリの前回のリリースで、Service Broker キューに何かが到着したときに待機するように指示するコマンドを追加しました
WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)
DBA によると、この追加以降、ログのサイズは非常に大きくなっています。これは正しいでしょうか?または、他の場所を探す必要がありますか?
これを Service Broker でテストしたことはありませんが、同じ ACID コンプライアンス メカニズムが機能していると思います。コードでトランザクションを開いたままにするかどうかによって異なります。トランザクションを開いたままにしてコミットしない場合、何かがそれを閉じるまでログは成長し続け、その時点で初めて古い領域を再利用するように最終的にマークします。
私はまだサービスブローカーを本番環境に導入していませんが、私が行ったテスト/読み取りには WAITFOR が含まれていませんでした。代わりに、Denny Cherry のようなサーバー ブローカー MVP は通常、WAITFOR を実行する代わりに、キューをクエリし続けます。
他のコードを投稿して、WAITFOR を使用している理由を教えていただけますか? たぶん、私が得ていないものがあり、それが良いユースケースのシナリオになるでしょう。ありがとう!