2011年6月28日

[pgsql-jp: 40829] Re:デッドロックについて

佐藤です。

デッドロックを回避する方法については [pgsql-jp: 40827] ですでに回答さ
れていますが、

> お世話になります。野沢と申します。
>
> デッドロックの現象が解決しないため、質問させてください。

> RHEL5.5 64bit,Postgresql8.4.5
(snip)
> (2)deadlock_timeoutの設定
>   当初はデフォルト設定(1秒)を設定しており、直ぐにデッドロックタ
>   イムアウトが返却されました。
>   SQLコード:40P01(デッドロックの検出)
>   デッドロック回避のために、当設定値がチューニング要と判断し、設定
>   値を(100秒)に変更して、再実行しました。
>   が、100秒後にデットロックタイムアウトが検出されました。
>   deadlock_timeout の値を増やす事で、デッドロックタイムアウトの回
>   避は出来ず、検知にかかる時間が大きくなるという結果でした。
>   数秒間実施で356/9500件の割合(3.7%)でデッドロックを検出してい
>   ます。

上記のところが気になったので補足しておきます。

deadlock_timeout パラメータの値を増やしてデッドロックの発生を回避しよ
うとしていますが、この値を増やしてもデッドロックの検出が遅れるだけで回
避することはできません。

PostgreSQL では、deadlock_timeout パラメータに指定した時間だけ待っても
ロックを取得できない場合、実際にデッドロックが発生しているかどうかを検
出する処理を開始します。

デッドロックの検出は比較的負荷の高い処理なので、デッドロックが発生して
いないにも係わらず、頻繁に実行されると性能が低下してしまいます。

deadlock_timeout パラメータは、デッドロックが発生しないようにアプリケー
ションの作り込みを行った上で、無駄なデッドロックの検出処理を実行しない
ように増やすものです。


----
Tomoaki Sato <sato@xxxxx>
SRA OSS, Inc. Japan


投稿者 xml-rpc : 2011年6月28日 23:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105083
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。