[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 メーリングリストの案内