SQL Server 2014には2つのデータベースがあります。SourceDB
とLogDB
です。 SourceDB上では、Service Broker
;サーバー上でService Broker External Activator
サービスがアクティブになります。Service Broker外部アクティベータ応答が長くかかる
SourceDBについてTargetQueueには、テーブルの(Product)挿入トリガがTargetQueueで変更を送信するTargetQueueがあり、TargetQueueには外部のexeクライアントを振り分けるイベント通知があります。 exeクライアントの中では、私はついにWAITFOR(RECEIVE TOP (1))..
経由でデータをデキューし、LogDBに直接ログします。
したがって、私はSBEAサービスを開始し、最初の挿入時に(すべてのレコードを削除した後で)すぐにTargetQueueを挿入しますが、挿入時刻からSourceDBまでの間隔はLogDBへの挿入まで約です3-6秒、イベント通知ベースの時間消費ここでは、わからないと思います。これ以降の挿入の場合、間隔は100msとなります。
まず
さらに
- なぜ最初の挿入は、それがになると、なぜ後のテーブルのすべてのレコードを削除し、時間がかかりすぎていますもう一度長くかかりますか?なぜ、それ以上のものは最初のものより短くなりますか?
- 10ms未満でSQLCLRを使用してほぼ同じ構造を実現できるため、10ms未満の間隔を減らすことはできますか?最も速い応答は私のアプリケーションにとっても重要ですか? (どちらの構造も同じSQL Serverインスタンスがローカルで動作しています)
サービスブローカは、本質的に非同期であるあなたが技術としてそれを使用したい場合は、つまり、生成されたすべてのメッセージは最終的にプロセスによって消費されますが、キューからの同期動作に近いと思われるように、あなたは非常に多くのことを聞いています。 –
@BenThul私は、Service Brokerを使用していますが、私のサーバーは頻繁に要求を受けるため、非同期です。これらの要求の処理を中断しないように、 Service Brokerを同期構造の代わりに使用することができます(最近、ここでは良いアドバイスを提供しています)。しかし、実際にはこのパフォーマンスには本当に不満があります。だから、これが私が本当に求めていることです。 – ibubi