[pgsql-jp: 40829] Re: デッドロックについて
Tomoaki Sato
sato @ sraoss.co.jp
2011年 6月 28日 (火) 23:53:19 JST
佐藤です。
デッドロックを回避する方法については [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 @ sraoss.co.jp>
SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内