MVCC 面试口述稿 · PostgreSQL 八股
整体理解非常到位!以下保留原始说话逻辑,修正小口误,去掉卡顿,标出原文几处小漏洞,直接照着说即可。 原文小勘误 MVCC 全称:多版本并发控制,不是多并发版本控制(口误颠倒) 更新出来新 tuple:xmax=0,0 不是代表事务活跃,是哨兵——没有被删除/修改过 可见性判断:不是只满足两个条件,要组合判断;xmin 必须提交合格之后,才去看 xmax 面试口述版(完整)PostgreSQL 的 MVCC 叫多版本并发控制,目的是实现读写不互相阻塞。 PG 里面一行逻辑数据,物理上叫 tuple 元组。每个 tuple 会自带两个隐藏列:xmin 和 xmax。 xmin:生成这个版本的事务 ID,插入或者更新产生新版本的时候赋值。 xmax:让这个版本过期、删除的事务 ID;xmax=0 是特殊标记,代表这个版本还没有被任何人删除或者更新。 PG 修改数据不会原地覆盖,是追加新版本。 当我更新一行的时候,不会改动原来的旧元组: 旧 tuple,把它的 xmax 设置为当前更新事务的 ID,旧版本就被标记待过期,但不会立刻删掉,仍然留在堆表里。 再生成一条...
初见
“风起的时候,花瓣会记得雨的方向。” 你好呀,这里是風間花雨的小站。 在这里放一些零碎的想法、喜欢的句子、还有偶尔的胡言乱语。 不求有多少人来看,只希望每个路过的你,能在这里找到片刻的安静。 关于「風間花雨」 風間,是风经过的地方。花雨,是花瓣落下的样子。 合在一起,大概就是——在风里看见一场花雨的瞬间。 很喜欢这个画面,所以拿来当了名字。
