Transaction

如何將整個 Postgresql 數據庫的隔離設置為 SERIALIZABLE DEFERRABLE?

  • March 29, 2014

我認為在某處讀到可以配置 Postgresql 數據庫以強制所有事務為 SERIALIZABLE,但我再也找不到該文件了。

事實上,我想強制我的數據庫的隔離級別為 SERIALIZABLE DEFERRABLE。這可能嗎?如果是,如何?

您可以SERIALIZABLE在以下位置設置為預設隔離級別postgresql.conf

default_transaction_isolation = 'serializable'

這可能會使假設READ COMMITTED隔離的客戶感到困惑,因此 IMO 最好在您的會話中明確設置它。

至於其餘的,根據手冊

交易屬性沒有任何影響,DEFERRABLE除非交易也是SERIALIZABLE並且READ ONLY

…鑑於此類交易的屬性,我很難想像您想要將其設為預設值。您是否可能將其與 混淆SET CONSTRAINTS DEFERRED

預設情況下,您可以使事務只讀且可延遲:

transaction_read_only = on
transaction_deferrable = on

postgresql.conf但這確實是一個相當糟糕的主意。相反,只需在您的第一個“真正的”SQL 語句之前使用適當的BEGIN, 或SET TRANSACTION在您的會話中。

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