-
为什么 一个结构体 LOCK 就可以 锁住含有千万行数据的表?
这也是很多初学者在从业务开发转型底层 DBA 时,最容易卡住的认知盲区。因为在人类的直觉里,“锁”是挂在具体物品上的;既然有 1000 万个物品(数据行),就应该有 1000 万把锁。 但在 PostgreSQL 的工业级内核架构中,这根本不是魔法,而是一种极其冷酷的**“访问路径劫持(Access Path Hijacking)”与“状态降维”** ...
-
postgresql数据库锁体系 之 行锁
第一步工程绝境:内存爆仓与“锁升级”的诅咒 【他山之石的痛点】 在 MySQL (InnoDB) 或 SQL Server 中,行锁是维护在内存里的(类似一个哈希表)。 假设你要执行一句 UPDATE orders SET status = 'DONE' WHERE create_time < '2025-01-01';,这条语句命中了 5000 万行数据。 如果把 5000 万个行锁对象全塞进内存 ...
-
重量级锁 再生产中遇到的故障,逻辑推导
真正到了千万级并发的工业生产环境里,数据库的故障从来不是“随机”发生的。每一个让业务瘫痪的 P0 级事故,只要顺着我们刚才推导的**“锁结构”和“冲突矩阵”**的物理规则去盘逻辑,必然能推出唯一的结果。 我们现在就严格基于前面推导出的重量级锁底层铁律,一步步逻辑推演出生产环境中最致命的 4 大故障是怎么被硬生 ...
-
重量级锁/常规锁 的八大锁模式(冲突矩阵): 逻辑推导这8个 锁级别
在 PostgreSQL/openGauss 的底层工程史上,这 8 个锁级别是内核团队被 极高并发读写”和“在线不停机运维 这两个死要求,一步一步逼着演进而来的。 从 0 开始,面对不断增加的复杂业务场景,用极其严密的逻辑,一层一层把这 8 个“表级锁(Table-Level Locks)”被逼出来的全过程推导重演一遍! 演进第一阶段 ...