postgreSQL默认的隔离级别及修改

作者:瀚高PG实验室 (Highgo PG Lab)- 徐云鹤

SQL标准的4种隔离机制。

Isolation levelDirty readsNon-repeatable readsPhantoms
Read Uncommittedmay occurmay occurmay occur
Read Committeddon't occurmay occurmay occur
Repeatable Readdon't occurdon't occurmay occur
Serializabledon't occurdon't occurdon't occur

常见的关系型数据库的默认事务隔离级别采用的是READ_COMMITED,例如PostgreSQL、ORACLE、SQL Server和DB2。但是使用InnoDB引擎的MySQL数据库默认事务隔离级别是REPEATABLE_READ。

查询postgreSQL默认的隔离级别:

highgo=> show default_transaction_isolation;

 default_transaction_isolation 

-------------------------------

 read committed

(1 row)

检查当前隔离级别:

highgo=# show transaction_isolation;

 transaction_isolation 

-----------------------

 read committed

(1 row)

修改隔离级别:

1.修改当前事务的隔离级别,须在事物中执行:

highgo=# begin;

highgo=# set transaction isolation level serializable;

SET

highgo=# show transaction_isolation; 

transaction_isolation 

----------------------- 

serializable

(1 row)

2.修改当前会话默认的隔离级别:

highgo=# begin;

highgo=# set default_transaction_isolation='repeatable read';

SET

highgo=# show transaction_isolation;

 transaction_isolation 

-----------------------

 serializable

(1 row)

highgo=#  show default_transaction_isolation;

 default_transaction_isolation 

-------------------------------

 repeatable read

(1 row)

highgo=# commit;

COMMIT

highgo=# show transaction_isolation;

 transaction_isolation 

-----------------------

 repeatable read

(1 row)

--

highgo=#  show default_transaction_isolation;

 default_transaction_isolation 

-------------------------------

 read committed

(1 row)

highgo=#  set default_transaction_isolation='repeatable read';

SET

highgo=#  show default_transaction_isolation;

 default_transaction_isolation 

-------------------------------

 repeatable read

(1 row)

highgo=#  show transaction_isolation;

 transaction_isolation 

-----------------------

 repeatable read

(1 row)

如果在事物中修改默认的隔离级别是不影响当前事物的。否则即时生效。

也可以在数据库级别设置默认的隔离级别:

[highgo@db1 data]$ cat postgresql.conf |grep default_transaction_isolation

#default_transaction_isolation = 'read committed'

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值