朝にこれだけの素晴らしいですが、サーバのメモリSQL Serverがメモリの減少が考慮され、手動でSQLサービスを再起動する必要がありますが、問題があるので、90%以上を占め、と見て、どのように解決するには?
最初はそこプロセスから新しいプロセスを削除し、キルバースト?
いくつかのオンラインソリューションがあります。一つ一つを試してみました、私は何の効果も感じていないが、幸い、この一時的なデッドロックは、他のサービスの動作に影響を与えませんが、解決策を見つける必要があります。
まず、デッドロックが発生したかを理解する必要がありますか?
この時点で他のリソースをロックするロックしようとしているのタスクがデッドロックすることにより、これらのタスクの永久的な閉塞の原因となります場合は、二つ以上のタスクで、各タスクを競うリソース。類推、2人の台所で料理人、そして唯一の包丁、一度、包丁を持つシェフが、などそしてB、B、ともシェフがAシェフの料理人だけで、その後のナイフを使用し、不足することができますがあります。
デッドロックは、4つの要件が形成されています。
条件を維持するための要求:プロセスが同時に新しいリソースを申請することができ、リソースへのアクセスを。
非剥奪:リソースが割り当てられているが、プロセスから奪わすることはできません。(野菜をチョッピングシェフが、我々は、外部のゲストリマインダ皿、そうではない剥奪を炒めます。)
ループ待ち条件:複数の処理は、ループを形成し、前記各隣接プロセスを待っています。
相互に排他的な条件:リソースはプロセスによってのみを使用することができます。
第二に、どのようにデッドロックの問題を解決するには?
1、クリアデッドロック
2、ロックフリーのクエリの使用
次の本を読んで、文のタッチスローブック:最も重要な事項の一般取り外したものを、トランザクションを再処理した後、非常に重要な事項について最初に実行することを、それが保持されているリソースを解放します。もちろん、事前にデッドロックが発生を避けるためには、デッドロックの問題を解決するための最良の方法です。(それは間違って言ってませんでしたが、実際の運用ではなく貧しい、理論だけインチ)
次のように前記処理ステップが要約されています。
図1に示すように、最初にこのデッドロックの対応する情報を見つけます。
ここでは、デッドロックにつながっていることblkbyプロセスを見ることができ、その後、原因のデッドロックに代わって操作を命じます。どのようにこのプロセスは、それにつながる特定のオペレーティング・文であることを表示する方法は?表示するために使用するDBCC INPUTBUFFER(SPID)。ここではどこでアクション文のデッドロックにevnetinfoリード。
図2は、その後、あなたがこれらのステートメントを実行したプログラムは、その後、デッドロックコマンドを引き起こし、sp_who2があるかどうかをチェックアウトする場所を決定する必要があり、例えば、コマンドは、プログラムに関連する操作を探して、削除されます。ケースは、ビジネスには影響しない場合は、操作のこの部分を削除することができ、または他の手段によって置き換えられますか?またはタスク、操作のこの部分の最適化のタイミングを変更して再試行してください。
図のように、情報のヒントに従って、それは単に削除され、主な事業には影響しません。この文を読んで、その後、対応するdelete文を見つけ、彼女は解決しました。
いくつかの質問があります。
1、プログラムはデッドロックが正常で実行されていますか?デッドロックの少量の場合は、時間をかけて、デッドロックが自動的に解除されるかどうか?(グレート神は自動的に解除されますと言います)
2は、SQL Serverサービスは、デッドロックを軽減することで、再起動?サーバーを再起動しますか?
3、どのようにプログラム開発におけるこのような問題を回避するには?この問題を回避するために、SQL文をどのように設計しますか?
図4は、このプログラムは2--3年間実行されている、それがデッドロックではありませんでした、なぜ再起動SQL Serverのサービスだけでなく、頑固な存在後に表示されます。
そこで私はまた、あなたがデッドロックの相関分析を見ることができ、プロファイラSQLを使用しますが、気持ちは、このツールを把握していませんでした。
それはステップバイステップで仕上げ、ビット混沌を書きます。あなたが同様の問題が発生した場合、彼らはお互いの次に通信することができます。
これは、以下のリンクの研究を参照してください。https://www.cnblogs.com/yanggb/p/10944350.html