带你了解Greenplum的锁管理机制

本文介绍了Greenplum数据库的锁管理机制,包括自旋锁、轻量级锁和普通锁。重点讲述了普通锁的数据结构,如锁方法、锁结构体和死锁检测,特别是普通锁的LOCK和PROCLOCK结构体及其在并发控制中的作用。
摘要由CSDN通过智能技术生成

了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站

引言

数据库系统有多种实现并发控制的机制,而锁作为其中一种实现方式,具有非常重要的作用。在这篇文章中,我们将介绍Greenplum中的锁管理机制是如何实现的。本周五(8月28日)的《深入浅出Greenplum内核》第六场活动中,来自Greenplum原厂的内核研发将深度揭秘MVCC并发控制的其他内容,尽请关注。

01 锁管理概述

在Greenplum实现中,针对不同的场景和目的定义了三种锁,分别是自旋锁(Spinlocks)、轻量级锁(LWLocks)和普通锁(Regular locks,也叫重量级锁)。

自旋锁是一种短期持有的锁。如果加锁之后程序指令很多,或者涉及到系统调用,则不适合使用自旋锁。自旋锁通常由硬件指令TAS来实现,等待锁的进程会忙等直到可以拿到锁,或是如果等待时间过长,会有超时机制。自旋锁没有死锁检测和出错时自动释放。

轻量级锁为共享内存中需要并发访问的结构体提供锁保护,支持两种模式:互斥模式和共享模式。轻量级锁并没有死锁检测机制,但是在elog出错恢复时,轻量级锁管理器会自动释放持有的轻量级锁,因此一个进程在持有轻量级锁时是可以安全地报错的。通常来说࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值