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

盗版视频网站建设费用职业生涯规划大赛规划书

盗版视频网站建设费用,职业生涯规划大赛规划书,微信小程序平台登陆,网站建设的进度表总结 PG的子事务回滚是真回滚(直接回滚了,不管顶层事务提交还是回滚)。 PG的子事务提交是假提交(子事务提交后会把决定权交给顶层事务,随顶层事务提交、回滚)。 子事务提交后,将xid记录到父事…

总结

  • PG的子事务回滚是真回滚(直接回滚了,不管顶层事务提交还是回滚)。

  • PG的子事务提交是假提交(子事务提交后会把决定权交给顶层事务,随顶层事务提交、回滚)。

子事务提交后,将xid记录到父事务的childXids,父事务的childXids就表示下面已经提交的子事务,这些子事务xid在后续mvcc计算中,会完全等效与所属父事务xid。

childXids

在Postgresql的事务状态中,存在childXids数组,本篇分析该结构的用途和原理。

typedef struct TransactionStateData
{...TransactionId *childXids;	/* subcommitted child XIDs, in XID order */int			nChildXids;		/* # of subcommitted child XIDs */int			maxChildXids;	/* allocated size of childXids[] */...struct TransactionStateData *parent;	/* back link to parent */
} TransactionStateData;typedef TransactionStateData *TransactionState;

用途

1 读取childXids:TransactionIdIsCurrentTransactionId

判断事务ID是否为当前事务。

如果xid和当前事务的xid不同,另外会从当前事务记录的childXids中再找一遍。

  • 因为childXids里面记录了当前事务下,已经提交了的子事务(只有提交了的,没有回滚的),所以这些提交的子事务xid就等同于主事务xid。
  • childXids是有序的,二分法即可。
bool
TransactionIdIsCurrentTransactionId(TransactionId xid)
{...if (TransactionIdEquals(xid, GetTopTransactionIdIfAny()))return true;...for (s = CurrentTransactionState; s != NULL; s = s->parent){...low = 0;high = s->nChildXids - 1;while (low <= high){int			middle;TransactionId probe;middle = low + (high - low) / 2;probe = s->childXids[middle];if (TransactionIdEquals(probe, xid))return true;else if (TransactionIdPrecedes(probe, xid))low = middle + 1;elsehigh = middle - 1;}}return false;
}

2 写入childXids:AtSubCommit_childXids

在子事务提交时,会执行AtSubCommit_childXids:

  1. 将本层的xid添加到上层事务的childXids中。
  2. 将本层记录的childXids传递到上层事务的childXids中。
static void
AtSubCommit_childXids(void)
{...new_nChildXids = s->parent->nChildXids + s->nChildXids + 1;...s->parent->childXids[s->parent->nChildXids] = XidFromFullTransactionId(s->fullTransactionId);if (s->nChildXids > 0)memcpy(&s->parent->childXids[s->parent->nChildXids + 1],s->childXids,s->nChildXids * sizeof(TransactionId));s->parent->nChildXids = new_nChildXids;/* Release child's array to avoid leakage */if (s->childXids != NULL)pfree(s->childXids);/* We must reset these to avoid double-free if fail later in commit */s->childXids = NULL;s->nChildXids = 0;s->maxChildXids = 0;
}

PG子事务维护链式结构,当子事务提交时,需要把自己记录“commited childs”信息逐层上交。

例如三层子事务的场景下:

												childXids
top-transaction     		    []sub-transaction-16401     []sub-transaction-16402   []sub-transaction-16403 []        <-- will commit
														childXids
top-transaction     		    		[]sub-transaction-16401     		[]sub-transaction-16402   		[]^|sub-transaction-16403 		[]				<-- committing
														childXids
top-transaction        					[]sub-transaction-16401     		[]sub-transaction-16402   		[16403]  	<-- committed
														childXids
top-transaction        					[]sub-transaction-16401     		[]sub-transaction-16402   		[16403]  	<-- will commit
														childXids
top-transaction        					[]sub-transaction-16401     		[16402, 16403]  <-- committed

当前事务记录的childXids在进行mvcc判断时,完全等效于自己的xid。

3 其他

AtSubAbort_childXids:子事务回滚时,需要清理childXids。

SerializeTransactionState:序列化事务状态。

其他还有初始化、清理等,不在列举。


文章转载自:

http://RcNUfum1.qnrpj.cn
http://v1Y6kIm6.qnrpj.cn
http://pamfOBD6.qnrpj.cn
http://CN5plXjJ.qnrpj.cn
http://83DcFoJt.qnrpj.cn
http://gHuViZzS.qnrpj.cn
http://FBJBUKEX.qnrpj.cn
http://OYzVE5Pj.qnrpj.cn
http://8mHQVB6W.qnrpj.cn
http://lTt71IpJ.qnrpj.cn
http://ytKXPkAN.qnrpj.cn
http://cGBqcaP0.qnrpj.cn
http://8Ziyf5PA.qnrpj.cn
http://jkHdZsaY.qnrpj.cn
http://qpsOUM2h.qnrpj.cn
http://bkMdOTLQ.qnrpj.cn
http://WZsLPRjW.qnrpj.cn
http://VczgBq0W.qnrpj.cn
http://GTjfJxsK.qnrpj.cn
http://rrzBIXCq.qnrpj.cn
http://huTA57dh.qnrpj.cn
http://gucK1Ats.qnrpj.cn
http://VuG6d4ju.qnrpj.cn
http://p9RS7UIg.qnrpj.cn
http://h40JGtOl.qnrpj.cn
http://GlIHmznA.qnrpj.cn
http://0b579mP6.qnrpj.cn
http://tS6YhTMs.qnrpj.cn
http://8YtRV3cd.qnrpj.cn
http://vNJ3jUAg.qnrpj.cn
http://www.dtcms.com/wzjs/766463.html

相关文章:

  • 微信网站怎么做的好社区网站 租用服务器还是只需要购买空间
  • 石景山网站建设制作公司阿里OSS做网站图库费用
  • 福清市建设工程交易网站好像黑龙江农垦建设局网站
  • 景点介绍网站模板聊天软件开发公司
  • 用第三方做网站wordpress免费中文模板
  • 宝安网站建设推广找工作室的网站
  • 搜索栏搜索网站?热?文威海网站制作服务
  • 网站推广计划机构教育培训机构十大排名
  • 运营个网站需要什么条件郑州网站推广策划
  • 网站设计者wordpress代码优化插件
  • 网页制作与网站建设从入门到精通 下载西安专业网站建设价格
  • 设计师 必备的网站国内跨境电商建站系统
  • 郴州做网站的网页源码在线提取
  • 东莞网站优化电话做课件的网站
  • 网站开发提案模板个体户营业执照查询网上查询
  • 有个人免费网站吗wordpress 文章 列表
  • 西安东郊网站建设公司什么是企业年金
  • 做标志的网站网站本地被劫要怎么做
  • shopify建站公司北京十佳网站建设
  • 怎么建设淘宝网站老外做牛排的视频网站
  • 深圳网站建设制作哪家口碑好东莞建筑公司排名
  • 网站开发文档范文余姚专业网站建设公司
  • 网站制作中英文天津网站播放器源码
  • 网站首页加载特效wdcp新建网站
  • 如何做网站的维护源码商城源码
  • 无极网页游戏移动端seo
  • 宁波俄语网站建设环保网站建设模板免费下载
  • 2015做那些网站能致富唐山移动互联网开发
  • 浏阳做网站报价温州建设管理处网站
  • 做视频网站 带宽辽宁省建设教育协会网站