如何全局更改事务隔离级别?

Ula*_*ach 3 sql database postgresql transaction-isolation isolation-level

如何更改数据库的默认事务隔离级别?

postgres文档展示了如何针对每个事务和每个会话更改它 - 但没有展示如何更改数据库或集群的默认值。

MySQL中的操作是

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 有等效的吗?

Ula*_*ach 9

根据谷歌索引的这本书的内容

可以将整个默认数据库隔离级别更改为 SERIALIZABLE,如下所示

ALTER DATABASE <DATABASE NAME> SET DEFAULT_TRANSACTION_ISOLATION TO SERIALIZABLE ;
Run Code Online (Sandbox Code Playgroud)

例如,对于已提交的读,可以这样做:

ALTER DATABASE <db name> SET DEFAULT_TRANSACTION_ISOLATION TO 'read committed';
Run Code Online (Sandbox Code Playgroud)

你可以通过以下方式确认这一点

SELECT current_setting('transaction_isolation')
Run Code Online (Sandbox Code Playgroud)