1

アプリケーションが起動すると、SQL Server から日付/時刻を取得し、SELECT CURRENT_TIMESTAMPその差をローカルの日付/時刻と比較して、このオフセットを記録します。日付/時刻を記録するすべてのアクションは、この時差に基づいて調整されます。したがって、日付/時刻を保存するたびに、サーバーの日付/時刻になります-必要になるたびにサーバーに実際に何度もクエリを実行する必要はありません.

問題は、このサーバーが地球の反対側にあり、接続に少し遅延があると仮定しましょう。そのラグも考慮する必要があります。リクエストからレスポンスまでの遅延ではなく、サーバーがリクエストからレスポンスを受け取るまでの遅延です。

SQL Server が現在の日付/時刻を取得してから、アプリケーションがそれを受信するまでのタイムラグをどのように測定すればよいですか?

SQL Server が非常に強力なデータベース エンジンであることを考えると、これに対応するための組み込みのトリックがあると思います。

4

2 に答える 2

1

これは、SQL Server だけの問題ではなく、実際にはデータ通信理論におけるより一般的な問題です。これに取り組む 1 つの方法は、最初に 3 ウェイまたは 5 ウェイ ハンドシェイクを実行し、1 つの ACK の中央値を見つけることです。次に、それを今後のすべての通信のデルタとして使用します。

SQL Server の場合、次のような非常に単純なクエリを実行して、SELECT 1結果が返されるまでにかかる時間を確認できます。ここでの落とし穴の 1 つは、(サーバー側も制御できる場合に備えて) TCP のような低レベルのメカニズムを使用しないことです。これは、クエリを実行すると、計算した合計デルタに、SQL Server がクエリを受信して​​解析する時間が含まれていることが確認されるためです。それなども。

于 2013-10-13T13:32:18.350 に答える