在线看成人I亚州精品视频Iwww.日日日.comI色中射I久久久久99精品国产片I高清精品在线I2021国产在线

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

天天觀察: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

熱門資訊

主站蜘蛛池模板: 国产成人禁片免费观看 | 精品无码一区二区三区在线 | 少妇极品熟妇人妻 | 国产午夜毛片v一区二区三区 | 国产麻豆剧果冻传媒星空视频 | 久久这里只有精品99 | 国产亚洲一区二区三区 | 精品久久久久久无码免费 | 又黄又爽又高潮免费毛片 | 日本一区二区三区四区高清视频 | 日本免费高清一本视频 | 欧美一级大片免费观看 | 亚洲欧美日韩精品久久 | 色妺妺在线视频 | 国产成人无码精品久久久性色 | 五月网站 | 精品无码国产一区二区三区麻豆 | 国产精品免费视频色拍拍 | 女人裸体做爰免费视频 | 国产揄拍国产精品人妻蜜 | 欧美大片一区二区三区 | 国产在线不卡 | 亂倫近親相姦中文字幕 | 黑人猛挺进小莹的体内视频 | 亚洲欧美在线观看视频 | 性色av一区二区三区 | 成人1区2区 | 女人裸体让男人桶全过程 | 久久精品中文騷妇女内射 | 片一级片在线观看 | 国产综合内射日韩久 | 久久99视频精品 | 色综合久久天天综合绕观看 | 国产欧美日韩综合精品二区 | 青青草视频网 | 福利视频在线观看www. | 草草久久久无码国产专区 | 五月天国产视频 | 无码区国产区在线播放 | 免费无码av片在线观看 | 欧美毛片aaa激情 | 99热.com | 琪琪五月天综合婷婷 | 中文字幕日本人妻久久久免费 | 九九综合九九综合 | 国产日产在线观看 | 最美女人体内射精一区二区 | 91看片网| 亚洲国产精品福利片在线观看 | 欧美理伦| 久久精品天天中文字幕人 | av网站在线免费观看 | 夜夜未满十八勿进的爽爽影院 | 精品久 | 粗大的内捧猛烈进出小视频 | 无码国内精品人妻少妇 | 国产馆精品推荐在线观看 | 国产精品va无码一区二区 | 日本高清视频www夜色资源网 | 欧美日韩精品一区二区 | 老头把我添高潮了a片 | 操舔| 97久久久精品综合88久久 | 免费看美女被靠到爽的视频 | 国产成人无码精品久久久性色 | 奇米88 | 久久婷婷香蕉热狠狠综合 | 国产suv精品一区二人妻 | 99精品热| 国产成人亚洲精品无码h在线 | 女女互磨互喷水高潮les呻吟 | 国产大尺度吃奶无遮无挡网 | 黑人糟蹋人妻hd中文字幕 | 99热在线观看免费 | 激情综合色五月丁香六月欧美 | 啪啪乐视频 | 狠狠色噜噜狠狠狠狠米奇777 | 91偷拍精品一区二区三区 | 中文字幕精品久久久久人妻红杏1 | 国产精品国产三级国产播12软件 | 亚洲熟女乱综合一区二区 | 国产麻豆精品一区二区三区v视界 | 国产精品片aa在线观看 | 美女内射视频www网站午夜 | 日韩无毛 | 人妻在厨房被色诱 中文字幕 | 成人午夜电影在线播放网站 | 国产亚洲精品久久久久久老妇小说 | 国产欧美亚洲精品a第一页 国产欧美一区二区精品性色 | 国产精品va在线观看无码不卡 | 久久精品国产精品亚洲 | 囯产精品久久久久久久久久妞妞 | 极品美女aⅴ高清在线观看 一级片片 | 久草草视频在线观看免费高清 | 亚洲精品久久久久国色天香 | 欧美一级黄视频 | 免费区一级欧美毛片 | 毛片免费视频肛交颜射免费视频 | 欧美精品二区 |