-
postgresql数据库的 死锁,逻辑推导过程
这是一次完全剥离所有修辞、抛弃一切应用层概念的纯物理级推演。 我们将直接下潜到 PostgreSQL 内核共享内存区,仅使用 C 语言的 PGPROC(进程状态)、LOCK(资源实体)、PROCLOCK(持有契约) 这三大核心结构体,以及底层的双向链表(Doubly Linked List)和操作系统信号量(Semaphore),把死锁的完整生命周期, ...
-
postgresql数据库 死锁 检查测机制
在关系型数据库的工程实现中,死锁检测(Deadlock Detection)是整个锁体系中最消耗计算资源的核心算法。死锁绝对不是应用层抛出的一个简单报错,而是一场发生在共享内存中,涉及硬件中断、有向图算法(DFS)、轻量级闩锁(LWLock)拦截与内存指针重排的物理级战役。 我们现在彻底剥离所有的概念包装,完全基于 Pos ...
-
死锁 软等待 ,慢动作拆解逻辑讲透
这是一次极其极致的底层 C 语言与图论算法的交叉推演。 在绝大多数 DBA 的认知里,只要发生死锁,数据库就一定会报错并杀掉一个事务。但在 PostgreSQL/openGauss 的底层源码中,死锁检测器(Deadlock Detector)的第一使命根本不是杀人,而是“救人”。 它救人的核心物理手段,就是针对**“软等待(Soft Wait / Sof ...
-
postgresql数据库 锁管理器 相关
PostgreSQL 数据库中,锁管理器(Lock Manager) 并不是一个独立的后台进程,而是一套存在于**共享内存(Shared Memory)**中的极其精密的数据结构和算法集合。所有的数据库读写进程(Backend Processes)在触碰底层数据之前,都必须“自觉”地按照同一套 C 语言算法,来到这片共享内存区域进行登记和冲突判定。 Pos ...