PostgreSQL V9.6 谓词锁--01

今天上午,2016年8月21日,巴西里约奥运会,女排3:1胜对手,打出一场拼搏的精神。
----------------------------------------------

谓词锁

    本节内容介绍谓词锁相关的结构体以及他们之间的关系,谓词锁相关的结构体之间的关系可参见图X-XX

 

PostgreSQL V9.6 谓词锁--01 - 那海蓝蓝 - 那海蓝蓝的博客
 

X-XX 谓词锁相关数据结构图

SIReadLocks(谓词锁)

    PostgreSQL使用“PREDICATELOCKTARGET”表示一个加谓词锁的对象,然后在此对象上施加“PREDICATELOCK”表示的谓词锁。

// The PREDICATELOCKTARGET struct represents a database object on which there are predicate locks.

typedef struct PREDICATELOCKTARGET  //在一个“对象”上的谓词锁

{

    /* hash key,一个标志,唯一表示一个对象 */

    PREDICATELOCKTARGETTAG tag; /* unique identifier of lockable object */

 

    /*谓词锁对象列表 */

    SHM_QUEUE    predicateLocks; //PREDICATELOCK”对象的列表,其结构体如下

} PREDICATELOCKTARGET;

    PREDICATELOCK”对象的定义如下,一个谓词锁对象有一个唯一的使用“PREDICATELOCKTAG”定义的标识tag,然后包括两个列表(一个是表示某数据库的存在谓词锁对象的“PREDICATELOCKTARGET ”,一个是表示事务间冲突关系的“SERIALIZABLEXACT”,之后,):

typedef struct PREDICATELOCK  //谓词锁

{

    PREDICATELOCKTAG tag;        //谓词锁的唯一的标识,被当作hash key以唯一标识谓词锁

    SHM_QUEUE    targetLink;     /* list link in PREDICATELOCKTARGET's list of predicate locks */

    SHM_QUEUE    xactLink;       /* list link in SERIALIZABLEXACT's list of predicate locks */

    SerCommitSeqNo commitSeqNo;  /* only used for summarized predicate locks */

} PREDICATELOCK;

    当一个谓词锁对象有一个唯一的使用“PREDICATELOCKTAG”定义的标识tag,此tag则由两个结构体构成:

typedef struct PREDICATELOCKTAG  //谓词锁的标识

{

    PREDICATELOCKTARGET *myTarget;

    SERIALIZABLEXACT *myXact;

} PREDICATELOCKTAG;

    所以, PostgreSQL 使用“ PREDICATELOCK ”结构体表示一个谓词锁,然后用一个对象和事务作为此谓词锁的标识( tag )来标识一个谓词锁,这表明谓词锁是数据库对象和事务间的一个特定关系,只是这样的关系是用以表示读写冲突的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值