csn事务

1)整体内容

 2)实际调试示例

插入一行数据

select * from t1;

2.1)调用栈

2.2)函数内逻辑

csn = TransactionIdGetCommitSeqNo(xid, false, true, false, snapshot); #=2

if (csn < snapshot->snapshotcsn) return true;
#2<2117

2.2.1) TransactionIdGetCommitSeqNo(xid)逻辑

114    if (CLogGetStatus(transactionId, &lsn) == CLOG_XID_STATUS_COMMITTED)

             result= COMMITSEQNO_FROZEN; #2

2.2.2) snapshot->snapshotcsn为什么是2117

从全局对象里取值

snapxid_t* snapxid = GetCurrentSnapXid();

   snapxid_t* x = (snapxid_t*)g_snap_current;

posted @ 2022-03-15 22:55  stupidstan2019  阅读(77)  评论(0编辑  收藏  举报