在PostgreSQL中,EXCLUSIVE MODE和SHARE MODE两种不同的表锁模式的区别

特性:

表锁模式描述适用场景示例
EXCLUSIVE MODE
  • 锁定表,阻止其他事务对该表的任何写操作(插入、更新、删除)。
  • 允许其他事务读取(SELECT)表数据。
  • 其他事务不能对该表施加更高层次的锁(如 EXCLUSIVE MODEACCESS EXCLUSIVE MODE),即只能进行读操作。
当你需要在修改表时,阻止其他事务对该表进行写入,但允许其他事务读取数据。

BEGIN; -- 锁定表,禁止写入,但允许读取 LOCK TABLE your_table_name IN EXCLUSIVE MODE; -- 可以执行插入、更新或删除操作 INSERT INTO your_table_name (column1) VALUES ('value'); -- 其他事务可以执行 SELECT 读取 -- 但不能执行 INSERT/UPDATE/DELETE COMMIT;

SHARE MODE
  • 锁定表,允许其他事务读取(SELECT),但禁止其他事务对表进行写操作(插入、更新、删除)。
  • SHARE MODE 锁允许多个事务同时对表加上 SHARE MODE 锁,这意味着多个事务可以共享读访问权限,但所有写操作都被禁止。
  • 其他事务不能对该表施加任何排他性(写操作)的锁定。
当你需要多个事务可以并发读取数据,同时阻止对该表的写入操作时使用。

BEGIN;

-- 锁定表,禁止写入,允许多个事务并发读取
LOCK TABLE your_table_name IN SHARE MODE;

-- 可以执行 SELECT 操作
SELECT * FROM your_table_name;

-- 其他事务可以同时执行 SELECT,但不能 INSERT/UPDATE/DELETE

COMMIT;
 

主要区别:

特性EXCLUSIVE MODESHARE MODE
允许的操作允许当前事务对表进行写操作,其他事务只能读允许多个事务并发读取,禁止写操作
对其他事务的影响阻止其他事务写操作,允许读操作阻止其他事务写操作,允许读操作
允许并发的事务数量只允许一个事务获得 EXCLUSIVE MODE允许多个事务获得 SHARE MODE
是否可以执行写操作当前事务可以执行写操作当前事务不能执行写操作
是否允许更高级别的锁模式阻止更高级别的锁模式,比如 ACCESS EXCLUSIVE允许并发的 SHARE MODE 锁定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值