天天看点

Postgres-xl GTM(全局事务管理器 Globale Transaction Manager)Seq 管理器

Seq Manager

GTM_InitSeqManager初始化序列管理器

Postgres-xl GTM(全局事务管理器 Globale Transaction Manager)Seq 管理器
void GTM_InitSeqManager(void) {
  int ii;
  for (ii = 0; ii < SEQ_HASH_TABLE_SIZE; ii++){
    GTMSequences[ii].shb_list = gtm_NIL;
    GTM_RWLockInit(&GTMSequences[ii].shb_lock);
  }
}      

static GTM_SeqInfo *seq_find_seqinfo(GTM_SequenceKey seqkey)通过键查找GTM_SeqInfo值

static int seq_release_seqinfo(GTM_SeqInfo *seqinfo)获取seqinfo->gs_lock锁,将引用计数seqinfo->gs_ref_count减少,如果seqinfo->gs_state为SEQ_STATE_DELETED且引用计数为零的情况,需要使用seq_remove_seqinfo从序列管理器GTMSequences删除该GTM_SeqInfo,释放seqinfo->gs_lock锁。

继续阅读