Transaction
如何將整個 Postgresql 數據庫的隔離設置為 SERIALIZABLE DEFERRABLE?
我認為在某處讀到可以配置 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
在您的會話中。