【第三届青训营-后端专场】课后作业 -《深入理解 RDBMS》

419 阅读2分钟

大家直接在评论区发布答案就可以哦~

课后作业- 重点内容 Review

  1. WAL 日志到底是如何保证数据的持久化,宕机后数据不丢失的?
  1. 相比于其他方案,WAL 日志都有什么优势?
  1. 除了 Undo Log 之外,是否还有其他方案可以实现 MVCC?
  1. 基于代价的优化器一般需要考虑哪些代价?
  1. 执行器的执行模型,除了本课中提到的火山模型是否还有其他模型?
  1. B+ Tree的优点有哪些?
  1. InnoDB 的 buffer pool 是怎么实现页面管理和淘汰的?

    < 作业提交截止时间:5月28日 10:00前 >

正确答案:

  1. WAL是预写日志,需要保证日志落盘才能够进行事务提交。日志中包含了事务对数据的修改,宕机后通过解析WAL日志,就可以对数据进行恢复。
  1. 相比于每次事务提交时都对数据页面进行flush操作,WAL日志有以下优点:

    1. 解决了IO放大的问题。
    2. 随机读写变为顺序读写,对磁盘更友好。
  1. 除了Undo Log之外,还有shadow paging的方式。例如PostgreSQL就是采用这种方式。这种方式的特点是,在数据页面中同时保留了一行数据的多个历史版本,通过trx_id来区分。
  1. 基于代价的优化器一般需要考虑IO消耗、网络消耗、CPU消耗等。
  1. 常见的执行模型有三类:火山模型(Volcano Model/Pipeline Model/Iterator Model/Pull Model)、物化模型(Materialization Model/Push Model)、向量化模型(Vectorized / Batch Model)。
  1. B+树的优点如下:

    1. B+树内部节点不存储数据,只存储键值,这样,每个节点就能存储更多的键值,一次性也就能将更多的键值读入内存,减少了对磁盘的IO操作次数;
    2. B+树的叶节点有一条链相连,所以对于区间内查询数据比较高效。
  1. InnoDB的buffer pool通过一个hash_map<page_id, page_ptr>来实现页面的快速查找访问,通过一个LRU来实现页面的冷热淘汰管理。