【发布时间】:2020-06-30 03:46:05
【问题描述】:
如何更改数据库的默认事务隔离级别?
postgres docs 显示如何更改每个事务和每个会话 - 但不显示如何更改数据库或集群的默认值。
在 MySQL 中的操作是
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
有 PostgreSQL 的等价物吗?
【问题讨论】:
标签: postgresql transaction-isolation
如何更改数据库的默认事务隔离级别?
postgres docs 显示如何更改每个事务和每个会话 - 但不显示如何更改数据库或集群的默认值。
在 MySQL 中的操作是
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
有 PostgreSQL 的等价物吗?
【问题讨论】:
标签: postgresql transaction-isolation
根据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')
【讨论】:
只需在postgresql.conf 或ALTER SYSTEM 中适当地设置default_transaction_isolation 参数即可。重新加载后,这将应用于整个集群。
您还可以使用ALTER DATABASE 或ALTER ROLE 仅更改数据库或用户的设置。
【讨论】: