sql >> データベース >  >> RDS >> Sqlserver

NOLOCK ヒントを使用してデッドロックを回避する

    SQL Server/Sybase のようにロックする RDBMS で時折デッドロックが発生することが予想されます。

    MSDN「ハンドリング デッドロック」 .基本的に、SQLException を調べて、おそらく 0.5 秒後に再試行してください。

    それ以外の場合は、コードを見直して、テーブルへのすべてのアクセスが同じ順序になるようにする必要があります。または、SET DEADLOCK_PRIORITY を使用して、誰が被害者になるかを制御できます。

    MSDN for SQL Server には、"Minimizing Deadlocks" があります。

    これは、私が好きではない「低い分離レベルを使用する」ことにも言及しており(SOの多くのSQLタイプと同じです)、あなたの質問です。しないでください、それが答えです... :-)

    注:MVCC タイプ RDBMS (Oracle、Postgres) にはこの問題はありません。 http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning を参照してください。 しかし、MVCC には別の問題があります。



    1. 同様の値を使用して、あるテーブルから別のテーブルに値を取得するにはどうすればよいですか?

    2. SQLServerをPostgreSQLに接続する

    3. TSQLでPRINTバッファをフラッシュするにはどうすればよいですか?

    4. 優れたデータベース設計、可変数の属性