V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxCoder
V2EX  ›  数据库

请教关于 MVCC ReadView 的问题

  •  
  •   zxCoder · 2021-03-12 22:20:15 +08:00 · 920 次点击
    这是一个创建于 1112 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两个值,是max_trx_id=creator_trx_id+1 吗?那特意将两个值分开定义只是为了方便阅读吗?

    max_trx_id:表示生成 ReadView 时系统中应该分配给下一个事务的 id 值。
    creator_trx_id:表示生成该 ReadView 的事务的 事务 id 。
    
    第 1 条附言  ·  2021-03-12 23:00:49 +08:00

    理解错 “事务的开启时刻”和“ReadView的创建时刻”了。。。

    现在又有了一个新问题,书上说

    “如果被访问版本的 trx_id 属性值大于 ReadView 中的 max_trx_id 值,表明生成该版本的事务在当前事务生成 ReadView 后才开启,所以该版本不可以被当前事务访问”

    那等于呢? max_trx_id 肯定是大于 creator_trx_id 的,那按理说也是在生成该版本的事务在当前事务生成 ReadView 后才开启的,那为什么不能在这里判断呢?而是要看下一个条件:

    "如果被访问版本的 trx_id 属性值在 ReadView 的 min_trx_id 和 max_trx_id 之间,那就需要判断一下 trx_id 属性值是不是在 m_ids 列表中,如果在,说明创建 ReadView 时生成该版本的事务还是活跃的,该 版本不可以被访问;如果不在,说明创建 ReadView 时生成该版本的事务已经被提交,该版本可以被访问。"

    6 条回复    2021-03-13 08:21:26 +08:00
    pedia
        1
    pedia  
       2021-03-12 22:49:41 +08:00
    max_trx_id 是 trx_sys 里的 这是全局的
    creator_trx_id 是 read view 里的
    zxCoder
        2
    zxCoder  
    OP
       2021-03-12 22:56:51 +08:00
    @pedia 大佬再请教个问题 也是关于这个 ReadView,书上说

    “如果被访问版本的 trx_id 属性值大于 ReadView 中的 max_trx_id 值,表明生成该版本的事务在当前事务生成 ReadView 后才开启,所以该版本不可以被当前事务访问”

    那等于呢? max_trx_id 肯定是大于 creator_trx_id 的,那按理说也是在生成该版本的事务在当前事务生成 ReadView 后才开启的,那为什么不能在这里判断呢?而是要看下一个条件:

    "如果被访问版本的 trx_id 属性值在 ReadView 的 min_trx_id 和 max_trx_id 之间,那就需要判断一下
    trx_id 属性值是不是在 m_ids 列表中,如果在,说明创建 ReadView 时生成该版本的事务还是活跃的,该
    版本不可以被访问;如果不在,说明创建 ReadView 时生成该版本的事务已经被提交,该版本可以被访问。"
    pedia
        3
    pedia  
       2021-03-12 23:09:07 +08:00
    @zxCoder 我不确定我是否正确的理解了你的问题.

    你说的那种情况下: 无法保证后启动的事务先 commit.

    t1 t2 两个事务, t1 先启动 ,但早于 t2 commit.
    pedia
        4
    pedia  
       2021-03-12 23:56:26 +08:00
    @zxCoder 我理解你的意思了 我看了一下源码 大于等于都是不可见的 你看的书描述不准确.
    pedia
        5
    pedia  
       2021-03-13 00:07:53 +08:00
    @zxCoder 当然 欢迎在数据库社区提问关于数据库内核的问题 https://fastdb.cc/
    zxCoder
        6
    zxCoder  
    OP
       2021-03-13 08:21:26 +08:00
    @pedia 懂了 非常感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5922 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:32 · PVG 10:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.