pg lock 与读写锁

本文详细介绍了PGLock和RWLock在数据库操作中的作用,包括它们在读写流程中的使用,加锁策略以及加锁失败的处理。特别关注了写流程中的PGLock生命周期和写锁释放时机,还提及了相关文章链接供进一步阅读。
摘要由CSDN通过智能技术生成

基本概念

PG Lock:

为了确保操作PG元数据的原子性。

RW Lock:

用于对象之间的互斥,互斥规则如下:

不互斥(在PG lock中)互斥
互斥不互斥(由存储引擎来保序与互斥)

详细介绍

读流程

读请求:一直持有读锁
读请求:一直持有读锁
由于读流程是同步的,因此整个流程都会持有PG Lock和Read Lock,同步读到数据后,释放Read Lock后,再释放PG Lock。

写流程

写请求:异步落盘后才释放写锁
写请求:主从副本全部提交到存储引擎后才释放写锁
写流程先加PG Lock,后加Write Lock。
把事务提交到本地存储引擎之后,就释放了PG Lock。
对于三副本而言,等主副本和从副本都异步提交到存储引擎后,回调流程会去释放写锁。

对于同一个对象,如果加锁失败如何处理:

与普通锁不同,加不到锁会一直等待,而对象的读写锁如果加不到直接会返回false,直接调用close_op_ctx(ctx),该函数中,会让op重新入队,等待调度。

写流程PG Lock的生命周期

参考笔者文章:osd shard queue

写锁何时释放

参考笔者文章:ceph osd 写流程回调梳理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值