SQLサーバー"Dry Run"モードになっていますか?負荷データバッファを持つロックを変更するデータ

StackOverflow https://stackoverflow.com/questions/2374457

質問

っ走る一部のクエリに対してSQL Serverデータベースは、削除します。理想的にはすべてこの内部取引につ原).

が実質的にデータがてパージからのバッファ、SQLサーバーを行った多くの物理IOを成功させるために、取引T-SQL.これが問題になった場合のバッチの間に30秒、そのユーザー体験タイムアウトです。

いい走っ selects片は、各時間走りの最終的なSQLの、SQL Serverのバッファがますます、必要なデータです。例えば:

初回起:

 BEGIN TRANSACTION
 SELECT ... WHERE ...
 ROLLBACK

第二走り:

 BEGIN TRANSACTION
 SELECT ... WHERE ...
 SELECT ... WHERE ...
 ROLLBACK

...

n-thラ:

BEGIN TRANSACTION
SELECT ... WHERE ...
SELECT ... WHERE ...
...
SELECT ... WHERE ...
ROLLBACK

のんの 最終走行:

BEGIN TRANSACTION
SELECT ... WHERE ...
SELECT ... WHERE ...
...
SELECT ... WHERE ...
DELETE FROM ... WHERE ...
COMMIT

全体のバッチの足の速さのせいにしたり、バッファの予約できます。

あのモードのSQLサーバー SET NOEXEC ON)障があると認められるSQLサーバーなどは行いません実際のデータの修正、なロックが埋のバッファに必要なデータはもらえますか?例えば

SET NOEXEC ON
EXECUTE ThatThingYouDo

SET NOEXEC OFF
EXECUTE ThatThingYouDo

または

SET DRYRUN ON
EXECUTE ThatThingYouDo

SET DRYRUN OFF
EXECUTE ThatThingYouDo
役に立ちましたか?

解決

はありません。
あなたが挿入された行のUPDATEでINSERTを踏襲しているとしましょう。あなたは、挿入された行が存在しないため、UPDATEをエミュレートすることはできないでしょう。さて、この場合には、なぜあなたの選択は、トランザクションにありますか?デフォルトでは(つまり、あなたがHOLDLOCKまたは類似を使用しない限り)、あなたは、トランザクションの期間行をロックされていません。

あなたはバッファプール(別称、データ・キャッシュ)があると考えられる場合は、

「フル、」あなたはより多くのRAMを必要とするか、または他のいくつかのアップグレードが/スケールアップ。

他のヒント

私はあなたの基本的なデザインは、最も可能性の高い問題であることを、あなたは非常に出て、通常の何かをしようとしたときに問題を解決することを見出しました。これは非常に正常な外です。

おそらくあなたは、など、そう長く取っていると、インデックスやロックを使用して、従来の解決策があるでしょうDELETE(テーブルサイズ、活動、インデックス、実行中の削除、他のプロセスへの行など)の詳細情報を提供することができアドレスにそれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top