欧美日韩在线高清视频 I 韩国18禁啪啪无遮挡免费 I 国产系列丝袜熟女精品视频 I 夜夜干夜夜操 I 在线观看的av网站 I www.av蜜桃 I 毛片新网址 I 成年人免费观看毛片 I 国产精品久久国产精品99 gif I 欧美一级三级 I 久久久久久久久18久久久 I www黄色com I 少妇富婆一区二区三区夜夜 I 欧美伊人久久大香线蕉综合 I 国产在线不卡视频免费视频 I 色情无码一区二区三区 I 狠狠操狠狠干狠狠爱 I 成人乱淫av日日摸夜夜爽节目 I 日日插日日操 I 国产精品自产拍在线观看55亚洲 I 午夜草草 I 日韩午夜网站 I 成人免费淫片视频软件 I 国产情侣一区二区 I 精品国产一区二区三区四区四 I 国产乱理伦片在线观看 I 国产精品乱子伦xxxx裸 I 在线观看亚洲欧美 I 国语a在线看免费观看视频 I 免费国产污网站在线观看15

您的位置:首頁 >觀察 > 正文

天天觀察:PostgreSQL的clog屬于日志還是數據,需要遵守write-WAL-before-data嗎?


(資料圖片僅供參考)

總結

從原理上來看,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

熱門資訊

主站蜘蛛池模板: 碰碰97| 美女扒开腿让男人桶爽app免费看 | 国产极品美女高潮抽搐免费网站 | 美女网站免费在线观看 | 亚洲精品一区二区在线观看 | 风韵多水的老熟妇 | 午夜色区| 一区在线视频 | 两口子交换真实刺激高潮 | 久久精品成人一区二区三区蜜臀 | 国产精品一区二区精品视频免费看 | 顶级尤物极品女神福利视频 | 丁香婷婷激情综合俺也去 | 春色校园综合人妻av | 亚洲中文有码字幕日本第一页 | 亚洲第一无码av无码专区 | 国产av影片麻豆精品传媒 | 色婷婷一区二区三区四区 | 无码无套少妇毛多69xxx | 国产精品国产精品国产专区不卡 | 亚洲国产精品无码av | 美女极度色诱视频www免费观看 | 蜜臀av中文字幕 | 国产精品中文字幕在线观看 | 欧美天堂一区 | _97夜夜澡人人爽人人 | 日韩久久久久久 | 理论片午夜 | 日本高清一区二区三 | 午夜视频www | 精品久久久久国产免费 | 青青青草国产线观 | 国产熟妇搡bbbb搡bb七区 | 国产乱码精品一区二区三区亚洲人 | 亚洲国产欧美日韩在线观看 | 午夜成人伦理 | 91免费版在线 | 中文字幕在线精品乱码 | 九一九色国产 | 夜夜嗨av 禁果av 粉嫩av懂色av | 无码精品久久久天天影视 | 亚洲成年人网址 | 91蝌蚪中文 | 内射小寡妇无码 | 天天噜噜噜在线视频 | 久久99精品久久久久蜜芽 | 深夜在线看片 | 免费午夜影院 | 久久九九色 | 大香伊蕉在人线国产最新75 | 在线观看日韩av | 成人黄色小说网址 | 操碰在线视频 | 7777精品久久久大香线蕉 | 亚洲日本在线电影 | 久草青青在线 | av片在线免费看 | 又色又爽又黄无遮挡的免费视频 | 久章草国语自产拍在线观看 | 国产黄色一区二区三区 | www.一区二区三区在线 | 中国 | 国产精品久久久久野外 | 一本色道久久综合亚洲精品婷婷 | 小早川怜子xxxxaⅴ在线 | 国产色在线 | 亚洲 黄色一级大片免费版 | 乱码视频午夜间在线观看 | 国产精品久久久久久无码 | 亚洲国产精品18久久久久久 | 久久久女女女女999久久 | 四虎地址8848 | 污网址在线观看 | 中文毛片无遮挡高潮免费 | 亚洲综合色一区 | 91精品国产高清一区二区三蜜臀 | 色综合久久天天综合 | 日韩欧美亚洲天堂 | 国产 日韩 一区 | av不卡播放| 欧美肉大捧一进一出免费视频 | 善良丰满的少妇h | 欧美放荡性医生videos | 日本 国产成 人 综合 亚洲 | 成人看黄色s一级大片 | 黄色网页在线免费观看 | 91九色porny视频| 欧美国产亚洲自拍 | 国产粉嫩尤物极品99综合精品 | 亚洲综合中文网 | 国产一级特黄毛片在线毛片 | 亚洲欧美日韩_欧洲日韩 | 国产精品成人一区二区网站软件 | 丝袜精品 欧美 亚洲 自拍 | 校园春色欧美色图 | 国产香蕉尹人在线观看视频 | 亚洲综合情 | 亚洲精品一区二区久 | 91国内在线观看 | 日产久久视频 | 国产精品久久无码一区二区三区网 |