【问题标题】:Set default global postgres transaction isolation level设置默认全局 postgres 事务隔离级别
【发布时间】:2020-06-30 03:46:05
【问题描述】:

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

postgres docs 显示如何更改每个事务和每个会话 - 但不显示如何更改数据库或集群的默认值。

在 MySQL 中的操作是

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

有 PostgreSQL 的等价物吗?

【问题讨论】:

    标签: postgresql transaction-isolation


    【解决方案1】:

    根据this book indexed by google的内容

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

    ALTER DATABASE <DATABASE NAME> SET DEFAULT_TRANSACTION_ISOLATION TO SERIALIZABLE ;
    

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

    ALTER DATABASE <db name> SET DEFAULT_TRANSACTION_ISOLATION TO 'read committed';
    

    你可以用

    确认这一点
    SELECT current_setting('transaction_isolation')
    

    【讨论】:

      【解决方案2】:

      只需在postgresql.confALTER SYSTEM 中适当地设置default_transaction_isolation 参数即可。重新加载后,这将应用于整个集群。

      您还可以使用ALTER DATABASEALTER ROLE 仅更改数据库或用户的设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        相关资源
        最近更新 更多