PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率

德哥 2016-10-22 15:31:20 浏览4478
展开阅读全文

PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率

作者

digoal

日期

2016-10-18

标签

PostgreSQL , advisory lock , 高并发更新


背景

通常在数据库中最小粒度的锁是行锁,当一个事务正在更新某条记录时,另一个事务如果要更新同一条记录(或者申请这一条记录的锁),则必须等待锁释放。

通常持锁的时间需要保持到事务结束,也就是说,如果一个长事务持有了某条记录的锁,其他会话要持有这条记录的锁,可能要等很久。

如果某张表的全表或者大部分记录要被更新的话,有几种做法。

1. 在一个事务中更新需要更新的记录,很显然时间可能很长,因为没有了并发。

2. 在多个事务中更新不同的记录,使用高并发来缩短更新的时间,但是就需要解决并发更新时存在的行锁冲突的问题。

本文将要给大

网友评论

登录后评论
0/500
评论
德哥
+ 关注
所属云栖号: 阿里云数据库ApsaraDB