WAITFOR
UnsplashのFischer Twinsによる写真
あなたはおそらく最大のパフォーマンスのためにクエリを調整します。 サーバーのパフォーマンスの可能性を最後のドロップごとに絞るために、インデックスとリファクタリングコードを追加する方法を知っていることに誇りを持っています。 スピードは通常王です。 そのため、SQL ServerのWAITFORコマンドを定期的に使用しない可能性があります。 しかし、遅さは必ずしも悪いことではありません。
今日、私はあなたにWAITFORコマンドを使用するための私の好きな方法の二つをお見せしたいと思います。
今週のビデオをYouTubeで見る
今週のコンテンツを私のYouTubeチャンネルで見ることもできます。
今週のビデオを見ることができます。
1. 人間を構築する
現代のコンピュータは高速です。 Cpuは毎秒数十億のアクションを実行し、ramメーカーの量はスティックに詰め込むことができます定期的に増加し、SsdはすぐにディスクI/Oの懸念を過去
これらのものはすべて大規模なワークロードを処理するのに最適ですが、コンピュータを”人間の速度”からさらに遠ざけます。 しかし、”人間の速度”は時々あなたが望むものです。 データベースでのアプリの使用状況や、サーバーに対してアドホッククエリを実行しているアナリストによって作成された負荷をシミュ P>
-- Run foreverWHILE (1=1)BEGIN --Insert data to simulate an app action from our app EXEC dbo.BuyDonuts 12 -- We usually average an order every 3 seconds WAITFOR DELAY '00:00:03'END
いくつかの擬似乱数生成といくつかのIF文を投げ、あなたが使用し始めることができる偽のサーバー負荷があります:
WHILE (1=1)BEGIN -- Generate command values 1-24 DECLARE @RandomDonutAmount int = ABS(CHECKSUM(NEWID()) % 25) + 1 -- Generate a delay between 0 and 5 seconds DECLARE @RandomDelay int = ABS(CHECKSUM(NEWID()) % 6) EXEC dbo.BuyDonuts @RandomDonutAmount WAITFOR DELAY @RandomDelayEND
2….. 貧しい人のService Broker
Service Brokerは、SQL Serverの優れた機能です。 それは本当によくメッセージングとキューイングのシナリオを処理しますが、私は通常、私は迅速かつ汚い何かを必要とするシナリオでそれを使用して いくつかのデータが利用可能であるか、プロセスを開始する準備ができていることを知るためにService Brokerを設定する代わりに、WHILEループとWAITFORで同じことを行 いいえ。. 実用的? はい。. クエリを実行する前にテーブルの結果をチェックし続ける必要がなくなりました-WAITFORにそれをさせることができます。
クエリを実行する前に、結果 プロセスへのpingを開始するまで待機したい特定の時間があることがわかっている場合は、WAITFOR TIMEを組み込んで、チェックをさらにインテリジェントにする