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 | 事务编号 |