Checkpoint进程刷写脏页函数为CheckPointGuts,这个函数除了刷写脏数据页外,还会刷写CLOG、事务时间戳信息、子事务信息等,详情查看之前写的文章:
https://blog.csdn.net/yanzongshuai/article/details/104191177?spm=1001.2014.3001.5501
共享内存中,缓冲块有一个hash表维护,即SharedBufHash,通过tag即数据页所属表OID、页号等组成key进行hash,从而快速在内存中判定访问的数据页是否命中。
同时,还有buffer描述符对缓冲块进行管理,初始时通过描述符结构体中freeNext构成空闲链表,管理所有空闲页。
刷写脏页由函数CheckPointBuffers->BufferSync完成:(1)遍历buffer描述符数组,找出脏页,存储到CkpBufferIds数组,数组元素结构为CkptSortItem。(2)对CkpBufferIds数组进行排序,便于范围刷写,减少随机IO。(3)对数组CkpBufferIds中每个脏页,对齐进行write,并判断刷写的页数是否达到checkpoint_flush_after,达到阈值则调用函数IssuePendingWritebacks:排序、将连续的页总范围一次性sync。每刷写一次页都需要判断是否需要sleep,由函数CheckpointWriteDelay进行处理,达到阈值,每次sleep 100ms。(4)最后再发起一次IssuePendingWritebacks。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论


2年前

评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
1924次阅读
2025-04-21 16:58:09
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
216次阅读
2025-04-14 15:58:34
中国PostgreSQL培训认证体系新增PGAI应用工程师方向
开源软件联盟PostgreSQL分会
189次阅读
2025-05-06 10:21:13
4月“墨力原创作者计划”获奖名单公布!
墨天轮编辑部
173次阅读
2025-05-13 16:21:59
华象新闻 | PostgreSQL 18 Beta 1、17.5、16.9、15.13、14.18、13.21 发布
严少安
169次阅读
2025-05-09 11:34:10
PG生态赢得资本市场青睐:Databricks收购Neon,Supabase融资两亿美元,微软财报点名PG
老冯云数
159次阅读
2025-05-07 10:06:22
QPlus V6.3 更新,新增PostgreSQL与PolarDB PG支持,OceanBase 容灾管理重磅上线
沃趣科技
150次阅读
2025-05-13 09:39:27
SQL 优化之 OR 子句改写
xiongcc
146次阅读
2025-04-21 00:08:06
告别老旧mysql_fdw,升级正当时
NickYoung
127次阅读
2025-04-29 11:15:18