PostgreSQL的clog属于日志还是数据,需要遵守write-WAL-before-data吗?_当前看点
2023-03-06 16:04:14 来源:腾讯云
【资料图】
总结
从原理上来看,MVCC需要给定事务ID后,能查询到事务的状态。
在PG中事务状态可以从几个路径获取:
在快照中查询(活跃事务)在元组头的状态为查询(不活跃事务)在CLOG中查询(不活跃事务)如果不看实现只看概念,不活跃事务提交状态也可以在XLOG中查询,CLOG可以视作一种XLOG commit/rollback日志的缓存、映射,一种事务提交状态的快速查询方式。
所以在write-WAL-before-data中,CLOG也会按照data来处理,只有XLOG属于WAL。
Postgresql中clog写盘实现SlruPhysicalWritePage
postgresql中clog使用SLRU机制读写,在Slru写盘前,会有保证xlog先写的机制:
group_lsn表示32个事务一组中最大的日志序列号(LSN)。group_lsn主要用于事务提交非同步落盘的场景。static boolSlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno, SlruWriteAll fdata){...if (shared->group_lsn != NULL){/* * We must determine the largest async-commit LSN for the page. This * is a bit tedious, but since this entire function is a slow path * anyway, it seems better to do this here than to maintain a per-page * LSN variable (which"d need an extra comparison in the * transaction-commit path). */XLogRecPtrmax_lsn;intlsnindex,lsnoff;lsnindex = slotno * shared->lsn_groups_per_page;max_lsn = shared->group_lsn[lsnindex++];for (lsnoff = 1; lsnoff < shared->lsn_groups_per_page; lsnoff++){XLogRecPtrthis_lsn = shared->group_lsn[lsnindex++];if (max_lsn < this_lsn)max_lsn = this_lsn; <<<<<<<<<<<<<<<<<<<<<<<<< 找到最大的LSN}if (!XLogRecPtrIsInvalid(max_lsn)){/* * As noted above, elog(ERROR) is not acceptable here, so if * XLogFlush were to fail, we must PANIC. This isn"t much of a * restriction because XLogFlush is just about all critical * section anyway, but let"s make sure. */START_CRIT_SECTION();XLogFlush(max_lsn); <<<<<<<<<<<<<<<<<<<<<<<<< 先保证XLOG写到这个位点!END_CRIT_SECTION();}} ... if (pg_pwrite(fd, shared->page_buffer[slotno], BLCKSZ, offset) != BLCKSZ) { ... }}
Postgresql中用户数据写盘实现FlushBuffer
数据页面同理,也是先找到页面lsn,刷xlog,在写数据。
static voidFlushBuffer(BufferDesc *buf, SMgrRelation reln){...buf_state = LockBufHdr(buf);/* * Run PageGetLSN while holding header lock, since we don"t have the * buffer locked exclusively in all cases. */recptr = BufferGetLSN(buf); <<<<<<<<<<<<<<<<<<<<<<<<< 找到页面的LSN/* To check if block content changes while flushing. - vadim 01/17/97 */buf_state &= ~BM_JUST_DIRTIED;UnlockBufHdr(buf, buf_state);/* * Force XLOG flush up to buffer"s LSN. This implements the basic WAL * rule that log updates must hit disk before any of the data-file changes * they describe do. * * However, this rule does not apply to unlogged relations, which will be * lost after a crash anyway. Most unlogged relation pages do not bear * LSNs since we never emit WAL records for them, and therefore flushing * up through the buffer LSN would be useless, but harmless. However, * GiST indexes use LSNs internally to track page-splits, and therefore * unlogged GiST pages bear "fake" LSNs generated by * GetFakeLSNForUnloggedRel. It is unlikely but possible that the fake * LSN counter could advance past the WAL insertion point; and if it did * happen, attempting to flush WAL through that location would fail, with * disastrous system-wide consequences. To make sure that can"t happen, * skip the flush if the buffer isn"t permanent. */if (buf_state & BM_PERMANENT)XLogFlush(recptr); <<<<<<<<<<<<<<<<<<<<<<<<< 先保证XLOG写到这个位点! ...smgrwrite(reln, BufTagGetForkNum(&buf->tag), buf->tag.blockNum, bufToWrite, false); ...}
关键词: PostgreSQL
为你推荐
-
PostgreSQL的clog属于日志还是数据,需要遵守write-WAL-before-data吗?_当前看点
-
韩执政党欢迎政府强征劳工赔偿方案,最大在野党谴责:韩国外交史上“最大耻辱和污点”
-
【聚看点】河蟹死了能吃吗
-
全国人大代表、太平洋医疗健康管理有限公司副总经理周燕芳:建议支持保险企业投资兴办医疗机构 即时焦点
-
家庭无线网络|世界快资讯
-
本轮旅欧日本球员表现:三笘薰造点+破门,上田绮世梅开二度
-
环球看点!券商私募资管规模去年减少1.36万亿元 私募子公司有望成券商业绩新增长点
-
布鲁塞尔采用哪个时区的时间-天天热资讯
-
e92是哪一代m3 _轻微划痕打蜡可以永久修复吗
-
福建莆田学院开学时间_福建莆田学院_环球观热点
-
大型纪录片《走进西藏·高原之歌》第五集 求索
-
石天冬_石天
-
环球热资讯!波特率是什么_关于波特率是什么的基本详情介绍
-
每日速讯:什么叫御姐型的女生_什么叫御姐
-
商标要注册多久才能办下来_商标要注册多久
-
兔年是哪年
-
天天信息:益和成糕点
-
【世界新要闻】什么的礼物
-
热讯:无线光猫和路由器的正确连接方法_路由器怎么连接光猫
-
杭州桐庐县掀起“学雷锋”志愿服务热潮
推荐内容
- PostgreSQL的clog属于日志还是数据,需要遵守writ
- 韩执政党欢迎政府强征劳工赔偿方案,最大在野党谴
- 【聚看点】河蟹死了能吃吗
- 全国人大代表、太平洋医疗健康管理有限公司副总经
- 家庭无线网络|世界快资讯
- 本轮旅欧日本球员表现:三笘薰造点+破门,上田绮
- 环球看点!券商私募资管规模去年减少1.36万亿元
- 布鲁塞尔采用哪个时区的时间-天天热资讯
- e92是哪一代m3 _轻微划痕打蜡可以永久修复吗
- 福建莆田学院开学时间_福建莆田学院_环球观热点
- 大型纪录片《走进西藏·高原之歌》第五集 求索
- 石天冬_石天
- 环球热资讯!波特率是什么_关于波特率是什么的基
- 每日速讯:什么叫御姐型的女生_什么叫御姐
- 商标要注册多久才能办下来_商标要注册多久
- 兔年是哪年
- 天天信息:益和成糕点
- 【世界新要闻】什么的礼物
- 热讯:无线光猫和路由器的正确连接方法_路由器怎
- 杭州桐庐县掀起“学雷锋”志愿服务热潮
- 天天要闻:大一寸和一寸的区别图_大一寸和一寸的
- 难求一胜!威少加盟后快船已遭遇五连败 其中两负
- 瓜帅:对阵纽卡是极困难的挑战 我说过孔帕尼迟早
- 成语玩物丧志是什么意思_玩物丧志是什么意思
- 文旅惠民消费季——三八女神节攻略来啦!
- 鼓励农民工买房!农民工,不够用了-世界热头条
- 环球视点!19春名师点拨课课通教材全解析4年级数
- 百事通!webuff怎么免费白嫖用cdk
- 天天通讯!图片报:若萨内&格纳布里无法拿出稳定
- 吉利发新车,长安律师函当贺信,为恶心“负心”跳
- 当前动态:行会封号竖着大全
- 大宗交易:九联科技成交451.45万元,折价3.75%(03-01)
- 世界短讯!口琴好学还是吉他好学_口琴好学
- ins苹果手机怎么注册教程_ins苹果手机怎么注册 信息
- 全球今日报丨90°剥离强度试验机
- 101-108,快船爆冷!威少末节关键三分很提气,莱
- 最高检:未成年人犯罪呈低龄化趋势:世界速看
- 身份证号大
- 皮皮鲁和419宗罪小侦探大百科第一辑
- 室内手机信号不好怎么增强_手机信号不好怎么增强_
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
中新网通辽10月18日电 (记者 张林虎)18日,记者从内蒙古自治区通辽市奈曼旗公安局获悉,国家一级保护动物--梅花鹿误入当地村民羊群,
-
中新网杭州10月18日电 (王题题 胡燕婕)云天收夏色,浅秋正渐浓。10月18日,浙江杭州市西湖游船有限公司推出的惠民多站点“西湖环湖游
-
中新网福州10月18日电 (记者 龙敏 王东明)福州市晋安区官方18日晚间通报,18日14时47分,晋安区岳峰镇化工路爱摩轮商业广场项目摩天
-
中新网兰州10月18日电 (闫姣 艾庆龙 吉翔)“红山白土头,黄河向西流。”不少人疑问,天下黄河向东流,为何甘肃永靖县这段黄河却向西
-
中新网北京10月18日电 《清华城市健康设施指数》18日在北京发布。报告成果显示,城市健康设施指数领先城市以中心城市和东部沿海城市