Postgresql

為什麼我得到舊數據?

  • December 25, 2015

今天我在PostgreSQL 9.5上發現了一些奇怪的東西。(我不知道這是否是因為測試版。)當我想獲取數據時,我會從查詢中獲取舊的和已刪除的數據。然後我做VACUUM FULL然後我得到正確的數據(這是空的)。

我在這裡錯過了什麼嗎?PostgreSQL 返回舊數據的原因可能是什麼?

注意:自動真空是ON.

您會發現Postgres 9.5 手冊的Read Committed Isolation Level章節具有指導意義:

Read Committed是 PostgreSQL 中的預設隔離級別。當事務使用此隔離級別時,SELECT查詢(不帶 FOR UPDATE/SHARE子句)只能看到在查詢開始之前送出的數據;它永遠不會看到未送出的數據或併發事務在查詢執行期間送出的更改。

大膽強調我的。

在送出您的事務之前,其他事務看不到更改。VACUUM與此無關,它僅在所有事務完成後清理死元組。

引用自:https://dba.stackexchange.com/questions/124536