当前位置: 首页 > news >正文

河南省住房和城乡建设厅查询网站甘肃省建设厅建筑业信息网

河南省住房和城乡建设厅查询网站,甘肃省建设厅建筑业信息网,哪些网站做外贸效果好,百度快照怎么打开事务提交会通过delayChkpt阻塞checkpoint Postgresql事务在事务提交时(执行commit的最后阶段)会通过加锁阻塞checkpoint的执行,尽管时间非常短,分析为什么需要这样做: 首先看提交堆栈 #1 0x0000000000539175 in Co…

事务提交会通过delayChkpt阻塞checkpoint

Postgresql事务在事务提交时(执行commit的最后阶段)会通过加锁阻塞checkpoint的执行,尽管时间非常短,分析为什么需要这样做:

首先看提交堆栈

#1  0x0000000000539175 in CommitTransaction () at xact.c:2079
#2  0x0000000000539e04 in CommitTransactionCommand () at xact.c:2824
#3  0x000000000087d1ea in finish_xact_command () at postgres.c:2482
#4  0x000000000087af27 in exec_simple_query (query_string=0x24050e0 "insert into t1 values (1,1);") at postgres.c:1154

函数调用过程

关键函数如下:

CommitTransaction...latestXid = RecordTransactionCommit();...BufmgrCommit()START_CRIT_SECTION()【关键流程】END_CRIT_SECTION()latestXid = TransactionIdLatest(xid, nchildren, children);SyncRepWaitForLSN(XactLastRecEnd, true);return latestXid;...ProcArrayEndTransaction(MyProc, latestXid);...// clean ...

关键流程

delayChkpt阻塞checkpoint发生位置:

  1. 事务提交配置delayChkpt
RecordTransactionCommit...START_CRIT_SECTION();MyPgXact->delayChkpt = true;/* 写XLOG:COMMIT *//* 写CLOG:内存写不刷盘 */MyPgXact->delayChkpt = false;...
  1. CreateCheckPoint等待delayChkpt
    联动CreateCheckPoint,会在【2】等在所有Xact的delayChkpt为false才能继续
CreateCheckPoint// 【1】计算位置(重要)WALInsertLockAcquireExclusive();curInsert = XLogBytePosToRecPtr(Insert->CurrBytePos);freespace = INSERT_FREESPACE(curInsert);if (freespace == 0){if (curInsert % XLogSegSize == 0)curInsert += SizeOfXLogLongPHD;elsecurInsert += SizeOfXLogShortPHD;}checkPoint.redo = curInsert;RedoRecPtr = XLogCtl->Insert.RedoRecPtr = checkPoint.redo;WALInsertLockRelease();// 【2】通过delayChkpt等其他所有正在提交中、正在写日志的事务vxids = GetVirtualXIDsDelayingChkpt(&nvxids);if (nvxids > 0){do{pg_usleep(10000L);	/* wait for 10 msec */} while (HaveVirtualXIDsDelayingChkpt(vxids, nvxids));}pfree(vxids);// 【3】刷数据CheckPointGuts(checkPoint.redo, flags);// 【4】记chkpt日志XLogBeginInsert();XLogRegisterData((char *) (&checkPoint), sizeof(checkPoint));recptr = XLogInsert(RM_XLOG_ID,shutdown ? XLOG_CHECKPOINT_SHUTDOWN :XLOG_CHECKPOINT_ONLINE);XLogFlush(recptr);

为什么checkpoint需要等事务提交

确定REDO位点是在createCheckpoint的函数前面执行的,checkpoint和事务提交并发会有下面三种情况发生(假设没有delayChkpt会有情况二发生)
在这里插入图片描述
情况一:redo point在commit提交前,那么如果crash发生了,redo过程会覆盖这条xlog,不会有问题

情况二:如果没有delayChkpt,redo point可能发生在上图中的位置(然后checkpoint刷完数据后,当前事务才写clog),XLOG已经先写了,如果crash发生了,redo过程不会覆盖这条xlog,而且clog信息不存在,那么commit信息彻底丢掉了。

情况三:redo point在事务提交后,redo时xlog虽然还是做不到,但是clog一定会被刷下去,所以我们不会丢失事务提交信息。

http://www.yayakq.cn/news/507844/

相关文章:

  • 网站标题具体怎样优化网站单个页面做301
  • 建设门户网站的请示重庆市城市建设投资公司网站
  • 广州做营销型网站哪家好免费素材网址
  • 深圳网站制作长沙小程序软件开发哪家好
  • 建站主机 wordpress食品网站设计
  • 江阴建设网站外贸电子商务网站建设平台
  • 移动端网站怎么做外链郑州网站seo优
  • 吉林网站建设公司石家庄视频优化公司
  • 网站关键词查询玉雕网站建设
  • 个人二级网站怎么做网页布局设计方法
  • 如何查询网站以建设多长时间楚雄网站设计
  • 宝山青岛网站建设ens域名注册
  • 如何注册一个免费网站小程序制作开发
  • 建站论坛西安网站制作公司排
  • 网站开发实训感想网站建设哪家性价比高
  • 电商网站的数据库设计中国工程建设监理协会网站
  • 发布做网站需求qq群鹤山做网站
  • 漂亮的门户网站网站优化 价格
  • 南京营销型网站制作营销网站试用
  • 在那个上面做网站都能搜到1688货源网一件代发什么意思
  • app产品网站模板服装 公司 网站建设
  • 景安免费虚拟主机长春百度seo公司
  • 案例建网站卖游戏辅助的网站怎么建设
  • 在godaddy做网站贵吗网站广告条幅怎么做动态的
  • 东莞免费建站公司网站做海外的防护
  • 江门医疗网站建设短网址在线生成免费
  • 网站建设运营服务商动画制作app
  • php网站后台怎么登陆阿里巴巴企业邮箱登录入口
  • 湛江专业的建站软件公司网站开发费用计入什么科目
  • 济南网站建设是什么php开源网站 网上商城