MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
Public 成员函数 | Private 属性 | 所有成员列表
CLogManager类 参考

日志管理器 更多...

#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 属性

CLogBufferlog_buffer_ = nullptr
 日志缓存。新增日志时先放到内存,也就是这个buffer中
 
CLogFilelog_file_ = nullptr
 管理日志,比如读写日志
 

详细描述

日志管理器

一个日志管理器属于某一个DB(当前仅有一个DB sys)。 管理器负责写日志(运行时)、读日志与恢复(启动时)

成员函数说明

◆ begin_trx()

RC CLogManager::begin_trx ( int32_t  trx_id)

开启一个事务

参数
trx_id事务编号

◆ commit_trx()

RC CLogManager::commit_trx ( int32_t  trx_id,
int32_t  commit_xid 
)

提交一个事务

参数
trx_id事务编号
commit_xid事务提交时使用的编号

◆ init()

RC CLogManager::init ( const char *  path)

初始化日志管理器

参数
path日志都放在这个目录下。当前就是数据库的目录

◆ recover()

RC CLogManager::recover ( Db db)

重做

当前会重做所有日志。也就是说,所有buffer pool页面都不会写入到磁盘中, 否则可能无法恢复成功。

遍历所有的日志,然后做redo

◆ rollback_trx()

RC CLogManager::rollback_trx ( int32_t  trx_id)

回滚一个事务

参数
trx_id事务编号

该类的文档由以下文件生成: