WAL file format ================= | The Write-Ahead-Log file persist the sequence of data/operation will apply to *MemTable* later. | This file are separate to fixed-length block on top level which stepped by *kBlockSize*.The *record* which too long will be splitted to multiple fragments which specified by *type* (First, Middle and Last).The block can't be full fit will be padded Top-level ----------- +----+---+--+-------------+ |r0 |r1 |p |r2 | +----+---+--+-------------+ | kBlockSize| kBlockiSize | +-----------+-------------+ | Where r* is *record*, p is the padding for fixed length, block* is fixed length *block*. Record format -------------- +----------+------------+------------------------------------+ | label | type | note | +----------+------------+------------------------------------+ | CRC32 | fixed32 | | +----------+------------+------------------------------------+ | Size | fixed32 | | +----------+------------+------------------------------------+ | Type | fixed8 | kZeroType, kFullType, kFirstType, | | | | kMiddleType, kLastType | +----------+------------+------------------------------------+ | Payload | char[Size] | | +----------+------------+------------------------------------+