SSブログ

レプリケーションとデッドロック [SQL Server]

SQL Serverのデッドロックはトレースフラグ1222や1204で詳細情報をエラーログに出力できます。
デッドロックの一般的なアプローチは
 ・ロックの順序を見直す
 ・ロック粒度を小さくする
 ・トランザクション分離レベルを下げる
 ・スナップショット分離レベルを使う
といった方法があります。
デッドロックが発生すると、SQL Serverはデッドロックに関わったプロセスのうち、
仕掛かり中のコストが低いものをVictimとしてキャンセルします。

一方でレプリケーション実行中にスナップショットエージェントとユーザトランザクションがデッドロックを起こすことがあります。
この場合、スナップショットエージェントにデッドロック優先度を設定することができ、スナップショット動作と
ユーザトランザクションのどちらを生かすのかを選択できます。
どちらを優先するかは業務要件次第ですが、スナップショットがらみのデッドロックが出ている場合には検討の余地があります。

設定は
-DistributorDeadlockPriority
で行い、
-1 はユーザトランザクション優先
0(規定値)はロックモニター任せ
1はスナップショット優先
となります。

参考
http://msdn.microsoft.com/ja-jp/library/ms146939.aspx

スポンサードリンク




nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。