我注意到我的應用程序中存在奇怪的行爲。看起來提交後,提交的數據不可見。算法是這樣的:Postgresql提交的數據不可見
connection1 - insert into table row with id = 5
connection1 - commit, close
connection2 - open
connection2 - select from table row with id = 5 (no results)
connection2 - insert into table row with id = 5 (PRIMARY KEY VIOLATION, result is in db)
如果選擇在連接2回報沒有結果的話,我就插入,否則更新。 服務器有許多數據庫(〜200),它看起來像提交已完成,但更改後在數據庫中。我使用java和jdbc。任何想法,將不勝感激。
如果連接2的當前事務在連接1的事務提交之前啓動,它將無法看到更改 – 2013-04-05 09:34:20
連接1在連接1提交後打開。 – Neuro 2013-04-05 11:51:32
它真的是一個新鮮的連接,或者您正在使用連接池,如果連接池在邏輯連接上的close()後發生重置/清理,可能會出現錯誤行爲。 – 2013-04-05 12:05:56