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

缓存运行时产生的日志对象 更多...

#include <clog.h>

Public 成员函数

RC append_log_record (CLogRecord *log_record)
 增加一条日志 更多...
 
RC flush_buffer (CLogFile &log_file)
 将当前的日志都刷新到日志文件中 更多...
 

Private 成员函数

RC write_log_record (CLogFile &log_file, CLogRecord *log_record)
 将日志记录写入到日志文件中 更多...
 

Private 属性

common::Mutex lock_
 加锁支持多线程并发写入
 
std::deque< std::unique_ptr< CLogRecord > > log_records_
 当前等待刷数据的日志记录
 
std::atomic_int32_t total_size_
 当前缓存中的日志记录的总大小
 

详细描述

缓存运行时产生的日志对象

当前的实现非常简单,没有采用其它数据库中常用的将日志序列化到二进制buffer, 管理二进制buffer的方法。这里仅仅把日志记录下来,放到链表中。如果达到一定量的日志, 或者日志数量超过某个阈值,就会调用flush_buffer将日志刷新到磁盘中。

成员函数说明

◆ append_log_record()

RC CLogBuffer::append_log_record ( CLogRecord log_record)

增加一条日志

如果当前的日志达到一定量,就会刷新数据

total_size_ 的计算没有考虑日志头

◆ flush_buffer()

RC CLogBuffer::flush_buffer ( CLogFile log_file)

将当前的日志都刷新到日志文件中

因为多线程访问与日志管理的问题,只能有一个线程调用此函数

参数
log_file日志文件

◆ write_log_record()

RC CLogBuffer::write_log_record ( CLogFile log_file,
CLogRecord log_record 
)
private

将日志记录写入到日志文件中

参数
log_file日志文件,概念上来讲不一定是某个特定的文件
log_record要写入的日志记录

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