|
MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
日志管理器 更多...
#include <clog.h>
Public 成员函数 | |
| RC | init (const char *path) |
| 初始化日志管理器 更多... | |
| RC | append_log (CLogType type, int32_t trx_id, int32_t table_id, const RID &rid, int32_t data_len, int32_t data_offset, const char *data) |
| 新增一条数据更新的日志 | |
| RC | begin_trx (int32_t trx_id) |
| 开启一个事务 更多... | |
| RC | commit_trx (int32_t trx_id, int32_t commit_xid) |
| 提交一个事务 更多... | |
| RC | rollback_trx (int32_t trx_id) |
| 回滚一个事务 更多... | |
| RC | append_log (CLogRecord *log_record) |
| 也可以调用这个函数直接增加一条日志 | |
| RC | sync () |
| 刷新日志到磁盘 | |
| RC | recover (Db *db) |
| 重做 更多... | |
Private 属性 | |
| CLogBuffer * | log_buffer_ = nullptr |
| 日志缓存。新增日志时先放到内存,也就是这个buffer中 | |
| CLogFile * | log_file_ = nullptr |
| 管理日志,比如读写日志 | |
日志管理器
一个日志管理器属于某一个DB(当前仅有一个DB sys)。 管理器负责写日志(运行时)、读日志与恢复(启动时)
| RC CLogManager::begin_trx | ( | int32_t | trx_id | ) |
开启一个事务
| trx_id | 事务编号 |
| RC CLogManager::commit_trx | ( | int32_t | trx_id, |
| int32_t | commit_xid | ||
| ) |
提交一个事务
| trx_id | 事务编号 |
| commit_xid | 事务提交时使用的编号 |
| RC CLogManager::init | ( | const char * | path | ) |
初始化日志管理器
| path | 日志都放在这个目录下。当前就是数据库的目录 |
| RC CLogManager::recover | ( | Db * | db | ) |
重做
当前会重做所有日志。也就是说,所有buffer pool页面都不会写入到磁盘中, 否则可能无法恢复成功。
遍历所有的日志,然后做redo
| RC CLogManager::rollback_trx | ( | int32_t | trx_id | ) |
回滚一个事务
| trx_id | 事务编号 |