美文网首页
WALLog 文件的格式

WALLog 文件的格式

作者: wayyyy | 来源:发表于2024-02-07 19:39 被阅读0次

当向 LevelDB 写入数据时,数据会写入内存中的 MemTable,但是由于内存是易失性存储,掉电后数据就不再了,因此为了提升数据的持久性,LevelDB必须引入一个额外的持久化文件:预写日志(Write-Ahead Log,WAL),LevelDB中所有的写操作都必须先成功 append 到日志 WALLog,然后再更新到 MemTable ,将 MemTable 成功写入 SSTable 之后,然后再删除相应的预写日志。这样做的目的:

  • 可以将随机写IO变成顺序追加IO,极大的提高写请求处理速度。
  • 防止服务宕机导致内存数据丢失,恢复时可以从log中恢复尚未持久化到磁盘的数据。
WALog 格式

定义在 log_format.h

enum RecordType
{
    // Zero is reserved for preallocated files
    kZeroType = 0,
    kFullType = 1,
    // For fragments
    kFirstType = 2,
    kMiddleType = 3,
    kLastType = 4
};

static const int kMaxRecordType = kLastType;

static const int kBlockSize = 32768;

// header 格式形如: 
//struct header {
//    uint32_t crc_;          // 校验
//    uint8_t length_low_;    // 长度的低8位
//    uint8_t length_high_;   // 长度的高8位
//    uint8_t type_;          // 数据的类型
//};
static const int kHeaderSize = 4 + 2 + 1;

// Record 格式形如:
//struct Record {
//    unsigned char header_[7];
//    slice data_;
//};

WAL 文件以块为单位,每一个块大小为 32768 字节,一条记录可能全部写到一个块上,也可能跨几个块。

单条记录 + 对应头部格式如图:

image.png

每一个block至少由1个头部(header)与内容(content)组成,头部(header)由4字节校验,2字节长度,1字节类型共7字节组成。

理解 RecordType

一个block的大小是32KB = 32768,由于record的大小并不是固定的(这里的record我们定义为上层来的一次写入):

  • 1个record 足够放入1个block
    换言之,一个block上面承载了多个record:

    image.png
    那么 type 就是 kFullType
  • 1个record 需要跨越3个及其以上的block
    按照上面的规则:每一个block至少由1个头部(header)与内容(content)组成,所以record会被打散在3个block中。

    image.png

    那么这3个Block的header类型分别是 kFirstType kMiddleType kLastType

相关文章

  • 视频详解

    视频文件格式(简称:文件格式),视频封装格式(简称视频格式)视频编码格式(简称视频编码) 视频文件格式: 文件名的...

  • PCM转WAV

    一、WAVE 文件格式介绍 WAVE 文件是基于 Microsoft RIFF 标准的文件格式。RIFF 格式文件...

  • 办公格式转换太难看这里,PDF、WORD、EXcel、TXT教你

    文件格式转换,哪些格式转换你很头疼? 文件格式转换,最让你觉得头疼的文件格式是哪些? 文件格式转换,你最想学习转换...

  • 基础概念

    一、文件格式 1.视频文件格式 常见的视频文件格式:mpeg、avi、wmv、mov等,文件格式通常表现为文件在操...

  • 2-Ps基础(文件基本操作)

    文件基本操作 1-文件格式(PSD格式) Ps:基本格式为PSD格式(源文件,包含多个图层) 常用格式:jpg(压...

  • IOS开发 XML文件格式及数据解析

    XML文件格式: 1:XML文件格式介绍 2:XML文件格式定义 3:XML文件格式的语法 可扩展标记语言(XML...

  • 怎么转换pdf格式,看了都说懂!

    怎么转换pdf格式?PDF文件格式已经是我们通常用的文件格式,PDF格式比其他文件格式也容易阅读,但是对PDF格...

  • ORC File

    ORC 文件是在hive 0.11.0开始支持。 ORC 文件格式 相对于其他的文件格式,ORC文件格式有以下优点...

  • 二、springboot系统配置

    yml格式配置文件 propertity格式配置文件

  • 如何把pdf文件转换为word文档

    Pdf格式文件是目前职场办公当中广泛使用得文件格式。通常该文件格式用于重要文件的保存、文件的传输以及文件的打印等。...

网友评论

      本文标题:WALLog 文件的格式

      本文链接:https://www.haomeiwen.com/subject/gzbfektx.html