PostgreSQL默许的阻隔等级是读提交(RC
)。PostgreSQL内部只结束了三种不同的阻隔等级,假定设置阻隔等级为”读未提交”,业务的四个特性则其行为和读提交完全相同,即P业务文书ostgreSQL没有结束读未提交。
下面看一下怎样检查以及设置PostgreSQL的阻隔等级。
检查PostgreSQL的阻隔等级
办法一:业务检查默许的阻隔等级
检查默许的阻隔等级:show default_transaction_is业务文书olat业务所是干什么的ion;
postgres=# show default_transact业务文书ion_isolation;业务所
default_transaction_isolation
-------------------------------
r业务ead committed
(1 行记载)
办法二:检查默许的阻隔等级
能够从PG业务局的体系装备表pg_set业务tings
中检查默业务性作业许的阻隔等级
postgres=# SELECT name, setting FROM pg_settings WHERE name = 'de业务性作业是什么意思fault_transaction_isolation';
name |业务所 setting
-------------业务性作业------------------+-----业务性作业-----------
default_transaction_isolation | read committed
(1 行记载)
检查当时会话的阻隔等级
检查当时会话(联接)的阻隔等级:
show transaction_isolation;
- 或
SELECT current_setting('t业务ransaction_isolation');
postgres=# show transaction_isolation;
transaction_isolation
-----------------------
read committed
(1 行记载)
装备PostgreSQL的阻隔等级业务所是干什么的
设置当时业务的阻隔等级(只能在业务块内修改)
在PostgreSQL中,SET TRANSACT业务所是干什么的ION
能够用来修改业务的阻隔等级。但是它只能在事业务所务块(tr业务性作业是什么意思ansaction blocks
)中实行。
SET TRANSACTION ISOLATION LEVEL业务所是干什么的 [ SERIALIZABLE |业务局 REPEATABLE READ | READ CO业务所是干什么的MMITTED | READ UNCOMMITTED ];
如下,修改PgSQL的阻隔等级:
postgres业务所是干什么的=# SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
警告: SET TRANSACTION 只能在业务块中业务性作业运用
SET
postgres=# begin transaction;
BEGIN
postgres=# show transaction_isolation;
transaction_isolation
---------------业务所--------
read committed
(1 行记载)
postgres=# SE业务文书T TRANSACT业务文书ION ISOLATION LEVE业务文书L REPEATABLE READ;
SE业务员T
postgres=# show trans业务局action_isolati业务所on;
transaction_isolation
-----------------------
repeatable read
(1 行记载)
以指定的阻隔等级开始业务
能够直接在开始业务时指定阻隔等级:
postg业务性作业是什么意思res=# BE业务部GIN TRANSACTION ISOLATION LEVEL REP业务文书EATABLE READ;
BEGIN
postgres=# show transaction_isolation;
transaction_isolation
-----------------------
repeatable read
(1 行记载)
设置当时会话中的业务隔业务所绝等级
设置当时会话的阻隔等级语法有些杂乱,语法如下所示:
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION业务性作业是什么意思 L业务局EVEL [ SERIALIZABLE | REPEATABLE READ | READ COMMITT业务员ED | READ U业务部NCOMMITTED ]
SQL句子永久修改全局的业务阻隔等级
在指令行中,或者说运用SQL句子,也能够结束永久修改全局的业务阻隔等级,指令为:ALTER SYSTEM SET default业务阻隔等级_trans业务局action_isolation业务文书 TO 'xxx'
修改结束后,实行SELECT pg_reload_conf()业务部;
SQL句子从头加载PostgreSQL装备,使其收效。这样那就不用重启pg服务了。
postgres=# ALTER SYSTEM SET default_transaction_isolation TO业务局 'REPEATABLE READ';
ALTER SYSTEM
postgres=# SELECT pg_reload_conf();
pg_reload_conf
---业务的四个特性-------------
t
(1业务性作业是什么意思 行记载)
postgres=# show default_transaction_isolation;
default_transaction_isolation
----------业务局---------------------
repeatable read
(1 行记载)
postgres=# SELECT current_setting('transaction_i业务所solation');
current_setting
-----------------
repeatable read
(1 行记载)
这样装备是永久收效的,P业务性作业ostgreSQL重启后仍有用,详业务的四个特性细的修改方位暂时不确定,因为检查装备文业务阻隔等级件postgresql.业务性作业conf
,其间的设置并没有修改。即ALTER SYSTEM SET
并没有影响配业务的四个特性备文件。
PG装备文件永久修改业务的阻隔等业务阻隔等级级业务局
Postgre业务的四个特性SQL的装备文件postgresql.conf中有一项关于阻隔等级的装备,修改后需求reload从头加载收效。这样能够永久修改全局的阻隔等级。
如下:
#def业务性作业是什么意思ault_transaction_isolation = 'read committed'