2011-10-07 8 views
1

のように見えますが、別のゴミ箱になりそうです。私たちは最近、多くのコアとRAMを備えた完全なモンスターでSQLボックスを更新しましたが、私たちは旧式のDBスキーマを使用していましたが、古いSQLボックスには問題はありましたが、それを展開する日には、それは一週間以内に完全な混乱を超高速で実行されていた...SQLデッドロックとタイムアウトがほぼ常に

私たちのネットアプリは数百人で使用されているので、デッドロックとタイムアウトSQLボックス。私たちは理由を理解するために苦労しています。私たちはすべてのインデックスをチェックしていますが、今のところ大丈夫ですが、主要なテーブルの一部があまりにも幅があり、トリガーが愚かではありますが、今はこれについて何もできません。 USER1時間:9:21のエラーメッセージ:トランザクション(プロセスID 76)PIDの

たくさんは

ユーザー..例えばので、複数回にしようとしている同じユーザーに対して同じように見えます別のプロセスでロックリソースにデッドロックされ、デッドロックの被害者として選ばれました。トランザクションを再実行します。

ユーザー:user1時間:09:22エラーメッセージ:トランザクション(プロセスID 76)がロックリソースで別のプロセスとデッドロックされ、デッドロックの対象として選択されました。トランザクションを再実行します。

など。我々はそれは古いものと新しいものに復元からバックアップされた新しいボックスにDBを移動...

誰もが私たちが行うことができます何かになどの任意の提案を持っている場合、私は買いますそれら複数のパイント

おかげ

答えて

3

デッドロックが発生することが必ずしも高い負荷を必要としないのnat。どのプロセスがどの順序でどのくらいの期間、データをロックしているかという点で、設計上の問題の副産物となる傾向があります。

デッドロックを追跡するのに役立つSQLプロファイラの便利な機能がいくつかあります(2008 article here)。 。私はこれを最善の出発点としてお勧めしたいと思います。運が良ければ、状況を緩和するためにトランザクションを削除したり寿命を短くしたりするなど、簡単に1〜2つの犯人が存在することがわかります。

関連する問題