PostgreSQL支持的隔离级别:
- serializable
- repeatable read
- read committed
- read uncommitted
PostgreSQL默认的隔离级别为read committed。
查看当前默认的隔离级别:
postgres=# show default_transaction_isolation;
default_transaction_isolation
-------------------------------
read committed
(1 row)
查看当前的隔离级别:
postgres=# show transaction_isolation;
transaction_isolation
-----------------------
read committed
(1 row)
1. 修改PostgreSQL默认的隔离级别
修改配置文件postgresql.conf,设置默认的隔离级别,如下:
vim postgresql.conf
default_transaction_isolation = 'read committed'
重新加载配置:
pg_ctl -D /data/pg reload
2. 动态修改PostgreSQL隔离级别
修改隔离级别必须在事务中执行,可以修改默认的隔离级别和当前会话的隔离级别,语法如下:
set default_transaction_isolation='repeatable read';
set transaction isolation level serializable;
示例:
postgres=# begin;
BEGIN
postgres=# set default_transaction_isolation='repeatable read';
SET
postgres=# show default_transaction_isolation;
default_transaction_isolation
-------------------------------
repeatable read
(1 row)
postgres=# begin;
BEGIN
postgres=# set transaction isolation level serializable;
SET
postgres=# show transaction_isolation;
transaction_isolation
-----------------------
serializable
(1 row)