"读两次结果一样"是怎么做到的
一个事务里读两次同一行,结果一样。这靠的是【0】。
阅读更多 →
自己写:把 MVCC 的两笔账一起算
把 TODO 补完,打出按快照读到什么、按最新读到什么、留了几版、读被挡了几次(四段,用 / 隔开;写 3 次,快照开在第 1 次之后)。 这条路线两样工具都在题面里备好了 ① 真的 sqlite3
阅读更多 →
自己写:数一数留了几版
把 TODO 补完:给同一个键连写 4 次,打出它留了几版和最新那一版是什么(用 / 隔开)。 这条路线两样工具都在题面里备好了 ① 真的 sqlite3(页这一层是能内省出来的) mk(rows,
阅读更多 →
自己写:让读的人看见旧值
把 TODO 补完:写一个旧值、开快照、再写新值,打出按快照读到的那个值。 这条路线两样工具都在题面里备好了 ① 真的 sqlite3(页这一层是能内省出来的) mk(rows, idx, w) →
阅读更多 →
读的人一次都没被挡住
下面这段在写入的同时读了 5 次。打出读被挡住了几次和这个键留了几版(用 / 隔开)。 这条路线两样工具都在题面里备好了 ① 真的 sqlite3(页这一层是能内省出来的) mk(rows, idx
阅读更多 →
⚠️ 拿着快照读,看不见后来的改动
下面这段先写一个旧值,开一个快照,再写一个新值。打出按快照读到什么、按最新读到什么、这个键留了几版(三段,用 / 隔开)。 这条路线两样工具都在题面里备好了 ① 真的 sqlite3(页这一层是能内
阅读更多 →
快照是什么时候定下来的
一个事务按"快照"读数据,这个快照是【0】定下来的。
阅读更多 →
⚠️ 这样做换来的是什么
留着旧版本,最大的好处是【0】。
阅读更多 →
"多版本"多的是什么
多版本并发控制里说的"多版本",指的是【0】。
阅读更多 →
自己写:把日志的价值量出来
把 TODO 补完,打出无日志断电后有几处、无日志补完后有几处、有日志补完后有几处(三段,用 / 隔开;一笔事情 3 处,断在第 2 处)。 这条路线两样工具都在题面里备好了 ① 真的 sqlite
阅读更多 →