721 Chapter3 MVCC(设计trade-off)

MVCC核心概念

1.读写互相不阻塞对方

2.读事务可以读一致性快照

3.支持时间旅行,也就是读过去的快照

但是存在写倾斜的问题。Write Skew Anomaly.

所以就MVCC到达不了serizable

 

 

MVCC实现

MVCC + time order

就靠原子操作CAS来check是否有人在写入,同时如果txnid大于read-ts的话,就要创建一个新的版本

 

 

MVCC + 2PL

同时事务Txn-id在到达上限后,会从1开始,那么我们就会发现没有可见的版本,为了解决这个,加了个frozen bit.Any new txn id will always be newer than a frozen version.

Version Storage 

Append-Only

存在相同的table上的空位置插入

 

time-travel table

实际上差不多,就是插入在单独的time-travel表上,有两种选择,一种从老到新,一种从新到老,第一种的话,查询有点慢,第二种索引要发生变化。

delta 

就是只存变化量,节省了内存。

GC

因为版本不能无限的增加,内存就爆了,所以要gc

Tuple level

提到了两种选择,第二种可能存在灰尘角落

 Transaction Level

INDEX manager 

如果要改变主键的话,先删除后插入

对于secondry index的话,我们有两种选择,第二种在pkey内存比较大的时候比较号。

 

 同时MVCC下要支持重复的主键,因为A1,后面插入的A1,对A1来说不可见,同时A1插入后,也不能看见前面的版本,也就不能相连,不如时间旅行会回到从前。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值