L3:Multi-Version Concurrency Control (part 2) :design decisions

L3:Multi-Version Concurrency Control (part 2) :design decisions

what design decisions u are gonna face while designing MVCC

1- "what Concurrency control protocol you are gonna use ? "concurrency control protocol

2-"How you are gonna store and maintain the different versions? "version storage

3-"How you are gonna clean up the old versions? "Garbage collection

4-"how you are gonna ensure the indexes point to the correct version? "Index management



Concurrency control protocol

??? ?????? ?? protocol ???????? ????

timestamp ordering, optimistic concurrency control ,2 phase locking

??????? ?? ??????? ?? ?????? ???? ?? ??? ??? ????? ???? ????? ????

version storage: How you are gonna store and maintain the different versions

?? ?? ???? ?????? we store multiple physical objects for a single logical object , ???? ?? version ????? ?????? ?????? ??? ??? ???? ?? tuple ??? ??? ???? ?? attributes ??? ?????? ??

??? ?? where we gonna store and what we gonna store

? at a high level ?? versions ?? ????? ????? ?? single direction linked list ?? version ?????? ??? version ????? ,?????? ?? index ?????? ??? head of the linked list

"approach 1 :Append only "this is what postgress do

?? ???? ?? ???? ???? ??????

??? ?? ?? ???? ?? ?????? ???? tuple ???? ?????? ?? ?? main table ??? ????? ??? pointer

A0 ????? ??? A1 ,A1 ????? ??? A2 ????? ??? design decision ???? ??? ????? ?????? ????? ??? ?????? ??? ?????? ????? ??? ?????? ??? ???? ???? ?????? ????? ?? ?? ???? ????? ??? ?????? new 2 old ???? ??? ???? ????? ?????? ?? newest version ?? ???? ?? ?? ??????? ??? ?????? ???? ?? index ?? ?? version ????? ?old 2 new ????? ?? ?? garbage collection ?? ?? ????? ???? ????

approach 2 :time travel storage

?? ???? ?? ???? ???? ??????

??? ???? ????? ?? tuple ??? ?? ?? table ???? ??? ?? main

"approach 3 :delta storage "oracle and mysql do this

?? ???? ?? ???? ???? ??????

???? ?? ????? ?? attribute ??? ?????? ?? ?? ?? tuple ??? ??? ???????? ??? ?? instructor ????? ???

??? ???? ? save a lot of memory ,

provide fast writes ,the read is not expensive thought


garbage collection

???? ?? reclaim old version ?

-no active txn can see that version

-A version was created by an aborted txn

??? ??? design decisions in a garbage collector

How to look for expired versions ?-1

How to decide when it's safe to reclaim memory ?-2

where to look for expired versions ?-3

????? ???????? ?? ??? 1 ????????? ?????? ??????? ???????

?How to look for expired versions

you can do it in a tuple level or txn level

?? ?? tuple level ???? ???? ???? ????? ??? ?? invalid versions ???? ?? tuple

?? ???? ????? ????? Background vacuuming vs Cooperative cleaning

Background vacuuming

?? ????? ????? ???? threads do sequential scans looking for reclaimable versions ????? ????? ???? ???? sequential scan ????? expensive ??? ???? mit map ? keep track of modified blocks ????? sequential scan ????? ??

Cooperative cleaning

????? ?? clean while working ???

?? ?????? ?? old to new version storage ???? ??? ???? ?? linked list of versions ?? ??? reclaimable version ?? clean it

?? ?? tuple level ??txn level ???????? ?????? ?? ?? ????? ???? ?????? ?? ?? txn ????? ?? versions ??? ?? ????? reclaimable ???? ???? ? commit ???? ?? garbage collector ?? ?? versions ??? ??????? ?????? .


Index manegement

??????? ???? ??? ????????? ????




























要查看或添加评论,请登录

Mahmoud Abd-Almaksoud的更多文章

社区洞察

其他会员也浏览了