2010年11月18日

[pgsql-jp: 40546] Re:トランザクションの結果反映遅延についてご質問

toshihideka4316@xxxxx さんは書きました:
> TO:鈴木さん
>
> お世話になります、片山です。
>
>
>> APは単独で存在して直接PostgreSQLに接続しているのでしょうか?
>> それともWEBサーバなど、APとDBの間に接続を管理する層が存在するのでしょうか?

>>
>> もしくはAP自体になんらかの接続管理層が存在しているでしょうか?
>>
>>
>
> APとDBは直接接続しています。
> 独自に作成したAPのみでなく、フリーソフトの黒猫SQL studioでも再現します。
> ↓
> 黒猫SQLのページ
> < http://kuronekosoft.ewinds.net/sqlstudio.aspx>;
>
>
いずれにせよPostgreSQLが主因で"結果反映遅延"という現象は発生しないと思い
ますので、
問題発生箇所の切り分けが必要ですね。

PostgreSQLのログは取っているでしょうか。debugレベルでログを取って、
ODBCやアプリがユーザ側に見せている挙動(切断した,コミットしたと報告された
時刻、
OutOfMemory!など)と、
PostgreSQLに見せている挙動(実は切断されてない!、実際にコミットした時刻な
ど)の
違いを地道にたどれば、なんらかの食い違いが発見できるのではないでしょうか。


--
あと、手順についてですが、 

> ■トランザクションの結果反映に遅延が生じるパターン
>  処理前レコードのフィールドの値を「テスト」とすると
>  1)接続、トランザクション開始
>  2)Update文を発行してレコードを変更(「テスト」⇒「テスト2」)
>  3)select文にて大容量のデータを取得した結果「out of memory」となった
>  4)コミット
>  5)接続の切断
>  6)切断直後に別接続でSelect文を発行⇒update、コミットされたが結果レコード
> は「テスト」(更新内容が反映されていない)
>  7)約1分後のSelect文で更新内容が反映された⇒結果レコード「テスト2」⇒トラ
> ンザクションの結果が遅延して反映されている
> #5)にて接続を切断しない場合、20分後のselect文でもトランザクションの結果が反
> 映されない
>    (selectしても結果は「テスト」のまま)
これらすべて(6,7の再接続後の確認含む)、APから行っているのでしょうか?
それともAPとは違う、例えばpsqlで別ターミナルから直接確認しているのでしょ
うか?

もしもAPだけで接続、確認を行っているのであれば、
別途psqlで反映状況もモニタリングしてみることをお薦めします。
# 確認はSELECTで1レコード程度みるだけにしてください。
#ここでOutOfmemory起こしては元も子もないので。


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




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