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

toshihideka4316 @ zenrin.co.jp toshihideka4316 @ zenrin.co.jp
2010年 12月 13日 (月) 16:14:48 JST


お世話になります、片山です。

ODBCドライバの9.0.02.02に向けてのテスト用ドライバですが、
PostgreSQLサーバver8.4.2ではトランザクションの反映遅延が発生しなくなりまし
た。
しかし、PostgreSQLサーバver8.2.14ではトランザクションの反映遅延が発生すること
がわかりました。
(クライアントは8.2.14のままです)

サーバのログは以下の通りです。処理の流れを()内に書いています。

server8.2.14 client8.2.14 odbc9.0.02.02⇒コミット後、接続を切断して数分後にト
ランザクションの更新が反映される
↓############
(接続)
2010-12-13 14:29:01 JST LOG:  connection received: host=srv port=4171
2010-12-13 14:29:01 JST LOG:  connection authorized: user=testuser
database=TEST
(トランザクション開始)
(update文発行)
(out of memoryが発生するSQL文発行)
(out of memory発生)
(コミット)
(接続の切断)
2010-12-13 14:38:04 JST LOG:  could not send data to client: 接続が相手からリ
セットされました
2010-12-13 14:38:04 JST LOG:  could not send data to client: パイプが切断され
ました
(切断から約1分後)↓
2010-12-13 14:39:01 JST WARNING:  there is no transaction in progress
2010-12-13 14:39:01 JST WARNING:  there is no transaction in progress
2010-12-13 14:39:01 JST LOG:  disconnection: session time: 0:09:59.984
user=testuser  database=TEST host=srv port=4171
(トランザクションの更新が反映される)
↑############

server8.4.2 client8.2.14 odbc9.0.02.02⇒コミット後、すぐにトランザクションの
更新が反映される
↓############
(接続)
2010-12-13 14:43:16 JST:10274LOG:  接続を受け付けました: ホスト=srv port=4609
2010-12-13 14:43:16 JST:10274LOG:  接続の認証を行いました: ユーザ=testuser
、データベース=TEST 
(トランザクション開始)
(update文発行)
(out of memoryが発生するSQL文発行)
(out of memory発生)
(コミット)⇒すぐにトランザクションの更新が反映される
(接続の切断)
↑############

################################################
動作再現は以下のフリーソフトで行っています。
↓黒猫 SQL Studio
<http://kuronekosoft.ewinds.net/sqlstudio.aspx>

■トランザクションの結果反映に遅延が生じるパターン(server8.2.14 client8.2.14
odbc9.0.02.02)
 1)接続、トランザクション開始
 2)Update文を発行してレコードを変更
 3)select文にて大容量のデータを取得した結果「out of memory」となった
 4)コミット
 5)接続の切断
 6)切断直後に別接続でSelect文を発行⇒更新内容が反映されていない
 7)接続を切断してから約1分後更新内容が反映された⇒トランザクションの結果が
遅延して反映されている
⇒5)にてコミット後に接続を切断しない場合、コミットを行ってから20分たってもト
ランザクションの結果が反映されない

以上よろしくお願いいたします。





pgsql-jp メーリングリストの案内