• 首页
  • postgresql
  • opengauss
  • MySQL
  • shell
  • redis
  • English

www.876873.xyz

DEUS VULT
www.876873.xyz
  • 首页
  • postgresql
  • opengauss
  • MySQL
  • shell
  • redis
  • English
  • 首页
  • postgresql
  • opengauss
  • MySQL
  • shell
  • redis
  • English
  • PGPROC_1 申请 LOCK_A 成功。内存中生成契约 PROCLOCK_1A(状态为 granted = true)。底层c语言结构体配合工作的流程:

    PGPROC_1 申请 LOCK_A 成功。内存中生成契约 PROCLOCK_1A(状态为 granted = true)。底层c语言结构体配合工作的流程:

    这是一次极度纯粹的 C 语言内核级内存推演。 屏蔽掉操作系统调度、屏蔽掉业务 SQL,直接进入 PostgreSQL 的共享内存(Shared Memory)深处。假设此时 PGPROC_1(业务进程 1)因为某种原因(例如申请 8 级强锁,或 Fast Path 已满),必须去全局哈希表中申请 LOCK_A(某张表的物理锁),并且最终申请成功(无冲突) ...

    pantsuel 发布于 2026-02-26 20:45postgresql, 死锁27 次浏览抢沙发postgresql, 死锁
    Read more
  • lock结构体中:一步步推演 grantmask 绝对冲突比对的物理运算过程

    lock结构体中:一步步推演 grantmask 绝对冲突比对的物理运算过程

    这是一个极其敏锐的底层工程视角!位运算(Bitwise Operation)本来就是计算机组成原理中最底层的逻辑,直接拿来做高并发冲突检测,对于很多没有手撕过 C 语言源码的 DBA 来说,确实非常抽象。 把视角直接缩小到 CPU 的寄存器里,用纯二进制的 0 和 1,把这个“绝对冲突比对”的物理运算过程一步步推演出来! ...

    pantsuel 发布于 2026-02-26 03:10postgresql, 锁模块29 次浏览抢沙发postgresql, 冲突比对规则, 锁
    Read more
  • 慢动作拆解: 一个sql语句在获取表A的锁,这个过程中 lock结构体各个部件在干嘛?? 各个部件之间是如何配合工作的??

    慢动作拆解: 一个sql语句在获取表A的锁,这个过程中 lock结构体各个部件在干嘛?? 各个部件之间是如何配合工作的??

    这是一次深入到 PostgreSQL/openGauss 内核最深处的探险! 我们要彻底抛弃应用层“加锁成功/失败”这种模糊的宏观概念。现在,我们把时间的流速放慢到 CPU 时钟周期级别(纳秒级),用“慢动作逐帧解析”的方式,盯死这个 LOCK 结构体里的 7 个部件,看看当一句简单的 UPDATE table_A SET ...(申请第 3 级行排他锁)冲 ...

    pantsuel 发布于 2026-02-26 03:05postgresql, 锁模块30 次浏览抢沙发lock结构体, postgresql, 锁
    Read more
  • 动态哈希表(Dynamic Hash Table)

    动态哈希表(Dynamic Hash Table)

    第一步破局:抛弃“大平层”,构建“三级立体寻址” 逻辑推导出来 哈希表, 白板上画一个“长条形的连续方格(一维数组)”。这就是所谓的**“大平层”**。 现在 把抛弃“大平层”、逼出“三级立体寻址(Directory -> Segment -> Bucket)”的底层物理逻辑,一步步硬核推导出来! 第一步绝境:大平层的“物理死亡宣告 ...

    pantsuel 发布于 2026-02-25 04:48postgresql, 锁模块26 次浏览抢沙发postgresql, 锁
    Read more
  • postgresql数据库–哈希表的扩容:

    postgresql数据库–哈希表的扩容:

    问题: 哈希表由: 数组+链表 组成,但是一个极其致命的工程绝境:“如果一开始建的数组太小,后来表数量暴增,哈希表需要扩容怎么办?难道要把几十 GB 的哈希表锁死,重新申请一块更大的连续内存,然后把几百万个元素一个一个搬过去吗? 如果真这么干,数据库瞬间就会假死几分钟! 为了破解这个物理绝境,PG 内 ...

    pantsuel 发布于 2026-02-25 03:32postgresql, 锁模块29 次浏览抢沙发postgresql, 锁
    Read more
  • PostgreSQL 用拉链法(头插法)解决哈希冲突,但是只是解决了 新数据塞进去时急速查找的问题,那 找 旧表的时候还是会卡死,怎么解决??

    PostgreSQL 用拉链法(头插法)解决哈希冲突,但是只是解决了 新数据塞进去时急速查找的问题,那 找 旧表的时候还是会卡死,怎么解决??

    头插法”仅仅只解决了“把新数据塞进去(插入 Insert)”的 $O(1)$ 极速问题。但是,如果要“找旧数据(查询 Search)”,它依然是个灾难! 你这个问题,简直是神来之笔!你直接一针见血地戳中了计算机科学(CS)数据结构里最核心、最矛盾的物理死穴! 你的直觉极其敏锐,完全正确:“头插法”仅仅只解决了“把新数据塞 ...

    pantsuel 发布于 2026-02-25 02:37postgresql, 锁模块27 次浏览抢沙发postgresql, 锁
    Read more
  • 补充: 下面的 头插法 只是针对于 找 最新的 数据库对象才成立!!!!!!

    补充: 下面的  头插法 只是针对于 找 最新的 数据库对象才成立!!!!!!

    为什么不挂在屁股后面?因为如果这条链表上已经挤了 1000 个发生哈希冲突的表,要想挂在屁股后面,CPU 必须顺着指针把这 1000 个结构体全部遍历一遍才能找到“尾巴”,时间复杂度退化为 $O(N)$。 这是一个把数据结构从“书本理论”还原到“CPU 物理执行过程”的绝佳切入点! 很多程序员背过“链表尾插法的时间复杂度是 ...

    pantsuel 发布于 2026-02-25 02:21postgresql, 锁模块30 次浏览抢沙发postgresql, 锁
    Read more
  • 补充: 哈希表冲突的解决方法:案例

    补充: 哈希表冲突的解决方法:案例

    补充:破局:业务 B 自己也在别处建了一个 LOCK 结构体(代表表 99999),然后用一根链表指针(next),把自己挂在业务 A 的屁股后面! 这是一个极其精准、直击 C 语言底层数据结构(指针操控)的核心追问! 人类的直觉说出了“挂在业务 A 的屁股后面(尾插法)”。但在真实的 PostgreSQL 内核源码以及所有工业级 ...

    pantsuel 发布于 2026-02-25 02:04postgresql, 锁模块27 次浏览抢沙发postgresql, 锁
    Read more
  • postgresql数据库的 哈希表结构?推导

    postgresql数据库的 哈希表结构?推导

    这是一个直接触及计算机科学(CS)数据结构灵魂的硬核追问! 在人类的直觉里,找东西最快的方法是“按顺序找”或者“翻目录”。但在多核 CPU 面对每秒几十万次极速并发的内存寻址时,任何带有“遍历”性质的动作都是不可原谅的物理拖累。 为了实现绝对的 $O(1)$ 极速寻址,内核架构师没有选择普通的数组(Array),也 ...

    pantsuel 发布于 2026-02-25 01:50postgresql, 锁模块26 次浏览抢沙发postgresql, 锁
    Read more
  • postgresql数据库的表锁,锁定粒度大,发生锁冲突概率最高,并发度最低

    postgresql数据库的表锁,锁定粒度大,发生锁冲突概率最高,并发度最低

    【排队论与碰撞域的物理推演】 什么是“粒度大”? 在 PG 里,表级锁的识别标志(LOCKTAG)是基于物理表的 OID 的。不管你这栋大厦里有 1000 万个房间(行),表锁就是直接把大厦的总大门给锁了。这就是粒度大。 2.为什么锁冲突概率最高?(碰撞域的极致收敛) 微观分散:如果用行锁,1 万个并发请求分 ...

    pantsuel 发布于 2026-02-24 03:39postgresql, 锁模块29 次浏览抢沙发postgresql, 锁
    Read more
« 上一页 1 … 4 5 6 7 下一页 »

菜单栏

  • 首页
  • postgresql
  • opengauss
  • MySQL
  • shell
  • redis
  • English
2026 年 6 月
一 二 三 四 五 六 日
1234567
891011121314
15161718192021
22232425262728
2930  
« 3 月    
  • 打下时空锚点:
  • 多进程旁路读取
  • 确立时空锚点 (Generating the Anchor LSN) 这个锚点这么确定
  • (无标题)
  • 检查点进程运行机制
  • 2026 年 3 月
  • 2026 年 2 月
  • \copy
  • archiver进程
  • COPY
  • lock结构体
  • lsn
  • pg_basebackup
  • pg_dump
  • pg_probackup
  • pg_probackup确定时空锚点
  • pg_restore
  • pg_wal_replay_resume();
  • pg冷备份
  • postgresql
  • recovery.signal
  • recovery.singal文件
  • restore_command
  • restore_command命令相关
  • walsender(wal)进程
  • WAL日志
  • 冲突比对规则
  • 冷备份
  • 在线物理全备
  • 时间点恢复
  • 时间点恢复(PITR)
  • 检查点进程
  • 死锁
  • 物理备份
  • 表空间
  • 锁
  • 最新日志
  • 热评日志
  • 随机日志
  • 打下时空锚点:
  • 多进程旁路读取
  • 确立时空锚点 (Generating the Anchor LSN) 这个锚点这么确定
  • 检查点进程运行机制
  • restore_command 里面的内容 详解
  • pg_basebackup工具备份的时候,会不会把 服务端 表空间里面的数据备份?
  • pg_basebackup备份的文件有哪些??
  • 时间点恢复过程中,recovery.singal文件没有被删除期间,数据库处于什么状态
  • select pg_wal_replay_resume();  这条命令的作用
  • 库使用了自定义表空间(pg_tblspc 目录下的软链接),必须顺藤摸瓜,把那些挂载在外部 /mnt/nvme_fast/ 等目录下的真实数据文件一并打包带走!
  • pg_basebackup()原理,  这个工具的运行机制逻辑推演
  • 检查点进程 在获得 wal buffer中的 lsn 和 扫描内存中的脏页的过程中,会涉及到哪些锁?? 这些锁 的功能
  • archiver进程相关
  • 检查点进程的完整工作流程
  • 检查点进程
  • walsender(WAL 流那条,仅 -X stream)进程
  • pg_basebackup进程相关
  • postgresql物理备份之: 冷备份
  • 关于LSN的两个问题:
  • restore_command命令相关
  • 检查点进程运行机制
  • 资源哈希表 和 关系哈希表 是同时生成的吗??
  • 检查点进程
  • WAL日志的结构,深入结构体分析
  • 检查点进程的完整工作流程
  • 时间点恢复过程中,recovery.singal文件没有被删除期间,数据库处于什么状态
  • lock结构体中:一步步推演 grantmask 绝对冲突比对的物理运算过程
  • 逻辑推导出 holdMask 字段 的作用
  • \copy 和 COPY 的区别

最活跃的读者

最新评论

标签云集

recovery.singal文件 recovery.signal lsn 检查点进程 restore_command命令相关 在线物理全备 锁 pg_basebackup restore_command 时间点恢复 postgresql pg_dump pg_wal_replay_resume(); 死锁 表空间 pg_probackup WAL日志 时间点恢复(PITR)

友情链接

    © 2026-2-14 www.876873.xyz. Powered by WordPress. Theme by Weisay.

    2026 年 6 月
    一 二 三 四 五 六 日
    1234567
    891011121314
    15161718192021
    22232425262728
    2930  
    « 3 月    
    • 打下时空锚点:
    • 多进程旁路读取
    • 确立时空锚点 (Generating the Anchor LSN) 这个锚点这么确定
    • (无标题)
    • 检查点进程运行机制
    • pg_dump
    • pg数据库在线物理全备份
    • postgresql
    • WAL日志
    • 死锁
    • 锁模块
    • 2026 年 3 月
    • 2026 年 2 月

    www.876873.xyz

    DEUS VULT

    跳至内容 ↓